Qual è la magia dietro l'ELPA?
Domanda
Io uso Aquamacs, e io uso ELPA che installa i file in ~ / .emacs.d / ELPA?
Qual è la magia dietro questo ELPA? Voglio dire, senza ELPA, devo scaricare e installare i pacchetti in una directory specifica, e aggiungere queste due linee in .emacs.
(add-to-list 'load-path "PACKAGE_DIRECTORY")
(Require 'PACCHETTO)
Ma, con ELPA, non vedo nulla di aggiunto alla .emacs o / Users / smcho / Library / Preferences / Aquamacs Emacs / {Preferences.el, customizations.el}. Com'è possibile?
Aggiunto
Questo è quello che ho trovato con Aquamacs.
- Aquamacs legge ~ / Preferenze / Aquamacs Emacs / Preferenze, e ha "(add-to-list 'load-path kitfiles-dir) (richiede' init)", che recita iniziare kit.
- L'init.el di kit di avvio ha la "(Package, è necessario ') (pacchetto-initialize)"
- ~ / Library / Preferences / Aquamacs Emacs / Aquamacs-emacs-starter-kit / fornitore ha la package.el
Credo che i file di inizializzazione non sono cambiati, ma il gestore dei pacchetti legge il ~ / .emacs.d / elpd / * per inizializzare automaticamente, per come la vedo *** -. Autoloads.el in ognuno di esso
Added2
Con Emacs 24, sembra che il pacchetto è pre-costruito. Ho solo bisogno di avere queste linee in .emacs o .emacs.d / init.el per ottenere lavoro ELPA. Suggerimenti da questo sito .
(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)))
Soluzione
(package-initialize)
passerà attraverso tutti i pacchetti installati (in ~/.emacs.d/elpa/
o simili, a seconda della configurazione), e aggiungerli al percorso di carico. Uno è stato eseguito esso, dare un'occhiata a load-path
( C-h v load-path
), avrà tutte le sottodirectory aggiunto. Quindi a questo punto, il caricamento del file userà i meccanismi normali.
Altri suggerimenti
Hai un (require 'package) (package-initialize)
coppia da qualche parte nei file di inizializzazione. Package.el fa la magia:)