次: Window Point, 前: Displaying Buffers, 上: Windows
本節では、バッファを表示するためのウィンドウを選ぶための基本的な機能、
display-bufferについて述べます。
上位レベルの関数やコマンドはすべてこのサブルーティンを使います。
ここでは、display-bufferの使い方とカスタマイズ方法を説明します。
このコマンドは、
pop-to-bufferのように、 buffer-or-nameをあるウィンドウに表示するが、 そのウィンドウを選択しないので当該バッファもカレントバッファにならない。 この関数は、選択されているウィンドウを変えない。not-this-windowが
nil以外であると、 指定したバッファが選択されているウィンドウにすでに表示されていても、 別のウィンドウに当該バッファを表示することを意味する。 これにより、当該バッファが同時に2つのウィンドウに表示される。 さもなければ、buffer-or-nameがウィンドウにすでに表示されていると、 それで十分とみなしこの関数はなにもしない。
display-bufferは、buffer-or-nameを表示するために 選んだウィンドウを返す。引数frameが
nil以外であると、 バッファがすでに表示されているかどうかを検査するときに どのフレームを対象とするかを指定する。 それらのフレームのどれかのウィンドウに当該バッファがすでに表示されていると、display-bufferは単にそのウィンドウを返す。 frameの可能な値はつぎのとおりである。
nilであると、選択されているフレームのウィンドウを対象とする。tであると、すべてのフレームのウィンドウを対象とする。visibleであると、 すべての可視フレームのすべてのウィンドウを対象にする。- 0であると、すべての可視フレームやアイコンになっているフレーム のウィンドウを対象にする。
- フレームであると、当該フレームのウィンドウを対象にする。
display-bufferがウィンドウを作成したり探す詳しい手順は、 以下に述べる変数に依存する。
この変数は、
display-bufferが新たにウィンドウを作るかどうかを制御する。nil以外であり、かつ、ウィンドウがたった1つである場合、 そのウィンドウを分割する。nilであると、display-bufferは 単一のウィンドウを分割せずにそれ全体を使う。
この変数は、ウィンドウが複数ある場合に
display-bufferがどの時点でウィンドウを分割するかを決定する。display-bufferは、最大ウィンドウの行数が この変数による指定行数より大きければ、最大ウィンドウをつねに分割する。 最大ウィンドウがこれだけ大きくない場合には、 それが唯一のウィンドウであり、かつ、pop-up-windowsがnil以外 の場合にのみ最大ウィンドウを分割する。
この変数は、
display-bufferが新たなフレームを作るかどうかを制御する。nil以外であると、display-bufferは、 すべての可視フレームから指定されたバッファをすでに表示している 既存のウィンドウを探す。 そのようなウィンドウがあれば、そのウィンドウを返す。 さもなければ、新たなフレームを作る。 変数pop-up-framesがnil以外であると、 変数pop-up-windowsとsplit-height-thresholdは影響しない。
pop-up-framesがnilであると、display-bufferはウィンドウを分割するか再利用する。詳しくは、see Frames。
この変数は、
pop-up-framesがnil以外であるときに どのように新たなフレームを作るかを指定する。その値は引数なしの関数であること。
display-bufferが新たにフレームを作るとき、 フレームを返すこの関数を呼び出す。 この変数のデフォルト値は、pop-up-frame-alistのパラメータを使って新たなフレームを作る関数である。
この変数は、
display-bufferが新たにフレームを作るときに 使用するフレームパラメータを指定する連想リストを保持する。 フレームパラメータに関して詳しくは、 see Frame Parameters。
特別に表示すべきバッファのバッファ名のリスト。 バッファ名がこのリストにあると、
display-bufferは当該バッファを特別に扱う。デフォルトでは、特別に表示するとは、 専用のフレームにバッファを表示することである。
リストの要素が文字列でなくリストであると、 リストのcarがバッファ名であり、 リストの残りはフレームの作成方法を指定する。 それは、フレームパラメータを指定する連想リストであるか、 関数とそれに渡す引数である。 (関数の第1引数はつねに表示すべきバッファである。 そのあとにリスト内の引数が続く。)
特別に表示すべきバッファを指定する正規表現のリスト。 バッファ名がこのリストのいずれかの正規表現に一致すると、
display-bufferは当該バッファを特別に扱う。デフォルトでは、特別に表示するとは、 専用のフレームにバッファを表示することである。
リストの要素が文字列でなくリストであると、 リストのcarが正規表現であり、 リストの残りはフレームの作成方法を指定する。 上記の
special-display-buffer-namesを参照。
この変数は、バッファを特別に表示するために呼び出す関数を保持する。 引数としてバッファを受け取り、 当該バッファを表示したウィンドウを返すこと。
この関数のデフォルト値は
special-display-popup-frameである。
この関数は、bufferをそれ専用のフレームに表示する。 あるフレームのウィンドウにbufferがすでに表示されている場合、 当該ウィンドウを使うために当該フレームを可視にし手前に持ってくる。 さもなければ、buffer用にフレームを作成する。
この関数は、bufferを表示している既存のウィンドウのフレームで 当該バッファだけを表示しているかどうかに関わらず、 既存の当該ウィンドウを使う。 しかし、bufferを作るまえに読者の初期化ファイルで上記の変数に設定 しているときには、当該ウィンドウは以前にこの関数が作成したものであろう。
この変数は、
special-display-popup-frameがフレームを作るときに 使用するフレームパラメータを保持する。
選択されているウィンドウに表示すべきバッファのバッファ名のリスト。 バッファ名がこのリストにあると、
display-bufferは選択されているウィンドウで当該バッファに切り替える。
選択されているウィンドウに表示すべきバッファを指定する正規表現のリスト。 バッファ名がこのリストのいずれかの正規表現に一致すると、
display-bufferは選択されているウィンドウで当該バッファに切り替える。
この変数は、
display-bufferのふるまいをカスタマイズする もっとも柔軟な方法である。nil以外であると、display-bufferが処理を依頼するために 呼び出す関数であること。 その関数は、display-bufferが受け取るのと同じ2つの引数を受け付けること。 その関数は、ウィンドウを選ぶか作成し、指定されたバッファを表示し、 当該ウィンドウを返すこと。このフックは、上に述べた他のオプションやフックすべてに優先する。
ウィンドウにはそのバッファ『専用』と印を付けられます。
そうすると、display-bufferは他のバッファを表示するために
当該ウィンドウを使わないようにします。