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


28.13.2 バッファー表示用のアクション関数

アクション関数(action function)とはバッファーを表示するウィンドウを選択するためにdisplay-bufferが呼び出す関数です。アクション関数はbuffer (表示するバッファー)、およびalist (アクションalist、Buffer Display Action Alistsを参照)という2つの引数を受け取ります。これらの関数は成功時にはbufferを表示するウィンドウ、失敗時にはnilをリターンします。

以下の基本的なアクション関数がEmacsで定義されています。

Function: display-buffer-same-window buffer alist

この関数は選択されたウィンドウ内にbufferの表示を試みる。選択されたウィンドウがミニバッファーウィンドウや他のバッファー専用(Dedicated Windowsを参照)の場合には失敗する。alistに非nilinhibit-same-windowエントリーがある場合にも失敗する。

Function: display-buffer-reuse-window buffer alist

この関数はすでにbufferを表示しているウィンドウを探すことによりバッファーの表示を試みる。

alistに非nilinhibit-same-windowエントリーがある場合には、選択されたウィンドウは再利用に適さない。bufferをすでに表示しているウィンドウを検索するフレームセットは、アクションalistのreusable-framesエントリーで指定できる。alistreusable-framesエントリーが含まれる場合には、この関数は選択されたフレームだけを検索する。

この関数が他のフレーム上のウィンドウを選択した場合には、そのフレームを可視にするとともに、alistinhibit-switch-frameエントリーを含んでいなければ、必要ならそのフレームを最前面に移動(raise)する。

Function: display-buffer-reuse-mode-window buffer alist

この関数は与えられたモードですでにbufferを表示しているウィンドウを探すことによりバッファーの表示を試みる。

alistmodeエントリーを含んでいれば、その値がメジャーモード(シンボル)、またはメジャーモードのリストを指定する。alistmodeエントリーが含まれていなければ、かわりにbufferのカレントのメジャーモードが使用される。このように指定されたモードのいずれかから継承されたモードでバッファーを表示しているウィンドウは候補となる。

display-buffer-reuse-windowのように関数の挙動はinhibit-same-windowreusable-framesinhibit-switch-frameにたいするalistエントリーによっても制御される。

Function: display-buffer-pop-up-window buffer alist

この関数は、最大もしくはもっとも長い間参照されていないウィンドウ(通常は選択されたフレームに配置されている)を分割することによりbufferの表示を試みる。これは実際には、split-window-preferred-function (Choosing Window Optionsを参照)内で指定された関数を呼び出すことにより分割を行う。

新たなウィンドウのサイズはalistにエントリーwindow-heightwindow-widthを与えることにより調整できる。alistpreserve-sizeエントリーが含まれていれば、Emacsは将来のリサイズ操作の間に新たなウィンドウのサイズの維持も試みる(Preserving Window Sizesを参照)。

この関数は分割可能なウィンドウがなければ失敗する。これの多くは、分割を許容するのに十分大きいウィンドウがない場合に発生する。この問題にたいしてはsplit-height-thresholdsplit-width-thresholdに小さい値をセットすることが助けになるかもしれない。選択されたフレームがフレームパラメーターunsplittableをもつ場合にも分割は失敗する。Buffer Parametersを参照のこと。

Function: display-buffer-in-previous-window buffer alist

この関数はbufferを以前に表示したウィンドウにbufferの表示を試みる。

alistに非nilinhibit-same-windowエントリーが含まれる場合には、選択されたウィンドウは使用に適さない。専用ウィンドウ()dedicated windowは、すでにbufferを表示済みの場合のみ使用可能。alistprevious-windowエントリーが含まれる場合には、そのエントリーで指定されるウィンドウが以前にbufferを表示したことがなくても、そのウィンドウが使用される。

alistreusable-framesエントリー(Buffer Display Action Alistsを参照)が含まれる場合には、その値が適切なウィンドウを検索するフレームを決定する。この関数はalistreusable-framesエントリーが含まれず、display-buffer-reuse-framespop-up-framesがいずれもnilなら選択されたフレームのみ、いずれかが非nilならカレント端末上のすべてのフレームを検索する。

これらのルールに照らして1つ以上のウィンドウが使用に適している場合には、この関数は以下の優先順にしたがって選択を行う:

Function: display-buffer-use-some-window buffer alist

この関数は既存のウィンドウを選択して、そのウィンドウ内にbufferを表示することによりバッファーの表示を試みる。すべてのウィンドウが他のバッファー専用の場合には、この関数は失敗する可能性がある(Dedicated Windowsを参照)。

Function: display-buffer-below-selected buffer alist

この関数は選択されたウィンドウの下のウィンドウ内にbufferの表示を試みる。選択されたウィンドウの下にすでにそのバッファーを表示するウィンドウがあれば、そのウィンドウを再利用する。

そのようなウィンドウが存在しなければ、この関数は選択されたウィンドウを分割することにより新たなウィンドウを作成してbufferの表示を試みる。alistに適切なwindow-heightwindow-widthのエントリーが含まれていれば、ウィンドウのサイズ調整も試みる(上記参照)。

選択されたウィンドウの分割に失敗、かつ選択されたウィンドウの下に別のバッファーを表示中の非専用ウィンドウがある場合には、この関数はbufferの表示にそのウィンドウの使用を試みる。

Function: display-buffer-at-bottom buffer alist

この関数は選択されたフレームの最下にあるウィンドウ内にbufferの表示を試みる。

これはフレーム最下のウィンドウまたはフレームのルートウィンドウを分割、または選択されたフレーム最下の既存ウィンドウを試みる。

Function: display-buffer-pop-up-frame buffer alist

この関数は新たにフレームを作成して、そのフレームのウィンドウ内にバッファーを表示する。これは実際にはpop-up-frame-function (Choosing Window Optionsを参照)内で指定された関数を呼び出すことによりフレーム作成の処理を行う。alistpop-up-frame-parametersエントリーを含む場合には、その連想値(associated value)が新たに作成されたフレームのパラメーターに追加される。

Function: display-buffer-in-child-frame buffer alist

この関数は選択されたフレームの既存の子フレーム、または子フレームを新たに作成してbufferの表示を試みる(Child Framesを参照)。alistに非nilchild-frame-parametersエントリーがあれば、対応する値が新たなフレームのフレームパラメーターのalistとして与えられる。デフォルトとして選択されたフレームを指定するparent-frameパラメーターが提供される。その子フレームが別のフレームの子になる場合には、対応するエントリーをalistに追加しなければならない。

子フレームの外観はalistを通じて提供されるパラメーターに大きく依存する。子フレームが可視のままでいることを保証するために、少なくとも子フレームのサイズ(Size Parametersを参照)と位置(Position Parametersを参照)を指定して比率(ratio)を使用すること、およびkeep-ratioパラメーター(Frame Interaction Parametersを参照)の追加を推奨する。他に考慮すべきパラメーターについてはChild Framesを参照のこと。

Function: display-buffer-use-some-frame buffer alist

この関数は述語を満足するフレーム(デフォルトは選択されたフレーム以外のフレーム)を探してbufferの表示を試みる。

この関数が他のフレーム上のウィンドウを選択した場合には、そのフレームを可視にするとともに、alistinhibit-switch-frameエントリーを含んでいなければ、必要ならそのフレームを最前面に移動(raise)する。

alistに非nilframe-predicateエントリーがあれば、その値は1つの引数(フレーム)を受け取ってそのフレームが候補なら非nilをリターンする、デフォルトの述語を置き換える関数。

alistに非nilinhibit-same-windowエントリーがある場合には選択されたウィンドウは使用しない。したがって選択されたフレームに単一のウィンドウしかなければ使用しない。

Function: display-buffer-no-window buffer alist

この関数はalistに非nilallow-no-windowエントリーがあればbufferを表示せずにシンボルfailをリターンする。この構成はアクション関数がnilbufferを表示するウィンドウをリターンするという慣習の唯一の例外である。alistにそのようなallow-no-windowエントリーがなければ、この関数はnilをリターンする。

この関数がfailをリターンした場合には、display-bufferはそれ委譲のディスプレイアクションをスキップして即座にnilをリターンする。この関数がnilをリターンした場合には、display-bufferはもしあれば次のディスプレイアクションを継続する。

display-bufferの呼び出し側が非nilallow-no-windowエントリーを指定した場合には、nilのリターン値の処理も可能とみなされる。

他の2つのアクション関数display-buffer-in-side-windowdisplay-buffer-in-atom-windowについては、それぞれ適正なセクションで説明します(Displaying Buffers in Side WindowsAtomic Windowsを参照)。