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

Синтаксическое выделение шрифта использует таблицу синтаксиса (см. Таблицы синтаксиса) для поиска и выделения синтаксически значимого текста. Если оно включено, оно выполняется до выделения шрифта на основе поиска. Переменная font-lock-syntactic-face-function, описанная ниже, определяет, какие синтаксические конструкции следует выделять. Существует несколько переменных, влияющих на синтаксическое выделение шрифта; вы должны установить их с помощью font-lock-defaults (см. Основы выделения шрифта).

Каждый раз, когда режим выделения шрифта выполняет синтаксическое выделение шрифта на отрезке текста, он сначала вызывает функцию, указанную в syntax-propertize-function. Основные режимы могут использовать это для применения свойств syntax-table к таблице синтаксиса буфера для переопределения в особых случаях. См. Свойства синтаксиса.

Переменная: font-lock-keywords-only

Если значение этой переменной не равно nil, выделение шрифта не выполняет синтаксическое выделение шрифта, а только выделение шрифта на основе поиска, основанное на font-lock-keywords. Обычно оно устанавливается режимом выделения шрифта на основе элемента keywords-only в font-lock-defaults. Если значение равно nil, выделение шрифта вызовет jit-lock-register (см. Другие переменные выделения шрифта) для настройки автоматического повторного выделения шрифта текста буфера после измененной строки, чтобы отразить новый синтаксический контекст из-за изменения.

Чтобы использовать только синтаксическое выделение шрифта, эта переменная должна быть не nil, в то время как font-lock-keywords должен быть установлен в nil (см. Основы выделения шрифта).

Переменная: font-lock-syntax-table

Эта переменная содержит таблицу синтаксиса, используемую для выделения шрифта комментариев и строк. Обычно она устанавливается режимом выделения шрифта на основе элемента 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 для строк (см. Лица для выделения шрифта).

Эта переменная обычно устанавливается через элементы "other" в 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)))