如何检查 Emacs 是否处于 GUI 模式(并且仅执行“tool-bar-mode”)?

如何检查 Emacs 是否处于 GUI 模式(并且仅执行“tool-bar-mode”)?

我的文件中有这一行.emacs

(tool-bar-mode 0)

因为我讨厌我的 GUI emacs 中的工具栏(/Applications/Emacs.app/Contents/MacOS/Emacs)。

但是当我在终端中启动其他基于文本的 emacs 时(/opt/local/bin/emacs),它会抱怨该命令:

Symbol's function definition is void: tool-bar-mode

我如何添加if条件以便tool-bar-mode仅当我在 GUI emacs 中时才执行命令?

谢谢!

答案1

好的,我自己找到了。只需添加

;; turn off toolbar
(if window-system
    (tool-bar-mode 0))

答案2

另一种方法是:

 (if (functionp 'tool-bar-mode) (tool-bar-mode 0))

像这样,只有当函数存在时才会调用它

答案3

它在 Linux 上对我来说毫无问题。你可以尝试nil-1代替0

(tool-bar-mode nil)

如果你这么做,会发生什么emacs -nw

答案4

window-system变量用作布尔值是已弃用。相反,使用display-graphic-p或任何其他display-*-p 报告框架的特定 UI 相关功能的谓词。

如果你希望你的代码与以前版本的 Emacs 向后兼容,那么以下兼容性包装器是你的最佳选择:

(if (< emacs-major-version 23)
    (or window-system (getenv "DISPLAY"))
  (display-graphic-p))

相关内容