我试图修改CoffeeScript评论的重点:
"" coffeescript comments
syntax keyword coffeescriptCommentTodo TODO FIXME XXX TBD contained
syntax region coffeescriptLineComment start=/####\@!/ end=/###/ keepend contains=coffeescriptCommentTodo,@Spell
syntax region coffeescriptEnvComment start=/####\@!/ end=/###/ display
syntax region coffeescriptLineComment start=/####\@!/ end=/###/ keepend contains=coffeescriptCommentTodo,@Spell fold
syntax region coffeescriptCvsTag start="\$\cid:" end="\$" oneline contained
syntax region coffeescriptComment start=/#*/ end="\$" contains=coffeescriptCommentTodo,coffeescriptCvsTag,@Spell fold
我承认我有点随意地做这件事,基于这个其他语法文件:
syn match coffeeComment /#.*/ contains=@Spell,coffeeTodo
hi def link coffeeComment Comment
syn region coffeeBlockComment start=/####\@!/ end=/###/
\ contains=@Spell,coffeeTodo
hi def link coffeeBlockComment coffeeComment
" A comment in a heregex
syn region coffeeHeregexComment start=/#/ end=/\ze\/\/\/\|$/ contained
\ contains=@Spell,coffeeTodo
hi def link coffeeHeregexComment coffeeComment
有了我现在(第一个代码),除了if语句之外,所有内容都会被注释掉。如何修改语法文件以正确突出显示CoffeeScript注释?
答案 0 :(得分:2)
搜索#*
匹配整个文件,因为*
匹配任意数量的前一个字符甚至为零。因此,所有字符都匹配零#
s。
这就是您发布的示例使用#.*
的原因 - 匹配一个#
然后匹配任意数量的任何字符(.*
)
我发现这是一个有用的参考:VimRegex。
违规行是:
syntax region coffeescriptComment start=/#*/ end="\$" contains=coffeescriptCommentTodo,coffeescriptCvsTag,@Spell fold
尝试:start=/#\+/
以匹配至少一个#
以及更多。