ユーザーのコマンドの結果として、任意のバッファーが表示またはポップアップされるのは、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にバインドされています。
Sometimes, a window is “dedicated” to its current buffer. See Dedicated
Windows in The Emacs Lisp Reference Manual. display-buffer
will avoid reusing dedicated windows most of the time. This is indicated by
a ‘d’ in the mode line (see モードライン). A window can also be
strongly dedicated, which prevents any changes to the buffer displayed in
the window. This is indicated by a ‘D’ in the mode line.
通常だと専用ウィンドウには何か特別なバッファーに使用されますが、インタラクティブに専用化できれば便利な場合もあるかもしれません。たとえばM-g
M-n
next-error
でエラーを閲覧する際に、あなたが参照していたいバッファーが新たに表示されたソースコードに置き換えられてしまうかもしれません。ウィンドウをソンバッファー専用にすれば、(display-buffer
経由の)コマンドは他のウィンドウの使用を選択するようになります。
You can use the command C-x w d (toggle-window-dedicated
) to
toggle whether the selected window is dedicated to the current buffer. With
a prefix argument, it makes the window strongly dedicated.