Spec-Zone.ru › Elisp

Неявное изменение размера фрейма

По умолчанию Emacs пытается сохранить неизменным количество строк и столбцов области текста фрейма, например, при переключении меню или панели инструментов, изменении шрифта по умолчанию или изменении ширины полосы прокрутки. Это означает, что в таком случае Emacs должен попросить менеджер окон изменить размер окна фрейма, чтобы вместить изменение размера.

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

Параметр пользователя: frame-inhibit-implied-resize

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

Значение этого параметра также может быть списком параметров фрейма. В этом случае неявное изменение размера запрещается для изменения параметра, который присутствует в этом списке. В настоящее время этот параметр обрабатывает параметры font, font-backend, internal-border-width, menu-bar-lines и tool-bar-lines.

Изменение любого из параметров фрейма scroll-bar-width, scroll-bar-height, vertical-scroll-bars, horizontal-scroll-bars, left-fringe и right-fringe обрабатывается так, как если бы фрейм содержал только одно активное окно. Это означает, например, что удаление вертикальных полос прокрутки в фрейме, содержащем несколько окон рядом, уменьшит ширину внешней рамки на ширину одной полосы прокрутки при условии, что этот параметр nil, и сохранит её неизменной, если этот параметр t или список, содержащий vertical-scroll-bars.

Значение по умолчанию — (tab-bar-lines tool-bar-lines) для Lucid, Motif и MS-Windows (что означает, что добавление/удаление панели инструментов или вкладок там не изменяет высоту внешней рамки), (tab-bar-lines) на всех других системах окон, включая GTK+ (что означает, что изменение любого из перечисленных выше параметров, за исключением tab-bar-lines, может изменить размер внешней рамки) и t в противном случае (что означает, что размер внешней рамки никогда не изменяется неявно, если нет поддержки системы окон).

Обратите внимание, что если фрейм недостаточно велик, чтобы вместить изменение любого из перечисленных выше параметров, Emacs может попытаться увеличить фрейм, даже если этот параметр не 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/Implied-Frame-Resizing.html

Spec-Zone.ru

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