Wie überprüfe ich, ob sich Emacs im GUI-Modus befindet (und führe nur dann den Werkzeugleisten-Modus aus)?

16

Ich habe diese Zeile in meiner .emacsDatei:

(tool-bar-mode 0)

weil ich die Symbolleisten in meinen GUI-Emacs ( /Applications/Emacs.app/Contents/MacOS/Emacs) hasse .

Aber wenn ich meine anderen, textbasierten Emacs im terminal ( /opt/local/bin/emacs) starte, beschwert es sich über diesen Befehl:

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

Wie kann ich eine ifBedingung hinzufügen , damit der tool-bar-modeBefehl nur ausgeführt wird, wenn ich in den GUI-Emacs bin?

Vielen Dank!

user9474
quelle

Antworten:

22

Okay, hab es selbst gefunden. Einfach hinzufügen

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

Eine andere Möglichkeit wäre:

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

Auf diese Weise wird die Funktion nur aufgerufen, wenn sie vorhanden ist

Rémi
quelle
0

Es funktioniert bei mir ohne Beanstandung unter Linux. Sie könnten versuchen niloder -1anstelle von 0:

(tool-bar-mode nil)

Was passiert, wenn Sie es tun emacs -nw?

Bis auf weiteres angehalten.
quelle
0

Die Verwendung der window-systemVariablen als Boolescher Wert ist veraltet . Verwenden Sie stattdessen display-graphic-poder eines der anderen display-*-p Prädikate, die die spezifischen UI-bezogenen Funktionen des Frames melden.

Wenn Sie möchten, dass Ihr Code mit den vorherigen Versionen von Emacs abwärtskompatibel ist, sollten Sie den folgenden Kompatibilitätswrapper verwenden:

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