* compilation *バッファーを固定して、単一のフレーム/ウィンドウを残さないようにするにはどうすればよいですか?


7

*compilation*バッファを常に独自のフレームに留めておきたいと思います。ただし、現在M-x compile、別のフレーム/ウィンドウから実行すると、バッファもそこの新しいウィンドウにポップアップします。*compilation*バッファを表示している既存のフレームのみをemacsに代わりに発生させるにはどうすればよいですか?


これは、3年前にEmacsのクエストの最初に書き上げた、あなたの質問に対する答えだと思います。stackoverflow.com / a / 19415289/2112489 のコードの該当するセクションcompile.elが変更されている可能性があります。バッファ表示の特定のフレームをターゲットとするカスタム関数の変更/改善: stackoverflow.com/questions/18346785/… 見て、最初のリンクがほぼあなたが探しているものであるかどうかを確認してください-誰もが知っている、それがなくても機能する可能性があります変更を加えます。
法律家、2016

回答:


5

通常、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ソリューションとどのように比較されるのかわかりません。


2

バッファのコンパイルには常に専用のウィンドウを用意してください。これを行う1つの方法は、オプションをカスタマイズspecial-display-buffer-namesして含めること"*compilation*"です。もう1つは、optionをカスタマイズしてspecial-display-regexps、そのバッファー名に一致する正規表現を含めることです。("[ ]?[*][^*]+[*]"名前がであるすべてのバッファーに一致するregexpを含めます*...*。)

(オプションも参照してくださいspecial-display-frame-alist。このオプションを使用すると、そのような特別なディスプレイバッファーに使用されるフレームの動作と特性を指定できます。)

Emacsはこれらの「特別表示バッファ」オプションは「時代遅れ」であると伝えますが、それらがまだサポートされていることに感謝します。彼らはあなたがしたいことをする簡単な方法を提供します。

Emacsが今好むことに苦労したい場合は、display-buffer-alist代わりにオプションをカスタマイズしてください。考え方は基本的に同じです(それは単に醜く、より複雑なユーザーオプションです)。


反対票を説明しますか?この答えに何か間違っていますか?
2016

1
それはおそらく時代遅れのオプションとスナーク( "suffer")のためです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.