Spec-Zone.ru › Elisp

Синтаксическое шрифтовое выделение

Для поиска и выделения синтаксически значимого текста при синтаксическом шрифтовом выделении используется таблица синтаксиса (см. Таблицы синтаксиса). Если оно включено, оно выполняется перед шрифтовым выделением на основе поиска. Переменная 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

Spec-Zone.ru

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