我启动一个 emacs 守护进程,从长期 GUI emacs 框架和短期 tty emacs 框架连接到该守护进程。我目前在 .emacs.d/init.el 中使用以下内容:
(if (not window-system) (menu-bar-mode 0))
不幸的是,这是一个全局设置,因此它适用于所有框架。我更希望只在我的 GUI 框架上显示菜单;菜单在 tty 框架上占用了太多空间。
有没有办法使这个设置框架特定?
谢谢。
答案1
该设置是特定于帧的:每个帧都有一个menu-bar-lines
参数。实际上menu-bar-mode
循环遍历所有帧来设置此参数。要为当前帧设置参数:
(set-frame-parameter (selected-frame) 'menu-bar-lines 1) ; or 0 for off
下一步是每次创建帧时设置参数:
(defun set-frame-menu-bar-lines (frame)
(let ((want-menu (memq (framep frame) '(x w32 ns))))
(set-frame-parameter frame 'menu-bar-lines (if want-menu 1 0))))
(add-hook 'after-make-frame-functions 'set-frame-menu-bar-lines)