Comment empêcher la «définition de fonction du symbole est vide: erreur» lors de l'exécution d'emacs dans la console?

10

Pour désactiver la barre de défilement dans emacs, j'ai ajouté (toggle-scroll-bar -1) au fichier my .emacs et cela fonctionne très bien lorsque j'exécute emacs en dehors du mode console. Cependant, lorsque j'exécute emacs dans le terminal, j'obtiens l'erreur La définition de la fonction du symbole est nulle: toggle-scroll-bar

J'utilise Emacs 23.3.1

voici la trace quand je lance --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
la source
Emacs vous a probablement fourni un tampon d' avertissements vous indiquant d'exécuter emacs avec la --debug-initpossibilité d'obtenir une trace d'erreur complète. Essayez cela et ajoutez cette information à la question. Avec la version Emacs M-x emacs-version. Ce morceau de code fonctionne très bien avec Emacs 23.2.
Trey Jackson
@Trey Jackson, j'ai ajouté les détails que vous avez demandés, il semble que j'utilise Emacs 23.1, donc je vais essayer de mettre à jour. Merci pour vos suggestions.
bneil
Très étrange. Ok, test suivant est en cours d' exécution Emacs w / vos emacs, emacs -nw -qpuis dans le zéro tampon, le type (scroll-bar-mode -1)C-jet voir si vous obtenez une erreur. Cette fonction est distribuée avec Emacs dans le scroll-bar.elpaquet, donc je suppose que vous avez .emacsquelque chose d'étrange, ou Emacs n'a pas été installé correctement.
Trey Jackson du
J'obtiens cette erreur en faisant ce débogueur entré - Erreur Lisp: (mode de barre de défilement de la fonction void) (mode de barre de défilement -1) eval ((mode de barre de défilement -1)) eval-last-sexp -1 (t) eval-last-sexp (t) eval-print-last-sexp () call-interactively (eval-print-last-sexp nil nil)
bneil
Voici mon fichier .emacs pastebin.com/4mYE91Ne aussi
bneil

Réponses:

13

FWIW. Le manuel emacs décourage l'utilisation de window-systemcomme prédicat.

N'utilisez pas le système de fenêtres et le système de fenêtres initiales comme prédicats ou variables d'indicateur booléen, si vous souhaitez écrire du code qui fonctionne différemment sur les terminaux de texte et les affichages graphiques. C'est parce que le système de fenêtres n'est pas un bon indicateur des capacités d'Emacs sur un type d'affichage donné. Utilisez à la place display-graphic-p ou l'un des autres prédicats display - * - p décrits dans Display Feature Testing.

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

J'utilise cela pour désactiver la barre de défilement et la barre d'outils dans un affichage graphique.

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

Bien que je pense que la réponse de @ neatonk est la meilleure et couvre toutes les bases, pour désactiver spécifiquement la barre de défilement, vous pouvez mettre ce qui suit dans votre ~/.emacs

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

Ma conjecture est que lorsque vous ouvrez emacs -nwemacs ne prend même pas la peine de charger scroll-bar.el. c'est pourquoi il a du mal à trouver la fonction toggle-scroll-bar.
peut être à la place si vous mettez
(scroll-bar-mode -1)
probablement du travail.

kindahero
la source
1
(toggle-scroll-bar -1)fonctionne très bien emacs -nwpour Emacs 23.2 ...
Trey Jackson