次: , 前: Displaying Buffers, 上: Windows


27.8 表示ウィンドウを選ぶ

本節では、バッファを表示するためのウィンドウを選ぶための基本的な機能、 display-bufferについて述べます。 上位レベルの関数やコマンドはすべてこのサブルーティンを使います。 ここでは、display-bufferの使い方とカスタマイズ方法を説明します。

— コマンド: display-buffer buffer-or-name &optional not-this-window frame

このコマンドは、pop-to-bufferのように、 buffer-or-nameをあるウィンドウに表示するが、 そのウィンドウを選択しないので当該バッファもカレントバッファにならない。 この関数は、選択されているウィンドウを変えない。

not-this-windownil以外であると、 指定したバッファが選択されているウィンドウにすでに表示されていても、 別のウィンドウに当該バッファを表示することを意味する。 これにより、当該バッファが同時に2つのウィンドウに表示される。 さもなければ、buffer-or-nameがウィンドウにすでに表示されていると、 それで十分とみなしこの関数はなにもしない。

display-bufferは、buffer-or-nameを表示するために 選んだウィンドウを返す。

引数framenil以外であると、 バッファがすでに表示されているかどうかを検査するときに どのフレームを対象とするかを指定する。 それらのフレームのどれかのウィンドウに当該バッファがすでに表示されていると、 display-bufferは単にそのウィンドウを返す。 frameの可能な値はつぎのとおりである。

display-bufferがウィンドウを作成したり探す詳しい手順は、 以下に述べる変数に依存する。

— ユーザオプション: pop-up-windows

この変数は、display-bufferが新たにウィンドウを作るかどうかを制御する。 nil以外であり、かつ、ウィンドウがたった1つである場合、 そのウィンドウを分割する。 nilであると、display-bufferは 単一のウィンドウを分割せずにそれ全体を使う。

— ユーザオプション: split-height-threshold

この変数は、ウィンドウが複数ある場合に display-bufferがどの時点でウィンドウを分割するかを決定する。 display-bufferは、最大ウィンドウの行数が この変数による指定行数より大きければ、最大ウィンドウをつねに分割する。 最大ウィンドウがこれだけ大きくない場合には、 それが唯一のウィンドウであり、かつ、pop-up-windowsnil以外 の場合にのみ最大ウィンドウを分割する。

— ユーザオプション: pop-up-frames

この変数は、display-bufferが新たなフレームを作るかどうかを制御する。 nil以外であると、display-bufferは、 すべての可視フレームから指定されたバッファをすでに表示している 既存のウィンドウを探す。 そのようなウィンドウがあれば、そのウィンドウを返す。 さもなければ、新たなフレームを作る。 変数pop-up-framesnil以外であると、 変数pop-up-windowssplit-height-thresholdは影響しない。

pop-up-framesnilであると、 display-bufferはウィンドウを分割するか再利用する。

詳しくは、see Frames

— 変数: pop-up-frame-function

この変数は、pop-up-framesnil以外であるときに どのように新たなフレームを作るかを指定する。

その値は引数なしの関数であること。 display-bufferが新たにフレームを作るとき、 フレームを返すこの関数を呼び出す。 この変数のデフォルト値は、 pop-up-frame-alistのパラメータを使って新たなフレームを作る関数である。

— 変数: pop-up-frame-alist

この変数は、display-bufferが新たにフレームを作るときに 使用するフレームパラメータを指定する連想リストを保持する。 フレームパラメータに関して詳しくは、 see Frame Parameters

— ユーザオプション: special-display-buffer-names

特別に表示すべきバッファのバッファ名のリスト。 バッファ名がこのリストにあると、 display-bufferは当該バッファを特別に扱う。

デフォルトでは、特別に表示するとは、 専用のフレームにバッファを表示することである。

リストの要素が文字列でなくリストであると、 リストのcarがバッファ名であり、 リストの残りはフレームの作成方法を指定する。 それは、フレームパラメータを指定する連想リストであるか、 関数とそれに渡す引数である。 (関数の第1引数はつねに表示すべきバッファである。 そのあとにリスト内の引数が続く。)

— ユーザオプション: special-display-regexps

特別に表示すべきバッファを指定する正規表現のリスト。 バッファ名がこのリストのいずれかの正規表現に一致すると、 display-bufferは当該バッファを特別に扱う。

デフォルトでは、特別に表示するとは、 専用のフレームにバッファを表示することである。

リストの要素が文字列でなくリストであると、 リストのcarが正規表現であり、 リストの残りはフレームの作成方法を指定する。 上記のspecial-display-buffer-namesを参照。

— 変数: special-display-function

この変数は、バッファを特別に表示するために呼び出す関数を保持する。 引数としてバッファを受け取り、 当該バッファを表示したウィンドウを返すこと。

この関数のデフォルト値はspecial-display-popup-frameである。

— 機能: special-display-popup-frame buffer

この関数は、bufferをそれ専用のフレームに表示する。 あるフレームのウィンドウにbufferがすでに表示されている場合、 当該ウィンドウを使うために当該フレームを可視にし手前に持ってくる。 さもなければ、buffer用にフレームを作成する。

この関数は、bufferを表示している既存のウィンドウのフレームで 当該バッファだけを表示しているかどうかに関わらず、 既存の当該ウィンドウを使う。 しかし、bufferを作るまえに読者の初期化ファイルで上記の変数に設定 しているときには、当該ウィンドウは以前にこの関数が作成したものであろう。

— ユーザオプション: special-display-frame-alist

この変数は、special-display-popup-frameがフレームを作るときに 使用するフレームパラメータを保持する。

— ユーザオプション: same-window-buffer-names

選択されているウィンドウに表示すべきバッファのバッファ名のリスト。 バッファ名がこのリストにあると、 display-bufferは選択されているウィンドウで当該バッファに切り替える。

— ユーザオプション: same-window-regexps

選択されているウィンドウに表示すべきバッファを指定する正規表現のリスト。 バッファ名がこのリストのいずれかの正規表現に一致すると、 display-bufferは選択されているウィンドウで当該バッファに切り替える。

— 変数: display-buffer-function

この変数は、display-bufferのふるまいをカスタマイズする もっとも柔軟な方法である。 nil以外であると、display-bufferが処理を依頼するために 呼び出す関数であること。 その関数は、display-bufferが受け取るのと同じ2つの引数を受け付けること。 その関数は、ウィンドウを選ぶか作成し、指定されたバッファを表示し、 当該ウィンドウを返すこと。

このフックは、上に述べた他のオプションやフックすべてに優先する。

ウィンドウにはそのバッファ『専用』と印を付けられます。 そうすると、display-bufferは他のバッファを表示するために 当該ウィンドウを使わないようにします。

— 機能: window-dedicated-p window

この関数は、windowに専用と印が付いていればtを返し、 さもなければnilを返す。

— 機能: set-window-dedicated-p window flag

この関数は、flagnil以外であるとwindowに専用の印を付け、 さもなければ専用の印を消す。