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.elpara instalar paquetes y mantenerlos actualizados. Me ha resultado un poco complicado combinar use-packagey package.el.
En general, estoy interesado en aprender cómo las personas se combinan use-packagecon el package.elsistema, 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-packagede la:ensurepalabra clave.
Si estoy entendiendo correctamente, quiero muy poco de lo que package-initializehace, 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-pathes una aproximación a lo package-initializeque 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.elno está inicializado. Llamar package-initializesolucionaría eso, pero deseo evitar eso ya que a) no quiero que se carguen todas las innumerables cargas automáticas (prefiero usarlas use-packagepara 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-initializeque hace que mi pregunta sea discutible.