我想在CoffeeScript代码中突出显示函数名称:
hightlight = ->
hightlight = (args) ->
不包括以下内容:
noHighlight ->
noHighlight =
key:
如何使用自定义Vim语法声明实现此目的?
答案 0 :(得分:2)
我是这样做的。假设你有vim-coffee-script,你应该编辑它syntax/coffee.vim
(例如~/.vim/bundle/vim-coffee-script/syntax/coffee.vim
如果你正在使用病原体)。
添加:
syn region coffeeFunction start=/\S\s*[a-zA-Z0-9_]\+ = \((.*) \)\?->/ end=// oneline transparent
syn match coffeeFunctionName /\S\s*[a-zA-Z0-9]\+ / contained containedin=coffeeFunction
hi def link coffeeFunctionName Identifier
这突出显示了函数定义,与突出显示类方法的方式相同。
绝对不完美,因为这是我第一次使用Vim的语法高亮,但它对我有用。大黑客正在使用syn region
而不是syn match
,因为后者会覆盖现有语法,我不知道如何防止这种情况。
答案 1 :(得分:1)
您需要找出导致突出显示的语法组。 :syn list
显示所有活动组,但在安装SyntaxAttr.vim - Show syntax highlighting attributes of character under cursor插件时更容易。
如果您使用的语法脚本提供专用语法组(名为coffeeFunction
),则更改突出显示就像放置
:highlight link coffeeFunction Function
进入~/.vimrc
。如果没有专用组,则必须扩展语法脚本(或要求脚本的作者执行)。面临的挑战是新定义必须与其他定义相适应(特别是关于contained=...
关系。您也可以搜索不同的语法脚本.AFAIK,目前没有与Vim一起提供的CoffeeScript语法脚本,所以可能是那里的几个竞争版本。