It's not so tricky to do column editing, but rather than have to hack the CodeEditor component can I ask that you add a method to retrieve selectionStart as you have for caretPos. The only other change needed is to make CodeEditorComponent::updateCaretPosition() virtual so it can be overridden. With that it makes it possible to do some nice non-linear editing.
[EDIT] sorry, i forgot to say that I also had to create a simple utility method in CodeEditorComponent to set the caret pos.