У меня есть эта строка в моем .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?
Спасибо!
Хорошо, нашел сам. Просто добавь
;; 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
определяет, какие возможности фрейма отчета связаны с пользовательским интерфейсом.
Если вы хотите, чтобы ваш код был обратно совместим с предыдущими версиями Emacs, тогда вам подойдет следующая оболочка совместимости:
(if (< emacs-major-version 23)
(or window-system (getenv "DISPLAY"))
(display-graphic-p))