Font-lock-Keywords: выделение нескольких подвыражений - PullRequest
5 голосов
/ 10 февраля 2010

При настройке ключевых слов font-lock для режима GNU / Emacs возможно ли выделить несколько подвыражений регулярного выражения одним сопоставителем? То, что я хотел бы сделать, это что-то вроде:

("\\(foo\\)-\\(bar\\)" '(1 foo-face) '(2 bar-face))

Каков будет правильный синтаксис для чего-то подобного - или мне нужно разделить его на два разных сопоставителя?

1 Ответ

5 голосов
/ 10 февраля 2010

Попробуйте что-то вроде этого:

("\\(foo\\)-\\(bar\\)" (1 foo-face) (2 bar-face))

( т.е. то же самое, что и у вас, но без лишних кавычек).

Я говорю это, потому что в моих пользовательских определениях font-lock-keyword есть разные биты, подобные этому. У некоторых из них nil t в конце второго, например:

("\\(foo\\)-\\(bar\\)" (1 foo-face) (2 bar-face nil t))

, которые соответствуют опциональным флагам OVERRIDE и LAXMATCH и могут быть необходимы в зависимости от ваших конкретных обстоятельств.

Документация для font-lock-keywords обсуждает это в некоторой глубине, хотя не всегда проще всего следовать - мне проще просто скопировать чужую рабочую настройку, например, существующее значение c-font-lock-keywords-3. 1018 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...