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


28.3 ウィンドウのサイズ

以下の図は生きたウィンドウの構造を示しています:

        ____________________________________________
       |______________ Header Line ______________|RD| ^
     ^ |LS|LM|LF|                       |RF|RM|RS|  | |
     | |  |  |  |                       |  |  |  |  | |
Window |  |  |  |       Text Area       |  |  |  |  | Window
Body | |  |  |  |     (Window Body)     |  |  |  |  | Total
Height |  |  |  |                       |  |  |  |  | Height
     | |  |  |  |<- Window Body Width ->|  |  |  |  | |
     v |__|__|__|_______________________|__|__|__|  | |
       |_________ Horizontal Scroll Bar _________|  | |
       |_______________ Mode Line _______________|__| |
       |_____________ Bottom Divider _______________| v
        <---------- Window Total Width ------------>

ウィンドウの中央はテキストエリア(text area: テキスト領域)、またはボディー(body: 本体、本文)と呼ばれるバッファーテキストが表示される場所です。テキストエリアは一連のオプションエリアで囲まれている可能性があります。左右には内側から外側に向かって図中にLFとRFで示される左右のフリンジ(Fringesを参照)、LMとRMで示される左右のマージン(Display Marginsを参照)、そしてLSとRSはスクロールバー(Scroll Barsを参照)で、これは常に表示されるのはいずれか一方だけです。さらにRDで示されるのが右ディバイダー(Window Dividersを参照)です。ウィンドウ上端にはヘッダーライン(Header Linesを参照)、ウィンドウ下端には水平スクロールバー(Scroll Barsを参照)、モードライン(Mode Line Formatを参照)、下端ディバイダー(Window Dividersを参照)があります。

Emacsはウィンドウの高さと幅を求めるためのさまざまな関数を提供します。これらの関数がリターンする値の多くはピクセル単位、または行単位と列単位のいずれかにより指定できます。グラフィカルなディスプレイでは後者は実際にはframe-char-heightframe-char-width (Frame Fontを参照)によりリターンされる、そのフレームのデフォルトフォントが指定するデフォルト文字の高さと幅に対応します。したがってあるウィンドウが異なるフォントやサイズでテキストを表示していると、そのウィンドウにたいして報告される行高さと列幅は、実際にウィンドウ内で表示されるテキスト行数と列数とは異なるかもしれません。

トータル高さ(total height)とは、そのウィンドウのボディーを構成する行数、ヘッダーライン、水平スクロールバー、モードライン、(もしあれば)下端ディバイダーです。

Function: window-total-height &optional window round

この関数はウィンドウwindowのトータル高さを行数でリターンする。windowが省略nilの場合のデフォルトは選択されたウィンドウ。windowが内部ウィンドウなら、リターン値はそのウィンドウの子孫となるウィンドウにより占有されるトータル高さになる。

ウィンドウのピクセル高さがそのウィンドウがあるフレームのデフォルト文字高さの整数倍でなければ、そのウィンドウが占有する行数が内部で丸められる。これはそのウィンドウが親ウィンドウの場合には、すべての子ウィンドウのトータル高さの合計が、親ウィンドウのトータル高さと内部的に等しくなるような方法により行われる。これはたとえ2つのウィンドウのピクセル高さが等しくでも、内部的なトータル高さは1行分異なるかもしれないことを意味する。さらにこれはそのウィンドウが垂直コンビネーションされていて、かつ次の兄弟をもつ場合には、その兄弟の上端行は、このウィンドウの上端行とトータル高さから計算されるかもしれないことも意味する(Coordinates and Windowsを参照)。

オプション引数roundceilingなら、この関数はwindowのピクセル高さをそのフレームの文字高さで除した数より大であるような最小の整数、floorなら除した数より小であるような最大の整数、それ以外のroundにたいしてはwindowsのトータル高さの内部値をリターンする。

トータル幅(total width)とはそのウィンドウのボディーを構成する列数、マージン、フリンジ、スクロールバー、(もしあれば)右ディバイダーです。

Function: window-total-width &optional window round

この関数はウィンドウwindowのトータル幅を列でリターンする。windowが省略nilの場合のデフォルトは選択されたウィンドウ。windowが内部ウィンドウならリターン値はその子孫のウィンドウが占有するトータル幅になる。

ウィンドウのピクセル幅がそのウィンドウがあるフレームのデフォルト文字幅の整数倍でなければ、そのウィンドウが占有する列数が内部で丸められる。これはそのウィンドウが親ウィンドウの場合には、すべての子ウィンドウのトータル幅の合計が親ウィンドウのトータル幅と内部的に等しくなるような方法により行われる。これはたとえ2つのウィンドウのピクセル幅が等しくでも、内部的なトータル幅は1列分異なるかもしれないことを意味する。さらにこれはそのウィンドウが水平コンビネーションされていて、かつ次の兄弟をもつ場合、その兄弟の左端行はこのウィンドウの左端行とトータル幅から計算されるかもしれないことも意味する(Coordinates and Windowsを参照)。オプション引数roundwindow-total-heightの場合と同様に振る舞う。

Function: window-total-size &optional window horizontal round

この関数はウィンドウwindowのトータル高さを行数、またはトータル幅を列数でリターンする。horizontalが省略またはnilならwindowにたいしてwindow-total-heightを呼び出すのと等価、それ以外ではwindowにたいしてwindow-total-widthを呼び出すのと等価である。オプション引数roundwindow-total-heightの場合と同様に振る舞う。

以下の2つの関数はウィンドウのトータルサイズをピクセル単位で取得するために使用できます。

Function: window-pixel-height &optional window

この関数はウィンドウwindowのトータル高さをピクセル単位でリターンする。windowは有効なウィンドウでなければならずデフォルトは選択されたウィンドウ。

リターン値には、(もしあれば)モードライン、ヘッダーライン、水平スクロールバー、下端ディバイダーが含まれる。windowが内部ウィンドウなら、そのピクセル高さは子ウィンドウたちによりスパンされるスクリーン領域のピクセル高さになる。

Function: window-pixel-width &optional window

この関数はウィンドウwindowの幅をピクセル単位でリターンする。windowは有効なウィンドウでなければならずデフォルトは選択されたウィンドウ。

リターン値にはフリンジ、windowのマージン、同様にwindowに属する垂直ディバイダーとスクロールバーが含まれる。windowが内部ウィンドウなら、そのピクセル幅は子ウィンドウたちにより占有されるスクリーン領域の幅になる。

以下の関数は与えられたウィンドウに隣接するウィンドウがあるかどうかを判断するために使用できます。

Function: window-full-height-p &optional window

この関数はフレーム内でwindowの上下に他のウィンドウがなければ非nilをリターンする。より正確には、windowのトータル高さがそのフレームのルートウィンドウの高さに等しいことを意味する。windowが省略またはnilの場合のデフォルトは選択されたウィンドウ。

Function: window-full-width-p &optional window

この関数はフレーム内でwindowの左右に他のウィンドウがなければ非nilをリターンする(トータル幅がそのフレーム上のルートウィンドウと等しい)。windowが省略またはnilの場合のデフォルトは選択されたウィンドウ。

ウィンドウのボディー高さ(body height)とはモードライン、ヘッダーライン、水平スクロールバー、下端ディバイダーを含まないテキスト領域の高さです。

Function: window-body-height &optional window pixelwise

この関数はウィンドウwindowのボディーの高さを行数でリターンする。windowが省略またはnilの場合のデフォルトは選択されたウィンドウ、それ以外なら生きたウィンドウでなければならない。

オプション引数pixelwiseが非nilなら、この関数はピクセルで計算windowのボディー高さをリターンする。

pixelwisenilの場合には、必要ならリターン値はもっとも近い整数に切り下げられる。これはテキスト領域の下端行が部分的に可視の場合にその行は計数されないこと、さらに任意のウィンドウのボディー高さはwindow-total-heightによりリターンされるそのウィンドウのトータル高さ決して超過し得ないことも意味する。

ウィンドウのボディー幅(body width)とはスクロールバー、フリンジ、マージン、右ディバイダーを含まないテキスト領域の幅です。(幅を0にセットすることにより)一方または両方のフリンジが削除されたときには、継続と切り詰めのグリフを表示するためにディスプレーエンジンが文字セル2つを予約するので、テキスト表示にたいして2列少なくなることに注意してください(以下で説明するwindow-max-chars-per-lineはこの特性を考慮する)。

Function: window-body-width &optional window pixelwise

この関数はウィンドウwindowのボディーの幅を列数でリターンする。windowが省略またはnilの場合のデフォルトは選択されたウィンドウ、それ以外なら生きたウィンドウでなければならない。

オプション引数pixelwiseが非nilなら、この関数はwindowのボディーの幅をピクセル単位でリターンする。

pixelwisenilなら、リターン値は必要に応じてもっとも近い整数に切り下げられる。これはテキスト領域の右端の列が部分的に可視な場合にその列が計数されないことを意味する。さらにこれはウィンドウのボディーの幅がwindow-total-widthによりリターンされるウィンドウのトータル幅を決して超過し得ないことをも意味する。

Function: window-body-size &optional window horizontal pixelwise

この関数はwindowのボディーの高さか幅をリターンする。horizontalが省略またはnilならwindowにたいしてwindow-body-height、それ以外ならwindow-body-widthを呼び出すのと同じ。いずれの場合もオプション引数pixelwiseは呼び出された関数に渡される。

以前のバージョンのEmacsとの互換性のためにwindow-heightwindow-total-heightwindow-widthwindow-body-widthにたいするエイリアスです。これらのエイリアス時代遅れと考えられていて将来は削除されるでしょう。

ウィンドウのモードラインとヘッダーラインのピクセル高さは以下の関数により取得できます。それらのリターン値は、そのウィンドウが以前に表示されていない場合を除いて通常は加算されます。その場合のリターン値はそのウィンドウのフレームにたいして使用を予想されるフォントが元になります。

Function: window-mode-line-height &optional window

この関数はwindowモードラインの高さをピクセルでリターンする。windowは生きたウィンドウでなければならずデフォルトは選択されたウィンドウ。windowにモードラインがなければリターン値は0。

Function: window-header-line-height &optional window

この関数はwindowのヘッダーラインの高さをピクセル単位でリターンする。windowは生きたウィンドウでなければならずデフォルトは選択されたウィンドウ。windowにヘッダーラインがない場合のリターン値は0。

ウィンドウディバイダー(Window Dividersを参照)、フリンジ(Fringesを参照)、スクロールバー(Scroll Barsを参照)、ディスプレイマージン(Display Marginsを参照)を取得する関数については、それぞれ対応するセクションで説明されています。

Lispプログラムでレイアウト上の判断を要する場合には、以下の関数を有用と思うでしょう:

Function: window-max-chars-per-line &optional window face

この関数は指定されたウィンドウwindow (生きたウィンドウであること)内で、指定されたフェイスfaceで表示される文字数をリターンする。faceがリマップ(Face Remappingを参照)されていたらリマップされたフェイスの情報がリターンされる。省略またはnilの場合、faceのデフォルトはデフォルトフェイス、windowのデフォルトは選択されたウィンドウ。

この関数はwindow-body-widthと異なり、windowのフレームの正準文字幅(canonical character width)の単位ではなく、faceのフォントの実サイズを考慮する。またwindowの一方または両方のフリンジがなければ、継続グリフに使用されるスペースも考慮する。

ウィンドウのサイズを変更(Resizing Windowsを参照)したりウィンドウを分割(split)するコマンド(Splitting Windowsを参照)は、指定できるウィンドウの最小の高さと幅を指定する変数window-min-heightwindow-min-widthにしたがう。これらのコマンドはウィンドウのサイズがfixed(固定)になる変数window-size-fixedにもしたがう(Preserving Window Sizesを参照)。

User Option: window-min-height

このオプションは任意のウィンドウの最小のトータル高さを行で指定する。この値は最低でも1つのテキスト行、同様に(もしあれば)モードライン、ヘッダーライン、水平スクロールバー、下端ディバイダーに対応する必要がある。

User Option: window-min-width

このオプションはすべてのウィンドウの最小のトータル幅を列で指定する。この値は2つのテキスト列、同様に(もしあれば)マージン、フリンジ、スクロールバー、右ディバイダーに対応する必要がある。

以下の関数は、ある特定の大きさのウィンドウにたいして、それのwindow-min-heightwindow-min-width、およびwindow-size-fixed (Preserving Window Sizesを参照)の値と領域のサイズを示す。

Function: window-min-size &optional window horizontal ignore pixelwise

この関数はwindowの最小のサイズをリターンする。windowは有効なウィンドウでなければならず、デフォルトは選択されたウィンドウ。オプション引数horizontalが非nilならwindowの最小の列数、それ以外はwindowの最小の行数をリターンすることを意味する。

このリターン値によってwindowのサイズが実際にその値にセットされた場合にwindowのすべてのコンポーネントが完全に可視にとどまることが保証される。horizontalnilなら、(もしあれば)モードライン、ヘッダーライン、水平スクロールバー、下端ディバイダーが含まれる。horizontalが非nilなら、(もしあれば)マージン、フリンジ、垂直スクロールバー、右ディバイダーが含まれる。

オプション引数ignoreが非nilなら、window-min-heightwindow-min-widthによりセットされる固定サイズのウィンドウに強いられる制限を無視することを意味する。ignoresafeなら、生きたウィンドウは可能な限り小さなwindow-safe-min-heightの行、およびwindow-safe-min-widthの列を得る。ignoreにウィンドウが指定されると、そのウィンドウにたいする制限だけを無視する。その他の非nil値では、すべてのウィンドウにたいする上記制限のすべてが無視されることを意味する。

オプション引数pixelwiseが非nilなら、windowの最小サイズがピクセルで計数されてリターンされることを意味する。


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