Después de conocerlo recientemente use-package
, decidí transferir mi configuración a él, pero me encontré reacio a renunciar a la comodidad de usar package.el
para instalar paquetes y mantenerlos actualizados. Me ha resultado un poco complicado combinar use-package
y package.el
.
En general, estoy interesado en aprender cómo las personas se combinan use-package
con el package.el
sistema, pero para una pregunta más específica, sigue leyendo.
Esto es lo que quiero:
- Tener paquetes instalados por el administrador de paquetes para poder buscarlos fácilmente y mantenerlos actualizados
list-packages
. - Para configurar y cargar paquetes exclusivamente
use-package
, para que pueda ver fácilmente en mi archivo de inicio exactamente lo que estoy cargando y cómo está configurado. - Opcionalmente, también me gustaría poder instalar paquetes a través
use-package
de la:ensure
palabra clave.
Si estoy entendiendo correctamente, quiero muy poco de lo que package-initialize
hace, básicamente solo la forma en que configura el load-path
. Actualmente tengo esto en mi configuración:
;(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 primera línea comentada es para que Emacs 25 no agregue una (package-initialize)
a mi archivo init. El bit con normal-top-level-add-subdirs-to-load-path
es una aproximación a lo package-initialize
que haría el load-path
, una aproximación que parece lo suficientemente buena.
Esto parece lograr mis deseos 1 y 2, pero no 3. Si trato de usar :ensure
, recibo un mensaje de error que dice que package.el
no está inicializado. Llamar package-initialize
solucionaría eso, pero deseo evitar eso ya que a) no quiero que se carguen todas las innumerables cargas automáticas (prefiero usarlas use-package
para crear con precisión las cargas automáticas que necesito), yb) quiero poder fácilmente evito cargar ciertos paquetes instalados cuando quiera (lo cual es fácil de hacer use-package
).
¿Alguien tiene una recomendación sobre cómo hacer esto?
package-initialize
que hace que mi pregunta sea discutible.