Как проверить, находится ли Emacs в режиме графического интерфейса пользователя (и только потом запускать `tool-bar-mode`)?

У меня есть эта строка в моем .emacs файл:

(tool-bar-mode 0)

потому что я ненавижу панели инструментов в моем графическом интерфейсе 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 команда только когда я в графическом интерфейсе Emacs?

Спасибо!

4 ответа

Ладно нашел сам. Просто добавь

;; 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-system переменная как логическое значение устарела. Вместо этого используйте display-graphic-p или любой другой display-*-pпредикаты, которые сообщают специфические возможности UI фрейма отчета.

Если вы хотите, чтобы ваш код был обратно совместим с предыдущими версиями Emacs, то вам подойдет следующая оболочка совместимости:

(if (< emacs-major-version 23)
    (or window-system (getenv "DISPLAY"))
  (display-graphic-p))
Другие вопросы по тегам