Как проверить, находится ли 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))