それぞれのウィンドウは正確に1つのフレームに属します(フレームを参照)。ある特定のフレームに属するすべてのウィンドウにたいして、それらのウィンドウがそのフレームに所有されている(owned)、あるいは単にそのフレーム上にあるというときもあります。
この関数は指定されたwindowのフレーム(windowが属するフレーム)をリターンする。windowがnilの場合のデフォルトは選択されたウィンドウ(ウィンドウの選択を参照)。
この関数は指定されたframeに所有されるすべての生きたウィンドウのリストをリターンする。frameが省略またはnilの場合のデフォルトは選択されたフレーム(入力のフォーカスを参照)。
オプション引数minibufferはそのリストにミニバッファーウィンドウ(ミニバッファーのウィンドウを参照)を含めるべきかどうかを指定する。minibufferがtならミニバッファーウィンドウが含まれ、nilまたは省略された場合にはミニバッファーウィンドウがアクティブのときだけ含まれる。minibufferがnilとt以外ならミニバッファーウィンドウは含まれない。
オプション引数windowが非nilなら、それは指定されたフレーム上の生きたウィンドウでなければならない。その場合にはwindowがリターンされるリストの最初の要素になる。windowが省略またはnilなら、frameの選択されたウィンドウ(ウィンドウの選択を参照)が最初の要素になる。
同一フレーム内のウィンドウは、リーフノード(leaf nodes)が生きたウィンドウであるようなウィンドウツリー(window tree)内に組織化されます。ウィンドウツリーの内部ノード(internal nodes)は生きたウィンドウではありません。これらのウィンドウは生きたウィンドウ間の関係を組織化するという目的のために存在します。ウィンドウツリーのルートノード(root node)はルートウィンドウ(root window)と呼ばれます。ルートノードは生きたウィンドウ、または内部ウィンドウのいずれかです。生きたウィンドウの場合には、ミニバッファーウィンドウ以外にウィンドウが1つだけあるフレーム、あるいはミニバッファーだけのフレームです。フレームのレイアウトを参照してください。
フレーム内で唯一ではないミニバッファーウィンドウ(ミニバッファーのウィンドウを参照)は親ウィンドウをもたないので、厳密に言えばフレームのウィンドウツリーの一部ではありません。それでもフレームのルートウィンドウの兄弟ウィンドウなので、ルートウィンドウからwindow-next-sibling
(以下参照)を通じて到達することができます。さらにこのセクションの最後に説明する関数window-treeは実際のウィンドウツリーと共にミニバッファーウィンドウをリストします。
この関数はframe-or-windowにたいするルートウィンドウをリターンする。引数frame-or-windowはウィンドウかフレームのいずれかであること。これが省略またはnilの場合のデフォルトは選択されたフレーム。frame-or-windowがウィンドウなら、リターン値はそのウィンドウのフレームのルートウィンドウ。
生きたウィンドウが分割(split)されているとき(ウィンドウの分割を参照)は、以前は1つだった2つの生きたウィンドウが存在します。これらのうちの一方は、元のウィンドウと同じLispウィンドウオブジェクトとして表され、もう一方は新たに作成されたLispウィンドウオブジェクトとして表されます。これらの生きたウィンドウはいずれも単一の内部ウィンドウの子ウィンドウ(child windows)として、ウィンドウツリーのリーフノードになります。もし必要ならEmacsはこの内部ウィンドウを自動的に作成します。この内部ウィンドウは親ウィンドウ(parent window)とも呼ばれ、ウィンドウツリー内の適切な位置に配置されます。同じ親を共有するウィンドウセットは兄弟(sibling)と呼ばれます。
この関数はwindowの親ウィンドウ(parent
window)をリターンする。windowが省略またはnilの場合のデフォルトは選択されたウィンドウ。windowが親をもたない場合(ミニバッファーウィンドウやそのフレームのルートウィンドウ)にはリターン値はnil。
親ウィンドウは常に最低でも2つの子ウィンドウをもちます。ウィンドウ削除(ウィンドウの削除を参照)によりこの数値が1になると、Emacsは自動的に親ウィンドウも削除して、その1つだけ残った子ウィンドウがウィンドウツリー内のその位置に配置されます。
子ウィンドウは生きたウィンドウ、または(次に自身の子ウィンドウをもつであろう)内部ウィンドウのいずれかです。したがって各内部ウィンドウは、最終的にはその内部ウィンドウの子孫であるような生きたウィンドウにより占有される領域を結合した、特定の矩形スクリーン領域(screen area)を占有すると考えることができます。
内部ウィンドウそれぞれにたいして、近接する子たちのスクリーン領域は垂直(vertically)か水平(horizontally)のいずれかにより整列されます(両方で整列されることはない)。子ウィンドウが他の子ウィンドウと上下に整列される場合、それらは垂直コンビネーション(vertical combination)、左右に整列される場合は水平コンビネーション(horizontal combination)を形成すると表現されます。以下の例で考えてみましょう:
______________________________________
| ______ ____________________________ |
|| || __________________________ ||
|| ||| |||
|| ||| |||
|| ||| |||
|| |||____________W4____________|||
|| || __________________________ ||
|| ||| |||
|| ||| |||
|| |||____________W5____________|||
||__W2__||_____________W3_____________ |
|__________________W1__________________|
このフレームのルートウィンドウは内部ウィンドウW1です。これの子ウィンドウは、生きたウィンドウW2と内部ウィンドウW3からなる水平コンビネーションを形成します。W3の子ウィンドウは、生きたウィンドウW4とW5からなる垂直コンビネーションを形成します。したがって、このウィンドウツリー内の生きたウィンドウはW2、W4、およびW5です。
以下の関数は内部ウィンドウの子ウィンドウ、および子ウィンドウの兄弟を取得するために使用できます。これらの関数のwindow引数のデフォルトは常に選択されたウィンドウです(ウィンドウの選択を参照)。
この関数は内部ウィンドウwindowの子ウィンドウが垂直コンビネーションを形成する場合には、windowの一番上の子ウィンドウをリターンする。他のタイプのウィンドウにたいするリターン値はnil。
この関数は内部ウィンドウwindowの子ウィンドウが水平コンビネーションを形成する場合には、windowの一番左の子ウィンドウをリターンする。他のタイプのウィンドウにたいするリターン値はnil。
この関数は内部ウィンドウwindowの最初の子ウィンドウをリターンする。これは垂直コンビネーションにたいしては一番上、水平コンビネーションにたいしては一番左の子ウィンドウ。windowが生きたウィンドウならリターン値はnil。
この関数はwindowが垂直コンビネーションの一部である場合のみ非nilをリターンする。
オプション引数horizontalが非nilなら、windowが水平コンビネーションの一部である場合のみ非nilをリターンすることを意味する。
この関数は指定されたwindowの次の兄弟をリターンする。windowがその親の最後の子ならリターン値はnil。
この関数はウィンドウwindowの前の兄弟をリターンする。windowがその親の最初の子ならリターン値はnil。
関数window-next-siblingとwindow-prev-siblingを、ウィンドウのサイクル順(ウィンドウのサイクル順を参照)で次や前のウィンドウをリターンする関数next-windowとprevious-windowと混同しないでください。
以下の関数はフレーム内のウィンドウの配置に有用です。
この関数はframe-or-windowにより指定されたフレームの左上隅の生きたウィンドウをリターンする。引数frame-or-windowはウィンドウか生きたフレームを指定しなければならず、デフォルトは選択されたフレーム。frame-or-windowがウィンドウを指定する場合には、この関数はそのウィンドウのフレームの最初のウィンドウをリターンする。前の例のフレームが(frame-first-window)で選択されたとするとW2がリターンされる。
この関数はwindowのフレーム内でwindowがsideに配置されていればtをリターンする。引数windowは有効なウィンドウでなければならず、デフォルトは選択されたウィンドウ。引数sideはシンボルleft、top、right、bottomのいずれか。デフォルト値のnilはbottomとして扱われる。
この関数はミニバッファーウィンドウを無視することに注意(ミニバッファーのウィンドウを参照)。したがってsideがbottomなら、windowの右下にミニバッファーウィンドウがある際にもtをリターンするかもしれない。
この関数はウィンドウwindow内の位置window-pointから、方向directionにあるもっとも近い生きたウィンドウをリターンする。引数directionはabove、below、left、rightのいずれかでなければならない。オプション引数windowは生きたウィンドウでなければならず、デフォルトは選択されたウィンドウ。
この関数はパラメーターno-other-windowが非nilのウィンドウをリターンしない(ウィンドウのパラメーターを参照)。もっとも近いウィンドウの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はフレームの最上にありdirectionがaboveなら、そのフレームのミニバッファーウィンドウがアクティブでそれがフレームの他のウィンドウの最下にある場合には、この関数は通常はミニバッファーウィンドウをリターンする。
オプション引数minibufがtなら、ミニバッファーウィンドウが非アクティブでもこの関数はそれをリターンするかもしれない。nilならカレントでアクティブな場合のみミニバッファーウィンドウをリターンすることを意味する。nilとtのいずれでもなければ、この関数がミニバッファーウィンドウをリターンすることはない。しかしwrapが非nilなら、常にminibufがnilであるかのように振る舞う。
適切なウィンドウが見つからなければ、この関数はnilをリターンする。
この関数をdirectionにウィンドウが存在しないかどうかをチェックするために使用しないこと。それを行うには上述のwindow-at-side-pを呼び出すほうが効果的である。
以下の関数はフレームのウィンドウツリー全体を取得します:
この関数はフレームframeにたいするウィンドウツリーを表すリストをリターンする。frameが省略nilの場合のデフォルトは選択されたフレーム。
リターン値は(root
mini)という形式のリスト。ここでrootはそのフレームのウィンドウツリーのルートウィンドウ、miniはそのフレームのミニバッファーウィンドウを表す。
ルートウィンドウが生きていればrootはそのウィンドウ自身、それ以外ならrootはリスト(dir
edges w1 w2
...)。ここでdirは水平コンビネーションならnil、垂直コンビネーションならtとなり、edgesはそのコンビネーションのサイズと位置を与え、残りの要素は子ウィンドウである。子ウィンドウはそれぞれ、同じようにウィンドウオブジェクト(生きたウィンドウにたいして)、または上記フォーマットと同じ形式のリスト(内部ウィンドウにたいして)かもしれない。edges要素はwindow-edgesがリターンする値のようなリスト(left
top right bottom) (座標とウィンドウを参照)。