GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Region-to-Refontify.html ・ emacs-doc.conao3.com

24.7.9.2 バッファ変更後のリージョンのフォント化

バッファが変更された際、Font Lock が再フォント化する範囲は、デフォルトではその変更にまたがる最小の完全な行の連なりとなります。多くの場合はこれでうまく機能しますが、時にはうまくいかないこともあります。例えば、変更によって前の行にあるテキストの構文的な意味が変わってしまう場合などです。

以下の変数を設定することで、リフォント対象の領域を拡大(あるいは縮小)できます:

変数: font-lock-extend-after-change-region-function

このバッファローカル変数は、nil であるか、あるいは Font Lock モードがスキャンおよびフォント化を行う領域を決定するために呼び出す関数です。

この関数には3つの引数が渡されます。標準の beg、end、および after-change-functions からの old-len です(Change Hooks を参照)。関数は、フォント化対象領域の開始および終了バッファ位置(この順)を含む cons か、あるいは nil(標準的な方法で領域を選択することを意味します)のいずれかを返す必要があります。この関数は、point、match-data、および現在の制限を保持する必要があります。返される領域は、行の途中から始まり、または終わる場合があります。

この関数はバッファが変更されるたびに呼び出されるため、それなりに高速なはずです。