Spec-Zone.ru › Elisp

Размеры окон

Emacs предоставляет различные функции для определения высоты и ширины окна. Возвращаемое значение многих из этих функций можно задавать в пикселях или в канонических строках и столбцах. В графическом режиме последние фактически соответствуют высоте и ширине символа по умолчанию, заданного шрифтом по умолчанию рамки, которые возвращают frame-char-height и frame-char-width (см. Шрифт рамки). Поэтому, если в окне отображается текст другим шрифтом или размером, сообщаемые высота строки и ширина столбца для этого окна могут отличаться от фактического числа отображаемых в нём строк или столбцов текста.

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

Функция: window-total-height &optional window round

Эта функция возвращает полную высоту окна window в канонических строках. Если аргумент window опущен или равен nil, по умолчанию используется выбранное окно. Если window — внутреннее окно, возвращаемое значение представляет собой полную высоту, занимаемую его дочерними окнами.

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

Если необязательный аргумент round равен ceiling, эта функция возвращает наименьшее целое число, большее высоты window в пикселях, делённой на каноническую высоту символа его рамки; если он равен floor, возвращается наибольшее целое число, меньшее этого значения; при любом другом значении round возвращается внутреннее значение полной высоты windows.

Полная ширина окна — это число столбцов, составляющих его основную область, а также левое и правое оформление (см. Основные понятия об окнах Emacs).

Функция: window-total-width &optional window round

Эта функция возвращает полную ширину окна window в канонических столбцах. Если аргумент window опущен или равен nil, по умолчанию используется выбранное окно. Если window — внутреннее окно, возвращаемое значение представляет собой полную ширину, занимаемую его дочерними окнами.

Если ширина окна в пикселях не кратна целому числу канонических ширин символа для его рамки, число занимаемых окном столбцов округляется внутри функции. Это делается так, чтобы, если окно является родительским, сумма полных ширин всех его дочерних окон внутри функции равнялась полной ширине родительского окна. Это означает, что внутренние полные ширины двух окон с одинаковой шириной в пикселях могут различаться на один столбец. Это также означает, что если данное окно объединено по горизонтали и у него есть следующее соседнее окно, самый левый столбец этого соседнего окна можно вычислить как сумму самого левого столбца данного окна и его полной ширины (см. Координаты и окна). Необязательный аргумент round действует так же, как и для window-total-height.

Функция: window-total-size &optional window horizontal round

Эта функция возвращает полную высоту окна window в строках или его полную ширину в столбцах. Если аргумент horizontal опущен или равен nil, это эквивалентно вызову window-total-height для window; в противном случае это эквивалентно вызову window-total-width для window. Необязательный аргумент round действует так же, как и для window-total-height.

Следующие две функции позволяют получить полный размер окна в пикселях.

Функция: window-pixel-height &optional window

Эта функция возвращает полную высоту окна window в пикселях. window должен быть допустимым окном; по умолчанию используется выбранное окно.

Возвращаемое значение включает высоту верхнего и нижнего оформления window. Если window — внутреннее окно, его высота в пикселях равна высоте областей экрана, занимаемых его дочерними окнами.

Функция: window-pixel-width &optional window

Эта функция возвращает ширину окна window в пикселях. window должен быть допустимым окном; по умолчанию используется выбранное окно.

Возвращаемое значение включает ширину левого и правого оформления window. Если window — внутреннее окно, его ширина в пикселях равна ширине областей экрана, занимаемых его дочерними окнами.

Следующие функции позволяют определить, есть ли у заданного окна соседние окна.

Функция: window-full-height-p &optional window

Эта функция возвращает значение, отличное от nil, если над окном window или под ним в его рамке нет других окон. Точнее, это означает, что полная высота window равна полной высоте корневого окна этой рамки. Окно минибуфера при этом не учитывается. Если аргумент window опущен или равен nil, по умолчанию используется выбранное окно.

Функция: window-full-width-p &optional window

Эта функция возвращает значение, отличное от nil, если слева и справа от окна window в его рамке нет других окон, то есть его полная ширина равна ширине корневого окна этой рамки. Если аргумент window опущен или равен nil, по умолчанию используется выбранное окно.

Высота основной области окна — это высота его основной области, не включающая верхнее и нижнее оформление (см. Основные понятия об окнах Emacs).

Функция: window-body-height &optional window pixelwise

Эта функция возвращает высоту основной области окна window в канонических строках. Если аргумент window опущен или равен nil, по умолчанию используется выбранное окно; в противном случае он должен указывать на активное окно.

Необязательный аргумент pixelwise задаёт единицы измерения высоты. Если он равен nil, возвращается высота основной области window в канонических символах, при необходимости округлённая вниз до ближайшего целого числа. Это означает, что если нижняя строка текстовой области видна лишь частично, она не учитывается. Это также означает, что высота основной области окна никогда не может превышать его полную высоту, возвращаемую window-total-height.

Если pixelwise равен remap и лицо по умолчанию переназначено (см. Переназначение лиц), для определения высоты символа используется переназначенное лицо. При любом другом значении, отличном от nil, высота возвращается в пикселях.

Ширина основной области окна — это ширина его основной области и текстовой области, не включающая левое и правое оформление (см. Основные понятия об окнах Emacs).

Обратите внимание: если один или оба поля по краям удалены (путём установки их ширины в ноль), механизм отображения резервирует по две ячейки символов с каждой стороны окна для отображения значков продолжения и усечения строк, оставляя на два столбца меньше для отображения текста. (Функция window-max-chars-per-line, описанная ниже, учитывает эту особенность.)

Функция: window-body-width &optional window pixelwise

Эта функция возвращает ширину основной области окна window в канонических столбцах. Если аргумент window опущен или равен nil, по умолчанию используется выбранное окно; в противном случае он должен указывать на активное окно.

Необязательный аргумент pixelwise задаёт единицы измерения ширины. Если он равен nil, возвращается ширина основной области window в канонических символах, при необходимости округлённая вниз до ближайшего целого числа. Это означает, что если столбец справа от текстовой области виден лишь частично, он не учитывается. Это также означает, что ширина основной области окна никогда не может превышать его полную ширину, возвращаемую window-total-width.

Если pixelwise равен remap и лицо по умолчанию переназначено (см. Переназначение лиц), для определения ширины символа используется переназначенное лицо. При любом другом значении, отличном от nil, ширина возвращается в пикселях.

Функция: window-body-size &optional window horizontal pixelwise

Эта функция возвращает высоту или ширину основной области window. Если аргумент horizontal опущен или равен nil, это эквивалентно вызову window-body-height для window; в противном случае это эквивалентно вызову window-body-width. В обоих случаях необязательный аргумент pixelwise передаётся вызываемой функции.

Высоту в пикселях строки режима, строки вкладок и строки заголовка окна можно получить с помощью приведённых ниже функций. Их возвращаемые значения обычно точны, если окно уже отображалось: в противном случае значение основывается на оценке шрифта, используемого для рамки окна.

Функция: window-mode-line-height &optional window

Эта функция возвращает высоту строки режима окна window в пикселях. window должен быть активным окном; по умолчанию используется выбранное окно. Если у window нет строки режима, возвращаемое значение равно нулю.

Функция: window-tab-line-height &optional window

Эта функция возвращает высоту строки вкладок окна window в пикселях. window должен быть активным окном; по умолчанию используется выбранное окно. Если у window нет строки вкладок, возвращаемое значение равно нулю.

Функция: window-header-line-height &optional window

Эта функция возвращает высоту строки заголовка окна window в пикселях. window должен быть активным окном; по умолчанию используется выбранное окно. Если у window нет строки заголовка, возвращаемое значение равно нулю.

Функции для получения высоты и/или ширины разделителей окон (см. Разделители окон), полей по краям (см. Поля по краям), полос прокрутки (см. Полосы прокрутки) и полей отображения (см. Отображение в полях) описаны в соответствующих разделах.

Если вашей программе на Lisp требуется принимать решения о компоновке, вам пригодится следующая функция:

Функция: window-max-chars-per-line &optional window face

Эта функция возвращает число символов, отображаемых заданным лицом face в указанном окне window (которое должно быть активным окном). Если face переназначено (см. Переназначение лиц), возвращаются сведения для переназначенного лица. Если аргумент face опущен или равен nil, по умолчанию используется лицо по умолчанию, а для window — выбранное окно.

В отличие от window-body-width, эта функция учитывает фактический размер шрифта face, а не использует каноническую ширину символа рамки окна (см. Шрифт рамки). Она также учитывает пространство, занимаемое значком продолжения, если у window отсутствует одно или оба поля по краям.

Команды, изменяющие размер окон (см. Изменение размеров окон) или разделяющие их (см. Разделение окон), учитывают переменные window-min-height и window-min-width, задающие минимально допустимые высоту и ширину окна. Они также учитывают переменную window-size-fixed, с помощью которой размер окна можно зафиксировать (см. Сохранение размеров окон).

Параметр пользователя: window-min-height

Этот параметр задаёт минимальную полную высоту любого окна в строках. Его значение должно позволять разместить как минимум одну строку текста и любое верхнее или нижнее оформление.

Параметр пользователя: window-min-width

Этот параметр задаёт минимальную полную ширину любого окна в столбцах. Его значение должно позволять разместить как минимум два столбца текста и любое левое или правое оформление.

Следующая функция сообщает, насколько маленьким может стать конкретное окно с учётом размеров его областей и значений window-min-height, window-min-width и window-size-fixed (см. Сохранение размеров окон).

Функция: window-min-size &optional window horizontal ignore pixelwise

Эта функция возвращает минимальный размер окна 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 возвращается в пикселях.

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

Spec-Zone.ru

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