On Apr 5, 2007, at 5:15 PM, Steve King wrote:
On Thu, 5 Apr 2007, Rob McBroom wrote:
There doesn't seem to be a way to set "beginning of a line" as a Tab Trigger, but perhaps you could modify the relevant language grammars to have a "beginning of line" scope or an "empty line" scope and have a Snippet or Command with a Key Equivalent of ⇥ that inserts a literal Tab only in that scope.
This *almost* works, but my language-grammar-fu is not strong enough. In the C grammar, for example, I haven't been able to come up with a scoping rule to select '^\s*' that doesn't interfere with existing rules which contain whitespace anchored at the start of the line (like pre-processor directives). I think I'd have to edit every existing rule which contains '^\s*' to capture that leading whitespace into its own scope. That's way more grief than I'm looking for.
And, as I reflect on it some more, just re-assigning the tab key isn't exactly what I want. I also want cmd-] to insert hard tabs to indent a block, which wouldn't happen with this technique. Though I suppose I could write another command for cmd-] that would do that.
I actually think what you want is to leave the tab key alone, and the same for the other keys, and to just write a trivial 3 line script to do the kind of change you need to the entire document whenever it's run. (I think someone already suggested something similar). Then, assuming you use some sort of svn type system, you should be able to have a pre/post-commit hook or whatnot that runs this script.
-- Steve King, steve@narbat.com
Haris Skiadas Department of Mathematics and Computer Science Hanover College