Next: Window Parameters, Previous: Coordinates and Windows, Up: Windows [Contents][Index]
ウィンドウ構成(window configuration)とは1つのフレーム上全体のレイアウト —
すべてのウィンドウ、およびそれらのサイズ、どんなバッファーを含んでいるか、それらのバッファーがスクロールされる方法、ポイント値とマーク値を記録し、フリンジ、マージン、スクロールバーのセッティングも記録します。これにはminibuffer-scroll-window
の値も含まれます。特別な例外として、ウィンドウ構成には選択されたウィンドウのカレントバッファーのポイント値は記録されません。
以前に保存されたウィンドウ構成をリストアすることにより、フレーム全体のレイアウトを取り戻すことができます。1つだけではなくすべてのフレームのレイアウトを記録したい場合は、ウィンドウ構成のかわりに、フレーム構成(frame configuration)を使用します。Frame Configurationsを参照してください。
この関数は、frameのカレントのウィンドウ構成を表す新たなオブジェクトをリターンする。frameのデフォルトは選択されたフレームである。変数window-persistent-parameters
は、この関数により保存されるウィンドウパラメーター(もしあれば)を指定する。Window Parametersを参照のこと。
この関数は、configurationが作成されたフレームにたいして、ウィンドウとバッファーの構成をconfigurationで指定された構成にリストアする。
引数configurationは、以前にcurrent-window-configuration
がリターンした値でなければならない。この構成は、そのフレームが選択されているか否かに関わらず、configurationが作成時のフレームから、当該フレームにリストアされる。これは常にウィンドウのサイズ変更とみなされ、window-size-change-functions
(Window Hooksを参照)の実行をトリガーする。なぜなら、set-window-configuration
は、新たな構成が古い構成と実際に異なるかを示す方法を知らないからである。
configurationが保存されたフレームが死んでいる(生きていない)場合、この関数が行うのは3つの変数window-min-height
、window-min-width
、minibuffer-scroll-window
のリストアだけである。この場合、関数はnil
をリターンし、それ以外はt
をリターンする。
以下は、save-window-excursion
と同様な効果を得るためにこの関数を使用する例である:
(let ((config (current-window-configuration))) (unwind-protect (progn (split-window-below nil) …) (set-window-configuration config)))
このマクロは、選択されたフレームのウィンドウ構成を記録して、formsを順に実行してから、以前のウィンドウ構成をリストアする。リターン値は、forms内の最後のフォームの値である。
Lispコードのほとんどは、このマクロを使用すべきではない。大抵はsave-selected-window
で十分である。特に、このマクロはforms内で新たなウィンドウをオープンするコードを確実に防ぐことができず、新たなウィンドウは別のフレーム内でオープンされるかもしれないが(Choosing Windowを参照)、save-window-excursion
が保存およびリストアするのは、カレントフレーム上のウィンドウ構成だけだからである。
このマクロをwindow-size-change-functions
内で使用してはならない。このマクロをexitすることによりwindow-size-change-functions
の実行がトリガーされるが、これは無限ループを引き起こす。
この関数は、objectがウィンドウ構成ならt
をリターンする。
この関数は、ポイント値、マーク値、保存されたスクロール位置を無視して(これらの観点が異なってもt
をリターンし得る)、ウィンドウ構造の観点から2つのウィンドウ構成を比較する。
関数equal
も2つのウィンドウ構成を比較できる。これはすべての点から、たとえ1つでも異なるものがあれば等しい構成とはみなさず、たとえ保存されたポイント値やマーク値が異なるだけでも、等しくないとみなす。
この関数は、ウィンドウ構成configが作成されたフレームをリターンする。
ウィンドウ構成の内部を調べる他のプリミティブも有用かもしれませんが、わたしたちはこれらを必要としないので実装されていません。ウィンドウ構成にたいしてより多くの操作を知りたい場合は、ファイルwinner.elを参照してください。
current-window-configuration
がリターンするオブジェクトは、Emacsプロセスとともに終焉します。ウィンドウ構成をディスク上に格納して、それを別のEmacsセッションに読み戻すために、次に説明する関数を使用できます。これらの関数は、フレームの状態を任意の生きたウィンドウにクローンする場合も有用です(set-window-configuration
はフレームのウィンドウを、そのフレームのルートウィンドウだけに効果的にクローンする)。
この関数は、windowの状態をLispオブジェクトとしてリターンする。引数windowは有効なウィンドウでなければならず、デフォルトは選択されたフレームのルートウィンドウである。
オプション引数writableが非nil
の場合、それはwindow-point
やwindow-start
のようなサンプリング位置にたいするマーカーを使用しないことを意味する。この状態をディスクに書き込んで別のセッションに読み戻す場合は、この引数は非nil
であること。
引数writableと変数window-persistent-parameters
の両方で、この関数によりどのウィンドウパラメーターが保存されるかを指定する。Window Parametersを参照のこと。
window-state-get
によりリターンされる値は、同一セッション内の他のウィンドウ内にあるウィンドウのクローンを作成するために使用できます。これはディスクに書き込んで、別のセッションに読み戻すこともできます。どちらの場合でも、ウィンドウの状態をリストアするためには以下の関数を使用します。
この関数は、ウィンドウ状態stateをwindow内にputする。引数stateは以前に呼び出したwindow-state-get
がリターンしたウィンドウ状態であること。オプション引数windowには生きたウィンドウ、または内部ウィンドウ(Windows and Framesを参照)のいずれかを指定でき、デフォルトは選択されたウィンドウである。windowが生きていない場合は、stateをputする前に生きたウィンドウに置き換える。
オプション引数ignoreが非nil
の場合、それは最小ウィンドウサイズと固定サイズの制限を無視することを意味する。ignoreがsafe
なら、それは1行および/または2列まで、できる限り小さくできることを意味する。