Благодаря другому вопросу мне удалось назначить синтаксическую область для моего документа, которая начинается с в самом начале (\%^
) документа :
syn region menhirDeclarations start=/\%^./rs=e-1 end=/%%/me=s-1
Чтобы это работало, шаблон запуска должен соответствовать самому первому символу документа.То есть вышеописанное не будет работать только с start=/\%^/
;он нуждается в этом последнем .
(совпадение, в случае успеха, исключает этого символа; но оно должно фактически совпадать, прежде чем это произойдет ...)
Проблема в том, что любой :syn-keyword
совпадение в том же месте - даже на один ниже в :syn-priority
- будет препятствовать моему вышеупомянутому региону.По сути, это означает, что у меня не может быть любого keyword
, которому разрешено совпадать в начале документа, или это ключевое слово, если таковое будет размещено, предотвратит вышеприведенную "целую верхнюю часть-document "область из сопоставления вообще.
Конкретный пример.Со следующим синтаксисом:
syn keyword menhirDeclarationKeyword %parameter %token " ...
syn region menhirDeclarations start=/\%^./rs=e-1 end=/%%/me=s-1
… документ…
%token <blah> blah
blah blah blah
… не будет содержать необходимую область menhirDeclarations
, поскольку menhirDeclarationKeyword
соответствует самому первому символу, потребляяи предотвращая сопоставление menhirDeclarations
.
Я могу обойти это, объявив все в определении синтаксиса как :syn-match
или :syn-region
, и определение вышеуказанного региона самое последнее ... но это, вероятно, проблема с производительностью, и, что более важно, действительно трудно поддается управлению.
tl; dr: Есть ли способсопоставить регион в самом начале документа, и разрешить совпадение ключевых слов в одном месте?