切换缓冲区时,请防止emacs自动切换帧


13

当我切换缓冲区时,如果该缓冲区已经打开,则emacs将切换到现有框架。

我发现在使用ido切换时如何防止这种情况:

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

但这还不够:例如,如果有一个Lisp错误,emacs将自动切换到* Backtrace *缓冲区,并在已经打开时切换帧。

有没有办法完全阻止emacs切换到现有框架?

Answers:


3

似乎没有为此的选择。

查找缓冲区的功能允许您指定是在所有帧中查找还是仅在当前帧中查找:

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

但是,switch-to-buffer传递ALL-FRAMES参数的实现为0 ,这意味着它将在所有帧中查找。

我想如果您确实想在全球范围内阻止这种行为,则可以使用:around建议get-buffer-window来代替该论点...但是我怀疑这会破坏其他事情。


这就是我所担心的。我可能会尝试围绕get-buffer-window的添加建议,但是我不太喜欢建议广泛使用的功能。
MonsieurBanana 2014年

是的,似乎可能会引起麻烦。您可能想签出该popwin软件包,以作为处理特殊缓冲区的一种方法-不确定是否已经加上您已经找到的ido配置是否足够。
glucas 2014年

1
实际上,我可能错过了这里的船。您应该看一下“选择窗口”和“显示动作功能”上的Emacs手册部分。特别地,使用inhibit-switch-frame似乎很有用。(我还没有机会尝试这些选项。)
glucas 2014年


谢谢,SE线程非常有帮助。对于文档display-bufferdisplay-buffer-alist使我的头不疼,但直到我找到一个解决方案,这只是时间早晚的问题。
MonsieurBanana
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.