2014-05-06 54 views
2

我正在使用嵌入在Scala內部的語言,它有一個::運算符。我想修改我的scala.vim語法文件來識別這個新的操作符。如何在我的VIM語法高亮文件中添加「::」運算符?

這是我已經試過(第一線工作正常,但我不知道如何操作::添加到它):

syn match COperator "[&|~><!)(*#%@+/=?:;}{,.\^\-\[\]]" 
syn match COperator "\v::" 
syn match COperator "\v\:\:" 
hi link COperator Special 

有什麼建議?

+2

它看起來像第一行模式將匹配'::',因爲它是。它不限制字符的數量,所以'::'將與外部'[]'字符類中單個':'的存在相匹配。 –

+2

那麼,爲什麼你要明確地匹配'::',當你已經將每個':'突出顯示爲運算符時,正如@MichaelBerkowski指出的那樣? –

+0

嗯,「::」不會改變顏色。 「:」確實,「:=」確實,但不是「::」。 scala.vim會覆蓋模式「::」嗎?什麼(syn match scalaOperator「:\ {2,\}」「這不是一個類型)呢?(如果我註釋掉了,我會得到」::「來工作,但是我對正則表達式不夠熟悉確定「::」或斯卡拉知道什麼時候「::」出現) – Chris

回答

1

現有scalaOperator ":\{2,\}"是造成:所有序列匹配(如果有兩個或兩個以上系列:),覆蓋我自己syn match COperator聲明。

的解決方案,使::匹配的COperator是簡單地重命名符合一系列:到COperator的scalaOperator:

syn match COperator ":\{2,\}" 

摘要:檢查現有的比賽規則重寫自己的比賽規則。

相關問題