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/elpa
directorio. package-load-list
me 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
.emacs
archivo 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-region
para comentar (o, conC-u
, para descomentar) una región de texto.package-load-list
es una forma de incluir explícitamente paquetes, simplemente elimine elall
símbolo.Respuestas:
La
package-load-list
variable 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
, sisetq
lo 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
try
paquete ( 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.el
para reproducir erroresUna de las principales razones por las que quería escribir
straight.el
era 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.el
no carga nada excepto porstraight.el
sí mismo (los repositorios de recetas predeterminados se registran, pero no se clonan hasta que se necesitan). Normalmente deberías cargarstraight.el
mediante 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