ELPA背后的魔力是什么?

pro*_*eek 10 emacs aquamacs elpa

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

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

(add-to-list'load-path"PACKAGE_DIRECTORY")
(需要'PACKAGE)

但是,对于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

我想初始化文件没有改变,但是包管理器会自动读取〜/ .emacs.d/elpd/*进行初始化,因为我看到每个文件都有*** - autoloads.el.

Added2

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

(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)))
Run Code Online (Sandbox Code Playgroud)

Pet*_*aut 15

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


小智 6

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