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