Also, I rewrote the whole thing in an OO style in order to get the flexibility needed.
This changes how ":SpaceBox" affects the jump list. I think the change is justified because no functionality is lost ("C-O C-O" will now do what "``" used to do), and since the Spacebox movement feels like a jump, being able to go back with "``" is more intuitive.
Using col() instead of virtcol() yielded incorrect results on some unindented lines containing tab chars.
- Fixed bug concerning blank lines at top/bottom of selection - Complete rewrite using function templates in order to be more "DRY" - Renamed variables and functions in a more conventional style - Made skipping of blank lines behaviour configurable - Added important note about using the 'virtualedit' option
This is probably an overkill and doesn't actually look more elegant than the procedural version. Oh well ...
Plugin behaviour wasn't exactly as advertised. Blank lines at the top and bottom boundaries are now excluded from the selection, just like they should.
For now this is an experiment. Probably going to be elegant, not fast.
Calling spacebox on unindented lines will now Visual select all adjacent unindented lines. Fixed or rearranged very minor other things.