バッファを表示する関数は、特定のウィンドウをそのバッファの専用としてマークすることで、そのウィンドウを使用しないように指定できます。display-buffer(バッファ表示用のウィンドウの選択を参照)は、別のバッファを表示するために専用ウィンドウを使用することはありません。get-lru-windowおよびget-largest-window(ウィンドウの循環順序を参照)は、dedicated引数がnon-nilである場合、専用ウィンドウを候補として考慮しません。専用ウィンドウに関するset-window-buffer(バッファとウィンドウを参照)の動作はわずかに異なります。詳細は以下を参照してください。
ウィンドウからバッファを、あるいはフレームからウィンドウを削除する関数は、操作対象のウィンドウが専用である場合に特殊な挙動を示すことがあります。ここでは、(1)
ウィンドウがフレーム上の唯一のウィンドウではない、(2) ウィンドウがフレーム上の唯一のウィンドウであるが、同一端末上に他のフレームが残っている、(3)
ウィンドウが同一端末上の唯一のフレームにおける唯一のウィンドウである、(4) 専用化の値が side
である、という4つの基本ケースを区別します(サイドウィンドウでのバッファ表示を参照)。
具体的には、delete-windows-on(ウィンドウの削除を参照)は、関連するフレームを削除することでケース(2)を処理し、そのフレームの唯一のウィンドウに別のバッファを表示することでケース(3)および(4)を処理します。バッファが破棄された際に呼び出される関数replace-buffer-in-windows(バッファとウィンドウを参照)は、ケース(1)ではウィンドウを削除し、それ以外の場合はdelete-windows-onと同様に動作します。
bury-buffer(バッファリストを参照)が選択中のウィンドウ(非表示にするバッファが表示されているウィンドウ)に対して動作する場合、ケース(2)ではframe-auto-hide-function(ウィンドウの終了を参照)を呼び出して選択中のフレームを処理します。その他の2つのケースは、replace-buffer-in-windowsと同様に処理されます。
この関数は、window がそのバッファ専用である場合は non-nil を、そうでない場合は nil
を返します。より正確には、戻り値は、window に対する set-window-dedicated-p の最後の呼び出しで代入された値、あるいは window を引数としてその関数が一度も呼び出されなかった場合は nil となります。window
のデフォルト値は、選択中のウィンドウです。
この関数は、flag が nil でない場合に
window
をそのバッファ専用としてマークし、そうでない場合は専用としてマークしません。対話的には、C-x w d
(toggle-window-dedicated)
コマンドを使用して同様の操作を行うことができます。
特殊なケースとして、flag が t
である場合、window はそのバッファに強く専用化されます。set-window-buffer
は、操作対象のウィンドウがそのバッファに強く専用化されており、かつ表示を要求されたバッファをまだ表示していない場合にエラーを通知します。その他の関数では、t を nil 以外の値と区別して扱うことはありません。
また、適切な dedicated アクションアリスタのエントリを指定することで、display-buffer が作成するウィンドウをそのバッファ専用としてマークさせることもできます(バッファ表示用のアクションアリスタを参照)。