Take a look at how I do this in TextMate/Support/lib/codecompletion.rb look at set_line! and caret_placement
You have to take into account that tabs are only a single character of variable width and that the current selection could have started from the left or right.
It really is way more complex than it should be, hopefully TM2 will make this simple.
thomas Aylott — subtleGradient — CrazyEgg — bundleForge
On Sep 3, 2007, at 4:51 AM, Juan Falgueras wrote:
Hi
asking for help
I have the next code for to eat the spaces behind the cursor (with Shift and FwdDel). My problem is I know only how to move around the current line but not how to go beyond and eat also new lines in order to reach the start of the next line.
#!/usr/bin/env ruby
sel = ENV['TM_SELECTED_TEXT'] if sel != nil sel = sel.dup sel.gsub!(/\s/, '') print sel exit 0 end
left = ENV['TM_CURRENT_LINE'][0, ENV['TM_LINE_INDEX'].to_i] right = ENV['TM_CURRENT_LINE'][ENV['TM_LINE_INDEX'].to_i .. -1]
right.gsub!(/^\s+/, '')
print left + right
I have found the env vars
TM_CURRENT_LINE' TM_LINE_INDEX TM_LINE_NUMBER TM_INPUT_START_LINE
but it is not evident for me how to know the whole text before/after the cursor.
Any idea will be welcome.