在为 GNU/Emacs 模式设置 font-lock-keywords 时,是否可以使用单个匹配器突出显示正则表达式的多个子表达式?我想做的是类似的事情:
("\\(foo\\)-\\(bar\\)" '(1 foo-face) '(2 bar-face))
类似这样的正确语法是什么 - 还是我必须将它分成两个不同的匹配器?
在为 GNU/Emacs 模式设置 font-lock-keywords 时,是否可以使用单个匹配器突出显示正则表达式的多个子表达式?我想做的是类似的事情:
("\\(foo\\)-\\(bar\\)" '(1 foo-face) '(2 bar-face))
类似这样的正确语法是什么 - 还是我必须将它分成两个不同的匹配器?
尝试这样的事情:
("\\(foo\\)-\\(bar\\)" (1 foo-face) (2 bar-face))
(即与您的相同,但没有额外的引号)。
我这样说是因为我的自定义字体锁定关键字定义中有各种类似的内容。其中一些nil t
在第二个末尾有,如下所示:
("\\(foo\\)-\\(bar\\)" (1 foo-face) (2 bar-face nil t))
这对应于OVERRIDE
和LAXMATCH
可选标志,根据您的具体情况可能是必要的。
的文档font-lock-keywords
对此进行了深入讨论,尽管它并不总是最容易遵循——我发现复制别人的工作设置更容易,例如 的现有值c-font-lock-keywords-3
。