Come evitare che la "definizione della funzione del simbolo sia nulla: errore" quando si esegue emacs nella console?


10

Per disabilitare la barra di scorrimento in emacs ho aggiunto (toggle-scroll-bar -1) al mio file .emacs e funziona benissimo quando eseguo emacs fuori dalla modalità console. Tuttavia, quando eseguo emacs nel terminale, viene visualizzato l'errore La definizione della funzione del simbolo è nulla: toggle-scroll-bar

Sto eseguendo Emacs 23.3.1

ecco la traccia quando corro --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 probabilmente ti ha dato un buffer di Avvertimenti che ti dice di eseguire emacs con l' --debug-initopzione per ottenere un backtrace di errore completo. Provalo e aggiungi quelle informazioni alla domanda. Insieme alla versione Emacs M-x emacs-version. Quel pezzo di codice funziona perfettamente con Emacs 23.2.
Trey Jackson,

@Trey Jackson, ho aggiunto i dettagli richiesti, mi sembra che stia eseguendo Emacs 23.1, quindi proverò ad aggiornare. Grazie per i vostri suggerimenti.
Bneil,

Molto strano. Ok, il prossimo test sta eseguendo Emacs senza il tuo .emacs, emacs -nw -qquindi nel buffer di memoria virtuale, digita (scroll-bar-mode -1)C-je vedi se ricevi un errore. Quella funzione è distribuita con Emacs nel scroll-bar.elpacchetto, quindi suppongo che tu .emacsabbia qualcosa di strano o che Emacs non sia stato installato correttamente.
Trey Jackson,

Ottengo questo errore quando ho inserito il Debugger - Errore Lisp: (funzione barra di scorrimento della funzione vuota) (modalità barra di scorrimento -1) eval ((modalità barra di scorrimento -1)) eval-last-sexp -1 (t) eval-last-sexp (t) eval-print-last-sexp () chiama in modo interattivo (eval-print-last-sexp nil nil)
bneil

Ecco il mio file .emacs pastebin.com/4mYE91Ne too
bneil

Risposte:


13

FWIW. Il manuale di emacs scoraggia l'uso di window-systemcome predicato.

Non utilizzare il sistema a finestre e il sistema a finestre iniziali come predicati o variabili flag booleane, se si desidera scrivere codice che funziona in modo diverso su terminali di testo e display grafici. Questo perché il sistema di finestre non è un buon indicatore delle funzionalità di Emacs su un determinato tipo di display. Invece, usa display-graphic-p o qualsiasi altro predicato display - * - p descritto in Test funzionalità display.

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

Lo uso per disattivare la barra di scorrimento e la barra degli strumenti in una visualizzazione grafica.

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

5

Mentre penso che la risposta di @ neatonk sia la migliore e copra tutte le basi, per disabilitare specificamente la barra di scorrimento puoi inserire quanto segue nel tuo ~/.emacs

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

-2

La mia ipotesi è quando apri emacs -nwemacs non si preoccupa nemmeno di caricare scroll-bar.el. ecco perché ha difficoltà a trovare la funzione toggle-scroll-bar.
potrebbe essere invece se metti
(scroll-bar-mode -1)
probabilmente il lavoro.


1
(toggle-scroll-bar -1)funziona perfettamente con emacs -nwEmacs 23.2 ...
Trey Jackson,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.