10

可能重复:
Emacs 24 包系统初始化问题

我正在使用 Emacs 24。我添加了 ELPA 和 Marmalade 存储库。使用“包”我安装了“自动完成”。我在我的 init.el 中添加了以下几行:

(require 'auto-complete-config)
(ac-config-default)

当我启动 Emacs 时,我得到了错误

文件错误:无法打开加载文件,自动完成配置

但后来我用

Mx 加载文件

并加载相同的 ~/.emacs.d/init.el 文件,然后在提示符下正常工作

正在加载 /home/user/.emacs.d/init.el (source)...完成

通常的加载与“Mx load-file”命令有何不同?在 init.el 文件的开头,我执行以下操作,这是否会以某种方式影响包的加载。

(add-to-list 'load-path "~/.emacs.d")
(load "custom_code")

4

1 回答 1

11

正如下面的评论中提到的:菲尔斯对重复问题的回答可能比这个更有帮助

这几乎可以肯定意味着您的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)))))
于 2012-08-21T13:03:43.237 回答