Wie kann verhindert werden, dass die Funktionsdefinition des Symbols ungültig wird, wenn Emacs in der Konsole ausgeführt wird?

10

Um die Bildlaufleiste in Emacs zu deaktivieren, habe ich sie zu meiner .emacs-Datei hinzugefügt (Toggle-Scroll-Bar -1), und sie funktioniert hervorragend, wenn ich Emacs außerhalb des Konsolenmodus ausführe. Wenn ich jedoch Emacs im Terminal starte, wird der Fehler angezeigt, dass die Funktionsdefinition des Symbols ungültig ist: Toggle-Scroll-Bar

Ich verwende Emacs 23.3.1

Hier ist die Ablaufverfolgung, wenn ich --debug-init ausführe

    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
quelle
Emacs hat Ihnen wahrscheinlich einen Warnungspuffer gegeben , der Sie auffordert, Emacs mit der --debug-initOption auszuführen , einen vollständigen Fehler-Backtrace zu erhalten. Versuchen Sie das und fügen Sie diese Informationen der Frage hinzu. Zusammen mit der Emacs-Version M-x emacs-version. Das Stück Code funktioniert gut mit Emacs 23.2.
Trey Jackson
@Trey Jackson, ich habe die Details hinzugefügt, die Sie angefordert haben. Es scheint, als würde ich Emacs 23.1 ausführen. Daher werde ich versuchen, ein Upgrade durchzuführen. Vielen Dank für Ihre Anregungen.
bneil
Sehr komisch. Ok, nächster Test läuft Emacs w / out .emacs, emacs -nw -qund dann in dem Scratch - Puffer Typ (scroll-bar-mode -1)C-jund sehen Sie, wenn Sie einen Fehler. Diese Funktion ist im scroll-bar.elLieferumfang von Emacs enthalten. Vermutlich haben Sie .emacsetwas Seltsames, oder der Emacs wurde nicht ordnungsgemäß installiert.
Trey Jackson
Ich bekomme diesen Fehler, wenn der Debugger eingibt - Lisp-Fehler: (Void-Funktion Scroll-Bar-Modus) (Scroll-Bar-Modus -1) Eval ((Scroll-Bar-Modus -1)) Eval-Last-Sexp -1 (t) eval-last-sexp (t) eval-print-last-sexp () aufruf-interaktiv (eval-print-last-sexp null null)
bneil
Hier ist meine .emacs Datei pastebin.com/4mYE91Ne auch
bneil

Antworten:

13

FWIW. Das Emacs-Handbuch rät von der Verwendung window-systemals Prädikat ab.

Verwenden Sie Window-System und Initial-Window-System nicht als Prädikate oder boolesche Flag-Variablen, wenn Sie Code schreiben möchten, der auf Textterminals und Grafikanzeigen anders funktioniert. Dies liegt daran, dass das Fenstersystem kein guter Indikator für die Emacs-Funktionen auf einem bestimmten Anzeigetyp ist. Verwenden Sie stattdessen display-graphic-p oder eines der anderen display - * - p-Prädikate, die unter Testen von Anzeigefunktionen beschrieben werden.

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

Ich verwende dies, um die Bildlaufleiste und die Symbolleiste in einer grafischen Anzeige auszuschalten.

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

Obwohl ich denke, dass @ neatonks Antwort die beste ist und alle Grundlagen abdeckt, können Sie Folgendes in Ihre Bildlaufleiste einfügen, um die Bildlaufleiste speziell zu deaktivieren ~/.emacs

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

Ich vermute, wenn Sie emacs -nwEmacs öffnen, macht es sich nicht einmal die Mühe, scroll-bar.el zu laden. Aus diesem Grund ist es schwierig, die Funktion zu finden toggle-scroll-bar.
kann stattdessen sein wenn du
(scroll-bar-mode -1)
wohl arbeitest.

kindahero
quelle
1
(toggle-scroll-bar -1)funktioniert gut in emacs -nwfür Emacs 23.2 ...
Trey Jackson