回答:
通常、Emacsは選択されたフレームを唯一の再利用可能なフレームと見なします。言い換えると、通常、Emacsは現在の(「選択された」)フレームを検索して、表示するバッファをすでに含んでいるウィンドウ(「再利用可能なウィンドウ」)を探すだけです。Emacsがコンパイルバッファーのフレームを再利用可能なフレームと見なすために必要なのは、次のとおりです。
(push '("\\*compilation\\*" . (nil (reusable-frames . t))) display-buffer-alist)
上記のスニペットはdisplay-buffer
、*compilation*
バッファーを表示するときにすべてのフレームを再利用可能にします。display-buffer-reuse-window
他の値reusable-frames
が受け取ることができるものを学ぶためにのドキュメントを見てください。
ただし、これは逆方向には対応しません。コンパイルウィンドウからコードバッファーを開きます。たとえば、コンパイルバッファーのリンクを押してバッファーを開くと、Emacsはコンパイルウィンドウと同じフレームでバッファーを開きます。それを変えることは別の問題です。動作がspecial-display-buffer-names
ソリューションとどのように比較されるのかわかりません。
バッファのコンパイルには常に専用のウィンドウを用意してください。これを行う1つの方法は、オプションをカスタマイズspecial-display-buffer-names
して含めること"*compilation*"
です。もう1つは、optionをカスタマイズしてspecial-display-regexps
、そのバッファー名に一致する正規表現を含めることです。("[ ]?[*][^*]+[*]"
名前がであるすべてのバッファーに一致するregexpを含めます*...*
。)
(オプションも参照してくださいspecial-display-frame-alist
。このオプションを使用すると、そのような特別なディスプレイバッファーに使用されるフレームの動作と特性を指定できます。)
Emacsはこれらの「特別表示バッファ」オプションは「時代遅れ」であると伝えますが、それらがまだサポートされていることに感謝します。彼らはあなたがしたいことをする簡単な方法を提供します。
Emacsが今好むことに苦労したい場合は、display-buffer-alist
代わりにオプションをカスタマイズしてください。考え方は基本的に同じです(それは単に醜く、より複雑なユーザーオプションです)。
compile.el
が変更されている可能性があります。バッファ表示の特定のフレームをターゲットとするカスタム関数の変更/改善: stackoverflow.com/questions/18346785/… 見て、最初のリンクがほぼあなたが探しているものであるかどうかを確認してください-誰もが知っている、それがなくても機能する可能性があります変更を加えます。