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, эта функция перемещает её настолько, насколько возможно, но не выдает ошибку.

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

Пользовательский параметр: 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

Spec-Zone.ru

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