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


28.2 ウィンドウとフレーム

ウィンドウはそれぞれ厳密に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-next-siblingを通じて到達することができます。さらにこのセクションの最後に説明する関数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-siblingwindow-prev-siblingを、ウィンドウのサイクル順(Cyclic Window Orderingを参照)で次や前のウィンドウをリターンする関数next-windowprevious-windowと混同しないでください。

以下の関数はフレーム内のウィンドウの配置に有用です。

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

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

Function: window-at-side-p &optional window side

この関数はwindowのフレーム内でwindowsideに配置されていればtをリターンする。引数windowは有効なウィンドウでなければならず、デフォルトは選択されたウィンドウ。引数sideはシンボルlefttoprightbottomのいずれか。デフォルト値のnilbottomとして扱われる。

この関数はミニバッファーウィンドウを無視することに注意(Minibuffer Windowsを参照)。したがってsidebottomなら、windowの右下にミニバッファーウィンドウがある際にもtをリターンするかもしれない。

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なら、カレントでアクティブな場合のみミニバッファーウィンドウをリターンすることを意味する。minibufが非nilなら、この関数はアクティブではないミニバッファーウィンドウをリターンするかもしれない。しかしwrapが非nilなら、常にmininilであるかのように振る舞う。

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

この関数をdirectionにウィンドウが存在しないかどうかをチェックするために使用しないこと。それを行うには上述のwindow-at-side-pを呼び出すほうが効果的である。

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

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を参照)。