我是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里面......我做错了什么?...谢谢!!!
答案 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