加载通过'安装的软件包;包.el';在Emacs24中
可能重复:加载通过'安装的软件包;包.el';在Emacs24中,emacs,elisp,dot-emacs,emacs24,Emacs,Elisp,Dot Emacs,Emacs24,可能重复: 我正在使用Emacs24。我添加了ELPA和果酱回购协议。使用“软件包”,我安装了“自动完成”。我在init.el中添加了以下行: (require 'auto-complete-config) (ac-config-default) 当我启动Emacs时,我得到了错误信息 文件错误:无法打开加载文件,自动完成配置 但是我用 M-x加载文件 并加载相同的~/.emacs.d/init.el文件,然后在提示下运行良好 正在加载/home/user/.emacs.d/init.el(
我正在使用Emacs24。我添加了ELPA和果酱回购协议。使用“软件包”,我安装了“自动完成”。我在init.el中添加了以下行:
(require 'auto-complete-config)
(ac-config-default)
当我启动Emacs时,我得到了错误信息
文件错误:无法打开加载文件,自动完成配置
但是我用
M-x加载文件
并加载相同的~/.emacs.d/init.el文件,然后在提示下运行良好
正在加载/home/user/.emacs.d/init.el(源)…完成
通常的加载与“M-x加载文件”命令有何不同?在init.el文件的开头,我做了以下操作,这是否会影响包的加载
(添加到列表“加载路径”~/.emacs.d”)(加载“自定义代码”)
如下面的评论所述:phils对问题的回答可能比这个更有用 这几乎肯定意味着您的
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
添加到加载路径中。Emacs加载路径不是递归的,因此这可能无法满足您的需要(假设您的库位于子目录中)。几年前,我写这个代码片段是为了加载我编写的各种elisp代码库。你可能会发现它很有用。(显然,它只在带有shell和find命令的unixy系统上工作。它的速度相当慢,但这似乎是shell命令到string
,即使运行“echo hello”之类的命令也需要几毫秒)
很好,在'init.el'的开头添加(包初始化)完成了任务。谢谢。请参阅phils在该线程的副本中给出的答案,以获得正确的解决方案<代码>(包初始化)
可能不是解决此问题的正确方法。
(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)))))