我在emacs中尝试安装自动完成时收到错误

时间:2010-11-25 23:44:38

标签: emacs autocomplete lisp

我是emacs的新手...我已经有几天了,我认为emacs非常好但是当我尝试安装自动完成时出现错误...我从http://cx4a.org/software/auto-complete/安装它工作(我使用makefile)...但是当我把这些行放在我的emacs.d

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

我收到此错误

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

我在/home/yo/.emacs中有我的文件夹.emacs,在这里我有文件夹ac-dic..inside这里有c ++ mode..lisp模式ruby模式... etc..etc ...等.....

我的autocomplete.el也在我的.emacs里面......我做错了什么?...谢谢!!!

4 个答案:

答案 0 :(得分:27)

ac-dictionary-directories在auto-complete.el中定义,所以显然emacs不会找到它。所以只需更改语句的顺序:

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

现在,它应该有效。

答案 1 :(得分:4)

我怀疑问题是add-to-list想要预先添加到现有列表中,但是在你调用它时没有这样的变量。

您可以使用(setq 'ac-dictionary-directories "~/.emacs.d/ac-dict")代替,也可以按照添加到列表的帮助中的建议进行操作:

  

如果您想使用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'   到一个钩子函数,只有在加载包后才能运行。   “eval-after-load”提供了一种方法。在某些情况下   其他钩子,例如主模式钩子,可以完成这项工作。

换句话说:

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

或者,最后,您可以在require之后设置变量,但我不确定它是如何与自动完成初始化相互作用的。

答案 2 :(得分:2)

.emacs.通常是elisp文件,.emacs.d是目录。看起来你正在反过来对待它们。你把

(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict")
(require 'auto-complete-config)
(ac-config-default)
<{1>}中的

,而不是~/.emacs

或者,你的问题不明确。你的.emacs.d看起来像什么?

编辑:

或者,你想做

~/.emacs

而不是

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

我在/home/yo/.emacs中有我的文件夹.emacs,在这里我有文件夹ac-dic..inside这里有c ++ mode..lisp模式ruby模式... etc..etc ...等.....

(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict") (require 'auto-complete-config) (ac-config-default) 应该是一个文件。不是目录。

  

但是当我把这些内容放在我的emacs.d

中时

~/.emacs应该是目录

答案 3 :(得分:0)

我有这个问题。这是因为我从其他计算机复​​制了自动完成文件。要解决它,我重新下载sources然后我重新编译它并复制到我的.emacs.d中 cd auto-complete make byte-compile cp *.el *.elc ~/.emacs.d