Spec-Zone.ru › Elisp

Изменение размеров окон

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

За исключением случаев, когда указано иное, эти функции также принимают внутренние окна в качестве аргументов. Изменение размера внутреннего окна приводит к изменению размера его дочерних окон для соответствия тому же пространству.

Функция: window-resizable window delta &optional horizontal ignore pixelwise

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

Если window равно nil, по умолчанию выбирается активное окно.

Положительное значение delta означает проверку, можно ли увеличить окно на это количество строк или столбцов; отрицательное значение delta означает проверку, можно ли уменьшить окно на это количество строк или столбцов. Если delta не равно нулю, возвращаемое значение 0 означает, что окно нельзя изменить.

Обычно переменные window-min-height и window-min-width задают минимально допустимый размер окна (см. Размеры окон). Однако, если необязательный аргумент ignore не равен nil, эта функция игнорирует window-min-height и window-min-width, а также window-size-fixed. Вместо этого она рассматривает минимальную высоту окна как сумму его верхнего и нижнего декораций плюс текст одной строки; и минимальную ширину как сумму его левого и правого декораций плюс текст, занимающий два столбца.

Если необязательный аргумент pixelwise не равен nil, delta интерпретируется как пиксели.

Функция: window-resize window delta &optional horizontal ignore pixelwise

Эта функция изменяет размер window на delta единиц. Если horizontal равно nil, она изменяет высоту на delta строк; в противном случае она изменяет ширину на delta столбцов. Положительное значение delta означает увеличение окна, а отрицательное — уменьшение.

Если window равно nil, по умолчанию выбирается активное окно. Если окно нельзя изменить в соответствии с запросом, генерируется ошибка.

Необязательный аргумент ignore имеет то же значение, что и для функции window-resizable выше.

Если необязательный аргумент pixelwise не равен nil, delta будет интерпретироваться как пиксели.

Выбор границ окна, которые изменяет эта функция, зависит от значений опции window-combination-resize и комбинированных ограничений участвующих окон; в некоторых случаях она может изменить обе границы. См. Перекомбинирование окон. Для изменения размера, перемещая только нижний или правый край окна, используйте функцию adjust-window-trailing-edge.

Функция: adjust-window-trailing-edge window delta &optional horizontal pixelwise

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

Если необязательный аргумент pixelwise не равен nil, delta интерпретируется как пиксели.

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

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

Пользовательская опция: window-resize-pixelwise

Если значение этой опции не равно nil, Emacs изменяет размеры окон в единицах пикселей. В настоящее время это влияет на такие функции, как split-window (см. Разделение окон), maximize-window, minimize-window, fit-window-to-buffer, fit-frame-to-buffer и shrink-window-if-larger-than-buffer (все перечислены ниже).

Обратите внимание, что когда размер пикселей рамки не кратен размеру символа, по крайней мере одно окно может быть изменено в пикселях, даже если эта опция равна nil. Значение по умолчанию равно nil.

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

Команда: fit-window-to-buffer &optional window max-height min-height max-width min-width preserve-size

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

Если window является частью вертикальной комбинации, эта функция изменяет высоту window. Новая высота рассчитывается из фактической высоты доступной части ее буфера. Необязательный аргумент max-height, если он не равен nil, задает максимальную общую высоту, которую эта функция может установить для window. Необязательный аргумент min-height, если он не равен nil, задает минимальную общую высоту, которую она может установить, и переопределяет переменную window-min-height. И max-height, и min-height задаются в строках и включают любой верхний или нижний декорации window.

Если window является частью горизонтальной комбинации и значение опции fit-window-to-buffer-horizontally (см. ниже) не равно nil, эта функция изменяет ширину window. Новая ширина window рассчитывается из максимальной длины строк ее буфера, которые следуют за текущей начальной позицией window. Необязательный аргумент max-width задает максимальную ширину и по умолчанию равна ширине рамки window. Необязательный аргумент min-width задает минимальную ширину и по умолчанию равен window-min-width. И max-width, и min-width задаются в столбцах и включают любой левый или правый декорации window.

Необязательный аргумент preserve-size, если он не равен nil, установит параметр для сохранения размера window при будущих операциях изменения размера (см. Сохранение размеров окон).

Если опция fit-frame-to-buffer (см. ниже) не равна nil, эта функция попытается изменить размер рамки window для адаптации к содержимому, вызвав fit-frame-to-buffer (см. ниже).

Пользовательская опция: fit-window-to-buffer-horizontally

Если это не равно nil, fit-window-to-buffer может изменять размер окон по горизонтали. Если это равно nil (значение по умолчанию), fit-window-to-buffer никогда не изменяет размер окон по горизонтали. Если это равно only, она может изменять размер окон по горизонтали только. Любое другое значение означает, что fit-window-to-buffer может изменять размер окон по обеим осям.

Пользовательская опция: fit-frame-to-buffer

Если эта опция не равна nil, fit-window-to-buffer может подогнать рамку к ее буферу. Рамка подгоняется тогда и только тогда, когда ее корневое окно является живым окном, и эта опция не равна nil. Если это равно horizontally, рамки подгоняются только по горизонтали. Если это равно vertically, рамки подгоняются только по вертикали. Любое другое значение, отличное от nil, означает, что рамки могут изменять размер по обеим осям.

Если у вас есть рамка, отображающая только одно окно, вы можете подогнать эту рамку к ее буферу, используя команду fit-frame-to-buffer.

Команда: fit-frame-to-buffer &optional frame max-height min-height max-width min-width only

Эта команда изменяет размер frame для точного отображения содержимого ее буфера. frame может быть любой живой рамкой и по умолчанию устанавливается для выбранной. Подгонка выполняется только в том случае, если корневое окно frame является живым. Аргументы max-height, min-height, max-width и min-width задают ограничения на новый общий размер корневого окна frame. min-height и min-width по умолчанию устанавливаются в значения window-min-height и window-min-width соответственно.

Если необязательный аргумент only равен vertically, эта функция может изменить размер рамки только по вертикали. Если only равно horizontally, она может изменить размер рамки только по горизонтали.

Поведение fit-frame-to-buffer можно настроить с помощью двух перечисленных ниже опций.

Пользовательская опция: fit-frame-to-buffer-margins

Эта опция может использоваться для задания отступов вокруг рамок, которые будут подгоняться функцией fit-frame-to-buffer. Такие отступы могут быть полезны для предотвращения, например, перекрытия измененной рамки с задачей или частями родительской рамки.

Она задает количество пикселей, которые должны быть свободными слева, сверху, справа и снизу рамки, которая должна быть подогнана. Значение по умолчанию задает nil для каждого значения, что означает отсутствие отступов. Указанное значение можно переопределить для конкретной рамки параметром fit-frame-to-buffer-margins этой рамки, если он присутствует.

Пользовательская опция: fit-frame-to-buffer-sizes

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

Команда: shrink-window-if-larger-than-buffer &необязательное окно

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

Эта команда ничего не делает, если окно уже слишком короткое для отображения всего буфера, или если часть буфера скрыта от просмотра, или если окно является единственным активным окном в своем фрейме.

Эта команда вызывает fit-window-to-buffer (см. выше), чтобы выполнить свою работу.

Команда: balance-windows &необязательное окно или фрейм

Эта функция балансирует окна таким образом, чтобы предоставить больше места окнам, занимающим всю ширину и/или высоту. Если window-or-frame указывает фрейм, она балансирует все окна в этом фрейме. Если window-or-frame указывает окно, она балансирует только это окно и его соседние (см. Окна и Фреймы).

Команда: balance-windows-area

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

Команда: maximize-window &необязательное окно

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

Команда: minimize-window &необязательное окно

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

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/Resizing-Windows.html

Spec-Zone.ru

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