特定のウィンドウがそのウィンドウのバッファーにたいして専用(dedicated)であるとマークすることにより、バッファーを表示する関数にそのウィンドウを使用しないように告げることができます。display-buffer
(バッファーを表示するウィンドウの選択を参照)は、他のバッファーの表示に専用バッファーを決して使用しません。
get-lru-window
とget-largest-window
(ウィンドウのサイクル順を参照)は、dedicated引数が非nil
のときは専用ウィンドウを候補とはみなしません。専用ウィンドウにたいする配慮に関してset-window-buffer
(バッファーとウィンドウを参照)の挙動は若干異なります。以下を参照してください。
ウィンドウからのバッファー削除、およびフレームからのウィンドウ削除を意図した関数は、処理するウィンドウが専用ウィンドウのときは特別な挙動を示す可能性があります。ここでは4つの基本ケース、すなわち(1)そのウィンドウがフレーム上で唯一のウィンドウの場合、(2)ウィンドウはフレーム上で唯一のウィンドウだが同一端末上に別のフレームがある場合、(3)そのウィンドウが同一端末上で唯一のフレームの唯一のウィンドウの場合、(4)
dedicated(専用ウィンドウ)の値がside
(サイドウィンドウへのバッファーの表示を参照)の場合を明確に区別することにします。
特にdelete-windows-on
(ウィンドウの削除を参照)は関連するフレームを削除する際にケース(2)を、フレーム上で唯一のウィンドウに他のバッファーを表示する際にケース(3)と(4)を処理します。バッファーがkillされる際に呼び出される関数replace-buffer-in-windows
(バッファーとウィンドウを参照)は、ケース(1)ではウィンドウを削除して、それ以外ではdelete-windows-on
のように振る舞います。
bury-buffer
(バッファーリストを参照)が選択されたウィンドウを操作する際は、選択されたフレームを処理するためにframe-auto-hide-function
(ウィンドウのquitを参照)を呼び出すことによってケース(2)を取り扱います。他の2つのケースはreplace-buffer-in-windows
と同様に処理されます。
この関数はwindowがそのバッファーにたいして専用なら非nil
、それ以外はnil
をリターンする。より正確には最後のset-window-dedicated-p
呼び出しで割り当てられた値、set-window-dedicated-p
がwindowを引数として呼び出されたことがなければnil
がリターン値となる。windowのデフォルトは選択されたウィンドウ。
この関数はflagが非nil
ならwindowがそのバッファーに専用、それ以外は非専用とマークする。コマンドC-x
w d (toggle-window-dedicated
)でインタラクティブに同じことを行うことができる。
特別なケースとしてflagがt
の場合には、windowはそのバッファーにたいして特に専用(strongly
dedicated)になる。set-window-buffer
は処理対象のウィンドウが特に専用のウィンドウで、かつ表示を要求されたバッファーが表示済みでなければエラーをシグナルする。その他の関数はt
を他の非nil
値と区別して扱わない。
適切なdedicated
アクションalistエントリー(バッファー表示用のアクションalistを参照)を与えることにより、display-buffer
が作成するウィンドウにたいしてそのバッファー専用であるとマークするよう指示することもできます。