次: Resizing Windows, 前: Horizontal Scrolling, 上: Windows
Emacsのウィンドウは矩形であり、そのサイズ情報は 高さ(行数)と幅(各行の文字数)から成ります。 モード行は高さに含みます。 しかし、スクロールバーや左右のウィンドウを隔てる文字`|'のコラムは 幅には含みません。
つぎの3つの関数は、ウィンドウのサイズ情報を返します。
この関数は、モード行を含むwindowの行数を返す。 windowがフレーム全体を占める場合、この値は典型的には、 当該フレームにおける
frame-height
の値より1小さい (最後の行はミニバッファ用につねに確保してあるため)。windowが
nil
であると、この関数は選択されているウィンドウを使う。(window-height) => 23 (split-window-vertically) => #<window 4 on windows.texi> (window-height) => 11
この関数は、windowのコラム数を返す。 windowがフレーム全体を占める場合、この値は、 当該フレームにおける
frame-width
の値と同じである。 この幅には、ウィンドウのスクロールバーや 左右のウィンドウを隔てる文字`|'のコラムは含まない。windowが
nil
であると、この関数は選択されているウィンドウを使う。(window-width) => 80
この関数は、windowの四隅の座標から成るリストを返す。 windowが
nil
であると、選択されているウィンドウを使う。list内の順番は
(
left top right bottom)
(つまり、左端、上端、右端、下端)であり、 フレームの左上隅を0としてすべての要素は0を基準とする。 要素rightはwindowが使用する右端のコラムより1大きく、 bottomはwindowが使用する下端より1大きく モード行と同じである。左右に隣り合ったウィンドウがある場合、 右隣にウィンドウがあるウィンドウの右端の値には、 ウィンドウを隔てる区切りの幅が含まれる。 この区切りは、文字`|'のコラムであるかスクロールバーである。 ウィンドウの幅にはこの区切りは含まないため、 この場合、左端と右端の差は幅に等しくない。
典型的な24行の端末でウィンドウが1つの場合に得られる結果を示す。
(window-edges (selected-window)) => (0 0 80 23)下端が23行目であるのは、最下行はエコー領域だからである。
windowがフレームの左上隅にあると、 bottomは
(window-height)
の値に等しく、 rightは(window-width)
の値にほぼ等しく 1、 topとleftは0である。 たとえば、つぎのウィンドウは`0 0 5 8'である。 当該フレームには8コラムより多くあり、 ウィンドウの最終コラム(7コラム目)はテキストではなく境界であると仮定する。 最後の行(4行目)はモード行であり、ここでは`xxxxxxxxx'で示した。0 _______ 0 | | | | | | | | xxxxxxxxx 4 7左右に隣り合ったウィンドウがあるときには、 フレームの右端にないウィンドウの最後のコラムは区切りである。 区切りは、ウィンドウの幅では1コラムか2コラム占める。 左側の区切りは左隣のウィンドウに属するので、 ウィンドウには左側の区切りは含まれない。
つぎの例では、フレームは7コラム幅であるとする。 すると、左側のウィンドウの四隅は`0 0 4 3'であり、 右側のウィンドウの四隅は`4 0 7 3'である。
___ ___ | | | | | | xxxxxxxxx 0 34 7