アクションalist(action
alist)とはアクション関数が認識可能な事前定義されたシンボルと、それに応じてそれらの関数が解釈することを意図した値をマップする連想リストです。各呼び出しにおいてdisplay-buffer
は新たなアクションalist(空の場合もある)を作成して、呼び出すすべてのアクション関数にそのリスト全体を渡します。
仕様によりアクション関数はアクションalist全体を自由に解釈できます。実際のところallow-no-window
やprevious-window
のようないくつかのエントリーはいくつかのアクション関数にとってのみ意味があり、他のアクション関数では無視されます。それ以外のinhibit-same-window
やwindow-parameters
のようなエントリーは、アプシケーションプログラムや外部パッケージから提供されるものも含めて、ほとんどのアクション関数がしたがいます。
前のサブセクションでは、個別のアクション関数がアクションエントリーを処理する方法の詳細を説明しました。ここでは既知のアクションalistエントリーに対応するすべてのシンボル、およびそれらの値とそれらを認識するアクション関数(バッファー表示用のアクション関数を参照)とともに示すリファレンスリストを提供します。このリストにおいて用語“バッファー”はdisplay-buffer
が表示しようとするバッファー、“値”はそのエントリーの値を意味しています。
inhibit-same-window
¶値が非nil
なら、バッファーの表示に選択されたウィンドウを使用してはならないことを告げる。既存のウィンドウを(再)使用するすべてのアクション関数は、このエントリーにしたがう必要がある。
previous-window
¶値には以前にバッファーを表示した可能性のあるウィンドウを指定しなければならない。そのようなウィンドウがまだ生きていて他のバッファー専用でなれば、display-buffer-in-previous-window
はそのウィンドウを優先する。
mode
¶値はメジャーモードかメジャーモードのリスト。このエントリーが指定する値がウィンドウのバッファーのメジャーモードにマッチすれば、display-buffer-reuse-mode-window
は常にそのウィンドウを再利用する。これ以外のアクション関数はこのエントリーを無視する。
frame-predicate
¶値はそのフレームがバッファーを表示する候補なら非nil
をリターンする単一の引数(フレーム)を受け取る関数でなければならない。このエントリーはdisplay-buffer-use-some-frame
が使用する。
reusable-frames
¶値はバッファーをすでに表示していたことにより再利用可能なウィンドウを検索するためのフレームセットを指定する。以下をセット可能:
nil
は選択されたフレーム(実際にはミニバッファーフレーム以外の最後に使用されたフレーム)上のウィンドウだけを考慮することを意味する。
visible
はすべての可視フレーム上のウィンドウを考慮することを意味する。
t
はすべてのフレームのウィンドウを考慮することを意味する(ツールチップフレームがリターンされるかもしれないので、この値が使用に耐えることは稀であることに注意)。
nil
の意味はnext-window
にたいするall-frames引数の場合の意味とは若干異なることに注意(ウィンドウのサイクル順を参照)。
これの主要クライアントはdisplay-buffer-reuse-window
だが、ウィンドウの再利用を試みる他のすべてのアクション関数も同様に影響を受ける。display-buffer-in-previous-window
はバッファーを以前に表示していたウィンドウを別フレーム上で検索する際にこれを参照する。
inhibit-switch-frame
¶非nil
値の場合には、display-buffer
により選択されたウィンドウがすでに表示されていれば別のフレームのraiseや選択を抑制する。これにより主に影響を受けるのはdisplay-buffer-use-some-frame
とdisplay-buffer-reuse-window
。理想的にはdisplay-buffer-pop-up-frame
も同様に影響を受けるべきだが、ウィンドウマネージャーがこれに準拠する保証はない。
window-parameters
¶値は選択したウィンドウに与えるウィンドウパラメーターのalist。ウィンドウを選択するすべてのアクション関数は、このエントリーを処理する必要がある。
window-min-width
¶値は使用するウィンドウの最小幅をフレームの正準列で指定する。特別な値full-width
は、そのフレームにおいて左右に他のウィンドウがないウィンドウを選択することを意味する。
このエントリーに影響を受けるのは現在のところdisplay-buffer-use-some-window
、およびdisplay-buffer-use-least-recent-window
(最近使用されていないウィンドウのリターンにおいてこのエントリーを満足しないようなウィンドウのリターンをより厳格に回避する)。
このようなエントリーを単独で提供しても、ウィンドウがその値で指定した幅になるとは限らないことに注意。既存ウィンドウを実際にリサイズしたり新たなウィンドウの幅を指定した値にするためには、同様にこの値を指定するwindow-width
エントリーを提供する必要がある。しかしこのようなwindow-width
エントリーでまったく異なる値を指定したり、ウィンドウ幅をバッファーにフィットするように要請することができる。そのような場合にはwindow-width
使用するウィンドウの最小幅にたいする保証を与える。
window-min-height
¶値は使用するウィンドウの最小高さをフレームの正準行で指定する。特別な値full-height
は、そのフレームにおいて上下に他のウィンドウがないウィンドウを選択することを意味する。
このエントリーは現在のところdisplay-buffer-below-selected
(このエントリーで指定された高さより低いウィンドウは使用しない)に影響を与える。更にdisplay-buffer-use-some-window
、およびdisplay-buffer-use-least-recent-window
(最近使用されていないウィンドウのリターンにおいてこの制約を満足しないようなウィンドウのリターンをより厳格に回避する)にも影響を与える。
このようなエントリーを単独で提供しても、ウィンドウがその値で指定した高さになるとは限らないことに注意。既存ウィンドウを実際にリサイズしたり新たなウィンドウの高さを指定した値にするためには、同様にこの値を指定するwindow-height
エントリーを提供する必要がある。しかしこのようなwindow-height
エントリーでまったく異なる値を指定したり、ウィンドウ高さをバッファーにフィットするように要請することができる。そのような場合にはwindow-min-height
使用するウィンドウの最小高さにたいする保証を与える。
window-height
¶値は選択したウィンドウの高さを調節するかとその方法を指定する。以下のいずれか:
nil
は選択したウィンドウの高さを変更しないことを意味する。
body-lines
、CDRが選択されたウィンドウのボディー高さをフレーム行数で指定する整数であるようなコンスセル。
fit-window-to-buffer
とshrink-window-if-larger-than-buffer
。ウィンドウのリサイズを参照のこと。
慣例により選択したウィンドウの高さは、そのウィンドウが垂直コンビネーション(ウィンドウとフレームを参照)の一部であり、他の無関係のウィンドウの高さの変更を避ける場合のみ調整される。さらにこのエントリーはこのリストの後に指定する特定の条件下でのみ処理される必要がある。
window-width
¶これは上述のwindow-height
と同様だが、かわりに選択したウィンドウの幅の調節に使用される。値は以下のいずれか:
nil
は選択したウィンドウの幅を変更しないことを意味する。
body-columns
、CDRが選択されたウィンドウのボディー幅をフレーム列数で指定する整数であるようなコンスセル。
window-size
¶これは前の2つを組み合わせたエントリーであり、選択したウィンドウの高さと幅の両方の調節に用いることができる。他のウィンドウに影響を与えずにウィンドウをリサイズできる方向は1つだけなので、window-size
はフレーム上に単独で表示されるウィンドウのサイズのセットアップでのみ効果的である。値は以下のいずれか:
nil
は選択したウィンドウのサイズを変更しないことを意味する。
body-chars
、CDRが2つの整数からなるコンスセル(選択したウィンドウの望ましい幅と高さをフレームの行数と列数で指定)であるようなコンスセル。これに応じてフレームのサイズを調節する効果がある。
このエントリーはこのリストのすぐ下で指定されている特定の条件の下で処理される必要がある。
dedicated
¶このようなエントリーが非nil
なら、display-buffer
は作成するすべてのウィンドウをそのバッファー専用であるとマークする(専用のウィンドウを参照)。これは最初の引数に選択したウィンドウ、2つ目の引数にエントリーの値を指定してset-window-dedicated-p
を呼び出すことにより行われる。サイドウィンドウはデフォルトでは値side
で専用となる(サイドウィンドウのオプションと関数を参照)。
preserve-size
¶このようなエントリーが非nil
なら、選択したウィンドウのサイズを維持するようにEmacsに指示する(ウィンドウサイズの保持を参照)。値は(t . nil)
(ウィンドウの幅を維持)、(nil . t)
(高さを維持)、または(t . t)
(幅と高さの両方を維持)のいずれか。このエントリーはこのリストの後に指定する特定の条件下でのみ処理される必要がある。
lru-frames
¶値はバッファーの表示に使用可能なウィンドウを検索するフレームを指定する。display-buffer-use-some-window
、およびdisplay-buffer-use-least-recent-window
が最近使用されていない別のバッファーを表示中のウィンドウを探す際に参照される。値は上述のreusable-frames
エントリーと同様。
lru-time
¶値には使用時間(use time)の指定が求められる(ウィンドウの選択を参照)。このエントリーはdisplay-buffer-use-some-window
、およびdisplay-buffer-use-least-recent-window
が最近使用されていない別のバッファーを表示中のウィンドウを探す際に参照される。これらの関数はバッファーの表示において、このオプションで指定された値より長い使用時間をもつウィンドウを勘定に入れない。
bump-use-time
¶このエントリーが非nil
なら、display-buffer
が使用するウィンドウの使用時間(ウィンドウの選択を参照)を増加させる。これにより後刻display-buffer-use-some-window
やdisplay-buffer-use-least-recent-window
のようなアクション関数が別のバッファーを表示する際に、このウィンドウが使用されることが回避される筈である。
このエントリーの使用とアクション関数display-buffer-use-least-recent-window
の使用の間には僅かな違いが存在する。後者の呼び出しは、この関数がバッファーの表示に使用するウィンドウの使用時間だけを増加させることを意味する。ここで説明しているエントリーには、display-buffer
がバッファーの表示に使用するすべてのウィンドウの使用時間を増加させるという意味をもつ。
pop-up-frame-parameters
¶この値は新たにフレームが作成された場合に与えるフレームパラメーターのalist。display-buffer-pop-up-frame
がけが参照する。
pop-up-frames
¶この値はdisplay-buffer
が新たにフレームを作成してバッファーを表示できるかどうかを制御する。pop-up-frames
変数と同じ意味をもつが、指定された場合には変数よりこのエントリーが優先される。これは主に選択されたフレームにユーザーが維持したい特定のバッファーにたいして、変数の非nil
値をオーバーライドすることを意図したエントリーである。
parent-frame
¶値は子フレームにバッファーを表示時に使用する親フレームを指定する。このエントリーを使用するのはdisplay-buffer-in-child-frame
のみ。
child-frame-parameters
¶値は子フレームにバッファー表示時に使用するフレームパラメーターのalistを指定する。このエントリーを使用するのはdisplay-buffer-in-child-frame
のみ。
side
¶値はバッファーを表示する新たなウィンドウを、フレームやバッファーのどのサイドに作成するかを示す。このエントリーは新たなサイドウィンドウをフレームのどのサイドに配置するかを示すためにdisplay-buffer-in-side-window
が使用する(サイドウィンドウへのバッファーの表示を参照)。さらに新たなサイドウィンドウを既存ウィンドウのどのサイドに配置するかを示すためにdisplay-buffer-in-atom-window
にも使用される(アトミックウィンドウを参照)。
slot
¶値が非nil
ならバッファーを表示するサイドウィンドウのスロットを指定する。このエントリーを使用するのはdisplay-buffer-in-side-window
のみ。
direction
¶この値はwindow
エントリーとともに、display-buffer-in-direction
がバッファーを表示するウィンドウ位置を決定するための方向を指定する。
window
¶値はdisplay-buffer
で選択されたウィンドウと何らかの関連があるウィンドウを指定する。このエントリーは現在のところ新たなウィンドウが作成されるサイドのウィンドウを示すためにdisplay-buffer-in-atom-window
が使用する。これは結果のウィンドウが出現する側の参照ウィンドウを指定するためにdisplay-buffer-in-direction
も使用する。
allow-no-window
¶値が非nil
ならdisplay-buffer
は必ずしもバッファーを表示する必要はなく、呼び出し側はそれを受け入れる準備がある。display-buffer
の任意の呼び出し手がバッファーを表示するウィンドウが存在しないケースを処理できる保証がないので、、このエントリーはユーザーのカスタマイゼーションを意図したものではない。このエントリーを考慮するアクション関数はdisplay-buffer-no-window
のみ。
some-window
¶値がnil
またはlru
なら、display-buffer-use-some-window
は幅がフルではないような選択されたウィンドウと別フレームにあるウィンドウを除外して、もっとも最近使用されていないウィンドウを優先する。値がmru
なら選択されたウィンドウと選択されたフレーム以外のウィンドウを除外して、もっとも最近使用されたウィンドウを優先する。値が関数の場合にはバッファーとalistという2つの引数で呼び出されて、バッファーを表示するウィンドウをリターンすること。
body-function
¶値は1つの引数(表示されるウィンドウ)を受け取る関数でなければならない。この関数は表示されるウィンドウのサイズに応じて、表示されるウィンドウのbodyを何らかのコンテンツで充填するために使用できるかもしれない。これはバッファー表示の後、かつ挿入したコンテンツに適合するようにリサイズを適用できるwindow-height
、window-width
、preserve-size
の開始の前に呼び出される。
post-command-select-window
¶値が非nil
ならフックpost-command-hook
(コマンドループの概要を参照)によって実行されたカレントコマンドの後に、display-buffer
が表示したバッファーを選択する。値がnil
の場合にはpop-to-buffer
のような関数が選択したバッファーは選択を解除、そのコマンドでその後にどのウィンドウが選択されたかとは無関係に、その関数の呼び出し前に選択されていたウィンドウが選択されたままとなる。
category
¶If the caller of display-buffer
passes an alist entry
(category . symbol)
in its action argument, then you
can match the displayed buffer by using the same category symbol in the
condition part of display-buffer-alist
entries. See buffer-match-p
. Thus, if a Lisp program uses a particular
symbol as the category when calling display-buffer
, users can
customize how these buffers will be displayed by including such an entry in
display-buffer-alist
.
慣例によりエントリーwindow-height
、window-width
、preserve-size
は選択したウィンドウのバッファーのセットアップ後、かつそのウィンドウが以前に他のバッファーを表示していない場合のみ適用されます。後者はより正確にはカレントのdisplay-buffer
呼び出しによりウィンドウが作成されたか、以前にそのバッファーを表示するためにdisplay-buffer
によりウィンドウが作成されて、カレントのdisplay-buffer
呼び出しによる再利用まで他のバッファーの表示に使用されたことがないことを意味します。
window-height
、window-width
、あるいはwindow-size
のエントリーが何も指定されていない場合でも、そのバッファーが一時的なバッファーであり、かつtemp-buffer-resize-mode
有効ならウィンドウは依然としてリサイズされる可能性があります。一時的な表示を参照してください。このような場合には特定のバッファーやdisplay-buffer
呼び出しにたいするtemp-buffer-resize-mode
のデフォルトの挙動の抑制やオーバーライドにwindow-height
、window-width
、あるいはwindow-size
といったエントリーのCDRを用いることができます。