2010-11-25 23 views
19

Je suis un novice dans emacs ... J'ai quelques jours et je pense qu'emacs est génial mais j'obtiens une erreur quand j'essaye d'installer auto-complete. ..Je l'installer à partir http://cx4a.org/software/auto-complete/ les travaux d'installation (j'utilise le makefile) ... mais quand je mets ces lignes dans mon emacs.dJe reçois une erreur quand j'essaye d'installer auto-complete dans emacs

(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict") 
(require 'auto-complete-config) 
(ac-config-default) 

je reçois cette erreur

Warning (initialization): An error occurred while loading `/home/yo/.emacs': 

Symbol's value as variable is void: ac-dictionary-directories 

To ensure normal operation, you should investigate and remove the 
cause of the error in your initialization file. Start Emacs with 
the `--debug-init' option to view a complete error backtrace 

I » ve mon dossier .emacs dans /home/yo/.emacs et à l'intérieur de ce que j'ai le dossier ac-dic .. à l'intérieur de cela il y a mode C++ mode..lisp mode ruby ​​... etc.etc ... etc. .... Mon autocomplete.el est à l'intérieur de mes .emacs aussi ... qu'est-ce que je fais mal ?? ... merci !!!

Répondre

2

.emacs. est normalement un fichier elisp et .emacs.d est le répertoire. On dirait que vous les traitez dans l'autre sens. Vous mettez le

(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict") 
(require 'auto-complete-config) 
(ac-config-default) 

dans ~/.emacs, non .emacs.d.

Ou, votre question n'est pas claire. À quoi ressemble votre ~/.emacs?

EDIT:

Ou, vous voulez faire

(add-to-list 'load-path "~/.emacs.d/ac-dict") 
(require 'auto-complete-config) 
(ac-config-default) 

au lieu de

(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict") 
(require 'auto-complete-config) 
(ac-config-default) 

J'ai mon dossier .emacs dans /home/yo/.emacs et à l'intérieur de ce que j'ai le dossier ac-dic .. à l'intérieur de cela il y a mode C++ .. le mode rubis mode rubis ... etc.etc ... etc .....

~/.emacs doit être un fichier. Pas un répertoire.

mais quand je mets ces lignes dans mon emacs.d

~/.emacs.d/ doit être un répertoire

4

Je soupçonne que le problème est que add-to-list veut préfixer à une liste existante, mais il y a pas une telle variable au moment où vous l'appelez.

Vous pouvez utiliser (setq 'ac-dictionary-directories "~/.emacs.d/ac-dict") à la place ou suivre les conseils de l'aide pour ajouter à la liste:

Si vous souhaitez utiliser add-to-list' on a variable that is not defined until a certain package is loaded, you should put the call to add-to-list » en fonction de crochet qui sera exécuté seulement après le chargement du paquet. `Eval-after-load 'fournit un moyen de le faire. Dans certains cas d'autres crochets, tels que des crochets de mode majeur, peuvent faire le travail.

En d'autres termes quelque chose comme:

(eval-after-load 'auto-complete-config 
    '(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict")) 

Ou, enfin, vous pouvez simplement définir la variable après la require, mais je ne sais pas comment cela interagit avec l'initialisation de l'auto-complétion.

27

ac-dictionary-directories est défini dans le fichier auto-complete.el, donc évidemment emacs ne le trouvera pas. Il suffit donc de modifier l'ordre des instructions:

(require 'auto-complete-config) 
(ac-config-default) 
(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict") 

Maintenant, cela devrait fonctionner.

+1

veux juste ajouter que cela ne fonctionne pas pour moi ... Emacs 24.2.2, v1 auto-complétion. 3.1. et pas de config pour yasnippet du tout. – galactica

+0

+1. Aussi j'ai besoin d'ajouter (add-to-list 'load-path' ~/.emacs.d ") au-dessus de ces trois lignes. – gihanchanuka

0

J'ai eu ce problème. C'était dû au fait que j'ai copié les fichiers auto-complétés à partir d'un autre ordinateur. Pour le résoudre, je retélécharger le sources je recompiler et recopié dans mon .emacs.d cd auto-complete make byte-compile cp *.el *.elc ~/.emacs.d