On Tue, Nov 8, 2011 at 21:01, Thomas Blom blomcode@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