ウィンドウはそれぞれ、リスト内に以前表示されていたバッファーと、それらのバッファーがウィンドウから削除された順序を記憶しています。このヒストリーが、たとえばreplace-buffer-in-windows
(バッファーとウィンドウを参照)やウィンドウのquit (ウィンドウのquitを参照)の際に使用されます。このリストはEmacsにより自動的に保守されますが、これを明示的に調べたり変更するために、以下の関数を使用できます:
この関数はwindowの前のコンテンツを指定するリストをリターンする。オプション引数windowには生きたウィンドウを指定すること。デフォルトは選択されたウィンドウ。
リスト要素はそれぞれ(buffer window-start
window-pos)
という形式をもつ。ここでbufferはそのウィンドウで前に表示されていたウィンドウ、window-startはそのバッファーが最後に表示されていたときのウィンドウのスタート位置(ウィンドウの開始位置と終了位置を参照)、window-posはwindow内にそのバッファーが最後に表示されていたときのポイント位置(ウィンドウとポイントを参照)。
このリストは順序付きであり、より前の要素がより最近に表示されたバッファーに対応してして、通常は最初の要素がそのウィンドウからもっとも最近削除されたバッファーに対応する。
この関数はwindowの前のバッファーをprev-buffersの値にセットする。引数windowは生きたウィンドウでなければならず、デフォルトは選択されたウィンドウ。引数prev-buffersはwindow-prev-buffers
によりリターンされるリストと同じ形式であること。
これらに加えて各ウィンドウは次バッファー(next
buffers)のリストを保守します。これはswitch-to-prev-buffer
(以下参照)により再表示されたバッファーのリストです。このリストは主に切り替えるバッファーを選択するために、switch-to-prev-buffer
とswitch-to-next-buffer
により使用されます。
この関数はswitch-to-prev-buffer
を通じてwindow内に最近表示されたバッファーのリストをリターンする。window引数は生きたウィンドウかnil
(選択されたウィンドウの意)でなければならない。
この関数はwindowの次バッファーリストをnext-buffersにセットする。window引数は生きたウィンドウかnil
(選択されたウィンドウの意)、引数next-buffersはバッファーのリストであること。
以下のコマンドはbury-buffer
やunbury-buffer
のように、グローバルバッファーリストを巡回するために使用できます。ただしこれらはグローバルバッファーリストではなく、指定されたウィンドウのヒストリーリストのしたがって巡回します。それに加えてこれらはウィンドウ固有なウィンドウのスタート位置とポイント位置をリストアして、すでに他のウィンドウに表示されているバッファーをも表示できます。特にswitch-to-prev-buffer
コマンドは、ウィンドウにたいする置き換えバッファーを探すためにreplace-buffer-in-windows
、bury-buffer
、quit-window
により使用されます。
このコマンドはwindow内に前のバッファーを表示する。引数windowは生きたウィンドウかnil
(選択されたウィンドウの意)であること。オプション引数bury-or-killが非nil
なら、それはwindow内にカレントで表示されているバッファーは今まさにバリーもしくはkillされるバッファーであり、したがって将来におけるこのコマンドの呼び出しでこのバッファーに切り替えるべきではないことを意味する。
前のバッファーとは、通常はwindow内にカレントで表示されているバッファーの前に表示されていたバッファーである。しかしバリーやkillされたバッファー、または直近のswitch-to-prev-buffer
呼び出しですでに表示されたバッファーは前のバッファーとしては不適格となる。
このコマンドを繰り返して呼び出すことによりwindow内で前に表示されたすべてのバッファーが表示されてしまったら、将来の呼び出しではwindowが表示されているフレームのバッファーリスト(バッファーリストを参照)からバッファーを表示する。
特定のバッファー、たとえば別ウィンドウに表示済みのバッファーへの切り替えを抑制するために、以下で説明するオプションswitch-to-prev-buffer-skip
を使用できる。同様にwindowのフレームがbuffer-predicate
パラメーター(バッファーのパラメーターを参照)をもつ場合には、この述語は特定のバッファーへの切り替えを抑制する。
このコマンドはwindow内の次バッファーに切り替える。つまりwindow内での最後のswitch-to-prev-buffer
コマンドの効果をアンドゥする。引数windowは生きたウィンドウであること。デフォルトは選択されたウィンドウ。
アンドゥ可能なswitch-to-prev-buffer
の直近の呼び出しが存在しなければ、この関数はwindowが表示されているフレームのバッファーリスト(バッファーリストを参照)からバッファーの表示を試みる。
windowのフレームのオプションswitch-to-prev-buffer-skip
とbuffer-predicate
(バッファーのパラメーターを参照)はswitch-to-prev-buffer
の場合のように、このコマンドに影響を与える。
デフォルトでは、switch-to-prev-buffer
とswitch-to-next-buffer
は他のウィンドウで表示済みのバッファーに切り替えることができます。この挙動をオーバーライドするために以下のオプションを使用できます。
この変数がnil
なら、switch-to-prev-buffer
は別のウィンドウに表示済みのバッファーを含むすべてのバッファーに切り替えることができる。
この変数が非nil
なら、switch-to-prev-buffer
は特定のバッファーへの切り替えを抑制する。以下の値を使用できる:
this
はswitch-to-prev-buffer
が動作するウィンドウをホストするフレームで表示中のバッファーに切り替えないことを意味する。
visible
は可視フレームで表示中のバッファーに切り替えないことを意味する。
t
は生きたフレームで表示中のバッファーに切り替えないことを意味する。
switch-to-prev-buffer
のwindow引数、switch-to-prev-buffer
が切り替えようとするバッファー、switch-to-prev-buffer
のbury-or-kill引数という3つの引数を受け取る関数。この関数が非nil
をリターンすると、switch-to-prev-buffer
は2つ目の引数で指定されたバッファーからの切り替えを抑制する。
コマンドswitch-to-next-buffer
は同様の方法でこのオプションにしたがう。このオプションに関数が指定されると、switch-to-next-buffer
は3つ目の引数を常にnil
にしてその関数を呼び出す。
switch-to-prev-buffer
はbury-buffer
、同じくreplace-buffer-in-windows
やquit-restore-window
が呼び出すので、このオプションをカスタマイズすることによりウィンドウのquitやバッファーがバリーやkillされる際のEmacsの挙動にも影響することに注意。
更にswitch-to-prev-buffer
やswitch-to-next-buffer
は特定の状況下、たとえばこれらの関数が切り替え可能なバッファーが1つしか残っていないときには、このオプションが無視されるかもしれないことにも注意。
このユーザーオプションは正規表現、または正規表現のリストであること。名前がこれらの正規表現にマッチするバッファーを、switch-to-prev-buffer
およびswitch-to-next-buffer
は無視する(切り替えるバッファーが他に存在しない場合を除く)。