バッファ表示操作(バッファ表示用のウィンドウの選択を参照)の動作は、以下のユーザーオプションでさらに変更できます。
この変数の値が nil 以外の場合、display-buffer
は既存のウィンドウを分割して、表示用の新しいウィンドウを作成することができます。これがデフォルトです。
この変数は後方互換性のためだけに提供されています。display-buffer は display-buffer-fallback-action
内の特殊な機構を通じてこの変数に従い、このオプションの値が nil
以外である場合には、アクション関数 display-buffer-pop-up-window(バッファ表示用アクション関数
を参照)を呼び出します。display-buffer-pop-up-window
自体はこの変数を参照せず、ユーザーは display-buffer-alist
などで直接指定することができます。
この変数は、バッファ表示用の新しいウィンドウを作成するために、ウィンドウを分割する関数を指定します。これは、display-buffer-pop-up-window
アクション関数によって実際にウィンドウを分割する際に使用されます。
この値は、ウィンドウを1つの引数として受け取り、新しいウィンドウ(目的のバッファの表示に使用されます)または nil(分割に失敗したことを意味します)のいずれかを返す関数である必要があります。デフォルト値は split-window-sensibly であり、これについては次に説明します。
この関数は window を分割し、新たに作成されたウィンドウを返そうとします。window を分割できない場合は、nil を返します。window が省略されているか、あるいは nil
の場合は、選択中のウィンドウがデフォルトとなります。
この関数は、ウィンドウを分割できるタイミングを決定する通常のルールに従います(ウィンドウの分割を参照)。まず、split-height-thresholdによる制約(後述)に従い、新しいウィンドウを下に配置する垂直分割か、あるいはsplit-width-thresholdおよびその他の制約に従い、新しいウィンドウを右側に配置する水平分割のいずれかを試みます。最初に垂直分割を試みるか水平分割を試みるかは、ユーザーオプションsplit-window-preferred-directionの値によって決まります。第1次元に沿った分割が失敗した場合は、もう一方の次元に沿った分割を試みます。それも失敗し、かつそのウィンドウがフレーム上の唯一のウィンドウである場合、この関数は再び分割を試み、split-height-thresholdを無視して新しいウィンドウを下に配置します。これも失敗した場合、この関数は処理を断念し、nilを返します。
この変数は、split-window-sensibly
がウィンドウを分割して新しいウィンドウを下に配置することを許可するかどうかを指定します。整数の場合は、元のウィンドウに少なくともその行数がある場合にのみ分割することを意味します。nil の場合は、この方法で分割しないことを意味します。
この変数は、split-window-sensibly
がウィンドウを分割して新しいウィンドウを右側に配置することを許可するかどうかを指定します。値が整数の場合、元のウィンドウに少なくともその列数がある場合にのみ分割することを意味します。値が
nil の場合、この方法で分割しないことを意味します。
この変数は、split-height-threshold および split-width-threshold
の値によってウィンドウを垂直方向と水平方向の両方に分割可能と判断された場合に、split-window-sensibly がウィンドウを分割しようとする最初の次元を決定します。デフォルト値は
longest
であり、これはウィンドウフレームの高さが幅以上であれば垂直方向に、それ以外の場合は水平方向に分割することを意味します。vertical および horizontal
の値は、最初の分割を試みる方向を指定します。
この変数がnil以外の場合、display-bufferは既存のウィンドウを再利用する際にウィンドウサイズを偶数にし、そのウィンドウは選択中のウィンドウに隣接します。
値が width-only
の場合、再利用ウィンドウが選択ウィンドウの左側または右側にあり、かつ選択ウィンドウが再利用ウィンドウよりも広い場合にのみ、サイズが均等化されます。値が
height-only
の場合、再利用ウィンドウが選択ウィンドウの上側または下側にあり、かつ選択ウィンドウが再利用ウィンドウよりも高い場合にのみ、サイズが均等化されます。それ以外の
nil
以外の値は、選択ウィンドウが組み合わせの観点から再利用ウィンドウよりも大きい場合に限り、これらのいずれかのケースでサイズを均等化することを意味します。
この変数の値が nil 以外の場合、display-buffer は新しいフレームを作成することでバッファを表示することがあります。デフォルトは
nil です。
nil 以外の値は、display-buffer
が既に buffer-or-name
を表示しているウィンドウを探す際、選択中のフレームだけでなく、表示されているフレームやアイコン化されたフレームであればどれでも検索できることを意味します。
display-bufferのalistにある同名のエントリは、変数よりも優先されます。
この変数は、主に後方互換性のために提供されています。display-buffer は display-buffer-fallback-action 内の特殊な機構を通じてこの変数に従い、値が
nil 以外である場合には、アクション関数 display-buffer-pop-up-frame(バッファ表示用アクション関数
を参照)を呼び出します。(これはウィンドウを分割しようとする前に行われます。)この変数は display-buffer-pop-up-frame 自身では参照されず、ユーザーは display-buffer-alist などで直接指定することができます。
この変数は、バッファ表示用の新しいウィンドウを作成するための、新規フレーム生成関数を指定します。これはdisplay-buffer-pop-up-frameアクション関数で使用されます。
値は、引数を取らずにフレームを返すか、あるいはフレームを作成できなかった場合は nil
を返す関数である必要があります。デフォルト値は、pop-up-frame-alist
で指定されたパラメータ(後述)を用いてフレームを作成する関数です。
この変数にはフレームパラメータ(フレームパラメータを参照)のalistが格納されており、pop-up-frame-functionで指定された関数がこれを用いて新しいフレームを作成します。デフォルトはnilです。
このオプションは後方互換性のためにのみ提供されています。なお、display-buffer-pop-up-frame が pop-up-frame-function で指定された関数を呼び出す際、すべての pop-up-frame-parameters アクションアリストエントリの値が pop-up-frame-alist
の先頭に付加されるため、アクションアリストエントリで指定された値が、pop-up-frame-alist の対応する値を実質的に上書きすることになります。
したがって、ユーザーはpop-up-frame-alistをカスタマイズするのではなく、display-buffer-alistにpop-up-frame-parametersアクションリストのエントリを設定すべきです。そうすることで初めて、ユーザーが指定したパラメータの値が、display-bufferの呼び出し元が指定した同パラメータの値を上書きすることが保証されます。
display-buffer の設計にあたっては、pop-up-windows、pop-up-frames、pop-up-frame-alist、same-window-buffer-names、same-window-regexps
といった旧来のオプションを使用するコードとの互換性を維持するため、多くの工夫が凝らされてきました。Lisp
プログラムおよびユーザーは、これらのオプションの使用を控えるべきです。前述の通り、pop-up-frame-alist
のカスタマイズについては既に警告しました。ここでは、残りのオプションを代わりに表示アクションを使用するように変換する方法について説明します。
pop-up-windows ¶この変数はデフォルトで t となっています。これを nil にカスタマイズして display-buffer
に「やってはいけないこと」を伝えるのではなく、代わりに試すべきアクション関数を display-buffer-base-action
に列挙する方がはるかに好ましいです。例えば次のように記述します:
(setopt
display-buffer-base-action
'((display-buffer-reuse-window display-buffer-same-window
display-buffer-in-previous-window
display-buffer-use-some-window)))
pop-up-frames ¶この変数を t にカスタマイズする代わりに、例えば次のように display-buffer-base-action をカスタマイズできます。
(setopt display-buffer-base-action '(nil (pop-up-frames . t)))
same-window-buffer-names
¶same-window-regexpsこれらのオプションのいずれかにバッファ名や正規表現を追加する代わりに、そのバッファに display-buffer-alist エントリを使用し、アクション関数 display-buffer-same-window を指定してください。
(setopt
display-buffer-alist
(cons '("\\*foo\\*" (display-buffer-same-window))
display-buffer-alist))