Как я выделяю целый текст в строке, которая инициировала syn-containedin?

Предположим, что у меня есть эти определения Vim:

syn match tasktag "\(\s\)\@<=@[a-zA-Z0-9_]\+"
syn match taskdone "\<[Dd]one\>" containedin=tasktag

Как я указываю taskdone выделить весь текст в строке? Я смотрел на :h syn-pattern-offset а также :h syn-region.

1
задан 25.07.2010, 20:34

1 ответ

Во-первых, Ваше соответствие "tasktag" не позволяет пробелы или других "ограничителей слова", все же Ваше соответствие "taskdone" требует "сделанный" быть дискретным словом из-за Вашего \<и \> граничные атомы слова.

Во-вторых, Ваше соответствие "taskdone" записано, чтобы только выделить слово "Done".

Принятие меня правильно понимает то, что Вы хотите, я изменил Ваши два соответствия:

syn match tasktag "\(\s\)\@<=@[a-zA-Z0-9_ ]\+"
syn match taskdone "@.*\<[Dd]one\>.*" containedin=tasktag

Если Вы поэтому уже не сделали, необходимо будет указать выделение для двух соответствий. Например:

highlight link tasktag TODO
highlight link taskdone Statement
0
ответ дан 24.11.2019, 01:47

Теги

Похожие вопросы