我正在使用Emacs 24.我添加了ELPA和Marmalade回购。使用'package'我安装了'auto-complete'。我在init.el中添加了以下行:
(require 'auto-complete-config)
(ac-config-default)
当我启动Emacs时,我收到错误
文件错误:无法打开加载文件,auto-complete-config
然后我用
M-x加载文件
并加载相同的〜/ .emacs.d / init.el文件,然后在提示符
的情况下工作正常加载/home/user/.emacs.d/init.el(来源)...完成
通常的加载与“M-x加载文件”命令有何不同?在init.el文件的开头,我执行以下操作,这是以某种方式影响加载包。
(add-to-list'load-path“〜/ .emacs.d”)
(加载“custom_code”)
答案 0 :(得分:11)
正如以下评论中所述:phils对duplicate question的回答可能比这个更有帮助
这几乎可以肯定意味着您的init.el
文件在排序package.el
的软件包的代码之前运行。后面的代码将带有自动完成库的目录添加到您的加载路径。
我仍在使用ELPA,而不是package.el。对于elpa,有一个看起来像这样的片段安装在.emacs
的底部。
;;; This was installed by package-install.el.
;;; This provides support for the package system and
;;; interfacing with ELPA, the package archive.
;;; Move this code earlier if you want to reference
;;; packages in your .emacs.
(when
(load
(expand-file-name "~/.emacs.d/elpa/package.el"))
(package-initialize))
正如评论所示,您可能希望在加载package.el
的内容之前放置等效的init.el
初始化代码。
最后:我注意到你提到将.emacs.d
添加到load-path
。 Emacs加载路径不是递归的,因此可能无法满足您的需求(假设您的库存在于子目录中)。几年前,我编写了这个片段来加载我编写的各种elisp代码库。你可能会发现它很有用。 (显然,它只适用于带有shell和find命令的unixy系统。它速度相当慢,但这似乎是shell-command-to-string
,即使运行“echo hello”等也需要几毫秒)
(defun find-elisp-dirs (dir)
"Find all directories below DIR containing elisp sources, ignoring those"
(split-string
(shell-command-to-string
(format "find %s -iname '*.el' -printf '%%h\\n' | sort -u"
(expand-file-name dir t)))))