Sweet. I couldn't get it to work exactly as described (I had lots of problems with getting the scope of the caret right), but with some wrangling - and making sure that certain rules came in the right order - it seems to be working. I was even able to get "smart deletion" (where backspace deletes both your smart quotes) with a similar trick.
<br><br>rock!<br> <br><div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">---------- Forwarded message ----------<br>From: Allan Odgaard <
<a href="mailto:throw-away-1@macromates.com">throw-away-1@macromates.com</a>><br>To: TextMate users <<a href="mailto:textmate@lists.macromates.com">textmate@lists.macromates.com</a>><br>Date: Fri, 14 Apr 2006 12:24:15 +0200
<br>Subject: Re: [TxMt] Bundle for Remind<br>On 13/4/2006, at 5:49, Rupa Deadwyler wrote:<br><br>> I need to figure out how to scope functions() that have other<br>> functions inside them, my first regex was not good at all. And I
<br>> wish I could get %" to be completed as Smart Typing Pairs, but it<br>> seems you can only have one character in them :(<br><br>You sort of can. You need to add a rule to the language grammar, e.g.:<br><br>
    { match = '%(\s)';<br>      captures = {<br>        1 = { name = "meta.incomplete-string-or-whatever"; };<br>      };<br>    },<br><br>Now when you enter % in the source, the scope of the caret should be<br>
the one shown above. So create a snippet which inserts whatever needs<br>insertion ("$1"%) and give that snippet a key equivalent of " and<br>scope of source.remind meta.incomplete-string-or-whatever.<br><br>
Then if you type %" in a source.remind file, you should get %""% with<br>the caret in the middle, and you can press tab to skip out of this<br>string.<br><br>The rule is made so that this only works when the character following
<br>the % is a whitespace character (which includes newlines, so it also<br>works when typing at the end of a line).<br></blockquote></div><br>