Синтаксическое шрифтовое выделение
Для поиска и выделения синтаксически значимого текста при синтаксическом шрифтовом выделении используется таблица синтаксиса (см. Таблицы синтаксиса). Если оно включено, оно выполняется перед шрифтовым выделением на основе поиска. Переменная font-lock-syntactic-face-function, описанная ниже, определяет, какие синтаксические конструкции выделять. На синтаксическое шрифтовое выделение влияют несколько переменных; задавать их следует с помощью font-lock-defaults (см. Основы Font Lock).
Каждый раз, когда режим Font Lock выполняет синтаксическое шрифтовое выделение фрагмента текста, он сначала вызывает функцию, заданную переменной syntax-propertize-function. Основные режимы могут использовать её для применения текстовых свойств syntax-table, переопределяющих таблицу синтаксиса буфера в особых случаях. См. Свойства синтаксиса.
- Переменная: font-lock-keywords-only
-
Если значение этой переменной не равно
nil, Font Lock не выполняет синтаксическое шрифтовое выделение, а использует только шрифтовое выделение на основе поиска, управляемоеfont-lock-keywords; обычно в результате комментарии и строки не выделяются. Обычно режим Font Lock задаёт эту переменную на основе элемента keywords-only вfont-lock-defaults. Если значение равноnil, Font Lock вызываетjit-lock-register(см. Другие переменные Font Lock), чтобы настроить автоматическое повторное шрифтовое выделение текста буфера после изменённой строки с учётом нового синтаксического контекста, вызванного изменением.Чтобы использовать только синтаксическое шрифтовое выделение, для этой переменной и
font-lock-keywordsследует задать значениеnil(см. Основы Font Lock).
- Переменная: font-lock-syntax-table
Эта переменная содержит таблицу синтаксиса, используемую для шрифтового выделения комментариев и строк. Обычно режим Font Lock задаёт её на основе элемента syntax-alist в
font-lock-defaults. Если это значение равноnil, при синтаксическом шрифтовом выделении используется таблица синтаксиса буфера (значение, возвращаемое функциейsyntax-table; см. Функции таблиц синтаксиса).
- Переменная: font-lock-syntactic-face-function
-
Если значение этой переменной не равно
nil, оно должно быть функцией, определяющей, какой шрифт использовать для заданного синтаксического элемента (строки или комментария).Функция вызывается с одним аргументом — состоянием разбора в точке, возвращаемым функцией
parse-partial-sexp, — и должна возвращать шрифт. По умолчанию для комментариев возвращаетсяfont-lock-comment-face, а для строк —font-lock-string-face(см. Шрифты для Font Lock).Обычно эта переменная задаётся через элементы «другие» в
font-lock-defaults:(setq-local font-lock-defaults `(,python-font-lock-keywords nil nil nil (font-lock-syntactic-face-function . python-font-lock-syntactic-face-function)))
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Syntactic-Font-Lock.html