Next: , Previous: , Up: Windows   [Contents][Index]


28.16 ウィンドウのquit

バッファーを表示するために使用しているウィンドウを削除したいときには、フレームからそのウィンドウを削除するためにdelete-windowdelete-windows-onを呼び出すことができます(Deleting Windowsを参照)。そのバッファーが別フレームで表示されているときには、かわりにdelete-frameを呼び出したいと思うかもしれません(Deleting Framesを参照)。その一方でバッファーを表示するためにウィンドウが再利用されている場合には、関数switch-to-prev-bufferを呼び出して前に表示されていたバッファーを表示したいと思うかもしれません(Window Historyを参照)。最終的にはそのウィンドウのバッファーをバリー(Buffer Listを参照)やkill(Killing Buffersを参照)したいと思うかもしれません。

以下のコマンドは、最初にどのようにバッファーを表示するウィンドウを取得するかという情報を使用して、上述で説明した処理の自動化を試みます。

Command: quit-window &optional kill window

このコマンドはwindowをquitしてそのバッファーをバリーする。引数windowは生きたウィンドウでなければならずデフォルトは選択されたウィンドウ。プレフィックス引数killが非nilならバッファーをバリーするかわりにkillする。これはウィンドウとそのバッファーを処理するために、次に説明する関数quit-restore-windowを呼び出す。

Function: quit-restore-window &optional window bury-or-kill

この関数はquit後にwindowとそのバッファーを処理する。オプション引数windowは生きたウィンドウでなければならずデフォルトは選択されたウィンドウ。この関数の振る舞いはウィンドウパラメーターquit-restore (Window Parametersを参照)が指定するリストの4つの要素により決定される(その後このパラメーターはnilにセットされる)。

1つ目の要素はwindow (ウィンドウはdisplay-bufferにより特別に作られた)、frame (別のフレームが作られた)、same (ウィンドウが以前に表示したことがあるのはそのバッファーのみ)、other (ウィンドウは前と異なるバッファーを表示する)のシンボルのいずれか。framewindowはウィンドウがquitされる方法、sameotherはそのウィンドウで以前表示されたバッファーの再表示に影響する。

2つ目の要素はシンボルwindowframe、または要素がそのウィンドウに前に表示されていたバッファー、そのときのウィンドウstart位置、ウィンドウポイント位置、ウィンドウの高さであるようなリストのいずれか。ウィンドウのquit時にそのバッファーがまだ生きていたら、関数quit-restore-windowはそのバッファーを表示するためにウィンドウを再利用する。

3つ目の要素は、そのパラメーター作成時点に選択されていたウィンドウ。引数としてこのウィンドウが渡されたら、quit-restore-windowはそのウィンドウの再選択を試みる。

4つ目の要素はその表示がこのパラメーターの生成を引き起こしたバッファー。quit-restore-windowは指定されたウィンドウがまだそのバッファーを表示している場合のみそれを削除する。

ウィンドウは、1) quit-restoreのパラメーターの最初の要素が’windowか’frameのいずれか、2) ウィンドウが以前表示されたバッファーのヒストリーをもつ、3) 表示されるバッファーがquit-restoreパラメーターの4つ目のパラメーターにマッチする場合には削除される。windowがそのフレームで唯一のウィンドウであり、かつそのフレームの端末上に他のフレームが存在する場合、オプション引数bury-or-killがそのウィンドウをどうするかを決定する。killの場合は、無条件でフレームは削除される。それ以外では、フレームの運命はそのフレームを単一の引数とするframe-auto-hide-function(以下参照)呼び出しにより決定される。

quit-restoreパラメーターの3つ目の要素がバッファーのリストならウィンドウの開始 (Window Start and Endを参照)、ポイント(Window Pointを参照)、およびそのバッファーは死なずにバッファーは表示されてそれに応じてウィンドウの開始とポイントがセットされる。加えてwindowのバッファーが過去に一時的にリサイズされていた場合には、この関数はwindowの元の高さのリストアも試みる。

それ以外なら、以前にwindowが別のバッファーの表示に使用されていれば、ヒストリー内の最新のバッファーが表示される(Window Historyを参照)。

オプション引数bury-or-killにはwindowを処理する方法を指定し、以下の値が処理される。

nil

これはバッファーを特別な方法で処理しないことを意味する。その結果としてwindowが削除されない場合には、switch-to-prev-bufferの呼び出しにより通常はそのバッファーが再び表示されるだろう。

append

これはwindowが削除されない場合には、そのバッファーをwindowの前のバッファーリストの最後に移動するので、将来のswitch-to-prev-buffer呼び出しでこのバッファーには切り替わることは少なくなる。これはそのバッファーをフレームのバッファーリストの最後への移動も行う。

bury

これはwindowが削除されない場合には、そのバッファーをwindowの前のバッファーリストから削除する。これはそのバッファーをフレームのバッファーリストの最後への移動も行う。この値はバッファーをkillすることなくswitch-to-prev-bufferがこのバッファーに再び切り替えさせないようにする、もっとも信頼できる解決手段を提供する。

kill

これはwindowのバッファーをkillすることを意味する。

(interactive)

(display-buffer-record-window type window buffer)

(set-window-buffer window buffer)

(set-window-prev-buffers window nil)

ウィンドウのヒストリーをnilにセットすることにより?、将来のquit-window呼び出しが一緒にウィンドウを削除することが保証される。

以下のオプションはquitすべきウィンドウ、あるいはバリーすべきバッファーをもつウィンドウを1つだけ含むフレームを処理する方法を指定します。

User Option: frame-auto-hide-function

このオプションで指定された関数は自動的にフレームを隠すために呼び出される。この関数はフレームを唯一の引数として呼び出される。

ここで指定される関数は選択されたウィンドウが専用(dedicated)であり、かつバリーされるバッファーを表示しているときにbury-buffer (Buffer Listを参照)から呼び出される。またquitされるウィンドウのフレームがそのウィンドウのバッファーを表示するために特別に作成されたフレームで、かつそのバッファーがkillされないときにもquit-restore-window (上記)から呼び出される。

デフォルトではiconify-frame (Visibility of Framesを参照)を呼び出す。かわりにフレームをディスプレイから削除するdelete-frame (Deleting Framesを参照)、フレームを不可視にするmake-frame-invisible、フレームを変更せずに残すignore、またはフレームを唯一の引数とする任意の関数のいずれかを指定できる。

このオプションで指定された関数は指定されたフレームが生きたウィンドウただ1つを含み、かつ同一端末上に少なくとも1つ他のフレームが存在する場合のみ呼び出されることに注意。

特定のフレームにたいしてここで指定した値は、そのフレームのフレームパラメーターauto-hide-functionでオーバーライドされるかもしれない(Frame Interaction Parametersを参照)。