Comment vérifier si Emacs est en mode GUI (et exécuter alors `tool-bar-mode` seulement)?

16

J'ai cette ligne dans mon .emacsdossier:

(tool-bar-mode 0)

parce que je déteste les barres d'outils dans mes emacs GUI ( /Applications/Emacs.app/Contents/MacOS/Emacs).

Mais quand je démarre mes autres emacs textuels dans le terminal ( /opt/local/bin/emacs), il se plaint de cette commande:

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

Comment puis-je ajouter une ifcondition pour qu'elle n'exécute la tool-bar-modecommande que lorsque je suis dans l'emac GUI?

Merci!

user9474
la source

Réponses:

22

D'accord, je l'ai trouvé moi-même. Ajoutez simplement

;; turn off toolbar
(if window-system
    (tool-bar-mode 0))
user9474
la source
3

une autre façon de procéder serait:

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

comme ça, la fonction n'est appelée que si elle existe

Rémi
la source
0

Cela fonctionne pour moi sans se plaindre sur Linux. Vous pouvez essayer nilou -1au lieu de 0:

(tool-bar-mode nil)

Que se passe-t-il si vous le faites emacs -nw?

En pause jusqu'à nouvel ordre.
la source
0

L'utilisation de la window-systemvariable comme booléen est déconseillée . Utilisez plutôt l' display-graphic-pun des autres display-*-p prédicats qui signalent les capacités spécifiques à l'interface utilisateur du cadre.

Si vous souhaitez que votre code soit rétrocompatible avec les versions précédentes d'Emacs, le wrapper de compatibilité suivant est le chemin à parcourir:

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