vim语法突出显示在c.vim之上,“包含”并不完全有用

时间:2013-05-28 10:21:50

标签: vim syntax-highlighting vim-syntax-highlighting

我正在尝试为vim构建自己的Objective-C突出显示方案。问题是,当我使用contained定义某个规则时,即使没有包含此规则的规则,它仍然会被应用。我在objc.vim中有这个用于测试目的:

syntax clear
runtime! syntax/c.vim
syn match firstComponent "[_A-Za-z0-9()]*:" contained
hi link firstComponent Function

我怀疑这是因为c.vim有很多contained=ALLBUT的规则,因此它们也包括我的规则。有办法解决这个问题吗?

感谢。

PS我正在构建自己的方案来突出显示方法,因为我之前使用的one很慢,特别是方法签名匹配很慢,我做了一个减少,显示了这一点。我怀疑这可能是因为上面的问题。复杂的内部规则随处可见。

1 个答案:

答案 0 :(得分:1)

你的预感是正确的,这是contained=ALLBUT所致。重用现有语法是有限制的。虽然您可以尝试覆盖或:syntax clear某些元素,但有一点会变得过于繁琐。

如果原始语法作者仍在维护他的语法,你可以讨论这个,并提交补丁以简化集成,或者甚至完全拆分一个常用的子语法,然后你可以用它来建立你的语法。如果不是这种情况,或者耦合是不受欢迎的,那么最好开始创建自己的,完全独立的语法,即使这意味着一些重复。