Next: Creating Buffers, Previous: Read Only Buffers, Up: Buffers [Contents][Index]
バッファーリスト(buffer
list)とは、すべての生きた(killされていない)バッファーのリストです。このリスト内のバッファーの順序は主に、それぞれのバッファーがウィンドウに表示されたのがどれほど最近なのかにもとづきます。いくつかの関数、特にother-buffer
はこの順序を使用します。ユーザーに表示されるバッファーリストも、この順序にしたがいます。
バッファーを作成すると、それはバッファーリストの最後に追加され
バッファーをkillすることにより、そのリストから削除されます。ウィンドウに表示するためにバッファーが選択されたとき(Switching Buffersを参照)、あるいはバッファーを表示するウィンドウが選択されたとき(Selecting Windowsを参照)、そのバッファーは常にこのリストの先頭に移動します。バッファーがバリー(以下のbury-buffer
を参照)されたときは、このリストの最後に移動します。バッファーリストを直接操作するために利用できる、Lispプログラマー向けの関数は存在しません。
説明した基本バッファーリスト(fundamental buffer
list)に加えて、Emacsはそれぞれのフレームにたいしてローカルバッファーリスト(local buffer
list)を保守します。ローカルバッファーリストでは、そのフレーム内で表示されていた(または選択されたウィンドウの)バッファーが先頭になります(この順序は、そのフレームのフレームパラメーターbuffer-list
に記録される。Buffer Parametersを参照されたい)。そのフレームでは表示されていないフレームは後になるよう、並び順は基本バッファーリストに準じます。
この関数は、すべてのバッファーを含むバッファーリストをリターンする(名前がスペースで始まるバッファーも含む)。リストの要素はバッファーの名前ではなく、実際のバッファーである。
frameがフレームの場合は、frameのローカルバッファーリストをリターンする。frameがnil
、または省略された場合は、基本バッファーリストが使用される。その場合、そのバッファーを表示するフレームがどれかとは無関係に、もっとも最近に表示、または選択されたバッファーの順になる。
(buffer-list) ⇒ (#<buffer buffers.texi> #<buffer *Minibuf-1*> #<buffer buffer.c> #<buffer *Help*> #<buffer TAGS>)
;; ミニバッファーの名前が ;; スペースで始まることに注意! (mapcar (function buffer-name) (buffer-list)) ⇒ ("buffers.texi" " *Minibuf-1*" "buffer.c" "*Help*" "TAGS")
buffer-list
からリターンされるリストは、それ専用に構築されたリストであり、Emacsの内部的なデータ構造ではないし、それを変更してもバッファーの並び順に影響はありません。基本バッファーリスト内のバッファーの並び順を変更したい場合に簡単なのは、以下の方法です:
(defun reorder-buffer-list (new-list) (while new-list (bury-buffer (car new-list)) (setq new-list (cdr new-list))))
この方法により、バッファーを失ったり、有効な生きたバッファー以外の何かを追加する危険を犯さずに、リストに任意の並び順を指定できます。
特定のフレームのバッファーリストの並び順や値を変更するには、modify-frame-parameters
でそのフレームのbuffer-list
パラメーターをセットしてください(Parameter Accessを参照)。
この関数は、バッファーリスト中でbuffer以外の最初のバッファーをリターンする。これは通常選択されたウィンドウ(フレームframe、または選択されたフレーム。Input Focusを参照)に、もっとも最近表示された、buffer以外のバッファーである。名前がスペースで始まるバッファーは、考慮されない。
bufferが与えられない(または生きたバッファーでない)場合、other-buffer
は選択されたフレームのローカルバッファーリスト内の、最初のバッファーをリターンする(frameが非nil
の場合は、frameのローカルバッファーリスト内の最初のバッファーをリターンする)。
frameが非nil
のbuffer-predicate
パラメーターをもつ場合は、どのバッファーを考慮すべきかを決定するために、other-buffer
はその述語を使用する。これはそれぞれのバッファーごとにその述語を一度呼び出して、値がnil
ならそのバッファーは無視される。Buffer Parametersを参照のこと。
visible-okがnil
ならば、other-buffer
はやむを得ない場合を除き、任意の可視のフレーム上のウィンドウ内で可視のバッファーをリターンすることを避ける。visible-okが非nil
の場合は、バッファーがどこかで表示されているかどうかは問題にしない。
適切なバッファーが存在しない場合は、バッファー*scratch*を(必要なら作成して)リターンする。
この関数は、frameのバッファーリスト内から、buffer以外の最後のバッファーをリターンする。frameが省略、またはnil
の場合は、選択されたフレームのバッファーリストを使用する。
引数visible-okは、上述したother-buffer
と同様に扱われる。適切なバッファーを見つけられない場合は、バッファー*scratch*がリターンされる。
このコマンドは、バッファーリスト内の他のバッファーの並び順を変更することなく、buffer-or-nameをバッファーリストの最後に置く。つまり、このバッファーはother-buffer
がリターンする候補で、もっとも期待度が低くなる。引数はバッファー自身か、バッファーの名前を指定できる。
この関数は、基本バッファーリストと同様に、それぞれのフレームのbuffer-list
パラメーターを操作する。したがってバリー(bury:
埋める、隠す)したバッファーは、(buffer-list
frame)
および(buffer-list)
の値の最後に置かれるだろう。さらに、そのバッファーが選択されたウィンドウに表示されていれば、そのウィンドウのバッファーリストの最後にバッファーを置くことも行う(Window Historyを参照)。
buffer-or-nameがnil
、または省略された場合は、カレントバッファーをバリーすることを意味する。加えて、カレントバッファーが選択されたウィンドウに表示されている場合は、そのウィンドウを削除するか、他のバッファーを表示する。より正確には、選択されたウィンドウが専用(dedicated)のウィンドウ(see Dedicated Windows)であり、かつそのフレーム上に他のウィンドウが存在する場合、専用ウィンドウは削除される。それがフレーム上で唯一のウィンドウであり、かつそのフレームが端末上で唯一のフレームでない場合、そのフレームはframe-auto-hide-function
で指定される関数を呼び出すことにより、“開放”される(Quitting Windowsを参照)。それ以外の場合は、他のバッファーをそのウィンドウ内に表示するために、switch-to-prev-buffer
を呼び出す(Window Historyを参照)。buffer-or-nameが他のウィンドウで表示されていた場合は、そのまま表示され続ける。
あるバッファーにたいして、それを表示するすべてのウィンドウでバッファーを置き換えるには、replace-buffer-in-windows
を使用する。Buffers and Windowsを参照のこと。
このコマンドは、選択されたフレームのローカルバッファーリストの最後のバッファーに切り替える。より正確には、選択されたウィンドウ内で、last-buffer
(上記参照)がリターンするバッファーを表示するために、関数switch-to-buffer
を呼び出す(Switching Buffersを参照)。
これは、バッファーリストが変更されたときは、常に実行されるノーマルフックである。(暗黙的に)このフックを実行する関数はget-buffer-create
(Creating Buffersを参照)、rename-buffer
(Buffer Namesを参照)、kill-buffer
(Killing Buffersを参照)、bury-buffer
(上記参照)、select-window
(Selecting Windowsを参照)である。