Dopo aver appreso di recente use-package
ho deciso di eseguire il porting della mia configurazione, ma mi sono trovato riluttante a rinunciare alla comodità di utilizzare package.el
per installare i pacchetti e mantenerli aggiornati. Ho trovato un po 'complicato combinare use-package
e package.el
.
Sono generalmente interessato a imparare come le persone si combinano use-package
con il package.el
sistema, ma per una domanda più specifica, continua a leggere.
Ecco cosa voglio:
- Avere i pacchetti installati dal gestore dei pacchetti in modo da poter facilmente cercare i pacchetti e mantenerli aggiornati
list-packages
. - Per configurare e caricare i pacchetti esclusivamente tramite
use-package
, così posso facilmente vedere nel mio file init esattamente cosa sto caricando e come è configurato. - Opzionalmente, vorrei anche essere in grado di installare i pacchetti tramite
use-package
la:ensure
parola chiave.
Se sto capendo correttamente, voglio ben poco di ciò che package-initialize
fa, fondamentalmente solo il modo in cui imposta load-path
. Attualmente ho questo nella mia configurazione:
;(package-initialize)
(setq package-enable-at-startup nil)
(let ((default-directory "~/.emacs.d/elpa"))
(normal-top-level-add-subdirs-to-load-path))
(require 'use-package)
La prima riga, commentata, è che Emacs 25 non aggiunge utilmente una (package-initialize)
al mio file init. Il bit with normal-top-level-add-subdirs-to-load-path
è un'approssimazione di ciò package-initialize
che renderebbe il load-path
, un'approssimazione che sembra abbastanza buona.
Questo sembra raggiungere i miei desideri 1 e 2, ma non 3. Se provo ad usare :ensure
, ricevo un messaggio di errore che dice che package.el
non è inizializzato. La chiamata package-initialize
risolverebbe questo problema, ma desidero evitare che poiché a) non voglio caricare tutte le miriadi di caricamenti automatici (preferisco utilizzare use-package
per creare esattamente i caricamenti automatici di cui ho bisogno) eb), voglio essere in grado di farlo facilmente evitare di caricare determinati pacchetti installati ogni volta che voglio (il che è facile da fare con use-package
).
Qualcuno ha una raccomandazione su come farlo?
package-initialize
che rende discutibile la mia domanda.