On 2011-04-20 02:18, Marius Hofert wrote:
I use textmate to program in the statistical software R. To execute an R script, I
typically first select the lines and then use "Apple-key + R" which launches
"Send Selection/Document to ... R.app". In order to execute all lines before the
current cursor position, I also first select all lines (with "Apple-key + shirt +
up"). But that shifts the view to the top of the document, which is a bit tedious. Is
there a simple way to tell textmate to execute all lines before the current cursor
I can think of a couple ways to do it.
The easiest way is with a macro. Start recording, jump to beginning of
line, select to top, "Send selection to R.app", right arrow, stop
recording. Save the macro as you wish. The key is the right-arrow
action at the end, which will deselect everything and leave the cursor
at the end of the selected area. Two disadvantages: It does move your
cursor to the beginning of the current line, and it moves the current
line to the bottom of the window.
Better, and almost as easy, would be to modify the bundle command "Send
Selection/Document to R.app", which is in the "R Console (R.app)"
bundle. It's just a shell script which captures its stdin and uses
AppleScript to send it to R.app. This can be modified really easily to
do what you want. The line that captures the input is near the top:
'rawText="`cat`"' Change that to:
rawText = "`head -$(($TM_LINE_NUMBER-1))`"
The $TM_LINE_NUMBER environment variable contains the number of the
current line. The $((... -1)) expression simply says to subtract one to
get all lines *before* the cursor. And the head command simply gets
that many lines from stdin and discards the rest.
Sr. Software Engineer
+1 734 821 1461