Next: Cyclic Window Ordering, Previous: Recombining Windows, Up: Windows [Contents][Index]
この関数はwindowを選択されたウィンドウにすることによりそのフレーム内で選択されたウィンドウ(Basic Windowsを参照)として、そのフレームを選択する。またwindowのバッファー(Buffers and Windowsを参照)をカレントにして、そのバッファーのpoint
の値(Window Pointを参照)をwindowのwindow-point
の値にセットする。windowは生きたウィンドウでなければならない。リターン値はwindow。
デフォルトではこの関数はwindowのバッファーをバッファーリストの先頭(Buffer Listを参照)に移動して、windowをもっとも最近選択されたウィンドウにする。オプション引数norecordが非nil
なら、これらの追加処理は省略される。
加えてこの関数はデフォルトではwindowのフレームの次回再表示の際にwindowを更新するようにディスプレイエンジンに指示する。norecordが非nil
なら、そのような更新は通常は行わない。しかしnorecordが特別なシンボルmark-for-redisplay
と等しければ上述の追加アクションは省略されるが、それにも関わらずwindowは更新される。
ウィンドウを選択することではウィンドウの表示やそのフレームをディスプレイ上の最上フレームにすることを満足しない場合があることに注意。さらにそのフレームのレイズやフレームにフォーカスが当たることを確実にする必要もあるだろう。Input Focusを参照のこと。
歴史的な理由によりウィンドウ選択時にEmacsが個別にフックを実行することはありません。アプリケーションや内部ルーチンがあるウィンドウ上でいくつかの処理を行うために一時的にウィンドウを選択することはよくあります。これらはwindow引数が何も指定されていなければデフォルトでは選択されたウィンドウを処理する関数が多数存在するのでコーディングを単純化するために、あるいは引数としてウィンドウを受け取らないために常に選択されたウィンドウを処理する関数がいくつか存在した(そして今も存在する)ためにこれを行います。あるウィンドウが短時間選択されたときと、以前に選択されていたウィンドウがリストアされるたびに毎回フックを実行するのは有用ではありません。
しかしnorecord引数がnil
の際にはselect-window
がバッファーリストを更新するので、間接的にノーマルフックbuffer-list-update-hook
が実行されます(Buffer Listを参照)。結果としてこのフックは、あるウィンドウがより“永続的”に選択された際に関数を実行する1つの手段を提供します。
buffer-list-update-hook
はウィンドウ管理とは無関係な関数によっても実行されるので、選択されたウィンドウの値を何かに保存しておいて、このフックの実行中にselected-window
の値と比較することには意味があります。buffer-list-update-hook
を使用する際の誤検出を防ぐためにも、一時的にのみウィンドウの選択を意図するselect-window
の呼び出しごとにnorecord引数に非nil
を渡すことはよい習慣です。そのような場合にはマクロwith-selected-window
(以下参照)を使用するべきです。
最後の再表示以降に別ウィンドウが選択されたことを再表示ルーチンが検知した際には、常にEmacsはフックwindow-selection-change-functions
も実行します。詳細な説明はWindow Hooksを参照してください。(同じセクションに記載されている)
window-state-change-functions
は別ウィンドウ選択後に実行される別のアブノーマルフックですが、これは他のウィンドウの変更時にも同様にトリガーされます。
引数norecordに非nil
を指定したselect-window
の連続呼び出しは、ウィンドウの並び順を選択時刻により決定します。関数get-lru-window
は、もっとも昔に選択された生きたウィンドウ(Cyclic Window Orderingを参照)を取得するために使用できます。
このマクロは選択されたフレーム、同様に各フレームの選択されたウィンドウを記録して、formsを順に実行してから以前に選択されていたフレームとウィンドウをリストアする。これはカレントバッファーの保存とリストアも行う。リターン値はforms内の最後のフォームの値。
このマクロはウィンドウのサイズ、コンテンツ、配置についての保存やリストアは何も行わない。したがってformsがそれらを変更すると、その変更は永続化される。あるフレームにおいて以前に選択されていたウィンドウがformsのexit時にすでに生きていなければ、そのフレームの選択されたウィンドウはそのまま放置される。以前に選択されていたウィンドウがすでに生きていなければformsの最後に選択されていたウィンドウが何であれ、それが選択されたままになる。カレントバッファーformsのexit時にそれが生きている場合のみリストアされる。
このマクロは、もっとも最近に選択されたウィンドウとバッファーリストの順番をいずれも変更しない。
このマクロはwindowを選択してformsを順に実行してから、以前に選択されていたウィンドウとカレントバッファーをリストアする。たとえば引数norecordをnil
でselect-window
を呼び出す等、forms内で故意に変更しない限り、もっとも最近に選択されたウィンドウとバッファーリストの順番は変更されない。したがってこのマクロは不要なbuffer-list-update-hook
の実行なしに、windowを選択されたウィンドウとして一時的に作業するために好ましい手段である。
この関数はフレームframe内で選択されているウィンドウをリターンする。frameは生きたフレームであること。省略またはnil
の場合のデフォルトは選択されたフレーム。
この関数はwindowをフレームframe内で選択されたウィンドウにする。frameは生きたフレームであること。省略またはnil
の場合のデフォルトは選択されたフレーム。windowは生きたウィンドウであること。省略またはnil
の場合のデフォルトは選択されたウィンドウ。
frameが選択されたフレームなら、windowを選択されたウィンドウにする。
オプション引数norecordが非nil
なら、この関数はもっとも最近に選択されたウィンドウのリストとバッファーリストをいずれも変更しない。
この関数はウィンドウwindowの使用回数をリターンする。windowは生きたウィンドウでなければならずデフォルトは選択されたウィンドウ。
ウィンドウの使用回数(use
time)は実際にはtime値ではなく、nil
のnorecord引数によるselect-window
の呼び出しごとに毎回単調に増加する整数。通常は最小の使用回数をもつウィンドウはもっとも最近使用されていないウィンドウ(the
least recently used window)、最大の使用回数をもつウィンドウはもっとも最近使用されたウィンドウ(the most
recently used window)と呼ばれる(Cyclic Window Orderingを参照)。