Como verificar se o Emacs está no modo GUI (e execute o `tool-bar-mode` somente então)?

16

Eu tenho esta linha no meu .emacsarquivo:

(tool-bar-mode 0)

porque eu odeio as barras de ferramentas na minha GUI emacs ( /Applications/Emacs.app/Contents/MacOS/Emacs).

Mas quando inicio meus outros emacs baseados em texto no terminal ( /opt/local/bin/emacs), ele reclama desse comando:

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

Como posso adicionar uma ifcondição para que ele executa o tool-bar-modecomando somente quando estou nas emacs GUI?

Obrigado!

user9474
fonte

Respostas:

22

Ok, eu mesmo encontrei. Basta adicionar

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

outra maneira de fazer isso seria:

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

assim, a função é chamada apenas se existir

Rémi
fonte
0

Funciona para mim sem reclamar no Linux. Você pode tentar nilou, em -1vez de 0:

(tool-bar-mode nil)

O que acontece se você fizer emacs -nw?

Pausado até novo aviso.
fonte
0

O uso da window-systemvariável como booleano foi preterido . Em vez disso, use display-graphic-pou qualquer um dos outros display-*-p predicados que relatam recursos relacionados à interface do usuário específicos do quadro.

Caso você deseje que seu código seja compatível com versões anteriores do Emacs, o seguinte wrapper de compatibilidade é o caminho:

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