バッファを切り替えるとき、emacsが自動的にフレームを切り替えるのを防ぎます


13

バッファーを切り替えると、バッファーが既に開かれている場合、emacsは既存のフレームに切り替えます。

私はidoを使用して切り替えるときにそれを防ぐ方法を見つけました:

(setq ido-default-buffer-method 'selected-window)

しかし、それだけでは十分ではありません。たとえば、Lispエラーが発生した場合、emacsは自動的にバッファ* Backtrace *に切り替え、すでに開いている場合はフレームを切り替えます。

emacsが既存のフレームに完全に切り替わるのを防ぐ方法はありますか?

回答:


3

このオプションはありません。

バッファを見つけるための機能がないあなたはすべてのフレームまたは現在のフレームだけに見えるようにするかどうかを指定することができます:

(get-buffer-window &optional BUFFER-OR-NAME ALL-FRAMES)

ただし、引数の実装はswitch-to-buffer0を渡します。ALL-FRAMESつまり、すべてのフレームを検索します。

この動作をグローバルに防止したい場合は、:aroundアドバイスを使用get-buffer-windowしてその引数を置き換えることができると思います...しかし、それは他のことを壊すと思われます。


それが私が恐れていたことです。get-buffer-windowの周辺でadd-adviceを試すこともできますが、広く使用されている関数のアドバイスはあまり好きではありません。
ムッシュー

ええ、トラブルを引き起こす可能性が高いようです。popwin特別なバッファを処理する方法としてパッケージをチェックアウトしたい場合があります-それに加えて、すでに見つけたido configで十分かどうかはわかりません。
グルーカス14年

1
実際、ここでボートに乗り遅れたかもしれません。「ウィンドウの選択」および「アクション関数の表示」に関するEmacsのマニュアルセクションをご覧ください。特に、の使用はinhibit-switch-frame便利なようです。(これらのオプションを試す機会はまだありません。)
glucas 14年


おかげで、そのSEスレッドは非常に役立ちます。ドキュメントdisplay-bufferとは、display-buffer-alist私の頭の痛くなりますが、私は解決策を見つけるまで、それは時間の問題です。
ムッシュ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.