ELPA背后的魔力是什么?

时间:2010-08-23 19:14:23

标签: emacs aquamacs elpa

我使用Aquamacs,我使用ELPA在〜/ .emacs.d / elpa中安装文件?

这个ELPA背后的魔力是什么?我的意思是,如果没有ELPA,我应该在特定目录中下载并安装软件包,并在.emacs中添加这两行。

  

(add-to-list'load-path“PACKAGE_DIRECTORY”)
  (需要'包装)

但是,对于ELPA,我没有看到任何添加到.emacs或/ Users / smcho / Library / Preferences / Aquamacs Emacs / {Preferences.el,customizations.el}的内容。这怎么可能?

这是我在Aquamacs中发现的。

  1. Aquamacs读取〜/ Preference / Aquamacs Emacs / Preference,它有“(add-to-list'load-path kitfiles-dir)(需要'init)”,它读取启动工具包。
  2. 启动工具包的init.el具有“(require'package)(package-initialize)”
  3. 〜/ Library / Preferences / Aquamacs Emacs / aquamacs-emacs-starter-kit / vendor有package.el
  4. 我想初始化文件没有改变,但包管理器会自动读取〜/ .emacs.d / elpd / *进行初始化,正如我在每个文件中看到*** - autoloads.el一样。

    Added2

    使用emacs 24,似乎预先构建了包。我只需要在.emacs或.emacs.d / init.el中使用这些行来使ELPA正常工作。来自this site的提示。

    (require 'package)
    (add-to-list 'package-archives
             '("marmalade" . "http://marmalade-repo.org/packages/"))
    (package-initialize)
    
    (when (not package-archive-contents)
      (package-refresh-contents))
    (defvar my-packages '(clojure-mode
                   nrepl))
    (dolist (p my-packages)
      (when (not (package-installed-p p))
        (package-install p)))
    

2 个答案:

答案 0 :(得分:15)

(package-initialize)将遍历所有已安装的软件包(在~/.emacs.d/elpa/或类似软件中,具体取决于配置),并将它们添加到加载路径中。一个你运行它,看看load-path C-h v load-path),它将添加所有这些子目录。所以在这一点上,文件加载将使用正常的机制。

答案 1 :(得分:6)

初始化文件中的某处有(require 'package) (package-initialize)对。 Package.el做了魔术:)