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, например.

Другие вопросы по тегам