Me encontré con un error que involucraba una interacción entre varios paquetes. Para informar el error, necesito proporcionar una receta reproducible que ilustre el problema. Esto requiere cargar los paquetes apropiados, pero nada más desde mi init, y ningún otro paquete. ¿Cuál es la mejor manera de hacer esto?
ACTUALIZAR
Para aclarar, estoy familiarizado con el concepto de examinar mis .emacs en una búsqueda binaria para identificar el código que causa un problema. En esta situación, sé exactamente qué paquetes ya están causando el problema. Lo que no sé es cómo usar el package-sistema para cargar solo esos pocos paquetes.
(package-initialize)cargará los paquetes, pero también todo lo demás en mi .emacs.d/elpadirectorio. package-load-listme permite especificar versiones particulares de paquetes para cargar, o paquetes particulares para excluir explícitamente . Necesito lo contrario: cómo suministrar a Emacs una lista de paquetes para incluir , sin cargar ningún otro paquete en el sistema elpa / package.
fuente

.emacsarchivo en blanco : instale cada paquete uno por uno y luego vea si el problema aún existe. Puede sorprenderse y encontrar el paquete responsable que no se adapta bien al otro paquete. Cuando haya ido lo más lejos que pueda, escriba los pasos que utilizó para reproducir el problema y envíe el informe de error, por ejemplo, comenzando desde Emacs -Q , instale el paquete A, luego instale el paquete B, luego instale el paquete C, luego abra el*Scratch*búfer y escriba ...comment-regionpara comentar (o, conC-u, para descomentar) una región de texto.package-load-listes una forma de incluir explícitamente paquetes, simplemente elimine elallsímbolo.Respuestas:
La
package-load-listvariable se puede usar para especificar con precisión qué paquetes y versiones cargar:Lo único a tener en cuenta es que el valor predeterminado incluye
all, sisetqlo haces, estarás bien porque eso sobrescribe completamente el valor original.fuente
Una opción que funcionaría bien en contextos donde los desarrolladores que trabajan en la reproducción del error pueden no tener (o desear) esas dependencias instaladas es usar el
trypaquete ( https://melpa.org/#/try ). Otros pueden cargar paquetes desde la administración de paquetes sin modificar su instalación local.fuente
Este caso de uso es una deficiencia terrible
package.el, así que no lo usepackage.el. En su lugar, use un administrador de paquetes comostraight.el(Soy el autor), que fue diseñado específicamente para admitir este caso de uso.Para obtener documentación detallada sobre
straight.el, incluidas las comparaciones con otros gestores de paquetes, consulte el archivo README . A continuación, he citado la sección que es relevante para su pregunta.Utilizando
straight.elpara reproducir erroresUna de las principales razones por las que quería escribir
straight.elera que los administradores de paquetes existentes no eran buenos para reproducir errores. Por ejemplo, algunos de ellos cargarían todos los paquetes instalados cuando se inicializó el administrador de paquetes. Obviamente, eso no es aceptable para un "caso de prueba mínimo".Por el contrario, el arranque
straight.elno carga nada excepto porstraight.elsí mismo (los repositorios de recetas predeterminados se registran, pero no se clonan hasta que se necesitan). Normalmente deberías cargarstraight.elmediante el fragmento de arranque , pero cuando estés dentroemacs -Q, así es como puedes inicializarstraight.el:También puede hacer esto desde la línea de comandos, quizás creando un alias para ello:
Digamos que está haciendo un informe de error para Projectile. Para cargar solo Projectile y todas sus dependencias, ejecute:
Tenga en cuenta que esto utilizará las revisiones actualmente desprotegidas de Projectile y todas sus dependencias, por lo que debe tomar nota de ellas para hacer su informe de error.
fuente
Cuando lo necesita por una sola vez (por ejemplo, para probar y probar una receta para reproducir un error), a menudo puede salirse con la suya:
Dije "a menudo" porque no prestará atención a las dependencias, por lo que en algunos casos necesitará agregar más de esos
-l ...argumentos para cargar los otros paquetes que se necesitan.fuente