GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Resizing-Windows.html ・ emacs-doc.conao3.com

29.5 ウィンドウのサイズ変更

本節では、フレームのサイズを変更せずにウィンドウのサイズを変更する関数について説明します。ライブウィンドウは重なり合わないため、これらの関数が意味を持つのは、2つ以上のウィンドウを含むフレームに限られます。ウィンドウのサイズを変更すると、少なくとももう1つのウィンドウのサイズも変化するためです。フレームにウィンドウが1つしかない場合、フレーム自体のサイズを変更しない限り、そのウィンドウのサイズを変更することはできません(フレームサイズを参照)。

特記のない限り、これらの関数は内部ウィンドウも引数として受け付けます。内部ウィンドウのサイズを変更すると、その子ウィンドウも同じ領域に収まるようにサイズが変更されます。

関数: window-resizable window delta &optional horizontal ignore pixelwise

この関数は、window のサイズを delta 行分垂直方向に変更できる場合に delta を返します。オプション引数 horizontal が nil 以外の場合、代わりに window を delta 列分水平方向にリサイズできる場合に delta を返します。実際にウィンドウサイズを変更することはありません。

window が nil の場合、選択中のウィンドウがデフォルトとなります。

delta の正の値は、ウィンドウをその行数または列数分だけ拡大できるかを確認することを意味し、delta の負の値は、ウィンドウをその行数または列数分だけ縮小できるかを確認することを意味します。delta が 0 以外の場合、戻り値 0 はウィンドウのサイズ変更ができないことを意味します。

通常、変数 window-min-height と window-min-width は、許容される最小のウィンドウサイズを指定します(ウィンドウサイズ を参照)。ただし、オプション引数 ignore が nil 以外の場合、この関数は window-min-height と window-min-width、および window-size-fixed を無視します。代わりに、ウィンドウの最小高さを上部および下部の装飾と1行分のテキストの合計とし、最小幅を左右の装飾と2列分のテキストの合計として扱います。

オプション引数 pixelwise が nil 以外の場合、delta はピクセルとして解釈されます。

関数: window-resize window delta &optional horizontal ignore pixelwise

この関数は、window を delta 刻みでリサイズします。horizontal が nil の場合は高さを delta 行分変更し、それ以外の場合は幅を 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 は上方または左方向に移動させます。エッジを 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 であっても、少なくとも1つのウィンドウがピクセル単位でリサイズされることがあります。デフォルト値は nil です。

以下のコマンドは、より詳細な方法でウィンドウのサイズを変更します。対話的に実行した場合は、選択中のウィンドウに対して操作が行われます。

コマンド: fit-window-to-buffer &optional window max-height min-height max-width min-width preserve-size

このコマンドは、window の高さまたは幅を、内部のテキストに合わせて調整します。window のサイズ変更に成功した場合は non-nil を、それ以外の場合は 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 以外の場合、この関数は fit-frame-to-buffer(後述)を呼び出すことで、window のフレームをその内容に合わせてリサイズしようとします。

ユーザーオプション: 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 以外の値は、フレームを両方向でリサイズできることを意味します。

ウィンドウを1つだけ表示するフレームがある場合、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(フレームサイズ を参照)が non-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の挙動は、次に挙げる2つのオプションを用いて制御できます。

ユーザーオプション: fit-frame-to-buffer-margins

このオプションを使用すると、fit-frame-to-buffer で調整されるフレームの周囲にマージンを指定できます。このようなマージンは、例えばリサイズ後のフレームがタスクバーや親フレームの一部に重なるのを防ぐ際に有用です。

適合させるフレームの左、上、右、下に確保するピクセル数を指定します。デフォルトではそれぞれ nil が指定されており、これは余白を設けないことを意味します。ここで指定した値は、特定のフレームに fit-frame-to-buffer-margins パラメータが存在する場合、そのパラメータによって上書きされます。

ユーザーオプション: fit-frame-to-buffer-sizes

このオプションは、fit-frame-to-buffer のサイズ範囲を指定します。バッファに適合させる任意のフレームのルートウィンドウ本体における、最大・最小行数および最大・最小列数を指定します。このオプションで指定した値は、nil 以外の場合、fit-frame-to-buffer の対応する引数によって上書きされます。

コマンド: shrink-window-if-larger-than-buffer &optional window

このコマンドは、window の高さを可能な限り低くしつつ、バッファ全体を表示し、かつ window-min-height 行以上を確保することを試みます。戻り値は、ウィンドウがリサイズされた場合は non-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 が指定された場合は、選択中のウィンドウがデフォルトとなります。