Next: , Previous: , Up: Windows   [Contents][Index]


27.13 Action Functions for display-buffer

以下の基本的なアクション関数がEmacs内で定義されています。これらの関数はそれぞれ表示するバッファーbufferと、アクションalistという、2つの引数をとります。それぞれのアクション関数は、成功した場合はウィンドウ、失敗したらnilをリターンします。

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エントリーがある場合、選択されたウィンドウは再利用に適さない。alistreusable-framesエントリーが含まれる場合、その値により再利用可能なウィンドウをどのフレームで検索するか決定される:

これらは、next-windowにたいするall-frames引数の場合とは若干異なることに注意(Cyclic Window Orderingを参照)。

alistreusable-framesエントリーが含まれない場合、通常この関数は選択されたフレームだけを検索する。しかし、変数pop-up-framesが非nilなら、カレント端末上のすべてのフレームを検索する。Choosing Window Optionsを参照。

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

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

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

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

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

新たなウィンドウのサイズは、alistにエントリーwindow-heightwindow-widthを与えることにより調整できる。ウィンドウの高さを調整するには、CARwindow-heightCDRが以下のいずれかであるようなエントリーを使用する:

ウィンドウの幅を調整するには、CARwindow-widthCDRが以下のいずれかであるようなエントリーを使用する:

この関数は、何らかの理由により分割を行えるウィンドウが存在しない場合は、失敗する可能性がある(選択されたフレームがフレームパラメーターunsplittableをもつ場合等。Buffer Parametersを参照のこと)。

Function: display-buffer-below-selected buffer alist

この関数は、選択されたウィンドウの下のウィンドウ内にbufferの表示を試みる。これは選択されたウィンドウの分割、または選択されたウィンドウの下のウィンドウの使用を意味する。新たにウィンドウを作成した場合は、alistに適切なwindow-heightまたはwindow-widthエントリーが含まれていれば、サイズの調整も行うだろう。上記を参照のこと。

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

この関数は、以前にbufferを表示していたウィンドウ内に、そのバッファーの表示を試みる。alistに非nilinhibit-same-windowエントリーがある場合、選択されたウィンドウは再利用に適さない。alistreusable-framesエントリーが含まれる場合、その値はdisplay-buffer-reuse-windowと同様、適正なウィンドウをどのフレームから検索するかを決定する。

alistprevious-windowエントリーがある場合は、そのエントリーにより指定されたウィンドウは、たとえそのウィンドウが以前にbufferを表示したことが一度もなくても、上記メソッドが見つけた他のすべてのウィンドウをオーバーライドするだろう。

Function: display-buffer-at-bottom buffer alist

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

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

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

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

Function: display-buffer-no-window buffer alist

alistに非nilallow-no-windowエントリーがある場合、この関数はbufferを表示しない。これにより、デフォルトの動作をオーバーライドして、バッファーの表示を避けることができる。これは、呼び出し側がallow-no-windowに非nil値を指定して、display-bufferからリターンされたnil値を処理できるようなケースを想定している。

アクション関数を説明するために、以下の例を考えてみましょう。

(display-buffer
 (get-buffer-create "*foo*")
 '((display-buffer-reuse-window
    display-buffer-pop-up-window
    display-buffer-pop-up-frame)
   (reusable-frames . 0)
   (window-height . 10) (window-width . 40)))

上記のフォームを評価することにより、以下のようにdisplay-bufferが実行されます: (1)*foo*と呼ばれるバッファーが、すでに可視またはアイコン化されたフレームに表示されている場合は、そのウィンドウを再利用する。 (2)それ以外の場合は、新たなウィンドウをポップアップするか、それが不可能なら新たなフレームでバッファーを表示する。(3) すべてのステップが失敗した場合は、それが何であれdisplay-buffer-base-actionおよびdisplay-buffer-fallback-actionが指示するものを使用して処理を行う。

さらにdisplay-bufferは、(display-bufferにより*foo*が前からそこに配置されていた場合は)再使用されるウィンドウ、およびポップアップされたウィンドウにたいして調整を試みます。そのウィンドウが垂直コンビネーションの一部なら、高さはその行数にセットされるでしょう。数字“10”のかわりに関数fit-window-to-bufferを指定した場合、display-bufferは空のバッファーにフィットするようにウィンドウを1行にセットするでしょう。ウィンドウが水平コンビネーションの一部なら、列数を40にセットします。新たなウィンドウが垂直または水平に組み合わせられるかは、ウィンドウの分割方向とsplit-window-preferred-functionsplit-height-thresholdsplit-width-thresholdの値に依存します(Choosing Window Optionsを参照)。

ここで、事前に以下のような‘display-buffer-alist’にたいするセットアップが存在していて、この呼び出しを組み合わせたとしましょう。

(let ((display-buffer-alist
       (cons
        '("\\*foo\\*"
          (display-buffer-reuse-window display-buffer-below-selected)
          (reusable-frames)
          (window-height . 5))
        display-buffer-alist)))
  (display-buffer
   (get-buffer-create "*foo*")
   '((display-buffer-reuse-window
      display-buffer-pop-up-window
      display-buffer-pop-up-frame)
     (reusable-frames . 0)
     (window-height . 10) (window-width . 40))))

このフォームは、まず選択されたフレーム上で*foo*を表示しているウィンドウを再利用するよう、display-bufferに試みさせます。そのようなウィンドウが存在しなければ、選択されたウィンドウの分割を試み、またはそれが不可能なら選択されたウィンドウの下のウィンドウを使用します。

選択されたウィンドウの下にウィンドウがない、あるいは下のウィンドウがそれのバッファーに専用の場合、display-bufferは前の例で説明したように処理を行うでしょう。しかし、再利用されたウィンドウやポップアップされたウィンドウの高さ調整を試みる場合は、display-bufferaction引数内の行数に対応する指定をオーバーライドする、行数“5”へのセットを試みることに注意してください。