Spec-Zone.ru › Elisp

Настройка форматирования шрифтов, основанного на поиске

Вы можете использовать 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API