2013-04-25 112 views
0

我想擴展我的JS語法突出顯示,突出顯示將在我的程序中常用的某些功能。我正在使用janus來保持我所有的插件順序。現在我在那裏有一個文件叫vim-chino,然後在那裏我有一個syntax文件夾和一個ftdetect文件夾。在這兩個我有一個chino.vim文件。這是我的syntax/chino.vim文件:在vim中擴展Javascript語法突出顯示

if !exists("main_syntax") 
    if version < 600 
    syntax clear 
elseif exists("b:current_syntax") 
    finish 
endif 
let main_syntax = 'javascript' 
endif 


syn match chinoKeywords "ChinoView" 
hi def link chinoKeywords Function 


let b:current_syntax = "javascript" 
if main_syntax == 'javascript' 
    unlet main_syntax 
endif 

,在我ftdetect/chino.vim我:

function! s:DetectJS() 
    if getline(1) =~# '^#!.*/bin/env\s\+node\>' 
     setfiletype javascript 
    endif 
endfunction 
autocmd BufNewFile,BufRead * call s:DetectJS() 

我想它強調ChinoView任何JavaScript文件。我覺得JS的語法高亮要麼覆蓋它,要麼它不被讀取。

編輯:如果我不得不猜測發生了什麼事情,當它看起來b:current_syntax它已經有一個語法,所以它退出。

+0

你可以檢查':syn list chinoKeywords'是否輸出任何內容。如果不是這意味着你的syn匹配沒有生效。 – FDinoff 2013-04-25 21:36:06

+0

是的,它說'沒有這樣的突出顯示組名稱:chinoKeywords'。我也嘗試過'syn關鍵字chinoKeywords ChinoView',但這也不起作用。 – gblock 2013-04-25 21:44:59

+0

你可以嘗試添加'syn match chinoKeywords「ChinoView」'和 'hi def link chinoKeywords Function' to':DetectJS()'而不是'syntax/chino.vim'。 (在'setfiletype javascript'之後) – FDinoff 2013-04-26 01:54:08

回答

4

ftplugin/chino.vim套語法javascript,但額外的突出你定義爲新奇諾語法。這並不合適。

如果你只是想一個額外的關鍵字所有的Javascript強調,你可以讓Vim缺省檢測發生,添加這些行after/syntax/javascript.vim

syn match chinoKeywords "ChinoView" 
hi def link chinoKeywords Function 

但是,如果要定義不同奇諾文件類型取決於文件的shebang行,你需要:setfiletype chinoftplugin/chino.vim,然後包括默認的JavaScript語法在syntax/chino.vim(設置b:current_syntax初步檢查後,前):

runtime! syntax/javascript.vim syntax/javascript/*.vim 
+0

我已經使用插件來擴展我的JavaScript高亮顯示。無論如何添加額外的突出顯示,而無需編輯該插件的'.vim'文件? – gblock 2013-04-26 18:17:44

+0

正如我所說的,'〜/ .vim/after/syntax/javascript.vim'源於原始語法腳本。嘗試把你的添加到那裏。 – 2013-04-26 18:24:47

+0

因爲我使用Janus所有我必須做的是在我的vim-chino文件夾中創建一個語法文件夾,並且名稱是'javascript.vim',並且只有: 「syn match」chinoKeywords「ChinoView」' 'hi def link chinoKeywords Function' 在那裏。謝謝您的幫助! – gblock 2013-04-26 20:27:01