Next: Choosing Window, Previous: Buffers and Windows, Up: Windows [Contents][Index]
このセクションでは、あるウィンドウ内で特定のバッファーにスイッチするための、高レベルな関数について説明します。“バッファーをスイッチする”とは一般的に、(1)そのバッファーをあるウィンドウに表示して、(2)そのウィンドウを選択されたウィンドウとし(かつそのフレームを選択されたフレームとし、(3)そのバッファーウィンドウカレントバッファーにすることを意味します。
Lispプログラムがアクセスや変更できるように、バッファーを一時的にカレントにするのにこれらの関数を使用しないでください。これらはウィンドウヒストリー(Window Historyを参照)の変更のような副作用をもつので、そのような方法での使用はユーザーを驚かせることになるでしょう。バッファーをLispで変更するためにカレントにしたい場合はwith-current-buffer
、save-current-buffer
、set-buffer
を使用します。Current Bufferを参照してください。
このコマンドは、選択されたウィンドウ内でbuffer-or-nameを表示して、それをカレントバッファーにしようと試みる。これはよくインタラクティブ(C-x bのバインディングで)に使用され、同様にLispプログラムでも使用される。リターン値はスイッチしたバッファーである。
buffer-or-nameがnil
の場合のデフォルトは、other-buffer
によりリターンされるバッファーになる(Buffer Listを参照)。buffer-or-nameが既存のバッファーの名前でない文字列の場合、この関数はその名前で新たにバッファーを作成する。新たなバッファーのメジャーモードは、変数major-mode
により決定される(Major Modesを参照)。
通常は、指定されたバッファーはバッファーリスト —
グローバルバッファーリストと選択されたフレームのバッファーリストの両方の先頭に置かれる(Buffer Listを参照)。しかし、オプション引数norecordが非nil
なら、これは行われない。
switch-to-buffer
が、選択されたウィンドウ内にバッファーを表示するのが不可能なことが時折ある。これは、選択されたウィンドウがミニバッファーウィンドウの場合や、選択されたウィンドウがそのバッファーにたいして特に専用(strongly
dedicated)な場合に発生する(Dedicated Windowsを参照)。この場合、このコマンドはpop-to-buffer
(以下参照)を呼び出すことにより、通常は何か他のウィンドウにそのバッファーの表示を試みる。しかし、オプション引数が非nil
なら、かわりにエラーをシグナルする。
デフォルトでは、switch-to-buffer
はバッファーのpoint
位置でバッファーを表示します。この振る舞いは、以下のオプションを使用して調整できます。
この変数がnil
の場合、switch-to-buffer
はbuffer-or-nameにより指定されたバッファーを、そのバッファーのpoint
位置で表示する。この変数がalready-displayed
なら、そのバッファーが任意の可視またはアイコン化されたフレーム上の他のウィンドウで表示されている場合は、選択されたウィンドウ内の以前の位置でのバッファーの表示を試みる。この変数がt
なら、switch-to-buffer
は選択されたウィンドウ内の以前の位置でそのバッファーを表示しようと試みる。
この変数は、バッファーがすでに選択されたウィンドウに表示されているか、これまで表示されたことがない、またはバッファーを表示するためにswitch-to-buffer
がpop-to-buffer
を呼び出した場合は無視される。
以下の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
のドキュメントについては、Choosing Windowを参照してください。
この関数は、buffer-or-nameをカレントバッファーにして、なるべく前に選択されていたウィンドウではないウィンドウにそれを表示する。そしてその後に、表示しているウィンドウを選択する。そのウィンドウが別のグラフィカルなフレーム上にある場合は、可能ならそのフレームが入力フォーカスを与えられる(Input Focusを参照)。リターン値は、切り替えたバッファーである。
buffer-or-nameがnil
の場合のデフォルトは、other-buffer
によりリターンされるバッファーになる(Buffer Listを参照)。buffer-or-nameが既存のバッファーの名前でない文字列の場合、この関数はその名前で新たにバッファーを作成する。新たなバッファーのメジャーモードは、変数major-mode
により決定される(Major Modesを参照)。
actionが非nil
の場合、それはdisplay-buffer
に渡すディスプレイアクション(display
action)であること(Choosing Windowを参照)。非nil
、非リスト値の場合は、たとえそのバッファーがすでに選択されたウィンドウに表示されていたとしても、選択されたウィンドウではなく、ウィンドウをポップ(pop)することを意味する。
switch-to-buffer
と同様、norecordがnil
なら、この関数はバッファーリストを更新する。