次: Creating Buffers, 前: Read Only Buffers, 上: Buffers
バッファリスト(buffer list)は、
すべてのバッファのリストです。
バッファを作成すると当該バッファはこのリストに追加され、
削除するとこのリストから取り除かれます。
リスト内のバッファの順序は、各バッファが選択されているウィンドウに
どの程度最近に表示されたかを主な基準にしています。
バッファが選択されるとリストの先頭に移動し、
隠されると(下記のbury-buffer
を参照)末尾に移動します。
other-buffer
をはじめとするいくつかの関数が、この順序を使います。
ユーザーに表示するバッファ一覧もこの順序を反映しています。
Emacs基本バッファリストに加えて、
各フレームには独自のバッファリストがあります。
そのリストでは、
当該フレームでもっとも最近に選択されたバッファから順に
当該フレームで選択されたバッファが先にきます。
(この順番は、フレームのフレームパラメータbuffer-list
に入っている。
Window Frame Parametersを参照。)
当該フレームで選択されたことがないバッファは、
Emacs基本バッファリストでの順にうしろに続きます。
この関数は、空白で始まる名前のバッファを含めて、 すべてのバッファを含んだバッファリストを返す。 要素は実際にバッファであり、それらの名前ではない。
frameがフレームであると、 この関数はフレームframeのバッファリストを返す。 frameが
nil
であるとEmacs基本バッファリストを使う。(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
が返すリストは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
(see Parameter Access)で、
フレームのフレームパラメータbuffer-list
に設定します。
この関数は、バッファリストからbuffer以外の最初のバッファを返す。 通常、当該バッファは、bufferを除いて (frameか現在選択されているフレームで) もっとも最近に選択されたバッファである。 空白で始まる名前のバッファは完全に除外する。
bufferを指定しないと(あるいはバッファでないと)、
other-buffer
は、選択されているフレームのバッファリストの中から 可視フレームのどのウィンドウにも表示されていない最初のバッファを返す。frameに
nil
以外のパラメータbuffer-predicate
があると、other-buffer
は当該述語を使って どのバッファを考慮に入れるかを決定する。 各バッファについて当該述語を1回呼び出し、 その値がnil
であると当該バッファを無視する。 see Window Frame Parameters。visible-okが
nil
であると、other-buffer
は可視フレームのいずれかのウィンドウに 表示されているバッファを可能な限り返さないようにする。 visible-okがnil
以外であると、 バッファが表示されているかどうかは関係ない。適当なバッファが存在しない場合には、 バッファ`*scratch*'を(必要ならば作成して)返す。
この関数は、バッファリストの他のバッファの順序は変えずに buffer-or-nameを末尾に置く。 この結果、当該バッファは、
other-buffer
が返す候補としては もっとも可能性が低くなる。
bury-buffer
は、 Emacsのフレーム独立なバッファリストに加えて、 各フレームのパラメータbuffer-list
も操作する。 したがって、指定したバッファは、(buffer-list
frame)
と(buffer-list nil)
の いずれの値でも最後になる。buffer-or-nameが
nil
であるか省略すると、 カレントバッファを最後尾に置くことを意味する。 さらに、当該バッファが選択されているウィンドウに表示されていると、 そのウィンドウでは(other-buffer
で得られる) 別のバッファに切り替わる。 当該バッファが別のウィンドウにも表示されている場合、 その表示は替わらない。すべてのウィンドウに表示している特定のバッファを置き換えるには、
replace-buffer-in-windows
を使う。 see Buffers and Windows。