Jak sprawdzić, czy Emacs jest w trybie GUI (i dopiero wtedy uruchomić tryb „pasek narzędzi”)?

16

Mam ten wiersz w moim .emacspliku:

(tool-bar-mode 0)

ponieważ nienawidzę pasków narzędzi w emacs ( /Applications/Emacs.app/Contents/MacOS/Emacs) GUI .

Ale kiedy uruchamiam inne emacety tekstowe w terminalu ( /opt/local/bin/emacs), narzeka na to polecenie:

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

Jak mogę dodać ifwarunek, aby wykonywał tool-bar-modepolecenie tylko wtedy, gdy jestem w emacs z GUI?

Dzięki!

użytkownik9474
źródło

Odpowiedzi:

22

Okej, znalazłem to sam. Poprostu dodaj

;; turn off toolbar
(if window-system
    (tool-bar-mode 0))
użytkownik9474
źródło
3

innym sposobem na to byłoby:

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

w ten sposób funkcja jest wywoływana tylko wtedy, gdy istnieje

Rémi
źródło
0

Działa dla mnie bez skarg na Linuksa. Możesz spróbować nillub -1zamiast 0:

(tool-bar-mode nil)

Co się stanie, jeśli to zrobisz emacs -nw?

Wstrzymano do odwołania.
źródło
0

Zastosowanie window-systemzmiennej jako wartości logicznej jest przestarzałe . Zamiast tego użyj display-graphic-plub dowolnego innego display-*-p predykatu, który raportuje specyficzne możliwości interfejsu związane z ramką.

Jeśli chcesz, aby Twój kod był wstecznie zgodny z poprzednimi wersjami Emacsa, możesz skorzystać z następującego opakowania zgodności:

(if (< emacs-major-version 23)
    (or window-system (getenv "DISPLAY"))
  (display-graphic-p))
Alexander Shukaev
źródło