Next: 適切なウィンドウへのバッファーの表示, Previous: バッファーとウィンドウ, Up: ウィンドウ [Contents][Index]
このセクションでは、あるウィンドウ内で特定のバッファーにスイッチするための高レベルな関数について説明します。“バッファーをスイッチする”とは一般的に、(1)そのバッファーをあるウィンドウに表示して、(2)そのウィンドウを選択されたウィンドウとし(かつそのフレームを選択されたフレームとし)、(3)そのバッファーウィンドウカレントバッファーにすることを意味します。
Lispプログラムがアクセスや変更できるように、バッファーを一時的にカレントにするためにこれらの関数を使用しないでください。これらはウィンドウヒストリー(ウィンドウのヒストリーを参照)の変更のような副作用をもつので、そのような方法での使用はユーザーを驚かせることになるでしょう。バッファーをLispで変更するためにカレントにしたければwith-current-buffer
、save-current-buffer
、set-buffer
を使用してください。カレントバッファーを参照してください。
このコマンドは選択されたウィンドウ内でbuffer-or-nameを表示して、それをカレントバッファーにしようと試みる。これはよくインタラクティブ(C-x bのバインディングで)に使用され、同様にLispプログラムでも使用される。リターン値はスイッチしたバッファー。
buffer-or-nameがnil
の場合のデフォルトはother-buffer
によりリターンされるバッファー(バッファーリストを参照)。buffer-or-nameが既存のバッファーの名前でない文字列なら、この関数はその名前で新たにバッファーを作成する。新たなバッファーのメジャーモードは変数major-mode
により決定される(メジャーモードを参照)。
通常は指定されたバッファーはバッファーリスト —
グローバルバッファーリストと選択されたフレームのバッファーリストの両方の先頭に置かれる(バッファーリストを参照)。しかしオプション引数norecordが非nil
なら、これは行われない。
選択されたウィンドウにそのバッファーを表示することが不適切なこともあるだろう。これは選択されたウィンドウがミニバッファーウィンドウの場合、および選択されたウィンドウがそのバッファーに特に専用(専用のウィンドウを参照)な場合に発生する。そのようなケースでは、このコマンドはpop-to-buffer
(以下参照)を呼び出すことにより、通常は別のウィンドウにバッファーの表示を試みる。
オプション引数force-same-windowが非nil
、かつ選択されたウィンドウがそのバッファーの表示に不適切なら、非インタラクティブに呼び出された際にはこの関数は常にエラーをシグナルする。インタクラクティブな使用においては、もし選択されたウィンドウがミニバッファーウィンドウなら、この関数はかわりに別のウィンドウの使用を試みる。選択されたウィンドウがそのバッファーにたいして特に専用なら、次に説明するオプションswitch-to-buffer-in-dedicated-window
が使用される。
このオプションが非nil
なら、switch-to-buffer
がインタラクティブに呼び出されて、かつ選択されたウィンドウがそのバッファーに特に専用な際に、処理を先に進めることが許される、
以下の値が許される:
nil
切り替えを許さず非インタラクティブな使用ではエラーをシグナルする。
prompt
切り替えを許すかどうかユーザーに確認を求める。
pop
処理を行うためにpop-to-buffer
を呼び出す。
t
選択されたウィンドウを非専用としてマークして処理を進める。
このオプションは非インタラクティブなswitch-to-buffer
の呼び出しには影響しない。
デフォルトではswitch-to-buffer
はバッファーのpoint
位置の維持を試みます。この振る舞いは以下のオプションを使用して調整できます。
この変数がnil
なら、switch-to-buffer
はbuffer-or-nameにより指定されたバッファーを、そのバッファーのpoint
位置で表示する。この変数がalready-displayed
なら、そのバッファーが任意の可視またはアイコン化されたフレーム上の他のウィンドウで表示されていれば、選択されたウィンドウ内の以前の位置でバッファーの表示を試みる。この変数がt
なら、switch-to-buffer
は選択されたウィンドウ内の以前の位置でそのバッファーを表示しようと試みる。
この変数はバッファーがすでに選択されたウィンドウに表示されている、これまで表示されたことがない、またはバッファーを表示するためにswitch-to-buffer
がpop-to-buffer
を呼び出した場合には無視される。
この変数が非nil
ならswitch-to-buffer
はdisplay-buffer-overriding-action
やdisplay-buffer-alist
、およびその他の表示に関係する変数で指定されるディスプレイアクションにしたがいます。
以下の2つのコマンドは、説明している機能以外はswitch-to-buffer
と類似しています。
この関数はbuffer-or-nameで指定されたバッファーを、選択されたウィンドウ以外の別のウィンドウに表示する。これは関数pop-to-buffer
(以下参照)を内部で使用する。
選択されたウィンドウが指定されたバッファーをすでに表示していれば表示を続けるが、見つかった他のウィンドウも同様にそのバッファーを表示する。
引数buffer-or-nameとnorecordはswitch-to-buffer
の場合と同じ意味をもつ。
この関数はbuffer-or-nameで指定されたバッファーを新たなフレームに表示する。これは関数pop-to-buffer
(以下参照)を内部で使用する。
指定されたバッファーがすでにカレント端末上の任意のフレームの他のウィンドウに表示されている場合には、フレームを新たに作成せずにそのウィンドウに切り替える。しかしこれを行うために選択されたウィンドウを使用することは決してない。
引数buffer-or-nameとnorecordはswitch-to-buffer
の場合と同じ意味をもつ。
上述したコマンドは任意のウィンドウにバッファーを柔軟に表示して、編集用にそのウィンドウを選択する関数pop-to-buffer
を使用しています。次にpop-to-buffer
はバッファーの表示にdisplay-buffer
を使用します。したがってdisplay-buffer
に影響する変数も同様に影響します。display-buffer
のドキュメントについてはバッファーを表示するウィンドウの選択を参照してください。
この関数はbuffer-or-nameをカレントバッファーにして、なるべく選択されたウィンドウではないウィンドウにそれを表示する。そしてその後に表示しているウィンドウを選択する。そのウィンドウが別のグラフィカルなフレーム上にある場合には、可能ならそのフレームが入力フォーカスを与えられる(入力のフォーカスを参照)。
buffer-or-nameがnil
の場合のデフォルトはother-buffer
によりリターンされるバッファー(バッファーリストを参照)。buffer-or-nameが既存のバッファーの名前でない文字列なら、この関数はその名前で新たにバッファーを作成する。新たなバッファーのメジャーモードは変数major-mode
により決定される(メジャーモードを参照)。バッファーの表示に適したウィンドウが存在しなくても、すべてのケースにおいてそのバッファーがカレントになりリターンされる。
actionが非nil
なら、それはdisplay-buffer
に渡すディスプレイアクション(display
action)であること(バッファーを表示するウィンドウの選択を参照)。非nil
か非リスト値なら、たとえそのバッファーがすでに選択されたウィンドウに表示されていたとしても、選択されたウィンドウではなく別のウィンドウをポップ(pop)することを意味する。
この関数はswitch-to-buffer
と同じように、norecordがnil
ならバッファーリストを更新する。