GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Window-Internals.html ・ emacs-doc.conao3.com

E.8.2 ウィンドウの内部構造

ウィンドウのフィールド(完全な一覧については、window.h 内の struct window の定義を参照)には以下が含まれます:

frame

このウィンドウが配置されているフレームを、Lispオブジェクトとして。

mini

このウィンドウがミニバッファウィンドウ、すなわちミニバッファまたはエコーエリアを表示するウィンドウである場合に非ゼロとなります。

pseudo_window_p

このウィンドウが擬似ウィンドウである場合は0以外となります。擬似ウィンドウとは、メニューバーやツールバーを表示するためのウィンドウ(Emacsが独自のメニューバーやツールバーを表示しないツールキットを使用している場合)、あるいはタブバー、またはツールチップフレーム上にツールチップを表示するウィンドウのことです。一般に、擬似ウィンドウはLispコードからアクセスできません。

parent

Emacs内部では、ウィンドウはツリー構造で配置されており、兄弟ウィンドウの各グループには、その領域にすべての兄弟ウィンドウを含む親ウィンドウが存在します。このフィールドは、そのツリーにおけるウィンドウの親をLispオブジェクトとして指します。ツリーのルートウィンドウおよびミニバッファウィンドウの場合、この値は常に nil となります。

親ウィンドウはバッファを表示せず、子ウィンドウの形状を規定する以外、表示においてほとんど役割を果たしません。Emacs Lispプログラムは親ウィンドウを直接操作することはできず、実際にバッファを表示するツリーの葉ノードにあるウィンドウを操作します。

contents

リーフウィンドウやツールチップを表示するウィンドウの場合、これはそのウィンドウが表示しているバッファ(Lispオブジェクト)となります。内部(「親」)ウィンドウの場合は、その最初の子ウィンドウとなります。メニューやツールバーを表示する擬似ウィンドウの場合は、nilとなります。また、削除されたウィンドウの場合はnilとなります。

next
prev

このウィンドウの次および前の兄弟ウィンドウをLispオブジェクトとして表します。ウィンドウがグループ内で最右端または最下端にある場合、nextはnilとなり、最左端または最上端にある場合はprevがnilとなります。兄弟ウィンドウが左右か上下かは、当該兄弟ウィンドウの親のhorizontalフィールドによって決定されます。この値が0以外の場合、兄弟ウィンドウは水平方向に配置されます。

特殊なケースとして、フレームのルートウィンドウの next は、そのフレームがミニバッファ専用またはミニバッファなしのフレームでない限り、当該フレームのミニバッファウィンドウを指します。このようなフレームでは、ミニバッファウィンドウの prev がそのフレームのルートウィンドウを指します。それ以外の場合は、ルートウィンドウの next および(存在する場合の)ミニバッファウィンドウの prev フィールドは nil となります。

left_col

ウィンドウのネイティブフレームの最左列(列0)を基準とした、列単位で計測したウィンドウの左端。

top_line

ウィンドウの元のフレームの最上行(行0)を基準とした、行単位で計測したウィンドウの上端。

pixel_left
pixel_top

このウィンドウの左端および上端のエッジを、ウィンドウのネイティブフレームの左上隅 (0, 0) を基準としてピクセル単位で測定したもの。

total_cols
total_lines

ウィンドウの全幅および全高(それぞれ列数と行数で表記)。これらの値には、スクロールバーやフリンジ、区切り線、および/またはウィンドウ右側の区切り線(ある場合)が含まれます。

pixel_width;
pixel_height;

ピクセル単位で計測したウィンドウの全幅と全高。

start

ウィンドウに表示される最初の文字(論理順、双方向表示を参照)に対応するバッファ内の位置を指し示すマーカー。

pointm

このウィンドウが選択されているときの現在のバッファにおけるポイントの値で、選択されていないときは前回の値を保持します。

old_pointm

前回の再表示時の pointm の値。

force_start

このフラグが nil 以外の場合、ウィンドウが Lisp プログラムによって明示的にスクロールされ、再表示時に反映されるようウィンドウの start の値が設定されたことを示します。これは、point が画面外にある場合の次回の再表示の動作に影響します。具体的には、point 周辺のテキストを表示するためにウィンドウをスクロールするのではなく、point を画面内の位置に移動させます。

optional_new_start

これは force_start と同様ですが、次の再表示でこれが反映されるのは、ポイントが表示されたままの場合に限られます。

start_at_line_beg

Non-nilは、startが選択された時点での値が行頭であったことを意味します。

use_time

ウィンドウが選択されたのはこれが最後です。関数 get-lru-window はこのフィールドを使用します。

sequence_number

このウィンドウが作成された際に割り当てられた一意の番号。

last_modified

このウィンドウで最後に再表示が完了した時点における、ウィンドウバッファのmodiffフィールド。

last_overlay_modified

このウィンドウで最後に再表示が完了した時点における、ウィンドウバッファのoverlay_modiffフィールド。

last_point

このウィンドウで最後に再表示が完了した時点における、バッファのpointの値。

last_had_star

0以外の値は、ウィンドウが最後に更新された際にバッファが変更されたことを意味します。

vertical_scroll_bar_type
horizontal_scroll_bar_type

このウィンドウの垂直および水平スクロールバーの種類。

scroll_bar_width
scroll_bar_height

このウィンドウの垂直スクロールバーの幅と水平スクロールバーの高さ(ピクセル単位)。

left_margin_cols
right_margin_cols

このウィンドウの左右の余白の幅。値がゼロの場合は余白がないことを意味します。

left_fringe_width
right_fringe_width

このウィンドウにおける左右のフリンジのピクセル幅。−1 の値は、フレームの値を使用することを意味します。

fringes_outside_margins

0以外の値は表示領域外のフリンジを意味し、それ以外の値は領域とテキストの間に位置します。

window_end_pos

これは、zからウィンドウの現在のマトリクスにおける最後のグリフのバッファ位置を引いた値として計算されます。この値は、window_end_validが0でない場合にのみ有効です。

window_end_bytepos

window_end_pos に対応するバイト位置。

window_end_vpos

window_end_pos を含む行のウィンドウ相対的な垂直位置。

window_end_valid

window_end_pos と window_end_vpos が真に有効である場合、このフィールドには 0 以外の値が設定されます。非自明な再表示がプリエンプトされた場合は 0 となります。これは、その場合 window_end_pos の計算対象となった表示が画面に出力されなかったためです。

cursor

このウィンドウ内でカーソルがどこにあるかを記述する構造体。

last_cursor_vpos

最後に完了した再表示時点での、カーソルを示す線のウィンドウ相対的な垂直位置。

phys_cursor

このウィンドウのカーソルが物理的にどこにあるかを示す構造。

phys_cursor_type
phys_cursor_height
phys_cursor_width

このウィンドウに最後に表示されたカーソルの種類、高さ、および幅。

phys_cursor_on_p

カーソルが物理的に位置している場合、このフィールドは0以外になります。

cursor_off_p

0以外は、このウィンドウ内のカーソルが論理的にオフであることを意味します。これはカーソルの点滅に使用されます。

last_cursor_off_p

このフィールドには、前回の再表示時点における cursor_off_p の値が格納されています。

must_be_updated_p

このウィンドウを更新する必要がある場合の再表示時に、これが1に設定されます。

hscroll

これは、ウィンドウ内の表示が水平方向に左へスクロールした列数です。通常、この値は0になります。現在の行のみが水平スクロールされている場合、この値は現在の行がどの程度スクロールされているかを示します。

min_hscroll

set-window-hscroll でユーザーが設定した hscroll の最小値(水平スクロール を参照)。現在の行のみが水平スクロールされる場合、これは現在の行以外の行の水平スクロールを表します。

vscroll

垂直スクロール量(ピクセル単位)。通常は0です。

dedicated

このウィンドウがバッファ専用である場合は Non-nil。

combination_limit

このウィンドウの組み合わせ制限は、親ウィンドウに対してのみ有効です。これが t の場合、このウィンドウを削除し、その子ウィンドウをこのウィンドウの他の兄弟ウィンドウと再結合することは許可されません。

window_parameters

このウィンドウのパラメータ一覧。

display_table

ウィンドウの表示テーブル、または指定されていない場合は nil。

update_mode_line

0以外は、このウィンドウのモードラインを更新する必要があることを意味します。

mode_line_height
header_line_height

モードラインおよびヘッダーラインの高さ(ピクセル単位)。不明な場合は −1。

base_line_number

バッファ内のある位置の行番号、または0。これはモードライン上のポイントの行番号を表示する際に使用されます。

base_line_pos

バッファ内で行番号が既知である位置。0 の場合は既知でないことを示す。−1 の場合は、ウィンドウがそのバッファを表示している限り、行番号を表示しない。

column_number_displayed

このウィンドウのモードラインに現在表示されている列番号。列番号が表示されていない場合は −1。

current_matrix
desired_matrix

このウィンドウの現在の表示および表示予定を記述するグリフ行列。