我正在尝试为Python设置某种类型的语法高亮显示。
我希望self
和cls
像评论一样突出显示。
我希望成员变量像函数一样突出显示。
例如,如果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()
并未突出显示 ,如上所述)。没什么大不了的,但是知道如何在一次匹配中忽略多个组会很好(看起来你似乎不能多次使用\@<=
)。
答案 0 :(得分: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
答案 1 :(得分:0)
我建议在模式行中为当前文件中的每个成员添加一个:hi命令。