ウィンドウ構成(window configuration)は、 1つのフレームの全体の配置、つまり、 すべてのウィンドウ、それらの大きさ、表示しているバッファ、 各バッファの表示位置、ポイントとマークの値を記録します。 保存しておいたウィンドウ構成を復元すれば、 まえとまったく同じ配置に戻せます。
1つのフレームではなくすべてのフレームを記録するには、 ウィンドウ構成のかわりにフレーム構成を使います。 See Frame Configurations。
この関数は、選択されているフレームの現在のウィンドウ構成を表す 新たなオブジェクトを返す。 ウィンドウ構成には、ウィンドウの個数、それらの大きさとカレントバッファ、 どのウィンドウが選択されているウィンドウであるか、 各ウィンドウが表示しているバッファ、表示開始位置、 ポイントとマークの位置が含まれる。
window-min-height
、window-min-width
、minibuffer-scroll-window
の値も含む。 例外はカレントバッファのポイントであり、その値は保存されない。
この関数は、configurationで指定される ウィンドウとバッファの構成に復元する。 引数configurationは、
current-window-configuration
が返した値であること。 configurationを作成したフレームにおいて、 そのフレームが選択されているかどうかに関わらず、この構成を復元する。set-window-configuration
は、新たな構成が古いものと 実際に異なるのかどうか識別する方法を知らないため、 ウィンドウサイズの変更とつねにみなしてwindow-size-change-functions
(see Window Hooks)の 実行を引き起こす。configurationを保存したフレームがなくなっていると、 この関数は、3つの変数、
window-min-height
、window-min-width
、minibuffer-scroll-window
を 復元するだけである。
save-window-excursion
と同じ効果を得るための この関数の使い方をつぎに示す。(let ((config (current-window-configuration))) (unwind-protect (progn (split-window-vertically nil) ...) (set-window-configuration config)))
このスペシャルフォームは、ウィンドウ構成を記録し、 formsを順に評価し、もとのウィンドウ構成に復元する。 ウィンドウ構成には、ポイントの値と可視なバッファの部分が含まれる。 また、選択されているウィンドウも含む。 しかし、これにはカレントバッファのポイント値は含まれないため、 ポイント位置を保存したい場合には
save-excursion
も使う。
save-selected-window
で十分なときには、この構文を使わないこと。
save-window-excursion
から抜けると、window-size-change-functions
の実行をつねに引き起こす。 (復元した構成とformsの終りでの構成が実際に異なるかどうかを 識別する方法を知らない。)戻り値は、formsの最後のフォームの値である。 例を示す。
(split-window) ⇒ #<window 25 on control.texi> (setq w (selected-window)) ⇒ #<window 19 on control.texi> (save-window-excursion (delete-other-windows w) (switch-to-buffer "foo") 'do-something) ⇒ do-something ;; スクリーンはここでふたたび分割される
この関数は、ウィンドウの構造を基に2つのウィンドウ構成を比較する。 ポイントとマークの値、保存されたスクロール位置は無視するので、 それらが異なっていても
t
を返す。関数
equal
でも2つのウィンドウ構成を比較できるが、 保存されたポイントやマークが違うだけであっても異なる部分があると、 等しくない構成とみなす。
ウィンドウ構成の内部を調べる基本関数には意味があるでしょうが、 実装してありません。 実装するだけの価値があるほど有用なのかはっきりしないのです。