Изменение размеров окон
В этом разделе описываются функции изменения размера окна без изменения размера его рамки. Поскольку живые окна не перекрываются, эти функции имеют смысл только для рамок, содержащих два или более окна: изменение размера одного окна также изменяет размер по крайней мере одного другого окна. Если в рамке находится только одно окно, его размер нельзя изменить, кроме как изменив размер рамки (см. Размер рамки).
За исключением случаев, когда указано иное, эти функции также принимают внутренние окна в качестве аргументов. Изменение размера внутреннего окна приводит к изменению размера его дочерних окон для соответствия тому же пространству.
- Функция: 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