Well before I get straight to the multi-line stuff, let me mention a few bugs I encountered while working on this feature.
1.) Undo/Redo did not work properly with multi-line indent. Each indent on a line was treated as a separate change where as in the whole indent should be grouped into one undo event. Julian is aware of this now. I might know how to fix this so If I do come across a fix I will do it:)
2.) Skipping Tab Spaces I noticed that when moving from left to right if there is a tab space it does not skip a tab worth of spaces when it should. Derek is working on this.
After Julian reviewed my code, he told me that I should not be hard coding the tab spaces and instead I should use ‘tabstop’ to determine the amount of spaces I need. Apart from that everything else looked good. I altered my code and below are the changes:

Complete source code: http://gist.github.com/363245
BTW It is Bug#557135
Minor Update*
If the total tab spaces for every other line will always be the same then I believe the code below should go right after “selection.start.column = 0;” and before the for loop begins.

I will wait for Julian to provide me feedback and go from there:)