В этом разделе описываются дополнительные переменные, которые основной режим может
устанавливать с помощью other-vars в font-lock-defaults
(см. Основы блокировки шрифта).
Если эта переменная не равна nil, она должна быть функцией,
вызываемой без аргументов, для выбора замыкающего диапазона текста для
повторного шрифтирования для команды M-x font-lock-fontify-block.
Функция должна сообщить о своем выборе, поместив область вокруг него.
Хороший выбор — это диапазон текста, достаточно большой для получения
правильных результатов, но не слишком большой, чтобы повторное шрифтирование
не замедлялось. Типичные значения — mark-defun для
программных режимов или mark-paragraph для текстовых режимов.
Эта переменная указывает дополнительные свойства (помимо
font-lock-face), которые управляются режимом Font Lock. Она
используется font-lock-default-unfontify-region, который обычно
управляет только свойством font-lock-face. Если вы хотите, чтобы
Font Lock управлял и другими свойствами, вы должны указать их в
facespec в font-lock-keywords, а также
добавить их в этот список. См. Шрифтирование на основе поиска.
Функция, используемая для шрифтирования буфера. Значение по
умолчанию — font-lock-default-fontify-buffer.
Функция, используемая для снятия шрифтирования с буфера. Это используется
при отключении режима Font Lock. Значение по умолчанию —
font-lock-default-unfontify-buffer.
Функция, используемая для шрифтирования области. Она должна принимать
два аргумента — начало и конец области, и необязательный третий
аргумент verbose. Если verbose не
равен nil, функция должна выводить сообщения о статусе.
Значение по умолчанию —
font-lock-default-fontify-region.
Функция, используемая для снятия шрифтирования с области. Она должна
принимать два аргумента — начало и конец области. Значение по умолчанию —
font-lock-default-unfontify-region.
Функция, используемая для объявления, что шрифтирование области устарело.
Она принимает два аргумента — начало и конец области. Значение по умолчанию
этой переменной —
font-lock-after-change-function.
Функция, используемая для обеспечения того, чтобы область текущего
буфера была шрифтирована. Она вызывается с двумя аргументами — началом и
концом области. Значение по умолчанию этой переменной — функция, которая
вызывает font-lock-default-fontify-buffer, если буфер не
шрифтирован; эффект заключается в том, чтобы убедиться, что вся доступная
часть буфера шрифтирована.
Эта функция сообщает режиму Font Lock, что следует вызывать функцию Lisp
function всякий раз, когда ему необходимо шрифтировать или
повторно шрифтировать часть текущего буфера. Она вызывает function
перед вызовом функций шрифтирования по умолчанию и передает ей два аргумента:
start и end, которые указывают область,
которую необходимо шрифтировать или повторно шрифтировать. Если function
выполняет шрифтирование, она может вернуть список вида
(jit-lock-bounds beg . end),
чтобы указать границы области, которую она фактически шрифтировала;
Just-In-Time (также известный как “JIT”)
блокировка шрифта использует эту информацию для оптимизации последующих циклов
повторного отображения и областей текста буфера, которые она передаст в будущие
вызовы function.
Необязательный аргумент contextual, если он не равен nil, принудительно заставляет режим Font Lock всегда
повторно шрифтировать синтаксически релевантную часть буфера, а не только
измененные строки. Этот аргумент обычно можно опустить.
Когда Font Lock активирован в буфере, он вызывает эту функцию с не-nil значением contextual, если значение
font-lock-keywords-only (см. Синтаксическая блокировка шрифта)
равно nil.
Если function ранее была зарегистрирована как
функция шрифтирования с помощью jit-lock-register, эта
функция отменяет ее регистрацию.
Это второстепенный режим, предназначенный для помощи в отладке кода,
выполняемого JIT font-lock. Когда этот режим включен, большая часть кода,
который JIT font-lock обычно выполняет во время циклов повторного отображения,
где ошибки Lisp подавляются, вместо этого выполняется таймером. Таким образом,
этот режим позволяет использовать средства отладки, такие как
debug-on-error (см. Вход в отладчик при ошибке)
и Edebug (см. Edebug) для поиска и исправления
проблем в коде блокировки шрифта и любом другом коде, выполняемом JIT
font-lock. Другая команда, которая может быть полезна при разработке и
отладке блокировки шрифта, — font-lock-debug-fontify,
см. Основы блокировки шрифта.