Определите цветные ключевые слова, работающие со всеми синтаксическими файлами - PullRequest
2 голосов
/ 06 октября 2009

Что я хочу, это определить список ок. 20 ключевых слов, которые будут одинакового цвета независимо от активного синтаксического файла. Я скопировал и вставил следующее в мой .vimrc, чтобы выделить слово «ГОТОВО», но оно не будет работать.

syn match tododone        /DONE/ 
syn region done start=/\*\*DONE/ end=/\*\*/ 
hi link tododone tDone
hi link done tDone
hi default tDone ctermfg=DarkGreen guifg=White guibg=DarkGreen

Возможно ли это? И если да, то что я пропустил?

1 Ответ

3 голосов
/ 06 октября 2009

Возможно, но вам придется сделать это после подсветка синтаксиса была определена (большинство подсветок синтаксиса начинаются с :syn clear, что приведет к удалению того, что вы сделали). Это можно сделать с помощью autocmd. Попробуйте это:

hi link tododone tDone
hi link done tDone
hi default tDone ctermfg=DarkGreen guifg=White guibg=DarkGreen

function! HighlightKeywords()
    " syn keyword is faster than syn match and is
    " therefore better for simple keywords.  It will
    " also have higher priority than matches or regions
    " and should therefore always be highlighted (although
    " see comments about containedin= below).
    syn keyword tododone DONE

    syn region done start=/\*\*DONE/ end=/\*\*/
endfunction

autocmd Syntax * call HighlightKeywords()

Обратите внимание, что часть области syn не может быть гарантирована, так как существуют разные проблемы с подсветкой региона, которые могут вызвать проблемы.

Также, как общее примечание, если есть регионы, в которых вы хотите, чтобы подсветка появлялась, они должны быть перечислены в явном виде, что может немного усложнить ситуацию: например,

" Allow this keyword to work in a cComment
syn keyword tododone DONE containedin=cComment

Для получения дополнительной информации см .:

:help :syn-keyword
:help :syn-region
:help :function
:help :autocmd
:help Syntax
:help :syn-containedin
:help :syn-priority
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...