デフォルトでは、例えばメニューやツールバーの切り替え、既定フォントの変更、あるいはそのフレームのスクロールバーの既定幅の設定などを行う際、Emacsはフレームのテキストエリア(フレームレイアウトを参照)の行数と列数を変更しないよう努めます。これらの装飾のいずれかがツールキットによって描画される場合、通常、Emacsはそのツールキットに従わざるを得ません。というのも、ツールキットは通常、装飾のサイズが変更された際に外側のフレームサイズを変更しないようにするため、結果としてフレームのテキストエリアのサイズが暗黙的に変更されてしまうからです。
実際には、これはEmacsがこうした装飾の追加や削除を要求するたびに、フレームのテキストエリアの元のサイズを復元する意図で、2回目の要求を出すことを意味します。これらの装飾のいずれかがEmacs自身によって描画される場合(LucidやMS-Windowsビルドのツールバーやタブバーなど)であっても、これらの装飾はフレームのテキストエリアに含めるべきではないため、Emacsは依然としてネイティブフレームのサイズを適宜変更し、リサイズ要求を出す必要がある場合があります。
場合によっては、例えばフレームが最大化されていたり全画面表示になっていたりする場合(デフォルトでは無効になっています)など、このような暗黙的なフレームサイズ変更が望ましくないことがあります。一般的に、ユーザーは以下のオプションで暗黙的なサイズ変更を無効にできます。
このオプションが nil
の場合、フレームのフォント、メニューバー、ツールバー、内部ボーダー、フリンジ、またはスクロールバーを変更すると、テキスト領域の列数や行数を維持するために、外側のフレームのサイズが変更されることがあります。
このオプションが t の場合、Emacs
はウィンドウマネージャとフレームの最終的な初期サイズについて合意した後、これらのいずれのケースにおいてもフレームのサイズ変更を行いません。より正確には、これは、すべての装飾が考慮され、ユーザーが要求した初期サイズが設定されるまで、Emacs
が暗黙的にフレームのサイズを変更する可能性があることを意味します。それ以降に装飾に変更が加えられても、フレームの暗黙的なサイズ変更は行われません。
このオプションがシンボル force と等しい場合、Emacs
はウィンドウマネージャとフレームの最終的な初期サイズについて合意する前であっても、フレームの暗黙的なリサイズを行いません。その結果、フレームのテキスト領域の初期サイズが、必ずしもユーザーが指定したサイズを反映するとは限りません。この値は、フレームの初期サイズが外部的な手段で決定されるタイリング型ウィンドウマネージャにおいて有用です。
このオプションの値には、フレームパラメータのリストを指定することも可能です。その場合、Emacsがウィンドウマネージャと当該フレームの最終的な初期サイズについて合意した後は、このリストに含まれるパラメータが変更されても、フレームの暗黙的なリサイズは行われません。現在このオプションで処理されるパラメータは、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のいずれかのフレームパラメータを変更すると、あたかもそのフレームにライブウィンドウが1つだけ含まれているかのように処理されます。つまり、例えば、複数のウィンドウが横並びに配置されたフレームから垂直スクロールバーを削除した場合、このオプションがnilであれば外側のフレーム幅はスクロールバー1本分だけ狭まり、このオプションがtまたはvertical-scroll-barsを含むリストであれば変更されません。
デフォルト値は、Lucid、Motif、MS-Windowsでは(tab-bar-lines
tool-bar-lines)(つまり、これらの環境でツールやタブバーを追加・削除しても外側フレームの高さは変わりません)、GTK+を含むその他のすべてのウィンドウシステムでは(tab-bar-lines)(つまり、tab-bar-linesを除く上述のパラメータのいずれかを変更すると、外側フレームのサイズが変わる可能性があります)、それ以外の場合はt(つまり、ウィンドウシステムのサポートがない場合、外側フレームのサイズが暗黙的に変更されることはありません)となります。
なお、フレームが上記に挙げたパラメータのいずれかの変更を収めるのに十分な大きさでない場合、このオプションがnilでなくても、Emacsはフレームを拡大しようとすることがあります。
また、ウィンドウマネージャは通常、外部メニューやツールバーが占有する行数が変更された際に、フレームのサイズ変更を求めることはありません。一般的に、このような「折り返し」は、ユーザーがフレームを水平方向に縮小し、メニューやツールバーのすべての要素を表示できなくなった場合に発生します。また、メジャーモードの変更によってメニューやツールバーの項目数が変わった場合にも発生することがあります。こうした折り返しは、フレームのテキスト領域の行数を暗黙的に変更する場合があり、このオプションの設定による影響は受けません。