24.7.4 Другие переменные блокировки шрифта

В этом разделе описываются дополнительные переменные, которые основной режим может устанавливать с помощью other-vars в font-lock-defaults (см. Основы блокировки шрифта).

Переменная: font-lock-mark-block-function

Если эта переменная не равна nil, она должна быть функцией, вызываемой без аргументов, для выбора замыкающего диапазона текста для повторного шрифтирования для команды M-x font-lock-fontify-block.

Функция должна сообщить о своем выборе, поместив область вокруг него. Хороший выбор — это диапазон текста, достаточно большой для получения правильных результатов, но не слишком большой, чтобы повторное шрифтирование не замедлялось. Типичные значения — mark-defun для программных режимов или mark-paragraph для текстовых режимов.

Переменная: font-lock-extra-managed-props

Эта переменная указывает дополнительные свойства (помимо font-lock-face), которые управляются режимом Font Lock. Она используется font-lock-default-unfontify-region, который обычно управляет только свойством font-lock-face. Если вы хотите, чтобы Font Lock управлял и другими свойствами, вы должны указать их в facespec в font-lock-keywords, а также добавить их в этот список. См. Шрифтирование на основе поиска.

Переменная: font-lock-fontify-buffer-function

Функция, используемая для шрифтирования буфера. Значение по умолчанию — font-lock-default-fontify-buffer.

Переменная: font-lock-unfontify-buffer-function

Функция, используемая для снятия шрифтирования с буфера. Это используется при отключении режима Font Lock. Значение по умолчанию — font-lock-default-unfontify-buffer.

Переменная: font-lock-fontify-region-function

Функция, используемая для шрифтирования области. Она должна принимать два аргумента — начало и конец области, и необязательный третий аргумент verbose. Если verbose не равен nil, функция должна выводить сообщения о статусе. Значение по умолчанию — font-lock-default-fontify-region.

Переменная: font-lock-unfontify-region-function

Функция, используемая для снятия шрифтирования с области. Она должна принимать два аргумента — начало и конец области. Значение по умолчанию — font-lock-default-unfontify-region.

Переменная: font-lock-flush-function

Функция, используемая для объявления, что шрифтирование области устарело. Она принимает два аргумента — начало и конец области. Значение по умолчанию этой переменной — font-lock-after-change-function.

Переменная: font-lock-ensure-function

Функция, используемая для обеспечения того, чтобы область текущего буфера была шрифтирована. Она вызывается с двумя аргументами — началом и концом области. Значение по умолчанию этой переменной — функция, которая вызывает font-lock-default-fontify-buffer, если буфер не шрифтирован; эффект заключается в том, чтобы убедиться, что вся доступная часть буфера шрифтирована.

Функция: jit-lock-register function &optional contextual

Эта функция сообщает режиму 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.

Функция: jit-lock-unregisterfunction

Если function ранее была зарегистрирована как функция шрифтирования с помощью jit-lock-register, эта функция отменяет ее регистрацию.

Команда: jit-lock-debug-mode &optional arg

Это второстепенный режим, предназначенный для помощи в отладке кода, выполняемого JIT font-lock. Когда этот режим включен, большая часть кода, который JIT font-lock обычно выполняет во время циклов повторного отображения, где ошибки Lisp подавляются, вместо этого выполняется таймером. Таким образом, этот режим позволяет использовать средства отладки, такие как debug-on-error (см. Вход в отладчик при ошибке) и Edebug (см. Edebug) для поиска и исправления проблем в коде блокировки шрифта и любом другом коде, выполняемом JIT font-lock. Другая команда, которая может быть полезна при разработке и отладке блокировки шрифта, — font-lock-debug-fontify, см. Основы блокировки шрифта.