2013-02-26 64 views
1

我想擴展現有的文件類型的文件類型的語法和高亮。我的新文件語法的基本結構如下:擴展VIM文件的語法到另一個文件類型不工作

" Some local (new) syntax that I want to match 
syn match upfOperator "[&|~><!)(*#%@+/=?:;}{,.\^\-\[\]]" 
syn match upfDefines "\$\S\+" 
syn match upfDefines "\${\S\+}" 
syn match upfParens "[)(}{\[\]]" 

" load syntax that I want to extend. This contains it's own highlight commands 
runtime syntax/dtcl.vim 

" New highlight statements 
hi link upfOperator   Statement 
hi link upfDefines   Constant 
hi link upfParens   Constant 

的問題是,所有包含在dtcl.vim文件語法不突出。我可以打開一個dctl文件並突出顯示。但是,當我打開另一個文件類型(* .upf)時,upf.vim被加載,但不是dtcl.vim。

的dctl.vim不具有會導致文件不加載任何「如果語法定義的」類型的命令。

回答

2

如果dctl.vim是一個正確的Vim語法腳本,它會清除任何現有的語法項(:syntax clear),因爲所有語法都應該是這樣。因此,您必須將自己的upf...定義移動到:runtime以下。

正確加載現有的語法,你應該使用下面的命令:

runtime! syntax/dctl.vim syntax/dctl/*.vim 

:runtime syntax/dctl.vim只考慮第一次出現沒有語法擴展。除此之外,只要您只添加一些尚未涵蓋的新語法元素(如果它們是,您可能需要在您的中使用containedin=...),除此之外,我認爲您的方法沒有問題。您可以使用:syn list命令來檢查實際定義的內容。

相關問題