如何在emacs中隐藏特定帧的菜单栏?

时间:2014-07-25 13:09:30

标签: emacs

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

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

可以通过menu-bar-mode启用/禁用菜单栏,但其行为与帮助说明的相同:

  

此命令适用于所有存在的帧和将来要创建的帧。

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

如何专门隐藏菜单栏?菜单栏是否有框架本地设置?

1 个答案:

答案 0 :(得分:6)

如果在图形显示器上,您可以将menu-bar-lines的{​​{3}}设置为1,如果在终端中则设置为(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)使其自动化。根据{{​​3}},after-make-frame-functions未针对初始框架运行,因此您可能还需要将其添加到after-init-hook