我已将 emacs 设置为在登录时作为守护程序启动( emacs --daemon )。编辑文件时,我要么启动图形客户端( emacsclient ),要么在终端中工作时,我使用终端客户端( emacsclient -t )。

我想在图形客户端中启用菜单栏,但我不想在终端客户端中启用它,因为我不喜欢它在终端中的行为。

菜单栏可以通过 menu-bar-mode 启用/禁用,但其行为如帮助所述:



这意味着,当我运行图形客户端并启动终端客户端时,终端客户端会显示菜单栏,当我禁用它时,它也会在图形客户端中被禁用。

如何专门从框架中隐藏菜单栏?菜单栏有框架本地设置吗?

最佳答案

如果在图形显示上,您可以将 menu-bar-linesframe parameter 设置为 1,如果在终端中,则设置为 0,如 (display-graphic-p) 所检查的:

(defun contextual-menubar (&optional frame)
  "Display the menubar in FRAME (default: selected frame) if on a
graphical display, but hide it if in terminal."
  (interactive)
  (set-frame-parameter frame 'menu-bar-lines (if (display-graphic-p frame) 1 0)))

您可以 (add-hook 'after-make-frame-functions 'contextual-menubar) 使其自动。根据 this threadafter-make-frame-functions 不会针对初始帧运行,因此您可能还需要将其添加到 after-init-hook 中。

关于emacs - 如何在 emacs 的特定框架中隐藏菜单栏?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24956521/

10-12 05:51