ユーザーのコマンドの結果として、任意のバッファーが表示またはポップアップされるのは、Emacsでは一般的な処理です。コマンドがこれを行うには、いくつかの異なる方法があります。
C-x C-f
(find-file
)のような多くのコマンドは、デフォルトでは選択されたウィンドウを“乗っ取って”バッファーを表示します。
選択されたウィンドウを乗っ取らずに、たとえばウィンドウを分割して新しいウィドウを作り、そこにバッファーを表示するといったような、利口な表示を試みるコマンドがいくつかあります。さまざまなヘルプコマンド(ヘルプ)を含む、そのようなコマンドは内部的にdisplay-buffer
を呼び出すことにより機能します。詳細は、display-buffer
が機能する方法を参照してください
他のコマンドはdisplay-buffer
と同じことを行いますが、それに加えてバッファーの編集を開始できるように、表示されたウィンドウを選択します。コマンドM-g
M-n (next-error
)が1つの例です(Compilationモードを参照してください)。そのようなコマンドは、内部的に関数pop-to-buffer
を呼び出すことにより機能します。Switching to a Buffer in a Window in The Emacs Lisp Reference
Manualを参照してください。
名前が-other-window
で終わるコマンドは、display-buffer
と同じように振る舞います。例外はそれらが決して選択されたウィンドウに表示しない点です。これらのコマンドのいくつかは、プレフィクスキーC-x
4にバインドされています(他のウィンドウでの表示を参照してください)。
名前が-other-frame
で終わるコマンドは、display-buffer
と同じように振る舞います。例外は、i)選択されたウィンドウに決して表示しない、ii)望むバッファーを表示するために新たなフレームを作成するか、他のフレーム上のウィンドウを使用する、という2点です。これらのコマンドのいくつかは、プレフィクスキーC-x
5にバインドされています。
あるウィンドウがそのカレントバッファーにたいして“専用(dedicated)”とされている場合があります。Dedicated
Windows in The Emacs Lisp Reference
Manualを参照してください。そのような場合のほとんどでは、display-buffer
は専用のウィンドウの再利用を避けるでしょう。専用かどうかはモードラインの‘d’の表示で示されます(モードラインを参照)。ウィンドウに表示されるバッファーの変更すべてを防ぐように、ウィンドウを強く専用(strongly
dedicated)にすることもできます。この場合にはモードラインに‘D’が表示されます。
通常だと専用ウィンドウには何か特別なバッファーに使用されますが、インタラクティブに専用化できれば便利な場合もあるかもしれません。たとえばM-g
M-n
next-error
でエラーを閲覧する際に、あなたが参照していたいバッファーが新たに表示されたソースコードに置き換えられてしまうかもしれません。ウィンドウをソンバッファー専用にすれば、(display-buffer
経由の)コマンドは他のウィンドウの使用を選択するようになります。
選択されたウィンドウにたいして、そのカレントバッファーが専用かどうかを切り替えるには、コマンドC-x w d
(toggle-window-dedicated
)を使用します。プレフィクス引数を指定すると、ウィンドウは強く専用になります。