删除终端窗口中的 GNU Emacs 菜单栏

删除终端窗口中的 GNU Emacs 菜单栏

如何在终端窗口中摆脱 Emacs 的菜单栏?

标准答案是

(when (not (display-graphic-p))
  (menu-bar-mode -1))

但是init.el,这个解决方案并不好,因为它只是在事后删除了菜单栏。你仍然会在一瞬间看到它。这很烦人。

查看源代码,startup.el我没有看到此问题的明显解决方案。我认为唯一的方法是使用before-init-hook。也许这可以解决问题?

(add-hook 'before-init-hook
          (lambda ()
            (setq emacs-basic-display t)))

但是这个钩子在其他初始化文件被评估之前运行init.el,那么应该如何使用它呢?

答案1

我发现这似乎取决于终端窗口的大小。我在terminatorxterm上进行了测试,在这两种情况下,增加窗口大小都会阻止菜单栏在emacs加载时出现。想想看。具体来说,终端宽度> = 88似乎会阻止菜单缓冲区出现。高度似乎无关紧要。因此,您可以更改终端窗口的默认大小,这可能会解决您的问题。

显然,这不是一个理想的解决方案,如果您是从 tty 而不是终端仿真器运行,这也没有帮助,但这可能是您在不深入研究emacs源代码的情况下能得到的最好的结果,我想您不会发现为摆脱这种小烦恼而付出的努力是值得的。

答案2

我怀疑是否有办法一开始就抑制它,至少抑制您提到的短暂出现。您可以尝试自定义initial-frame-alist,但我怀疑这是否会在这里产生任何效果。我试过emacs -nw -f menu-bar-mode,这会关闭菜单栏,但同样,它首先会短暂出现。

相关内容