我正在为我正在实现的基本语言编写一个主要的Emacs模式。我想强调方法调用的语法,其中方法名称由[a-z][^()]*
检查,但仅在([^)])
后面。我如何定义一个正则表达式,如果第二部分后跟第一部分,则匹配第一部分,但不突出显示第二部分?
答案 0 :(得分:1)
试试这个:
(font-lock-add-keywords 'my-mode
'(("\\(\\b[a-z][^()]*\\)([^)]*)"
1 font-lock-function-name-face t)))
1表示将突出显示应用于第一个子表达式。
注意:我添加了一个\\b
,只有在[a-z]
开始一个字时才会匹配(否则Dude()
会突出显示ude
),我添加了一个{/ 1}}在最后一组parens b / c中,它似乎丢失了。
我在c ++模式下对此进行了测试。
可以找到有关font-lock-add-keywords和其他字体锁定内容的文档here。