字体锁定关键字:突出显示多个子表达式

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)

这样的东西的正确语法是什么 - 或者我必须将它分成两个不同的匹配器?

Pau*_*son 5

尝试这样的事情:

("\\(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)

对应于OVERRIDELAXMATCH可选标志,可能需要,具体取决于您的具体情况.

该文档font-lock-keywords在一定程度上讨论了这一点,虽然它并不总是最简单的 - 我发现复制其他人的工作设置比较容易,比如现有的值c-font-lock-keywords-3.