次: , 前: Fast Lock Mode, 上: Support Modes


15.15.2 遅延ロックモード

大きなバッファに対してフォントロック(font-lock)モードを速くするには、 フォント表示化するテキストの量を減らす 遅延ロック(lazy-lock)モードを使えます。 遅延ロック(lazy-lock)モードでは、バッファのフォント表示化は要求駆動型です。 表示されようとしているバッファの部分だけをフォント表示化します。 また、変更部分のフォント表示化は延期され、 Emacsがある短い時間アイドルであったときにのみフォント表示化します。

コマンドM-x lazy-lock-modeは、 遅延ロック(lazy-lock)モードを引数に従ってオン/オフします (引数がなければトグル)。 フォントロック(font-lock)モードを使うときに、 いつでも遅延ロック(lazy-lock)モードをオンにするには、 つぎのようにします。

     (setq font-lock-support-mode 'lazy-lock-mode)

小さなバッファに対してバッファのフォント表示化を避ける価値はありません。 ですから、変数lazy-lock-minimum-sizeは、 要求駆動型でバッファのフォント表示化を行う最小のバッファサイズを指定します。 これより小さなバッファは、普通のフォントロック(font-lock)モードのように 一度にフォント表示化します。

バッファを変更したとき、遅延ロック(lazy-lock)モードは 変更したテキストのフォント表示化を延期します。 変数lazy-lock-defer-timeは、 変更部分のフォント表示化を始めるまでに Emacsがアイドルであるべき秒数です。 この値が0ならは、普通のフォントロック(font-lock)モードと同じように、 変更はすぐにフォント表示化されます。

遅延ロック(lazy-lock)モードは、通常、 新たに見えてくるバッファ部分が初めて表示されるまえに その部分をフォント表示化します。 しかし、lazy-lock-defer-on-scrollingの値がnil以外ならば、 新たに見えてくるテキストは、Emacsがlazy-lock-defer-time秒だけ アイドルしたときにのみフォント表示化されます。

CやEmacs Lispモードを含むいくつかのモードでは、 ある1行の内容を変更すると後続行の文脈が変わり、 そのため、後続行をどうフォント表示化するかも変わります。 通常は、後続行を再フォント表示化するためにM-g M-gを打つ必要があります。 しかし、変数lazy-lock-defer-contextuallynil以外を設定していると、遅延ロック(lazy-lock)モードでは、 lazy-lock-defer-time秒後にこれを自動的に行います。

Emacsが長時間アイドルだと、遅延ロックは、 バッファのまだ表示されていない部分を、 のちの表示に備えてフォント表示化します。 これを内密のフォント表示化(stealth fontification)と呼びます。

変数lazy-lock-stealth-timeは、内密のフォント表示化を開始するまでに、 Emacsが何秒間アイドルであるべきかを指定します。 値がnilだと、内密のフォント表示化をしません。 変数lazy-lock-stealth-lineslazy-lock-stealth-verboseは、 内密のフォント表示化の粒度と冗長性を指定します。