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


27.2 Windows and Frames

ウィンドウはそれぞれ、正確に1つのフレームに属します(Framesを参照)。

Function: window-frame &optional window

この関数は、ウィンドウwindowが属するフレームをリターンする。windownilの場合のデフォルトは、選択されたウィンドウである。

Function: window-list &optional frame minibuffer window

この関数は、フレームframeに属する、生きたウィンドウのリストをリターンする。frameが省略、またはnilの場合のデフォルトは、選択されたフレームである。

オプション引数minibufferは、リターンされるリストにミニバッファーウィンドウを含めるべきかどうかを指定する。minibuffertの場合は、ミニバッファーウィンドウが含まれる。minibuffernil、または省略された場合は、ミニバッファーウィンドウがアクティブのときだけ含まれる。minibuffernilt以外の場合、ミニバッファーウィンドウは含まれない。

オプション引数windowが非nilの場合、それは指定されたフレーム上の生きたウィンドウであること。その場合は、windowがリターンされるリストの最初の要素になる。windowが省略、またはnilの場合は、そのフレームの選択されたウィンドウが最初の要素になる。

同一フレーム内のウィンドウは、リーフノード(leaf nodes)が生きたウィンドウであるような、ウィンドウツリー(window tree)内に組織化されます。ウィンドウツリーの内部ノード(internal nodes)は生きたウィンドウではありません。これらのウィンドウは、生きたウィンドウ間の関係を組織化するという目的のために存在します。ウィンドウツリーのルートノード(root node)は、ルートウィンドウ(root window)と呼ばれます。ルートノードは生きたウィンドウ(そのフレームにウィンドウが1つだけの場合)、または内部ウィンドウのいずれかです。

ミニバッファーウィンドウ(Minibuffer Windowsを参照)は、そのフレームがミニバッファーだけのフレームでない限り、そのフレームのウィンドウツリーの一部にはなりません。にもかかわらず、このセクションのほとんどの関数は、引数としてミニバッファーウィンドウを受け付けます。さらにこのセクションの最後に説明する関数window-treeは、実際のウィンドウツリーと並列してミニバッファーウィンドウをリストします。

Function: frame-root-window &optional frame-or-window

この関数は、frame-or-windowにたいするルートウィンドウをリターンする。引数frame-or-windowは、ウィンドウかフレームのいずれかであること。これが省略、またはnilの場合のデフォルトは、選択されたフレームである。frame-or-windowがウィンドウの場合、リターン値はそのウィンドウのフレームのルートウィンドウである。

ウィンドウが分割(split)されているときは、以前は1つだった2つの生きたウィンドウが存在します。これらのうちの一方は、元のウィンドウと同じLispウィンドウオブジェクトとして表され、もう一方は新たに作成されたLispウィンドウオブジェクトとして表されます。これらの生きたウィンドウは両方とも、単一の内部ウィンドウの子ウィンドウ(child windows)として、ウィンドウツリーのリーフノードになります。もし必要なら、Emacsはこの内部ウィンドウを自動的に作成します。この内部ウィンドウは親ウィンドウ(parent window)とも呼ばれ、ウィンドウツリー内の適切な位置に配置されます。同じ親を共有するウィンドウセットは、兄弟(sibling)と呼ばれます。

Function: window-parent &optional window

この関数は、windowの親ウィンドウ(parent window)をリターンする。windowが省略、またはnilの場合のデフォルトは、選択されたウィンドウである。windowが親をもたない(ミニバッファーウィンドウやそのフレームのルートウィンドウ)場合、リターン値はnilである。

内部ウィンドウはそれぞれ、常に最低でも2つの子ウィンドウをもちます。ウィンドウ削除によりこの数値が1になった場合、Emacsは自動的に内部ウィンドウを削除して、その残った単一の子ウィンドウがウィンドウツリー内のその位置に配置されます。

子ウィンドウはそれぞれ生きたウィンドウ、または(次に自身の子ウィンドウをもつであろう)内部ウィンドウのいずれかです。したがって、各内部ウィンドウは、最終的にはその内部ウィンドウの子孫であるような生きたウィンドウにより占有される領域を結合した、特定の矩形スクリーン領域(screen area)を占有すると考えることができます。

内部ウィンドウそれぞれにたいして、近接する子たちのスクリーン領域は、垂直(vertically)または水平(horizontally)のいずれかにより整列されます(両方で整列されることはない)。子ウィンドウが他の子ウィンドウと上下に整列される場合、それらは垂直コンビネーション(vertical combination)、左右に整列される場合は水平コンビネーション(horizontal combination)を形成すると表現されます。以下の例で考えてみましょう:

     ______________________________________
    | ______  ____________________________ |
    ||      || __________________________ ||
    ||      |||                          |||
    ||      |||                          |||
    ||      |||                          |||
    ||      |||____________W4____________|||
    ||      || __________________________ ||
    ||      |||                          |||
    ||      |||                          |||
    ||      |||____________W5____________|||
    ||__W2__||_____________W3_____________ |
    |__________________W1__________________|

このフレームのルートウィンドウは、内部ウィンドウW1です。これの子ウィンドウは、生きたウィンドウW2と内部ウィンドウW3からなる水平コンビネーションを形成します。W3の子ウィンドウは、生きたウィンドウW4W5からなる垂直コンビネーションを形成します。したがって、このウィンドウツリー内の生きたウィンドウはW2W4、およびW5です。

以下の関数は、内部ウィンドウの子ウィンドウ、および子ウィンドウの兄弟を取得するのに使用できます。

Function: window-top-child &optional window

この関数は、内部ウィンドウwindowの子ウィンドウが垂直コンビネーションを形成する場合は、windowの一番上の子ウィンドウをリターンする。他のタイプのウィンドウにたいするリターン値はnilである。

Function: window-left-child &optional window

この関数は、内部ウィンドウwindowの子ウィンドウが水平コンビネーションを形成する場合は、windowの一番左の子ウィンドウをリターンする。他のタイプのウィンドウにたいするリターン値はnilである。

Function: window-child window

この関数は、内部ウィンドウwindowの最初の子ウィンドウをリターンする。これは、垂直コンビネーションにたいしては一番上、水平コンビネーションにたいしては一番左の子ウィンドウである。windowが生きたウィンドウの場合、リターン値はnilである。

Function: window-combined-p &optional window horizontal

この関数は、windowが垂直コンビネーションの一部である場合のみ、非nilをリターンする。windowが省略、またはnilの場合のデフォルトは、選択されたウィンドウである。

オプション引数horizontalが非nilならば、windowが水平コンビネーションの一部である場合のみ非nilをリターンすることを意味する。

Function: window-next-sibling &optional window

この関数は、ウィンドウwindowの次の兄弟をリターンする。省略またはnilの場合、windowのデフォルトは選択されたウィンドウになる。windowが、その親の最後の子の場合、リターン値はnilである。

Function: window-prev-sibling &optional window

この関数は、ウィンドウwindowの前の兄弟をリターンする。省略またはnilの場合、windowのデフォルトは選択されたウィンドウになる。windowが、その親の最初の子の場合、リターン値はnilである。

関数window-next-siblingおよびwindow-prev-siblingを、ウィンドウのサイクル順(Cyclic Window Orderingを参照)において次、または前のウィンドウをリターンする関数next-windowおよびprevious-windowと混同しないでください。

任意のフレーム上の最初の生きたウィンドウや、与えられたウィンドウにもっとも近いウィンドウを探すために、以下の関数を使用できます。

Function: frame-first-window &optional frame-or-window

この関数は、frame-or-windowにより指定されたフレームの、左上隅の生きたウィンドウをリターンする。引数frame-or-windowでは、ウィンドウか生きたフレームを示さなければならず、デフォルトは選択されたフレームである。frame-or-windowがウィンドウを指定する場合、この関数はそのウィンドウのフレームの最初のウィンドウをリターンする。前の例のフレームが(frame-first-window)に指定されたとするならば、W2がリターンされる。

Function: window-in-direction direction &optional window ignore sign wrap mini

この関数は、ウィンドウwindow内の位置window-pointから、方向directionにあるもっとも近い生きたウィンドウをリターンする。引数directionabovebelowleftrightのいずれかでなければならない。オプション引数windowは生きたウィンドウを示さなければならず、デフォルトは選択されたウィンドウである。

この関数は、パラメーターno-other-windowが非nilのウィンドウをリターンしない(Window Parametersを参照)。もっとも近いウィンドウのno-other-windowパラメーターが非nilの場合、この関数は指定された方向でno-other-windowパラメーターがnilの、他のウィンドウを探す。オプション引数ignoreが非nilの場合は、たとえno-other-windowパラメーターが非nilのウィンドウでも、リターンされ得る。

オプション引数signが負の数値の場合、それは参照位置としてwindow-pointのかわりに、windowの右端、または下端を使用することを意味する。signが正の数値の場合、それは参照位置としてwindowの左端、または上端を使用することを意味する。

オプション引数wrapが非nilの場合、それはフレームのボーダー(borders: 枠線)をdirectionがラップアラウンド(wrap around: 最後に達したら最初に戻る)することを意味する。たとえば、windowはフレームの最上にあり、directionaboveの場合、フレームにミニバッファーがあればミニバッファーウィンドウ、それ以外はフレーム最下のウィンドウウィンドウリターンする。

オプション引数mininilの場合、それはミニバッファーがカレントでアクティブな場合のみ、ミニバッファーウィンドウをリターンすることを意味する。miniが非nilならば、たとえ非アクティブなときでもミニバッファーウィンドウをリターンする。しかし、wrapが非nilの場合は、常にmininilであるかのように動作する。

適切なウィンドウが見つからない場合、この関数はnilをリターンする。

以下の関数により、任意のフレームのウィンドウツリー全体を取得できます:

Function: window-tree &optional frame

この関数は、フレームframeにたいするウィンドウツリーを表すリストをリターンする。frameが省略、またはnilの場合のデフォルトは、選択されたフレームである。

リターン値は、(root mini)という形式のリストである。ここでrootはそのフレームのウィンドウツリーのルートウィンドウ、miniはそのフレームのミニバッファーウィンドウを表す。

ルートウィンドウが生きている場合、rootはそのウィンドウ自身である。それ以外では、rootはリスト(dir edges w1 w2 ...)である。ここでdirは水平コンビネーションならnil、垂直コンビネーションならtとなり、edgesはそのコンビネーションのサイズと位置を与え、残りの要素は子ウィンドウである。子ウィンドウはそれぞれ、同じようにウィンドウオブジェクト(生きたウィンドウにたいして)、または上記フォーマットと同じ形式のリスト(内部ウィンドウにたいして)かもしれない。edges要素はwindow-edgesがリターンする値のような、リスト(left top right bottom)である(Coordinates and Windowsを参照)。