[TxMt] Re: Grammar matching help

Jacob Rus jrus at hcs.harvard.edu
Fri Jan 5 10:41:53 UTC 2007


Colin Hahn wrote:
> I'm trying to put together a grammar and having a hard time getting the 
> pattern matching right.
> 
> The line I'm interested in will be in the following format--
> 
> KW: [any text except a percentage sign can go in here] % (fold)
> 
> What I want to do is apply the scope comment.line.percentage from the % 
> sign to the end of the line, and variable.notes to everything in between 
> KW: and the percent sign.  I also want to be able to use Markdown-style 
> italics within the variable.notes section.
> 
> Here is the patterns block as I have constructed it thus far:
> 
>     patterns = (
>         {    name = 'comment.line.percentage';
>             match = '%.*$';
>         },
>         {    begin = '^KW:';
>             end = '% \(fold\)|$';

[...]

your problem is with that last line.  the way it works now, if it 
encounters the literal text `% (fold)` then right after that other 
scopes will start matching again, as that ends the pattern.  Instead, 
what you want is for the end pattern to be a lookahead on the % sign. 
So you should have:

     end = '(?=%)|$'

or something similar.  For more info, see the section of the TextMate 
manual about regular expression syntax.

-Jacob




More information about the textmate mailing list