On 23.04.2007, at 16:33, Timothy Bates wrote:
I often want to edit collections (R lists), and it would be nice if tabbing inside a collection had the action of moving the selection to the next item in the list. Would it be possible to write a command (to hard for a snippet, I think) which takes over the tab key when there is no snippet bound to it, and detects if the user is in a c(x,y,..) structure, and selects the next item in the list?
So if the cursor is in item 1 like this
a = c(1|11,222)
Then hitting tab would move to highlight all of item 2. Preferably hitting shift-tab would move to the next previous item, or in front of the collection if already at the head.
To do so as you described is a bit complex but doable. A very naïve approach would be to use the attached two things:
EditVector.tmMacro (key bound to SHIFT+CTRL+V in scope source.r) - which calls TM's Find function to select a given vector c(.*?) in the current line - and calls EditVector.tmCommand
EditVector.tmCommand: - which splits the selection (delimiter := ',') into snippet items - and replaces the selection with a snippet for all items within the vector
Now you can use the TAB-key to go to the next items. Unfortunately there's no SHIFT+TAB for going one item back.
As I mentioned it's a naïve solution but it works.
Cheers,
Hans