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


27.26 Hooks for Window Scrolling and Changes

このセクションでは、あるウィンドウがそのバッファーの違う部分を表示したり、別のバッファーを表示したとき常に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回、サイズ変更が発生したフレーム上で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を参照のこと。