В этом разделе описаны функции для изменения размера окна без изменения размера его фрейма. Поскольку живые окна не перекрываются, эти функции имеют смысл только на фреймах, содержащих два или более окон: изменение размера окна также изменяет размер по крайней мере одного другого окна. Если на фрейме только одно окно, его размер нельзя изменить иначе, кроме как изменением размера фрейма (см. Размер фрейма).
Если не указано иное, эти функции также принимают внутренние окна в качестве аргументов. Изменение размера внутреннего окна приводит к изменению размеров его дочерних окон, чтобы они поместились в том же пространстве.
Эта функция возвращает 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 на величину delta. Если
horizontal равен nil, она изменяет высоту на delta
строк; в противном случае она изменяет ширину на delta столбцов.
Положительное delta означает увеличение окна, а отрицательное
delta — его уменьшение.
Если window равен nil, по умолчанию используется выбранное окно. Если
окно не может быть изменено требуемым образом, сигнализируется ошибка.
Необязательный аргумент ignore имеет тот же смысл, что и для
функции window-resizable выше.
Если необязательный аргумент pixelwise не равен nil,
delta будет интерпретироваться в пикселях.
Выбор того, какие границы окна изменяет эта функция, зависит от
значений опции window-combination-resize и
ограничений комбинации вовлечённых окон; в некоторых случаях она может изменять
обе границы. См. Перекомбинация окон. Для изменения размера путём перемещения только
нижней или правой границы окна используйте функцию
adjust-window-trailing-edge.
Эта функция перемещает нижнюю границу window на delta строк.
Если необязательный аргумент horizontal не равен nil, она вместо
этого перемещает правую границу на delta столбцов. Если window
равен nil, по умолчанию используется выбранное окно.
Если необязательный аргумент pixelwise не равен nil,
delta интерпретируется в пикселях.
Положительное delta перемещает границу вниз или вправо; отрицательное delta перемещает её вверх или влево. Если границу нельзя переместить на указанную в delta величину, эта функция перемещает её насколько возможно, но не сигнализирует ошибку.
Эта функция пытается изменить размер окон, соседних с перемещаемой границей. Если это по какой-либо причине невозможно (например, если это соседнее окно имеет фиксированный размер), она может изменять размер других окон.
Если значение этой опции не равно nil, Emacs изменяет размеры окон
в пикселях. В настоящее время это влияет на такие функции, как
split-window (см. Разделение окон), maximize-window,
minimize-window, fit-window-to-buffer,
fit-frame-to-buffer и
shrink-window-if-larger-than-buffer (все перечислены ниже).
Заметьте, что когда пиксельный размер фрейма не кратен его символьному
размеру, по крайней мере одно окно может быть изменено попиксельно, даже если эта
опция равна nil. Значение по умолчанию — nil.
Следующие команды изменяют размеры окон более специфическим образом. При интерактивном вызове они действуют на выбранное окно.
Эта команда подгоняет высоту или ширину 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 (см. ниже).
Если это не равно nil, fit-window-to-buffer может изменять
размеры окон по горизонтали. Если это nil (значение по умолчанию),
fit-window-to-buffer никогда не изменяет размер окон по горизонтали. Если это
only, она может изменять размер окон только по горизонтали. Любое другое
значение означает, что fit-window-to-buffer может изменять размер окон в обоих
измерениях.
Если эта опция не равна nil, fit-window-to-buffer может подгонять
фрейм под его буфер. Фрейм подгоняется тогда и только тогда, когда его корневое окно является
живым окном и эта опция не равна nil. Если это
horizontally, фреймы подгоняются только по горизонтали. Если это
vertically, фреймы подгоняются только по вертикали. Любое другое
значение, не равное nil, означает, что фреймы можно изменять в обоих измерениях.
Если у вас есть фрейм, отображающий только одно окно, вы можете подогнать этот
фрейм под его буфер с помощью команды fit-frame-to-buffer.
Эта команда подгоняет размер frame для точного отображения содержимого его буфера. frame может быть любым живым фреймом и по умолчанию равен выбранному. Подгонка выполняется только если корневое окно frame является живым.
Аргументы max-height, min-height, max-width и
min-width, если не равны nil, задают ограничения на новый размер тела
корневого окна frame. Значение, не равное nil, указанное любым
из этих аргументов, переопределяет соответствующее значение, заданное
опцией fit-frame-to-buffer-sizes, описанной ниже.
Если необязательный аргумент only равен vertically, эта функция
может изменять размер фрейма только по вертикали. Если only равен
horizontally, она может изменять размер фрейма только по горизонтали.
Поведением fit-frame-to-buffer можно управлять с
помощью двух опций, перечисленных ниже.
Эта опция может использоваться для задания полей вокруг фреймов, подгоняемых
fit-frame-to-buffer. Такие поля могут быть полезны, чтобы избежать,
например, перекрытия подогнанного фрейма с панелью задач или частями его
родительского фрейма.
Она задаёт количество пикселей, которые должны оставаться свободными слева, сверху,
справа и снизу фрейма, который должен быть подогнан. По умолчанию для каждого
направления указано nil, что означает отсутствие полей. Значение, указанное здесь,
может быть переопределено для конкретного фрейма параметром этого фрейма
fit-frame-to-buffer-margins, если он присутствует.
Эта опция задаёт границы размера для fit-frame-to-buffer.
Она задаёт максимальное и минимальное количество строк и максимальное и минимальное
количество столбцов тела корневого окна любого фрейма, который должен быть подогнан под свой
буфер. Любое значение, указанное этой опцией, будет переопределено
соответствующим аргументом fit-frame-to-buffer, если он не равен nil.
Эта команда пытается уменьшить высоту window настолько,
насколько это возможно, при этом всё ещё показывая весь его буфер, но не менее
window-min-height строк. Возвращаемое значение не равно nil, если
окно было изменено, и nil в противном случае. Если window
опущен или равен nil, по умолчанию используется выбранное окно. В противном случае
это должно быть живое окно.
Эта команда ничего не делает, если окно уже слишком мало для отображения всего своего буфера, или если какая-либо часть буфера прокручена за пределы экрана, или если окно является единственным живым окном в своём фрейме.
Эта команда вызывает fit-window-to-buffer (см. выше) для выполнения
своей работы.
Эта функция балансирует окна таким образом, чтобы предоставить больше места окнам во всю ширину и/или во всю высоту. Если window-or-frame указывает фрейм, она балансирует все окна на этом фрейме. Если window-or-frame указывает окно, она балансирует только это окно и его siblings (см. Окна и фреймы).
Эта функция пытается предоставить всем окнам на выбранном фрейме примерно одинаковую долю площади экрана. Окна во всю ширину или во всю высоту не получают больше места, чем другие окна.
Эта функция пытается сделать window настолько большим, насколько это возможно,
в обоих измерениях, без изменения размера его фрейма или удаления других окон.
Если window опущен или равен nil, по умолчанию используется выбранное
окно.
Эта функция пытается сделать window настолько маленьким, насколько это возможно,
в обоих измерениях, без его удаления или изменения размера его фрейма. Если
window опущен или равен nil, по умолчанию используется выбранное
окно.