¿Cómo verificar si Emacs está en modo GUI (y ejecutar `tool-bar-mode` solo entonces)?

16

Tengo esta línea en mi .emacsarchivo:

(tool-bar-mode 0)

porque odio las barras de herramientas en mi GUI emacs ( /Applications/Emacs.app/Contents/MacOS/Emacs).

Pero cuando inicio mis otros emacs basados ​​en texto en el terminal ( /opt/local/bin/emacs) se queja de ese comando:

Symbol's function definition is void: tool-bar-mode

¿Cómo puedo agregar una ifcondición para que ejecute el tool-bar-modecomando solo cuando estoy en la GUI emacs?

¡Gracias!

usuario9474
fuente

Respuestas:

22

Bien, lo encontré yo mismo. Solo agrega

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

otra forma de hacerlo sería:

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

así, la función se llama solo si existe

Rémi
fuente
0

Funciona para mí sin quejas en Linux. Puede probar nilo en -1lugar de 0:

(tool-bar-mode nil)

¿Qué pasa si lo haces emacs -nw?

Pausado hasta nuevo aviso.
fuente
0

El uso de la window-systemvariable como booleano es desuso . En su lugar, use display-graphic-po cualquiera de los otros display-*-p predicados que informan las capacidades específicas de la IU relacionadas con el marco.

En caso de que desee que su código sea compatible con versiones anteriores de Emacs, entonces el siguiente contenedor de compatibilidad es el camino a seguir:

(if (< emacs-major-version 23)
    (or window-system (getenv "DISPLAY"))
  (display-graphic-p))
Alexander Shukaev
fuente