2010-11-25 9 views
19

Soy novato en emacs ... Tengo unos días y creo que emacs es increíble, pero me sale un error cuando intento instalar autocompletar. ..I instalarlo desde http://cx4a.org/software/auto-complete/ los trabajos de instalación (utilizo el makefile) ... pero cuando pongo estas líneas dentro de mi emacs.dMe sale un error cuando intento instalar autocompletar en emacs

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

me sale este error

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' Tengo mi carpeta .emacs en /home/yo/.emacs y dentro de esto tengo la carpeta ac-dic..interiormente hay modo C++ Modo de ruby ​​modo ruby ​​... etc..etc ... etc. ....

mi autocomplete.el está dentro de mi .emacs también ... ¿qué estoy haciendo mal? ... ¡¡¡gracias !!!

Respuesta

2

.emacs. es normalmente un archivo elisp y .emacs.d es el directorio. Parece que los estás tratando al revés. Se pone el

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

en ~/.emacs, no .emacs.d.

O, su pregunta no está clara. ¿Cómo es tu ~/.emacs?

EDIT:

O, usted quiere hacer

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

en lugar de

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

tengo mis carpetas en .emacs y /home/yo/.emacs dentro de esto tengo la carpeta ac-dic..interiormente hay modo C++ ... modo de rubí modo de visualización ... etc..etc ... etc .....

~/.emacs debe ser un archivo. No es un directorio

pero cuando pongo estas líneas dentro de mi emacs.d

~/.emacs.d/ debe ser un directorio

4

Sospecho que el problema es que add-to-list quiere anteponer a una lista existente, pero hay no existe esa variable en el momento en que la llamas.

Usted podría utilizar (setq 'ac-dictionary-directories "~/.emacs.d/ac-dict") vez o seguir los consejos de la ayuda para el add-to-list:

Si desea utilizar 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 una función de enlace que se ejecutará solo después de cargar el paquete. `eval-after-load 'proporciona una forma de hacerlo. En algunos casos, otros ganchos, como los ganchos de modo principal, pueden hacer el trabajo.

En otras palabras, algo así como:

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

O, finalmente, sólo podía establecer la variable después de la require, pero no estoy seguro de cómo interactúa con la inicialización de la función de autocompletar.

27

ac-dictionary-directories se define en auto-complete.el, por lo que obviamente emacs no lo encontrará. Así que simplemente cambie el orden de las declaraciones:

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

Ahora, debería funcionar.

+1

sólo quiero añadir que esto no funcionó para mí ... Emacs 24.2.2, v1 de autocompletar. 3.1. y no config para yasnippet en absoluto. – galactica

+0

+1. También necesito agregar (load-path 'add-to-list' ~/.emacs.d ") sobre esas tres líneas. – gihanchanuka

0

Tuve este problema. Fue debido al hecho de que copié los archivos de autocompletar de otra computadora. Para resolverlo, vuelvo a descargar el sources entonces recompilar y copié en mi .emacs.d cd auto-complete make byte-compile cp *.el *.elc ~/.emacs.d

Cuestiones relacionadas