Next: , Previous: , Up: ウィンドウ   [Contents][Index]


29.14 ウィンドウのヒストリー

ウィンドウはそれぞれ、リスト内に以前表示されていたバッファーと、それらのバッファーがウィンドウから削除された順序を記憶しています。このヒストリーが、たとえばreplace-buffer-in-windows (バッファーとウィンドウを参照)やウィンドウのquit (ウィンドウのquitを参照)の際に使用されます。このリストはEmacsにより自動的に保守されますが、これを明示的に調べたり変更するために、以下の関数を使用できます:

Function: window-prev-buffers &optional window

この関数はwindowの前のコンテンツを指定するリストをリターンする。オプション引数windowには生きたウィンドウを指定すること。デフォルトは選択されたウィンドウ。

リスト要素はそれぞれ(buffer window-start window-pos)という形式をもつ。ここでbufferはそのウィンドウで前に表示されていたウィンドウ、window-startはそのバッファーが最後に表示されていたときのウィンドウのスタート位置(ウィンドウの開始位置と終了位置を参照)、window-poswindow内にそのバッファーが最後に表示されていたときのポイント位置(ウィンドウとポイントを参照)。

このリストは順序付きであり、より前の要素がより最近に表示されたバッファーに対応してして、通常は最初の要素がそのウィンドウからもっとも最近削除されたバッファーに対応する。

Function: set-window-prev-buffers window prev-buffers

この関数はwindowの前のバッファーをprev-buffersの値にセットする。引数windowは生きたウィンドウでなければならず、デフォルトは選択されたウィンドウ。引数prev-bufferswindow-prev-buffersによりリターンされるリストと同じ形式であること。

これらに加えて各ウィンドウは次バッファー(next buffers)のリストを保守します。これはswitch-to-prev-buffer (以下参照)により再表示されたバッファーのリストです。このリストは主に切り替えるバッファーを選択するために、switch-to-prev-bufferswitch-to-next-bufferにより使用されます。

Function: window-next-buffers &optional window

この関数はswitch-to-prev-bufferを通じてwindow内に最近表示されたバッファーのリストをリターンする。window引数は生きたウィンドウかnil (選択されたウィンドウの意)でなければならない。

Function: set-window-next-buffers window next-buffers

この関数はwindowの次バッファーリストをnext-buffersにセットする。window引数は生きたウィンドウかnil (選択されたウィンドウの意)、引数next-buffersはバッファーのリストであること。

以下のコマンドはbury-bufferunbury-bufferのように、グローバルバッファーリストを巡回するために使用できます。ただしこれらはグローバルバッファーリストではなく、指定されたウィンドウのヒストリーリストのしたがって巡回します。それに加えてこれらはウィンドウ固有なウィンドウのスタート位置とポイント位置をリストアして、すでに他のウィンドウに表示されているバッファーをも表示できます。特にswitch-to-prev-bufferコマンドは、ウィンドウにたいする置き換えバッファーを探すためにreplace-buffer-in-windowsbury-bufferquit-windowにより使用されます。

Command: switch-to-prev-buffer &optional window bury-or-kill

このコマンドは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パラメーター(バッファーのパラメーターを参照)をもつ場合には、この述語は特定のバッファーへの切り替えを抑制する。

Command: switch-to-next-buffer &optional window

このコマンドはwindow内の次バッファーに切り替える。つまりwindow内での最後のswitch-to-prev-bufferコマンドの効果をアンドゥする。引数windowは生きたウィンドウであること。デフォルトは選択されたウィンドウ。

アンドゥ可能なswitch-to-prev-bufferの直近の呼び出しが存在しなければ、この関数はwindowが表示されているフレームのバッファーリスト(バッファーリストを参照)からバッファーの表示を試みる。

windowのフレームのオプションswitch-to-prev-buffer-skipbuffer-predicate (バッファーのパラメーターを参照)はswitch-to-prev-bufferの場合のように、このコマンドに影響を与える。

デフォルトでは、switch-to-prev-bufferswitch-to-next-bufferは他のウィンドウで表示済みのバッファーに切り替えることができます。この挙動をオーバーライドするために以下のオプションを使用できます。

User Option: switch-to-prev-buffer-skip

この変数がnilなら、switch-to-prev-bufferは別のウィンドウに表示済みのバッファーを含むすべてのバッファーに切り替えることができる。

この変数が非nilなら、switch-to-prev-bufferは特定のバッファーへの切り替えを抑制する。以下の値を使用できる:

  • thisswitch-to-prev-bufferが動作するウィンドウをホストするフレームで表示中のバッファーに切り替えないことを意味する。
  • visibleは可視フレームで表示中のバッファーに切り替えないことを意味する。
  • 0(数値の0)は可視やアイコン化されたフレームで表示中のバッファーに切り替えないことを意味する。
  • tは生きたフレームで表示中のバッファーに切り替えないことを意味する。
  • switch-to-prev-bufferwindow引数、switch-to-prev-bufferが切り替えようとするバッファー、switch-to-prev-bufferbury-or-kill引数という3つの引数を受け取る関数。この関数が非nilをリターンすると、switch-to-prev-bufferは2つ目の引数で指定されたバッファーからの切り替えを抑制する。

コマンドswitch-to-next-bufferは同様の方法でこのオプションにしたがう。このオプションに関数が指定されると、switch-to-next-bufferは3つ目の引数を常にnilにしてその関数を呼び出す。

switch-to-prev-bufferbury-buffer、同じくreplace-buffer-in-windowsquit-restore-windowが呼び出すので、このオプションをカスタマイズすることによりウィンドウのquitやバッファーがバリーやkillされる際のEmacsの挙動にも影響することに注意。

更にswitch-to-prev-bufferswitch-to-next-bufferは特定の状況下、たとえばこれらの関数が切り替え可能なバッファーが1つしか残っていないときには、このオプションが無視されるかもしれないことにも注意。