[TxMt] Re: bug in syntax highlighting?

Martin Kühl martin.kuehl at gmail.com
Tue Nov 8 20:23:50 UTC 2011


On Tue, Nov 8, 2011 at 21:01, Thomas Blom <blomcode at gmail.com> wrote:
> Thankyou!  I didn't mean to denigrate textmate, but had been wondering why
> things didn't look as nice as I thought they should, when I realized the
> regex was causing problems!

So the problem is that the grammar doesn't recognize the "simple" regexp
in your example and tries to match it as an extended regexp instead
(i.e. /\\/x works).

This means that the problematic pattern in the grammar is
'string.regexp.find.perl', which is defined as:

    (?<!\\)((~\s*)?\/)(\S.*?)(?<!\\)(\\{2})*(\/)

specifically, the third group `(\S.*?)` which unconditionally eats the
first backslash, which prevents the negative look-behind `(?<!\\)` from
matching (there are backslashes everywhere!) until the closing slash
gets eaten.

We could fix this case by changing the pattern to

    (?<!\\)((~\s*)?\/)(.*?)(?<!\\)(\\{2})*(\/)

but I don't know which edge cases we'd introduce by allowing whitespace
after the opening slash.

Cheers,
Martin


More information about the textmate mailing list