Bagaimana cara memeriksa apakah Emacs dalam mode GUI (dan jalankan `tool-bar-mode` saja)?

16

Saya memiliki baris ini di .emacsfile saya :

(tool-bar-mode 0)

karena saya benci toolbar di GUI emacs saya ( /Applications/Emacs.app/Contents/MacOS/Emacs).

Tetapi ketika saya memulai emacs berbasis teks saya yang lain di terminal ( /opt/local/bin/emacs) ia mengeluhkan perintah itu:

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

Bagaimana saya bisa menambahkan ifkondisi sehingga mengeksekusi tool-bar-modeperintah hanya ketika saya di GUI emacs?

Terima kasih!

pengguna9474
sumber

Jawaban:

22

Oke, temukan sendiri. Cukup tambahkan

;; turn off toolbar
(if window-system
    (tool-bar-mode 0))
pengguna9474
sumber
3

Cara lain untuk melakukannya adalah:

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

seperti ini, fungsinya dipanggil hanya jika ada

Resi
sumber
0

Ini bekerja untuk saya tanpa keluhan di Linux. Anda mungkin mencoba nilatau -1bukannya 0:

(tool-bar-mode nil)

Apa yang terjadi jika Anda melakukannya emacs -nw?

Dijeda sampai pemberitahuan lebih lanjut.
sumber
0

Penggunaan window-systemvariabel sebagai boolean sudah usang . Alih-alih, gunakan display-graphic-patau display-*-p predikat lain mana saja yang melaporkan kemampuan terkait-UI khusus frame.

Jika Anda ingin kode Anda kompatibel dengan versi Emacs sebelumnya, maka pembungkus kompatibilitas berikut adalah caranya:

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