On Apr 11, 2006, at 9:21 AM, James Andrews wrote:
Hi Haris,
This wasn't quite what I had in mind (more an extension of existing keyboard or mouse text selection techniques using an added modifier key) but it would be an alternative (and quick to implement) if it could be made to work.
What commands would you combine with the regex to result in selecting text at the cursor with the specified scope? I've done some thinking and digging around in case I'd missed something, but can't see how it could be done.
Wait, I don't see where scope comes in in what you discussed above, I don't thing that would help you select the foo in foo_bar. That is another, very interesting question, which does not have a trivial answer atm, though I guess Allan could possibly provide such a command, that selects the entire current scope. He has however given us the tools to create it ourselves, using the new inputFormat plist key (see the release notes):
Basically it is now possible to get as input to a command an "xml" version of the text, where the tags are exactly the scopes. Scanning this file would, theoretically, allow you to select the current scope. The problem would probably be to locate the text right where the cursor is. Possible with a bit of programming. You'd basically need (I think) to locate all text nodes and count newlines until you match TM_LINE_NUMBER. Then scan characters until TM_LINE_INDEX. Then select the text node containing this character. At the end of the day you would have a command that outputs the whole text of the current scope. Then you could also have the command use pbcopy to place this into the pasteboard and discard its output. Then you could use this in a macro together with a literal backward search to actually select the corresponding text. The only drawback of this, apart from its slowness in large documents, is the fact that it alters the pasteboard. Another alternative, if TextMate's applescripting possibilities allow this (which I think they don't at the moment, though I'd like to put it as a request if they don't), is to tell TextMate through osascript to do a backward search for the appropriate text, all from within the command. That would leave the pasteboard intact.
Sorry for the technical answer.
Thanks, James
Haris