Размеры окон
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