Bagaimana mencegah "definisi fungsi Simbol adalah void: error" saat menjalankan emacs di konsol?

10

Untuk menonaktifkan scrollbar di emacs saya menambahkan (toggle-scroll-bar -1) ke file .emacs saya dan berfungsi dengan baik ketika saya menjalankan emacs di luar mode konsol. Namun ketika saya menjalankan emacs di terminal saya mendapatkan kesalahan Definisi fungsi simbol tidak berlaku: toggle-scroll-bar

Saya menjalankan Emacs 23.3.1

inilah jejaknya ketika saya menjalankan --debug-init

    1 Debugger entered--Lisp error: (void-function scroll-bar-mode)                
    2   (scroll-bar-mode -1)                                                       
    3   eval-buffer(#<buffer  *load*> nil "/Users/neil/.emacs.d/init.el" nil t)  ;$
    4   load-with-code-conversion("/Users/neil/.emacs.d/init.el" "/Users/neil/.ema$
    5   load("/Users/neil/.emacs.d/init" t t)                                      
    6   #[nil "^H\205\264^@   \306=\203^Q^@\307^H\310Q\2027^@ \311=\2033^@\312\307$
    7   command-line()                                                             
    8   normal-top-level()
bneil
sumber
Emacs mungkin memberi Anda buffer Peringatan yang memberi tahu Anda untuk menjalankan emacs dengan --debug-initopsi untuk mendapatkan backtrace kesalahan lengkap. Coba itu dan tambahkan informasi itu ke pertanyaan. Seiring dengan versi Emacs M-x emacs-version. Potongan kode itu bekerja dengan baik dengan Emacs 23.2.
Trey Jackson
@ Thomas Jackson, saya menambahkan perincian yang Anda minta, sepertinya saya menjalankan Emacs 23.1, jadi saya akan mencoba memutakhirkan. Terima kasih atas saran Anda.
bneil
Sangat aneh. Oke, tes berikutnya menjalankan Emacs tanpa .emacs Anda emacs -nw -q,, dan kemudian di buffer awal , ketik (scroll-bar-mode -1)C-jdan lihat apakah Anda mendapatkan kesalahan. Fungsi itu didistribusikan dengan Emacs dalam scroll-bar.elpaket, jadi saya menduga Anda .emacsmemiliki sesuatu yang aneh, atau Emacs tidak diinstal dengan benar.
Trey Jackson
Saya mendapatkan kesalahan ini setelah melakukan Debugger yang dimasukkan - Kesalahan Lisp: (fungsi batal-bulir gulir-mode) (bilah-bilah-mode -1) eval ((bilah-bilah-mode--1)) eval-last-sexp -1 (t) eval-last-sexp (t) eval-print-last-sexp () panggilan-interaktif (eval-print-last-sexp nil nil)
bneil
Berikut ini adalah saya Emacs file yang pastebin.com/4mYE91Ne terlalu
bneil

Jawaban:

13

FWIW. Manual emacs mengecilkan penggunaan window-systempredikat.

Jangan gunakan sistem jendela dan sistem jendela awal sebagai predikat atau variabel boolean flag, jika Anda ingin menulis kode yang bekerja secara berbeda pada terminal teks dan tampilan grafik. Itu karena sistem jendela bukan indikator yang baik dari kemampuan Emacs pada jenis tampilan yang diberikan. Sebagai gantinya, gunakan display-graphic-p atau tampilan lainnya - * - p predikat yang dijelaskan dalam Pengujian Fitur Tampilan.

http://www.gnu.org/software/emacs/manual/html_node/elisp/Window-Systems.html

Saya menggunakan ini untuk mematikan bilah gulir dan bilah alat ketika dalam tampilan grafis.

(if (display-graphic-p)
    (progn
      (tool-bar-mode -1)
      (scroll-bar-mode -1)))
neatonk
sumber
5

Sementara saya pikir jawaban @ neatonk adalah yang terbaik dan mencakup semua basis, untuk secara khusus menonaktifkan scroll bar Anda dapat meletakkan yang berikut di ~/.emacs

(if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
donovan.lampa
sumber
-2

Dugaan saya adalah ketika Anda membuka emacs -nwemacs bahkan tidak mau memuat scroll-bar.el. Itu sebabnya mengalami kesulitan untuk menemukan fungsi toggle-scroll-bar.
mungkin sebaliknya jika Anda menempatkan
(scroll-bar-mode -1)
mungkin bekerja.

kindahero
sumber
1
(toggle-scroll-bar -1)bekerja dengan baik emacs -nwuntuk Emacs 23.2 ...
Trey Jackson