Font-lock-Keywords: выделение нескольких подвыражений
При настройке font-lock-Keywords для режима GNU/Emacs, можно ли выделить несколько подвыражений регулярного выражения одним сопоставителем? То, что я хотел бы сделать, это что-то вроде:
("\\(foo\\)-\\(bar\\)" '(1 foo-face) '(2 bar-face))
Каков будет правильный синтаксис для чего-то подобного - или мне нужно разделить его на два разных сопоставителя?
1 ответ
Попробуйте что-то вроде этого:
("\\(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
, например.