Spec-Zone.ru › Elisp

Внутреннее устройство окна

Поля окна (полный список см. в определении struct window в window.h) включают:

frame

Рамка, на которой расположено это окно, как объект Lisp.

mini

Не равно нулю, если это окно — окно минибуфера, окно, отображающее минибуфер или область эха.

pseudo_window_p

Не равно нулю, если это окно — псевдоокно. Псевдоокно — это либо окно, используемое для отображения панели меню или панели инструментов (когда Emacs использует инструменты, которые не отображают собственную панель меню и панель инструментов), либо панель вкладок, либо окно, отображающее всплывающую подсказку на рамке всплывающих подсказок. Псевдоокна, как правило, недоступны из кода Lisp.

parent

Внутри Emacs окна организованы в дерево; каждая группа потомков имеет родительское окно, область которого включает всех потомков. Это поле указывает на родительское окно в этом дереве, как объект Lisp. Для корневого окна дерева и окна минибуфера это всегда nil.

Родительские окна не отображают буферы и играют незначительную роль в отображении, кроме того, чтобы сформировать свои дочерние окна. Программы Emacs Lisp не могут напрямую манипулировать родительскими окнами; они работают с окнами на листьях дерева, которые фактически отображают буферы.

contents

Для листового окна и окон, отображающих всплывающую подсказку, это буфер, как объект Lisp, который отображает окно. Для внутреннего («родительского») окна это его первое дочернее окно. Для псевдоокна, отображающего меню или панель инструментов, это nil. Это также nil для окна, которое было удалено.

next
prev

Следующее и предыдущее окно-потомок этого окна как объекты Lisp. next равно nil, если окно является самым правым или самым нижним в своей группе; prev равно nil, если оно является самым левым или самым верхним в своей группе. Будет ли потомок слева/справа или сверху/снизу определяется полем horizontal родителя потомка: если оно не равно нулю, потомки расположены горизонтально.

В качестве особого случая, 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 окна было установлено для перерисовки. Это влияет на то, что делает следующая перерисовка, если точка находится вне экрана: вместо прокрутки окна для показа текста вокруг точки, она перемещает точку в положение, которое находится на экране.

optional_new_start

Это аналогично force_start, но следующая перерисовка будет соблюдать ее только в том случае, если точка останется видимой.

start_at_line_beg

Не равно нулю означает, что текущее значение start было началом строки при выборе.

use_time

Это последний момент, когда окно было выбрано. Функция get-lru-window использует это поле.

sequence_number

Уникальный номер, присвоенный этому окну при его создании.

last_modified

Поле modiff буфера окна по состоянию на последний завершенный перерисовку в этом окне.

last_overlay_modified

Поле overlay_modiff буфера окна по состоянию на последний завершенный перерисовку в этом окне.

last_point

Значение точки буфера, по состоянию на последний завершенный перерисовку в этом окне.

last_had_star

Значение не равно нулю означает, что буфер окна был изменен при последнем обновлении окна.

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

Значение не равно нулю означает, что рамки находятся за пределами полей отображения; в противном случае они находятся между полем и текстом.

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_type
phys_cursor_height
phys_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

Не равно нулю, если это окно предназначено для своего буфера.

combination_limit

Предел комбинации этого окна, имеющий смысл только для родительского окна. Если это t, то не разрешается удалять это окно и повторно объединять его дочерние окна с другими потомками этого окна.

window_parameters

Список параметров этого окна.

display_table

Таблица отображения окна или nil, если для него не указана.

update_mode_line

Не равно нулю означает, что строка состояния этого окна должна быть обновлена.

mode_line_height
header_line_height

Высота строки состояния и заголовка в пикселях, или -1, если неизвестна.

base_line_number

Номер строки определённой позиции в буфере или ноль. Это используется для отображения номера строки точки в строке состояния.

base_line_pos

Позиция в буфере, для которой известен номер строки, или ноль, что означает, что он неизвестен. Если это -1, не отображать номер строки, пока окно показывает этот буфер.

column_number_displayed

Номер столбца, в данный момент отображаемый в строке состояния этого окна, или -1, если номера столбцов не отображаются.

current_matrix
desired_matrix

Матрицы глифов, описывающие текущее и желаемое отображение этого окна.

Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Window-Internals.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API