Поля окна (полный список см. в определении struct window в файле window.h) включают:
frameФрейм, к которому принадлежит это окно, в виде объекта Lisp.
miniНенулевое значение, если это окно является окном минибуфера, окном, показывающим минибуфер или область эхо.
pseudo_window_p ¶Ненулевое значение, если это окно является псевдоокном. Псевдоокно — это либо окно, используемое для отображения строки меню или панели инструментов (когда Emacs использует наборы инструментов, которые не отображают собственные строку меню и панель инструментов), либо окно вкладок, либо окно, показывающее всплывающую подсказку на фрейме подсказки. Псевдоокна, как правило, недоступны из кода Lisp.
parentВнутренне Emacs организует окна в дерево; каждая группа родственных окон имеет родительское окно, область которого включает все дочерние окна. Это поле указывает на родителя окна в этом дереве в виде объекта Lisp. Для корневого окна дерева и окна минибуфера это всегда nil.
Родительские окна не отображают буферы и играют небольшую роль в отображении, кроме как для формирования своих дочерних окон. Программы на Emacs Lisp не могут напрямую управлять родительскими окнами; они работают с окнами, находящимися в листьях дерева, которые фактически отображают буферы.
contentsДля листового окна и окон, показывающих всплывающую подсказку, это буфер в виде объекта Lisp, который отображает окно. Для внутреннего («родительского») окна — это его первый дочерний элемент. Для псевдоокна, показывающего меню или панель инструментов, это nil. Также nil для окна, которое было удалено.
nextprevСледующий и предыдущий родственные элементы этого окна в виде объектов Lisp.
next равен nil, если окно является крайним справа или снизу в своей группе; prev равен nil, если оно крайнее слева или сверху в своей группе. Определяется ли родственность как лево/право или верх/низ полем horizontal родителя родственного окна: если оно ненулевое, родственные окна расположены горизонтально.
В качестве особого случая next корневого окна фрейма указывает на окно минибуфера этого фрейма, если только это не фрейм только с минибуфером или без минибуфера. На таких фреймах prev окна минибуфера указывает на корневое окно этого фрейма. В любом другом случае поля next корневого окна и prev окна минибуфера (если оно есть) равны nil.
left_colЛевая граница окна, измеряемая в колонках, относительно крайней левой колонки (колонка 0) собственного фрейма окна.
top_lineВерхняя граница окна, измеряемая в строках, относительно самой верхней строки (строка 0) собственного фрейма окна.
pixel_leftpixel_topЛевая и верхняя границы этого окна, измеряемые в пикселях, относительно верхнего левого угла (0, 0) собственного фрейма окна.
total_colstotal_linesОбщая ширина и высота окна, измеряемые соответственно в колонках и строках. Значения включают полосы прокрутки, поля, разделители и/или линию-разделитель справа от окна (если есть).
pixel_width;pixel_height;Общая ширина и высота окна, измеряемые в пикселях.
startМаркер, указывающий на позицию в буфере, которая является первым символом (в логическом порядке, см. Двунаправленное отображение), отображаемым в окне.
pointm ¶Это значение точки в текущем буфере, когда это окно выбрано; когда оно не выбрано, оно сохраняет своё предыдущее значение.
old_pointmЗначение pointm во время последнего перерисовывания.
force_startЕсли этот флаг не равен nil, это означает, что окно было явно прокручено программой на Lisp, и значение start окна было установлено для выполнения при перерисовывании. Это влияет на то, что делает следующее перерисовывание, если точка находится за пределами экрана: вместо прокрутки окна для показа текста вокруг точки, оно перемещает точку в место, которое находится на экране.
optional_new_startАналогично force_start, но следующее перерисовывание подчинится этому, только если точка останется видимой.
start_at_line_begНе nil означает, что текущее значение start было началом строки на момент его выбора.
use_timeЭто время последнего выбора окна. Функция get-lru-window использует это поле.
sequence_numberУникальный номер, присвоенный этому окну при его создании.
last_modifiedПоле modiff буфера окна по состоянию на момент последнего завершённого перерисовывания в этом окне.
last_overlay_modifiedПоле overlay_modiff буфера окна по состоянию на момент последнего завершённого перерисовывания в этом окне.
last_pointЗначение точки в буфере по состоянию на момент последнего завершённого перерисовывания в этом окне.
last_had_starНенулевое значение означает, что буфер окна был изменён при последнем обновлении окна.
vertical_scroll_bar_typehorizontal_scroll_bar_typeТипы вертикальной и горизонтальной полос прокрутки этого окна.
scroll_bar_widthscroll_bar_heightШирина вертикальной полосы прокрутки и высота горизонтальной полосы прокрутки этого окна в пикселях.
left_margin_colsright_margin_colsШирина левого и правого полей в этом окне. Нулевое значение означает отсутствие поля.
left_fringe_widthright_fringe_widthШирина левой и правой каймы в этом окне в пикселях. Значение –1 означает использование значений фрейма.
fringes_outside_marginsНенулевое значение означает, что кайма находится за пределами полей отображения; в противном случае она находится между полем и текстом.
window_end_posВычисляется как z минус позиция в буфере последнего глифа в текущей матрице окна. Значение действительно только если window_end_valid не равен нулю.
window_end_byteposБайтовая позиция, соответствующая window_end_pos.
window_end_vposОтносительная вертикальная позиция строки, содержащей window_end_pos, внутри окна.
window_end_validЭто поле устанавливается в ненулевое значение, если window_end_pos и window_end_vpos действительно достоверны. Оно равно нулю, если нетривиальное перерисовывание было прервано, поскольку в этом случае отображение, для которого вычислялось window_end_pos, не попало на экран.
cursorСтруктура, описывающая, где в этом окне находится курсор.
last_cursor_vposОтносительная вертикальная позиция строки, показывающей курсор, по состоянию на последнее завершённое перерисовывание.
phys_cursorСтруктура, описывающая физическое положение курсора в этом окне.
phys_cursor_typephys_cursor_heightphys_cursor_widthТип, высота и ширина курсора, который последним отображался в этом окне.
phys_cursor_on_pЭто поле не равно нулю, если курсор физически включён.
cursor_off_pНенулевое значение означает, что курсор в этом окне логически выключен. Используется для мигания курсора.
last_cursor_off_pЭто поле содержит значение cursor_off_p по состоянию на момент последнего перерисовывания.
must_be_updated_pУстанавливается в 1 во время перерисовывания, когда это окно должно быть обновлено.
hscrollЭто количество колонок, на которое отображение в окне прокручивается горизонтально влево. Обычно равно 0. Когда прокручивается только текущая строка, это описывает, насколько прокручена текущая строка.
min_hscrollМинимальное значение hscroll, установленное пользователем через set-window-hscroll (см. Горизонтальная прокрутка). Когда прокручивается только текущая строка, это описывает горизонтальную прокрутку строк, отличных от текущей.
vscrollВеличина вертикальной прокрутки в пикселях. Обычно равна 0.
dedicatedНе nil, если это окно выделено для своего буфера.
combination_limitОграничение комбинирования этого окна, имеет смысл только для родительского окна. Если равно t, то запрещено удалять это окно и перекомбинировать его дочерние окна с другими родственными окнами этого окна.
window_parametersАссоциативный список параметров этого окна.
display_tableТаблица отображения окна или nil, если для него не задана отдельная.
update_mode_lineНенулевое значение означает, что строку режима этого окна необходимо обновить.
mode_line_heightheader_line_heightВысота строки режима и заголовка в пикселях или –1, если неизвестна.
base_line_numberНомер строки для определённой позиции в буфере или ноль. Используется для отображения номера строки точки в строке режима.
base_line_posПозиция в буфере, для которой известен номер строки, или ноль, если ничего не известно. Если равно –1, не отображать номер строки, пока окно показывает этот буфер.
column_number_displayedНомер колонки, отображаемый в данный момент в строке режима этого окна, или –1, если номера колонок не отображаются.
current_matrixdesired_matrixГлифовые матрицы, описывающие текущее и желаемое отображение этого окна.