2013-05-28 144 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。重用現有語法是有限的。儘管你可以嘗試覆蓋或某些元素,但是這會變得過於乏味。

如果原始語法作者仍然在維護他的語法,可以討論這個問題,並提交補丁以簡化集成,或者甚至可以完全拆分出可用於建立基礎的通用子語法。如果情況並非如此,或者耦合是不受歡迎的,那麼最好開始創建自己的完全獨立的語法,即使這意味着重複。