Konsolda emac'ler çalıştırılırken “Symbol işlev tanımı geçersiz: error” nasıl önlenir?


11

Emac'lerde kaydırma çubuğunu devre dışı bırakmak için .emacs dosyama (toggle-scroll-bar -1) ekledim ve konsol modunun dışında emacs çalıştırdığımda harika çalışıyor. Ancak terminalde emacs çalıştırdığımda hatayı alıyorum Sembol fonksiyon tanımı geçersiz: toggle-scroll-bar

Emacs 23.3.1 kullanıyorum

heres iz ben koşarken - 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()

Emacs muhtemelen size tam bir hata geri izlemesi alma seçeneği ile emacs çalıştırmanızı söyleyen bir Uyarılar arabelleği verdi --debug-init. Bunu deneyin ve bu bilgiyi soruya ekleyin. Emacs sürümü ile birlikte M-x emacs-version. Bu kod yığını Emacs 23.2 ile gayet iyi çalışıyor.
Trey Jackson

@Trey Jackson, istediğin detayları ekledim, Emacs 23.1 çalıştırıyor gibiyim, bu yüzden yükseltmeyi deneyeceğim. Önerileriniz için teşekkür ederiz.
bneil

Çok tuhaf. Tamam, sonraki test Emacs .emacs w / out çalıştırıyor emacs -nw -qve sonra sıfırdan arabellek yazın (scroll-bar-mode -1)C-jve bir hata alıp almadığınızı görün. Bu işlev scroll-bar.elpakette Emacs ile dağıtılır , bu yüzden .emacsgarip bir şey olduğunu tahmin ediyorum veya Emacs düzgün yüklenmemiş.
Trey Jackson

Hata ayıklayıcı girilen yaptıktan sonra bu hatayı alıyorum - Lisp hatası: (geçersiz işlev kaydırma çubuğu modu) (kaydırma çubuğu modu -1) eval ((kaydırma çubuğu modu -1)) eval-last-sexp -1 (t) eval-son-sexp (t) eval-baskı-son-sexp () çağrı-etkileşimli (eval-baskı-son-sexp nil nil)
bneil

İşte benim .emacs dosya pastebin.com/4mYE91Ne da
bneil

Yanıtlar:


14

FWIW. Emacs manual, window-systemyüklem olarak kullanılmasını engeller.

Metin terminallerinde ve grafik ekranlarda farklı şekilde çalışan kod yazmak istiyorsanız, pencere sistemini ve ilk pencere sistemini tahminler veya boole bayrak değişkenleri olarak kullanmayın. Bunun nedeni, pencere sisteminin belirli bir ekran türünde Emacs yeteneklerinin iyi bir göstergesi olmamasıdır. Bunun yerine, display-graphic-p veya Display Feature Testing'de açıklanan diğer ekran - * - p tahminlerinden herhangi birini kullanın.

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

Bunu grafik ekranda kaydırma çubuğunu ve araç çubuğunu kapatmak için kullanıyorum.

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

5

@ Neatonk'un cevabının en iyisi olduğunu ve tüm üsleri kapsadığını düşünürken, kaydırma çubuğunu özellikle devre dışı bırakmak için aşağıdakileri ~/.emacs

(if (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))

-2

Benim tahminim emacs -nwemacs açtığınızda scroll-bar.el yüklemek için bile rahatsız etmez. Bu yüzden işlevi bulmakta sorun yaşıyor toggle-scroll-bar. muhtemelen işe
koyarsanız olabilir
(scroll-bar-mode -1)
.


1
(toggle-scroll-bar -1)emacs -nwEmacs 23.2 için gayet iyi çalışıyor ...
Trey Jackson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.