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


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

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

Variable: window-scroll-functions

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

この変数はそれぞれの関数がウィンドウとウィンドウのdisplay-start位置という2つの引数を受け取るのでノーマルフックではない。呼び出し時にはwindow引数のdisplay-start位置は新たな値にセット済みであり、そのウィンドウに表示されるバッファーがカレントバッファーとしてセット済みである。

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

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

Function: run-window-scroll-functions &optional window

この関数は指定されたwindow (デフォルトは選択されたウィンドウ)にたいしてwindow-scroll-functionsを呼び出す。

Variable: window-size-change-functions

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

それぞれの関数はフレームを唯一の引数として受け取る。特定のウィンドウのサイズが変更されたかどうかを調べるにはwindow-pixel-width-before-size-changeおよびwindow-pixel-widthのリターン値それぞれを、そのウィンドウにたいするwindow-pixel-height-before-size-changeおよびwindow-pixel-heightと比較すればよい(Window Sizesを参照)。

これらの関数は、通常は関連するフレームにたいしてこのフックが最後に実行されて以降に、少なくとも1つのウィンドウが追加またはサイズが変更されたときだけ呼び出される。いくつかの稀なケースでは断続的にウィンドウが追加されてその後に削除された際にも実行される。この場合にはフレーム上でサイズが変更されたウィンドウが出現することはない。

Variable: window-configuration-change-hook

フレームのウィンドウ構成が変更されるたびに実行されるノーマルフック。ウィンドウ構成の変更にはウィンドウの分割や削除、ウィンドウでの異なるバッファーの表示が含まれる。

このフックはウィンドウサイズの変更の追跡にも使用できる。しかしフレームサイズの変更やミニバッファーウィンドウ(Minibuffer Windowsを参照)の自動的なリサイズによる他のウィンドウのサイズ変更時には実行されない。ルールとしてwindow-size-change-functions (上記参照)への関数の追加は、任意のウィンドウのサイズ変更を追跡する推奨方法である。

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

Function: run-window-configuration-change-hook &optional frame

この関数は指定されたframe (デフォルトは選択されたフレーム)にたいしてwindow-configuration-change-hookを実行する。

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