¿Cuál es la magia detrás de la ELPA?
Pregunta
Yo uso Aquamacs, y utilizo ELPA que instala archivos en ~ / .emacs.d / elpa?
¿Cuál es la magia detrás de esta ELPA? Es decir, sin ELPA, debería descargar e instalar los paquetes en un directorio específico, y añadir estas dos líneas en .emacs.
(add-to-list 'load-path "PACKAGE_DIRECTORY")
(Require 'paquete)
Sin embargo, con el ELPA, no veo nada añadido a .emacs o / Usuarios / smcho / Librería / Preferencias / Aquamacs Emacs / {Preferences.el, customizations.el}. ¿Cómo es esto posible?
añadido
Esto es lo que he encontrado con Aquamacs.
- Aquamacs lee ~ / Preferencia / Aquamacs Emacs / Preferencia, y que tiene "(add-to-list 'kitfiles-dir load-path) (require' init)", cuyo texto es empezar kit.
- El init.el del kit de inicio tiene la "(paquete de requerir ') (paquete-initialize)"
- ~ / Library / Preferences / Aquamacs Emacs / Aquamacs-emacs-paquete de inicio / vendedor tiene la package.el
Creo que los archivos de inicialización no se cambian, pero el gestor de paquetes lee el ~ / .emacs.d / ELPD / * inicializar automáticamente, como lo veo. *** - autoloads.el en cada una de ella
Added2
Con Emacs 24, parece que el paquete está pre-construido. Sólo necesita tener estas líneas en .emacs o .emacs.d / init.el para conseguir trabajo ELPA. Consejos de este sitio .
(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)))
Solución
(package-initialize)
pasará a través de todos los paquetes instalados (en ~/.emacs.d/elpa/
o similares, dependiendo de la configuración), y añadirlos a la trayectoria de carga. Uno que ha ejecutarlo, echar un vistazo a load-path
( C-h v load-path
), que tendrá todos esos subdirectorios añaden. Así que en este punto, la carga de archivos utilizará los mecanismos normales.
Otros consejos
Usted tiene un par (require 'package) (package-initialize)
algún lugar en los archivos de inicialización. Package.el hace la magia:)