Previous: , Up: Windows   [Contents][Index]


27.27 ウィンドウのスクロールと変更のためのフック

このセクションでは、あるウィンドウがそのバッファーの違う部分を表示したり、別のバッファーを表示したとき常にLispプログラムを実行可能にする方法について説明します。これを変更できる3つのアクションがあります。それはウィンドウのスクロール、ウィンドウ内でのバッファーの切り替え、ウィンドウのサイズ変更です。最初の2つのアクションはwindow-scroll-functions、最後のアクションはwindow-size-change-functionsを実行します。

Variable: window-scroll-functions

この変数はウィンドウのスクロールによりEmacsが再表示前に呼び出すべき関数のリストを保持する。そのウィンドウ内に異なるバッファーを表示したときもこれらの関数が実行される。

この変数はそれぞれの関数が2つの引数、ウィンドウとウィンドウの新たなdisplay-start位置で呼び出されるのでノーマルフックではない。

これらの関数はwindow-end (Window Start and Endを参照)を使用する際には気をつけなければならない。最新の値が必要なら、それを確実に入力するためにupdate引数を使用しなければならない。

警告: ウィンドウのスクロール方法を変更するためにこの機能を使用してはならない。これはそのような用途のためにデザインされておらず、そのような使用では機能しないだろう。

Variable: window-size-change-functions

この変数は、理由は何であれ任意のウィンドウのサイズが変更された場合に呼び出される関数のリストを保持する。これらの関数は、再表示サイクルの先頭、およびサイズ変更が発生したフレーム上で1回呼び出される。

それぞれの関数はフレームを唯一の引数として呼び出される。そのフレーム上のどのウィンドウのサイズが変更されたか、および変更された正確な方法を直接探す方法はない。とはいえ各呼び出しにおいてsize-change関数が既存のウィンドウとサイズを記録すれば、現在のサイズと以前のサイズを比較することも可能である。

ウィンドウの作成と削除はサイズの変更とみなされるので、これらの関数の呼び出しを引き起こす。フレームのサイズ変更は既存のウィンドウのサイズを変更するので、これも変更とみなされる。

これらの関数内でsave-selected-windowを使用できる(Selecting Windowsを参照)。しかしsave-window-excursion (Window Configurationsを参照)を使用してはならない。このマクロのexitはサイズ変更とみなされ、それはこれらの関数の際限ない呼び出しを引き起こすだろう。

Variable: window-configuration-change-hook

既存フレームのウィンドウ構成を変更するたびに毎回実行されるノーマルフック。これにはウィンドウの分割と削除、ウィンドウのサイズ変更、ウィンドウ内への異なるバッファーの表示が含まれる。

このフックのバッファーローカルな部分は影響を受けるフレーム上の各ウィンドウにたいして、関係するウィンドウを選択およびそのバッファーをカレントにして1回実行される。グローバルな部分は変更されたフレームにたいして、そのフレームを選択して1回実行される。

加えてFont Lockフォント表示関数(Font Lock fontification function)を登録するためにjit-lock-registerを使用できる。バッファーの一部が(再)フォント表示されたときは、ウィンドウがスクロールまたはサイズ変更されたという理由で、これが常に呼び出されるだろう。Other Font Lock Variablesを参照のこと。