在coffee.vim中修改注释突出显示的问题

时间:2014-03-13 16:48:29

标签: javascript vim coffeescript

我试图修改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注释?

enter image description here

1 个答案:

答案 0 :(得分:2)

搜索#*匹配整个文件,因为*匹配任意数量的前一个字符甚至为零。因此,所有字符都匹配零# s。

这就是您发布的示例使用#.*的原因 - 匹配一个#然后匹配任意数量的任何字符(.*

我发现这是一个有用的参考:VimRegex

违规行是:

syntax region  coffeescriptComment        start=/#*/      end="\$" contains=coffeescriptCommentTodo,coffeescriptCvsTag,@Spell fold

尝试:start=/#\+/以匹配至少一个#以及更多。