【问题标题】:Prevent Emacs from opening a buffer in a new frame防止 Emacs 在新帧中打开缓冲区
【发布时间】:2014-10-17 14:58:55
【问题描述】:

我通常在几个缓冲区之间切换;我通常选择另一个缓冲区移动到C-x b <name of buffer>。这可以。但是,如果我从“缓冲区”菜单中选择一个缓冲区,那么它会在一个新框架中打开,这是我不想要的。如何防止 Emacs 在新框架中打开缓冲区 - 这是菜单栏行为还是缓冲区行为?

我正在使用:

GNU Emacs 24.3.1 (x86_64-pc-linux-gnu, X toolkit, Xaw3d scroll bars)
of 2014-03-08 on lamiak, modified by Debian

在 Ubuntu 14.04 中

【问题讨论】:

  • “框架”可能是指 Emacspeak 中的“窗口”。
  • menu-bar-select-buffer-function 的值是多少? (通过C-h v menu-bar-select-buffer-function RET 查找。)我也在运行 Emacs 24.3,对我来说,switch-to-buffer 在所选窗口中显示缓冲区(这似乎是您想要的行为)。
  • 除了之前的cmets:从emacs -Q(没有init文件)开始时,你看到这个行为了吗?如果不是,请递归地对分您的初始化文件,直到找到罪魁祸首代码。这样做很快。这是进行的一般方法。在这种情况下,也许你会发现你的 init 文件只是设置了menu-bar-select-buffer-function 什么的,但它仍然是要走的路,找到你在脚下射击自己的地方。
  • 非常感谢 - 事实证明我启用了 menu-bar+,它重新定义了几个变量,包括 menu-bar-select-buffer-function。所以我用setq 语句重新定义了那个变量。现在一切都很好。

标签: emacs buffer frames menubar


【解决方案1】:

当您单击“缓冲区”后跟打开缓冲区的名称时运行的函数由名为menu-bar-select-buffer-function 的变量控制。您要么直接在 .emacs 文件中修改此变量,要么使用重新定义它的附加包:默认情况下,menu-bar-select-buffer-function 设置为 switch-to-buffer

在所选窗口中显示缓冲区 BUFFER-OR-NAME。

这似乎是你想要的行为,所以添加一个简单的

(setq menu-bar-select-buffer-function 'switch-to-buffer)

到您的 .emacs 文件应该可以解决问题。

【讨论】:

    猜你喜欢
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    相关资源
    最近更新 更多