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


28.5 ウィンドウサイズの保持

前セクションのいずれかの関数を使用してウィンドウを明示的にリサイズしたり、たとえば隣接するウィンドウのリサイズ時、ウィンドウの分割や削除(Splitting WindowsDeleting Windowsを参照)、あるいはそのウィンドウのフレームをリサイズ(Frame Sizeを参照)する際に暗黙的にリサイズできます。

同一フレーム上に1つ以上のリサイズ可能なウィンドウが他に存在する際には、特定のウィンドウにたいして暗黙のリサイズを避けることが可能です。この目的にたいして、Emacsにそのウィンドウのサイズの予約(preserve)をアドバイスしなければなりません。これを行うための基本的な方法が2つあります。

Variable: window-size-fixed

このバッファーローカル変数が非nilなら、通常はそのバッファーを表示するすべてのウィンドウのサイズが変更できなくなる。ウィンドウ削除やそのフレームのサイズ変更により、それ以外に方法がなければ依然としてウィンドウのサイズは変更され得る。

値がheightならそのウィンドウの高さのみ、値がwidthならそのウィンドウの幅のみが固定される。その他の非nil値では幅と高さの両方が固定される。

この変数がnilでも、そのバッファーを表示している任意のウィンドウを任意の方向にリサイズできるとはいえない。これを判断するには関数window-resizableを使用する。Resizing Windowsを参照のこと。

影響を受けるウィンドウにたいする明示的なリサイズや分割の試みも同様に抑制するので、window-size-fixedの積極性が過度な場合が多々あります。これはたとえそのウィンドウが暗黙にリサイズされた後にも、たとえば隣接するウィンドウの削除やウィンドウのフレームのリサイズの際に発生するかもしれません。以下の関数では、そのようなウィンドウのリサイズを絶対禁止としないよう試みます:

Function: window-preserve-size &optional window horizontal preserve

この関数は将来のリサイズ操作用にウィンドウwindowの高さを予約済み(preserved)としてマーク(または非マーク)する。windowは生きたウィンドウでなければならずデフォルトは選択されたウィンドウ。オプション引数horizontalが非nilならwindowの幅を予約済みとしてマーク(または非マーク)する。

オプション引数preservetならwindowボディーのカレントの高さまたは幅を予約することを意味する。windowの高さまたは幅はEmacsが他によい選択をもたないときのみ変更される。この関数により予約されたウィンドウにたいする高さや幅のリサイズは決してエラーをthrowしない。

preservenilなら、この関数の以前の呼び出しにより誘発されたwindowにたいする任意の拘束を解除して、windowの高さまたは幅の予約を停止することを意味する。引数にwindowを与えてenlarge-windowshrink-windowfit-window-to-bufferを呼び出すことによっても対応する高速を削除できる。

現在のことろwindow-preserve-sizeは以下の関数から呼び出されています:

fit-window-to-buffer

この関数のオプション引数preserve-sizeが非nilなら、この関数により確保されたサイズは予約される(Resizing Windowsを参照)。

display-buffer

この関数のalist引数にpreserve-sizeエントリーがあれば、この関数により生成されるウィンドウサイズは予約される(Choosing Windowを参照)。

window-preserve-sizeはウィンドウリサイズ関数から参照されるwindow-preserved-sizeと呼ばれるウィンドウパラメーターをインストールします(Window Parametersを参照)。このパラメーターはウィンドウがwindow-preserve-sizeが呼び出されたときと異なるバッファーを表示していたり、呼び出し以降にウィンドウのサイズが変化していたらウィンドウのリサイズを妨げません。

以下の関数は特定のウィンドウの高さが予約済みかどうかチェックするために使用できます:

Function: window-preserved-size &optional window horizontal

この関数はウィンドウwindowの予約済み高さをピクセル単位でリターンする。windowは生きたウィンドウでなければならずデフォルトは選択されたウィンドウ。オプション引数horizontalが非nilならwindowの予約済み幅をリターンする。windowのサイズが予約されていなければnilをリターンする。