Назад | Перейти на главную страницу

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

Спасибо!

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

;; 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))