`begin` matching ending `\n` creates rogue `\\G` on every newline
A begin/end rule will create a \\G anchor immediately after the begin match ✅
however, if the begin rule matches the ending newline \n character
it causes it to place a \\G anchor at the beginning of every single line within the begin/end rule ❌
create a grammar with the following code
"begin": "#\n",
"end": "#",
"patterns": [
{
"match": "\\G.",
"name": "invalid"
}
]
create a file and apply the grammar
#
ab
cd
#
notice how both a and c are highlighted red ❌
even tho there should not be any
\\G anchors there
remove the \n newline from the grammar
notice that there is now no incorrect \\G anchors ✅
TextMate Help/TextMate.md states:
\Gmatches end of parent rule’sbegin— or end of last stackedwhile.
@alexdima is this directly related to https://github.com/microsoft/vscode-textmate/issues/119?
~~I'm not sure what happens in TextMate (no Mac here)~~ ~~are you able to confirm this is intentional and I am able to rely on this behaviour?~~
I can confirm that TextMate 2.0 does have this behaviour and it seems it has a caching problem causing it to change depending on if the user just typed it