Когда буфер изменяется, регион, который Font Lock переформатирует, по умолчанию представляет собой наименьшую последовательность целых строк, охватывающую изменение. Хотя это в большинстве случаев работает хорошо, иногда это не так — например, когда изменение меняет синтаксическое значение текста в более ранней строке.
Вы можете увеличить (или даже уменьшить) регион для переформатирования, установив следующую переменную:
Эта буфер-локальная переменная либо равна nil, либо является функцией, которую режим Font Lock вызывает для определения региона для сканирования и переформатирования.
Функция принимает три параметра: стандартные beg,
end и old-len из after-change-functions
(см. Change Hooks). Она должна вернуть либо конс с
начальной и конечной позициями буфера (в этом порядке) региона для
переформатирования, либо nil (что означает выбор региона
стандартным способом). Эта функция должна сохранить точку, данные совпадения
и текущее ограничение. Регион, который она возвращает, может начинаться или
заканчиваться в середине строки.
Поскольку эта функция вызывается после каждого изменения буфера, она должна быть достаточно быстрой.