Изменение размеров окон
В этом разделе описаны функции изменения размера окна без изменения размера его фрейма. Поскольку живые окна не перекрываются, эти функции имеют смысл только для фреймов, содержащих два или более окна: изменение размера окна также изменяет размер как минимум одного другого окна. Если во фрейме находится только одно окно, изменить его размер можно только изменив размер фрейма (см. Размер фрейма).
Если не указано иное, эти функции также принимают внутренние окна в качестве аргументов. Изменение размера внутреннего окна приводит к изменению размеров его дочерних окон так, чтобы они занимали ту же область.
- Функция: 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, эта функция перемещает её настолько, насколько возможно, но не выдает ошибку.
Эта функция пытается изменить размеры окон, прилегающих к перемещаемой границе. Если по какой-либо причине это невозможно (например, если размер прилегающего окна фиксирован), она может изменить размеры других окон.
- Пользовательский параметр: 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 является живым окном. В оконных системах, использующих подсказки размера, точной подгонки часто можно добиться тогда и только тогда, когда
frame-resize-pixelwise(см. Размер фрейма) не равноnil.Аргументы 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-margins
-
Этот параметр позволяет задать поля вокруг фреймов, подгоняемых с помощью
fit-frame-to-buffer. Такие поля могут быть полезны, например, чтобы измененный в размере фрейм не перекрывал панель задач или части родительского фрейма.Параметр задает количество пикселей, которые следует оставить свободными слева, сверху, справа и снизу от подгоняемого фрейма. Значение по умолчанию задает
nilдля каждой стороны, то есть поля не используются. Указанное здесь значение можно переопределить для конкретного фрейма параметромfit-frame-to-buffer-marginsэтого фрейма, если он задан.
- Пользовательский параметр: fit-frame-to-buffer-sizes
Этот параметр задает границы размеров для
fit-frame-to-buffer. Он задает минимальное и максимальное число строк, а также минимальное и максимальное число столбцов основной области корневого окна любого фрейма, подгоняемого под его буфер. Любое значение, заданное этим параметром, переопределяется соответствующим аргументомfit-frame-to-buffer, если он не равенnil.
- Команда: shrink-window-if-larger-than-buffer &optional window
-
Эта команда пытается уменьшить высоту window настолько, насколько возможно, сохраняя при этом видимым весь его буфер, но не ниже
window-min-heightстрок. Возвращаемое значение не равноnil, если размер окна был изменен, и равноnilв противном случае. Если window не указан или равенnil, по умолчанию используется выбранное окно. В противном случае это должно быть живое окно.Эта команда ничего не делает, если окно уже слишком мало, чтобы отобразить весь буфер, если какая-либо часть буфера прокручена за пределы экрана или если окно является единственным живым окном во фрейме.
Для выполнения своей работы эта команда вызывает
fit-window-to-buffer(см. выше).
- Команда: balance-windows &optional window-or-frame
Эта функция балансирует окна так, чтобы окна на всю ширину и/или высоту получали больше места. Если window-or-frame указывает на фрейм, функция балансирует все окна этого фрейма. Если window-or-frame указывает на окно, она балансирует только это окно и его соседние окна (см. Окна и фреймы).
- Команда: balance-windows-area
Эта функция пытается предоставить всем окнам выбранного фрейма примерно одинаковую долю экранной области. Окнам на всю ширину или высоту не выделяется больше места, чем остальным окнам.
- Команда: maximize-window &optional window
Эта функция пытается максимально увеличить window в обоих направлениях, не изменяя размер его фрейма и не удаляя другие окна. Если window не указан или равен
nil, по умолчанию используется выбранное окно.
- Команда: minimize-window &optional window
Эта функция пытается максимально уменьшить window в обоих направлениях, не удаляя его и не изменяя размер его фрейма. Если window не указан или равен
nil, по умолчанию используется выбранное окно.
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/Resizing-Windows.html