Настройка форматирования шрифтов, основанного на поиске
Вы можете использовать font-lock-add-keywords для добавления дополнительных правил форматирования шрифтов, основанных на поиске, в основной режим, и font-lock-remove-keywords для удаления правил.
- Функция: font-lock-add-keywords mode keywords &optional how
-
Эта функция добавляет выделение ключевых слов для текущего буфера или для основного режима mode. Аргумент keywords должен быть списком с тем же форматом, что и переменная
font-lock-keywords.Если mode — символ, являющийся именем команды основного режима, например,
c-mode, то включение режима Font Lock в mode добавит keywords кfont-lock-keywords. Вызов с не-nilзначением mode корректен только в вашем файле ~/.emacs.Если mode равен
nil, эта функция добавляет keywords кfont-lock-keywordsв текущем буфере. Этот способ вызоваfont-lock-add-keywordsобычно используется в функциях обработчиков режима.По умолчанию, keywords добавляются в начало
font-lock-keywords. Если необязательный аргумент how равенset, они используются для замены значенияfont-lock-keywords. Если how имеет любое другое не-nilзначение, они добавляются в конецfont-lock-keywords.Некоторые режимы предоставляют специализированную поддержку, которую вы можете использовать в дополнительных шаблонах выделения. См. переменные
c-font-lock-extra-types,c++-font-lock-extra-types, иjava-font-lock-extra-types, например.Предупреждение: Команды основного режима не должны вызывать
font-lock-add-keywordsни при каких обстоятельствах, ни напрямую, ни косвенно, кроме как через их обработчики режима. (Это приведёт к некорректному поведению для некоторых второстепенных режимов.) Они должны настраивать свои правила для форматирования шрифтов, основанного на поиске, установивfont-lock-keywords.
- Функция: font-lock-remove-keywords mode keywords
Эта функция удаляет keywords из
font-lock-keywordsдля текущего буфера или для основного режима mode. Как и вfont-lock-add-keywords, mode должен быть именем команды основного режима илиnil. Все замечания и требования дляfont-lock-add-keywordsприменимы и здесь. Аргумент keywords должен точно совпадать с тем, который использовался соответствующейfont-lock-add-keywords.
Например, следующий код добавляет два шаблона форматирования шрифтов для режима C: один для форматирования слова «FIXME», даже в комментариях, и другой для форматирования слов «and», «or» и «not» как ключевых слов.
(font-lock-add-keywords 'c-mode
'(("\\<\\(FIXME\\):" 1 font-lock-warning-face prepend)
("\\<\\(and\\|or\\|not\\)\\>" . font-lock-keyword-face)))
Этот пример влияет только на собственный режим C. Чтобы добавить те же шаблоны в режим C и во все режимы, производные от него, сделайте это вместо этого:
(add-hook 'c-mode-hook
(lambda ()
(font-lock-add-keywords nil
'(("\\<\\(FIXME\\):" 1 font-lock-warning-face prepend)
("\\<\\(and\\|or\\|not\\)\\>" .
font-lock-keyword-face)))))
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Customizing-Keywords.html