2013-05-28 145 views
0

我正在尝试为vim构建自己的Objective-C突出显示方案。问题是,当我用contained定义一些规则时,即使没有包含这个规则的规则,它仍然被应用。我有这个在我的objc.vim用于测试目的:在c.vim之上突出显示vim语法,“contains”不起作用

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

您的预感是正确的,这是由于contained=ALLBUT。重用现有语法是有限的。尽管你可以尝试覆盖或某些元素,但是这会变得过于乏味。

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