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


16

У меня есть эта строка в моем .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 с графическим интерфейсом?

Благодарность!

Ответы:


22

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

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

3

другой способ сделать это будет:

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

таким образом, функция вызывается, только если она существует



0

Использование window-systemпеременной в качестве логического значения не рекомендуется . Вместо этого используйте display-graphic-pили любой из других display-*-p предикатов, которые сообщают о специфических для UI возможностях фрейма.

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

(if (< emacs-major-version 23)
    (or window-system (getenv "DISPLAY"))
  (display-graphic-p))
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.