为GNU / Emacs模式设置font-lock-keywords时,是否可以使用单个匹配器突出显示正则表达式的多个子表达式?我想做的是:
("\\(foo\\)-\\(bar\\)" '(1 foo-face) '(2 bar-face))
这样的东西的正确语法是什么 - 或者我是否必须将其拆分为两个不同的匹配器?
答案 0 :(得分:5)
尝试这样的事情:
("\\(foo\\)-\\(bar\\)" (1 foo-face) (2 bar-face))
(即与你的相同,但没有额外的引号)。
我这样说是因为我在自定义font-lock-keywords定义中有各种各样的位。其中一些在第二个结尾处有nil t
,如下所示:
("\\(foo\\)-\\(bar\\)" (1 foo-face) (2 bar-face nil t))
对应于OVERRIDE
和LAXMATCH
可选标记,可能需要根据您的具体情况而定。
font-lock-keywords
的文档在某种程度上讨论了这一点,尽管并不总是最简单的 - 我发现复制其他人的工作设置比较容易,比如c-font-lock-keywords-3
的现有值,例如。