我有我的.emacs文件中的这一行:
(tool-bar-mode 0)
因为我讨厌我的GUI emacs中的工具栏( /Applications/Emacs.app/Contents/MacOS/Emacs )。
但是当我在terminal( /opt/local/bin/emacs )启动我的其他基于文本的emacs时,它会抱怨这个命令:
Symbol's function definition is void: tool-bar-mode
我如何添加一个if条件,以便它只在我使用GUI emacs时执行tool-bar-mode命令?
谢谢!
好吧,我自己find了。 只需添加
;; turn off toolbar (if window-system (tool-bar-mode 0))
另一种做法是:
(if (functionp 'tool-bar-mode) (tool-bar-mode 0))
像这样,函数只有在存在时才被调用
它在Linux上没有任何投诉就可以工作。 你可以尝试nil或-1而不是0 :
(tool-bar-mode nil)
如果你做emacs -nw会怎么样?
不推荐使用window-systemvariables作为布尔值。 相反,使用display-graphic-p或其他任何display-*-p报告display-*-p报告帧特定的UI相关function。
如果你希望你的代码向后兼容以前的Emacs版本,那么下面的兼容性包装是要走的路:
(if (< emacs-major-version 23) (or window-system (getenv "DISPLAY")) (display-graphic-p))