Tho*_*mas 5 emacs font-lock-mode
在为GNU/Emacs模式设置font-lock-keywords时,是否可以使用单个匹配器突出显示正则表达式的多个子表达式?我想做的是:
("\\(foo\\)-\\(bar\\)" '(1 foo-face) '(2 bar-face))
Run Code Online (Sandbox Code Playgroud)
这样的东西的正确语法是什么 - 或者我必须将它分成两个不同的匹配器?
尝试这样的事情:
("\\(foo\\)-\\(bar\\)" (1 foo-face) (2 bar-face))
Run Code Online (Sandbox Code Playgroud)
(即与您的相同,但没有额外的报价).
我这样说是因为我在自定义font-lock-keywords定义中有各种各样的位.其中一些nil t在第二个结束时,如下所示:
("\\(foo\\)-\\(bar\\)" (1 foo-face) (2 bar-face nil t))
Run Code Online (Sandbox Code Playgroud)
对应于OVERRIDE和LAXMATCH可选标志,可能需要,具体取决于您的具体情况.
该文档font-lock-keywords在一定程度上讨论了这一点,虽然它并不总是最简单的 - 我发现复制其他人的工作设置比较容易,比如现有的值c-font-lock-keywords-3.