次: , 前: Multiple Displays, 上: Frames


15.9 特別なバッファフレーム

ウィンドウが1つのときにはEmacsが普通2つめのウィンドウを作るような 特定のバッファでは、それ専用の特別なフレームに表示することができます。 こうするには、変数special-display-buffer-namesに バッファ名のリストを設定します。 そのリストに名前があるどのバッファも、 Emacsコマンドが『別のウィンドウに』表示したいときには、 特別なフレームを自動的に取得します。

たとえば、つぎのように変数を設定したとすると、 補完一覧、grepの出力、TeXモードのシェルバッファは、 それぞれ個別のフレームを取得します。

     (setq special-display-buffer-names
           '("*Completions*" "*grep*" "*tex-shell*"))

これらのフレームとその中のウィンドウは、 別のバッファのために自動的に分割されたり再利用されることはありません。 手動で変更するまで、そのために作成されたバッファを表示し続けます。 特別なバッファを消去すると、そのフレームも自動的に削除されます。

より一般的には、正規表現のリストをspecial-display-regexpsに 設定できます。 すると、バッファの名前がそれらの正規表現に一致すると、 バッファは専用のフレームを取得します。 (繰り返すが、これは通常、別のウィンドウに表示するバッファにのみ適用する。)

変数special-display-frame-alistは、 このようなフレームに対するフレームパラメータを指定します。 これにはデフォルト値があるので、特に設定する必要はありません。

Lispがわかる人のためにですが、 special-display-buffer-namesspecial-display-regexpsの要素は、 リストでもかまいません。 その場合、最初の要素はバッファ名か正規表現です。 リストの残りは、フレームの作成方法を指定します。 これは、フレームパラメータの値を指定する連想リストにすることもできます。 これらの値は、special-display-frame-alistに 指定されたパラメータの値より優先されます。 あるいは、リストはつぎのような形式にすることもできます。

     (function args...)

ここで、functionはシンボルです。 こうすると、functionを呼んでフレームを作ります。 関数呼び出しの最初の引数はバッファで、残りの引数はargsです。

似たような機能で、バッファをどの選択されているウィンドウに表示するか 指定できます。 See Force Same Window。 同じウィンドウに表示する機能は、特別なフレームに表示する機能に優ります。 したがって、バッファ名をspecial-display-buffer-namesに追加しても 何の効果もなかったら、 その機能が同じバッファ名に対しても使われていないか調べてください。