2013-03-14 66 views
0

我試圖在vim式的彩虹括號中對不同級別的圓括號進行着色。但我不能沒有突破,例如,css突出顯示。Vim語法修改

問題是:任何文本的語法進入大括號的CSS文件,非常合理的定義爲「載」,如:

syn keyword cssColor contained aqua 
syn region cssDefinition transparent start='{' end='}' contains=cssColor 

根據這個定義,如果是「AQUA」關鍵字高亮顯示在大括號中,但不是其他。

現在,當我定義區域像括號:通過cssDefinition cssColor的

syn region brace1 transparent contains=brace2 
syn region brace2 transparent contained contains=brace3 
syn region brace3 transparent contained contains=brace1 

能夠以不同的顏色他們,我打破遏制。說包含所有顯然不工作。

所以問題是,是否有可能編寫代碼來獲取原始語法組中包含的元素,並將它們添加到新定義的語法組中?我知道這對css文件沒有真正的意義,但它通常是。

回答

1

當你融入現有的(filetype-)語法時,你必須考慮它的結構;你不能只把你的定義放在「頂部」,並希望所有的作品。當然,在編寫像彩虹括號這樣的常用插件功能時,這是很困難的。

我認爲你必須將各種「例外」和特殊情況合併到你的插件中,或者移動到另一個可用於突出顯示的機制,即matchadd()/matchdelete()函數。不幸的是,你沒有:syn region的自動嵌套功能,所以它可能很難實現。