2013-11-29 42 views
3

我正在嘗試爲Python設置某種類型的語法突出顯示。如何在Python中突出顯示成員變量?

我想要selfcls突出顯示評論。 我希望成員變量像功能一樣突出顯示。

例如,如果normal text是(白色),comments是(灰色),和functions是(紅色):

self._member 

self(灰色).(白色)_member(紅色)

self._member.other.method() 

self(灰色).(白色)_member(紅色).other.method()(白色)

self._method() 

應該是self(灰色)._method()(白色)

我試圖複製和修改爲裝飾的語法,因爲他們似乎相似,但沒有運氣。我也採取了look at the docs,但他們非常激烈。任何想法如何我可以做到這一點?

編輯:

幾乎得到它:

syn keyword pythonThis cls self 
syn match pythonMember "\(cls\.\|self\.\)\@<=[A-Za-z_]\+\(\.\| \)" 

hi link pythonThis Comment 
hi link pythonMember Function 

與此唯一的問題是,下面的成員變量的點爲紅色,而不是白色(self._member.other.method()是不突出準確如上所述的)。不是什麼大不了的事情,但是知道如何忽略單個匹配中的多個組會很高興(似乎您可以多次使用\@<=)。

+2

你嘗試了什麼?你試過的每一行的預期結果是什麼?什麼失敗了?什麼沒有?怎麼樣? – romainl

回答

0

我建議在模式行中爲當前文件中的每個成員添加一個:hi命令。

1
syn keyword pythonThis cls self 

syn match pythonChain '\v(^|\W)(cls|self)\zs(\s*\.\s*\h\w*)+' contains=pythonMember 
syn match pythonMember '\h\w*' contained 

hi link pythonThis Comment 
hi link pythonMember Function 
相關問題