次: , 前: Coordinates and Windows, 上: Windows


27.16 ウィンドウ構成

ウィンドウ構成(window configuration)は、 1つのフレームの全体の配置、つまり、 すべてのウィンドウ、それらの大きさ、表示しているバッファ、 各バッファの表示位置、ポイントとマークの値を記録します。 保存しておいたウィンドウ構成を復元すれば、 まえとまったく同じ配置に戻せます。

1つのフレームではなくすべてのフレームを記録するには、 ウィンドウ構成のかわりにフレーム構成を使います。 See Frame Configurations

— 機能: current-window-configuration

この関数は、選択されているフレームの現在のウィンドウ構成を表す 新たなオブジェクトを返す。 ウィンドウ構成には、ウィンドウの個数、それらの大きさとカレントバッファ、 どのウィンドウが選択されているウィンドウであるか、 各ウィンドウが表示しているバッファ、表示開始位置、 ポイントとマークの位置が含まれる。 window-min-heightwindow-min-widthminibuffer-scroll-windowの値も含む。 例外はカレントバッファのポイントであり、その値は保存されない。

— 機能: set-window-configuration configuration

この関数は、configurationで指定される ウィンドウとバッファの構成に復元する。 引数configurationは、 current-window-configurationが返した値であること。 configurationを作成したフレームにおいて、 そのフレームが選択されているかどうかに関わらず、この構成を復元する。 set-window-configurationは、新たな構成が古いものと 実際に異なるのかどうか識別する方法を知らないため、 ウィンドウサイズの変更とつねにみなして window-size-change-functions(see Window Hooks)の 実行を引き起こす。

configurationを保存したフレームがなくなっていると、 この関数は、3つの変数、window-min-heightwindow-min-widthminibuffer-scroll-windowを 復元するだけである。

save-window-excursionと同じ効果を得るための この関数の使い方をつぎに示す。

          (let ((config (current-window-configuration)))
            (unwind-protect
                (progn (split-window-vertically nil)
                       ...)
              (set-window-configuration config)))
     
— 特殊型: save-window-excursion forms...

このスペシャルフォームは、ウィンドウ構成を記録し、 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
          
               ;; スクリーンはここでふたたび分割される
     
— 機能: window-configuration-p object

この関数は、objectがウィンドウ構成であればtを返す。

— 機能: compare-window-configurations config1 config2

この関数は、ウィンドウの構造を基に2つのウィンドウ構成を比較する。 ポイントとマークの値、保存されたスクロール位置は無視するので、 それらが異なっていてもtを返す。

関数equalでも2つのウィンドウ構成を比較できるが、 保存されたポイントやマークが違うだけであっても異なる部分があると、 等しくない構成とみなす。

ウィンドウ構成の内部を調べる基本関数には意味があるでしょうが、 実装してありません。 実装するだけの価値があるほど有用なのかはっきりしないのです。