Next: , Up: Displaying Buffers   [Contents][Index]


29.13.1 バッファーを表示するウィンドウの選択

コマンドdisplay-bufferは表示のために柔軟にウィンドウを選択して、そのウィンドウ内に指定されたバッファーを表示します。これはキーバインディングC-x 4 C-oを通じてインタラクティブに呼び出すことができます。またswitch-to-bufferpop-to-bufferを含む多くの関数やコマンドにからサブルーチンとしても使用されます(Switching Buffersを参照)。

このコマンドはウィンドウ内に表示するウィンドウを探すために、いくつかの複雑なステップを実行します。これらのステップはディスプレイアクション(display actions)を用いて記述されます。ディスプレイアクションは(functions . alist)という形式をもちます。ここでfunctionsは“アクション関数”と呼ばれる単一の関数か関数のリスト(Buffer Display Action Functionsを参照)、alistは“アクションalist”と呼ばれる連想リストです(Buffer Display Action Alistsを参照)。ディスプレイ表示の例についてはThe Zen of Buffer Displayを参照してください。

アクション関数は、表示するバッファーと、アクションalistという、2つの引数を受け取ります。これは、自身の条件にしたがってウィンドウを選択、または作成して、バッファーをウィンドウ内に表示します。成功した場合はそのウィンドウ、それ以外はnilをリターンします。

display-bufferは複数ソースからのディスプレイアクションを組み合わせて、アクション関数のいずれか1つがバッファーの表示を管理して非nil値をリターンするまでアクション関数を順に呼び出します。

Command: display-buffer buffer-or-name &optional action frame

このコマンドは、ウィンドウを選択したり、そのバッファーをカレントにすることなく、buffer-or-nameをウィンドウに表示させる。引数buffer-or-nameはバッファー、または既存のバッファーの名前でなければならない。リターン値はバッファーを表示するために選ばれたウィンドウ、適切なウィンドウが見つからなければnil

オプション引数actionが非nilなら、それは通常はディスプレイアクション(上述)であること。display-bufferは以下のソース(優先度の高位順)からディスプレイアクションを集約してアクション関数リストとアクションalistを構築する:

実際のところは、これらのディプレイアクションにより指定されるアクション関数すべてのリストをdisplay-bufferが構築することを意味する。このリストの最初の要素は(もしあれば) display-buffer-overriding-actionが指定する最初のアクション関数。display-buffer-pop-up-frameの最後の要素はdisplay-buffer-fallback-actionが指定する最後のアクション関数。このリストから重複要素は削除されないので、1回のdisplay-buffer呼び出しの間に同一のアクション関数が複数回呼び出されるかもしれない。

display-bufferはバッファーを1つ目の引数、組み合わされたalistを2つ目の引数として、いずれかの関数が非nilをリターンするまで、このリスト内で指定されたアクション関数を順に呼び出す。異なるソースから指定されたディスプレイアクションをdisplay-bufferがどのように処理するかの例はPrecedence of Action Functionsを参照のこと。

2つ目の引数は常に、上記に挙げたソースが指定するすべてのアクションalistエントリーのリストであることに注意。したがってこのリストの最初の要素は(もしあれば) display-buffer-overriding-actionが指定する最初のアクションalistエントリー、最後の要素はもしあれば(display-buffer-fallback-actionのアクションalistが空) display-buffer-base-actionの最後のalistエントリーとなる。

組み合わされたアクションalistは重複したエントリーを含むかもしれず、同じキーにたするエントリーが異なる値をもつかもしれないことにも注意。アクション関数はルールとして見つかった最初のキーの連想値を常に使用する。したがってアクション関数の連想値が、そのアクション関数が指定するディスプレイアクションにより提供される連想値を使用する必要はない。

引数actionには非nilの非list値も指定できる。これはたとえ選択されたウィンドウがすでにそのバッファーを表示していても、選択されたウィンドウではない別のウィンドウにバッファーが表示されるべきという特別な意味をもつ。プレフィックス引数とともにインタラクティブに呼び出された場合には、actiontである。Lispプログラムは常にリス値を提供すること。

オプション引数frameが非nilの場合は、そのバッファーがすでに表示されているか判断する際、どのフレームをチェックするかを指定する。これはactionのアクションalistに要素(reusable-frames . frame)を追加するのと等価(Buffer Display Action Alistsを参照)。frameは互換性のために提供される引数であり、Lispプログラムが使用するべきではない。

Variable: display-buffer-overriding-action

この変数の値はdisplay-bufferにより最高の優先順で扱われるディスプレイアクションであること。デフォルト値は空のディスプレイアクション(つまり(nil . nil))。

User Option: display-buffer-alist

このオプションの値はディスプレイアクションにコンディション(condition: 状態)をマップするalist。コンディションはそれぞれバッファー名にマッチする正規表現、または2つの引数をとる関数であり、引数はバッファー名とdisplay-bufferに渡すaction引数。display-bufferに渡されたバッファー名がこのalist内の正規表現にマッチするか、あるいはコンディションで指定された関数が非nilをリターンした場合には、display-bufferはバッファーを表示すために対応するディスプレイアクションを使用する。

User Option: display-buffer-base-action

このオプションの値はディスプレイアクションであること。このオプションはdisplay-buffer呼び出しにたいする標準のディスプレイアクションを定義するために使用できる。

Constant: display-buffer-fallback-action

このディスプレイアクションはdisplay-bufferにたいして、他のディスプレイアクションが与えられなかった場合の代替え処理を指定する。