如何检查Emacs是否处于GUI模式(然后才执行`tool-bar-mode`)?

我有我的.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))