Emacsはウィンドウの高さと幅を求めるためのさまざまな関数を提供します。これらの関数がリターンする値の多くはピクセル単位、または行単位と列単位のいずれかにより指定できます。グラフィカルなディスプレイでは後者は実際にはframe-char-height
とframe-char-width
(フレームのフォントを参照)によりリターンされる、そのフレームのデフォルトフォントが指定するデフォルト文字の高さと幅に対応します。したがってあるウィンドウが異なるフォントやサイズでテキストを表示していると、そのウィンドウにたいして報告される行高さと列幅は、実際にウィンドウ内で表示されるテキスト行数と列数とは異なるかもしれません。
トータル高さ(total height)とは、そのウィンドウのボディー、上下の装飾(Emacsウィンドウの基本概念を参照)を構成する行数です。
この関数はウィンドウwindowのトータル高さを行数でリターンする。windowが省略nil
の場合のデフォルトは選択されたウィンドウ。windowが内部ウィンドウなら、リターン値はそのウィンドウの子孫となるウィンドウにより占有されるトータル高さになる。
ウィンドウのピクセル高さがそのウィンドウがあるフレームのデフォルト文字高さの整数倍でなければ、そのウィンドウが占有する行数が内部で丸められる。これはそのウィンドウが親ウィンドウの場合には、すべての子ウィンドウのトータル高さの合計が、親ウィンドウのトータル高さと内部的に等しくなるような方法により行われる。これはたとえ2つのウィンドウのピクセル高さが等しくでも、内部的なトータル高さは1行分異なるかもしれないことを意味する。さらにこれはそのウィンドウが垂直コンビネーションされていて、かつ次の兄弟をもつ場合には、その兄弟の上端行は、このウィンドウの上端行とトータル高さから計算されるかもしれないことも意味する(座標とウィンドウを参照)。
オプション引数roundがceiling
なら、この関数はwindowのピクセル高さをそのフレームの文字高さで除した数より大であるような最小の整数、floor
なら除した数より小であるような最大の整数、それ以外のroundにたいしてはwindowsのトータル高さの内部値をリターンする。
トータル幅(total width)とはそのウィンドウのボディー、左右の装飾(Emacsウィンドウの基本概念を参照)を構成する列数です。
この関数はウィンドウwindowのトータル幅を列でリターンする。windowが省略nil
の場合のデフォルトは選択されたウィンドウ。windowが内部ウィンドウならリターン値はその子孫のウィンドウが占有するトータル幅になる。
ウィンドウのピクセル幅がそのウィンドウがあるフレームのデフォルト文字幅の整数倍でなければ、そのウィンドウが占有する列数が内部で丸められる。これはそのウィンドウが親ウィンドウの場合には、すべての子ウィンドウのトータル幅の合計が親ウィンドウのトータル幅と内部的に等しくなるような方法により行われる。これはたとえ2つのウィンドウのピクセル幅が等しくでも、内部的なトータル幅は1列分異なるかもしれないことを意味する。さらにこれはそのウィンドウが水平コンビネーションされていて、かつ次の兄弟をもつ場合、その兄弟の左端行はこのウィンドウの左端行とトータル幅から計算されるかもしれないことも意味する(座標とウィンドウを参照)。オプション引数roundはwindow-total-height
の場合と同様に振る舞う。
この関数はウィンドウwindowのトータル高さを行数、またはトータル幅を列数でリターンする。horizontalが省略またはnil
ならwindowにたいしてwindow-total-height
を呼び出すのと等価、それ以外ではwindowにたいしてwindow-total-width
を呼び出すのと等価である。オプション引数roundはwindow-total-height
の場合と同様に振る舞う。
以下の2つの関数はウィンドウのトータルサイズをピクセル単位で取得するために使用できます。
この関数はウィンドウwindowのトータル高さをピクセル単位でリターンする。windowは有効なウィンドウでなければならずデフォルトは選択されたウィンドウ。
リターン値には上下の装飾の高さが含まれる。windowが内部ウィンドウなら、そのピクセル高さは子ウィンドウたちによりスパンされるスクリーン領域のピクセル高さになる。
この関数はウィンドウwindowの幅をピクセル単位でリターンする。windowは有効なウィンドウでなければならずデフォルトは選択されたウィンドウ。
リターン値には左右の装飾の幅が含まれる。windowが内部ウィンドウなら、そのピクセル幅は子ウィンドウたちにより占有されるスクリーン領域の幅になる。
以下の関数は与えられたウィンドウに隣接するウィンドウがあるかどうかを判断するために使用できます。
この関数はフレーム内でwindowの上下に他のウィンドウがなければ非nil
をリターンする。より正確には、windowのトータル高さがそのフレームのルートウィンドウの高さに等しいことを意味する。windowが省略またはnil
の場合のデフォルトは選択されたウィンドウ。
この関数はフレーム内でwindowの左右に他のウィンドウがなければ非nil
をリターンする(トータル幅がそのフレーム上のルートウィンドウと等しい)。windowが省略またはnil
の場合のデフォルトは選択されたウィンドウ。
ウィンドウのボディー高さ(body height)とは上下の装飾(Emacsウィンドウの基本概念を参照)を含まないbodyの高さです。
この関数はウィンドウwindowのボディーの高さを行数でリターンする。windowが省略またはnil
の場合のデフォルトは選択されたウィンドウ、それ以外なら生きたウィンドウでなければならない。
オプション引数pixelwiseは高さにたいして用いる単位を定義する。nil
なら、必要に応じて文字で計ったwindowのbody高さはもっとも近い整数に切り下げられる。これはテキスト領域の下端行が部分的に可視の場合にその行は計数されないこと、さらに任意のウィンドウのボディー高さはwindow-total-height
によりリターンされるそのウィンドウのトータル高さ決して超過し得ないことも意味する。
pixelwiseがremap
、かつデフォルトフェイスがリマップ(フェイスのリマップを参照)されている場合には、文字の高さの判定にリマップされたフェイスを使用する。それ以外の非nil
値にたいしてはピクセル単位で高さをリターンする。
ウィンドウのボディー幅(body width)とは左右の装飾を何も含まないbodyとテキスト領域の幅です。
(幅を0にセットすることにより)一方または両方のフリンジが削除されたときには、継続と切り詰めのグリフを表示するためにディスプレイエンジンが文字セル2つを予約するので、テキスト表示にたいして2列少なくなることに注意してください(以下で説明するwindow-max-chars-per-line
はこの特性を考慮する)。
この関数はウィンドウwindowのボディーの幅を列数でリターンする。windowが省略またはnil
の場合のデフォルトは選択されたウィンドウ、それ以外なら生きたウィンドウでなければならない。
オプション引数pixelwiseは幅にたいして用いる単位を定義する。nil
なら、必要に応じて文字で計ったwindowのbody幅はもっとも近い整数に切り下げられる。これはテキスト領域の右端の列が部分的に可視な場合にその列が計数されないことを意味する。さらにこれはウィンドウのボディーの幅がwindow-total-width
によりリターンされるウィンドウのトータル幅を決して超過し得ないことをも意味する。
pixelwiseがremap
、かつデフォルトフェイスがリマップ(フェイスのリマップを参照)されている場合には、文字の幅の判定にリマップされたフェイスを使用する。それ以外の非nil
値にたいしてはピクセル単位で幅をリターンする。
この関数はwindowのボディーの高さか幅をリターンする。horizontalが省略またはnil
ならwindowにたいしてwindow-body-height
、それ以外ならwindow-body-width
を呼び出すのと同じ。いずれの場合もオプション引数pixelwiseは呼び出された関数に渡される。
ウィンドウのモードライン、タブライン、ヘッダーラインのピクセル高さは以下の関数により取得できます。それらのリターン値は、そのウィンドウが以前に表示されていない場合を除いて通常は加算されます。その場合のリターン値はそのウィンドウのフレームにたいして使用を予想されるフォントが元になります。
この関数はwindowモードラインの高さをピクセルでリターンする。windowは生きたウィンドウでなければならずデフォルトは選択されたウィンドウ。windowにモードラインがなければリターン値は0。
この関数はwindowのタブラインの高さをピクセル単位でリターンする。windowは生きたウィンドウでなければならずデフォルトは選択されたウィンドウ。windowにタブラインがない場合のリターン値は0。
この関数はwindowのヘッダーラインの高さをピクセル単位でリターンする。windowは生きたウィンドウでなければならずデフォルトは選択されたウィンドウ。windowにヘッダーラインがない場合のリターン値は0。
ウィンドウディバイダー(ウィンドウディバイダーを参照)、フリンジ(フリンジを参照)、スクロールバー(スクロールバーを参照)、ディスプレイマージン(マージン内への表示を参照)を取得する関数については、それぞれ対応するセクションで説明されています。
Lispプログラムでレイアウト上の判断を要する場合には、以下の関数を有用と思うでしょう:
この関数は指定されたウィンドウwindow
(生きたウィンドウであること)内で、指定されたフェイスfaceで表示される文字数をリターンする。faceがリマップ(フェイスのリマップを参照)されていたらリマップされたフェイスの情報がリターンされる。省略またはnil
の場合、faceのデフォルトはデフォルトフェイス、windowのデフォルトは選択されたウィンドウ。
この関数はwindow-body-width
と異なり、windowのフレームの正準文字幅(canonical
character
width)の単位ではなく、faceのフォントの実サイズを考慮する。またwindowの一方または両方のフリンジがなければ、継続グリフに使用されるスペースも考慮する。
ウィンドウのサイズを変更(ウィンドウのリサイズを参照)したりウィンドウを分割(split)するコマンド(ウィンドウの分割を参照)は、指定できるウィンドウの最小の高さと幅を指定する変数window-min-height
とwindow-min-width
にしたがう。これらのコマンドはウィンドウのサイズがfixed(固定)になる変数window-size-fixed
にもしたがう(ウィンドウサイズの保持を参照)。
このオプションは任意のウィンドウの最小のトータル高さを行で指定する。この値は最低でも1つのテキスト行、および上下のすべての装飾が含まれている必要がある。
このオプションはすべてのウィンドウの最小のトータル幅を列で指定する。この値は2つのテキスト列、および左右のすべての装飾が含まれている必要がある。
以下の関数は、ある特定の大きさのウィンドウにたいして、それのwindow-min-height
とwindow-min-width
、およびwindow-size-fixed
(ウィンドウサイズの保持を参照)の値と領域のサイズを示す。
この関数はwindowの最小のサイズをリターンする。windowは有効なウィンドウでなければならず、デフォルトは選択されたウィンドウ。オプション引数horizontalが非nil
ならwindowの最小の列数、それ以外はwindowの最小の行数をリターンすることを意味する。
このリターン値によってwindowのサイズが実際にその値にセットされた場合にwindowのすべてのコンポーネントが完全に可視にとどまることが保証される。horizontalがnil
なら上下のすべての装飾が含まれる。horizontalが非nil
なら、windowの左右のすべての装飾が含まれる。
オプション引数ignoreが非nil
なら、window-min-height
やwindow-min-width
によりセットされる固定サイズのウィンドウに強いられる制限を無視することを意味する。ignoreがsafe
なら、生きたウィンドウは可能な限り小さなwindow-safe-min-height
の行、およびwindow-safe-min-width
の列を得る。ignoreにウィンドウが指定されると、そのウィンドウにたいする制限だけを無視する。その他の非nil
値では、すべてのウィンドウにたいする上記制限のすべてが無視されることを意味する。
オプション引数pixelwiseが非nil
なら、windowの最小サイズがピクセルで計数されてリターンされることを意味する。