J'ai rencontré un bogue qui impliquait une interaction entre plusieurs packages. Afin de signaler le bogue, je dois fournir une recette reproductible illustrant le problème. Cela nécessite le chargement des packages appropriés, mais rien d'autre depuis mon init, et aucun autre package. Quelle est la meilleure façon de procéder?
MISE À JOUR
Pour clarifier, je connais le concept de passer au crible mon .emacs dans une recherche binaire pour identifier le code à l'origine d'un problème. Dans cette situation, je sais exactement quels packages sont déjà à l'origine du problème. Ce que je ne sais pas, c'est comment utiliser le package-
système pour charger uniquement ces quelques paquets.
(package-initialize)
chargera les packages, mais aussi tout le reste dans mon .emacs.d/elpa
répertoire. package-load-list
me permet de spécifier des versions particulières de packages à charger, ou des packages particuliers à exclure explicitement . J'ai besoin de l'inverse - comment fournir à Emacs une liste de packages à inclure , sans charger d'autres packages dans le système elpa / package.
.emacs
fichier vierge - installez chaque package un par un et voyez si le problème persiste. Vous pouvez vous surprendre et trouver le package responsable qui ne joue pas bien avec l'autre package. Lorsque vous êtes allé aussi loin que possible, notez les étapes que vous avez utilisées pour reproduire le problème et soumettre le rapport de bogue - par exemple, à partir d' Emacs -Q , installez le package A, puis installez le package B, puis installez le package C, puis ouvrez le*Scratch*
tampon et tapez ...comment-region
pour mettre en commentaire (ou, avecC-u
, pour décommenter) une région de texte.package-load-list
est un moyen d'inclure explicitement des packages, il suffit de supprimer leall
symbole.Réponses:
La
package-load-list
variable peut être utilisée pour spécifier précisément les packages et les versions à charger:La seule chose à surveiller est que la valeur par défaut inclut
all
, si voussetq
le faites, tout ira bien car cela écrase complètement la valeur d'origine.la source
Une option qui fonctionnerait bien dans des contextes où les développeurs travaillant sur la reproduction du bogue peuvent ne pas avoir (ou ne pas vouloir) que ces dépendances soient installées consiste à utiliser le
try
package ( https://melpa.org/#/try ). D'autres peuvent charger des packages à partir de la gestion des packages sans modifier leur installation locale.la source
Ce cas d'utilisation est une terrible lacune de
package.el
, alors ne l'utilisez paspackage.el
. À la place, utilisez un gestionnaire de packages commestraight.el
(je suis l'auteur), spécialement conçu pour prendre en charge ce cas d'utilisation.Pour une documentation détaillée sur
straight.el
, y compris des comparaisons avec d'autres gestionnaires de packages, consultez le fichier README . Ci-dessous, j'ai cité la section qui correspond à votre question.Utilisation
straight.el
pour reproduire des boguesL'une des principales raisons pour lesquelles je voulais écrire
straight.el
était que les gestionnaires de paquets existants n'étaient pas bons pour reproduire les bogues. Par exemple, certains d'entre eux chargeraient tous les packages installés lors de l'initialisation du gestionnaire de packages! De toute évidence, ce n'est pas acceptable pour un "cas de test minimal".Au contraire, le bootstrap
straight.el
ne charge rien d'autre questraight.el
lui-même (les référentiels de recettes par défaut sont enregistrés, mais pas clonés tant que cela n'est pas nécessaire). Vous devriez normalement chargerstraight.el
au moyen de l' extrait de bootstrap , mais lorsque vous êtes dedansemacs -Q
, voici comment vous pouvez initialiserstraight.el
:Vous pouvez également le faire à partir de la ligne de commande, peut-être en lui créant un alias:
Disons que vous faites un rapport de bogue pour Projectile. Pour charger uniquement Projectile et toutes ses dépendances, exécutez:
Notez que cela utilisera les révisions actuellement vérifiées de Projectile et toutes ses dépendances, vous devriez donc en prendre note afin de faire votre rapport de bogue.
la source
Lorsque vous en avez besoin pour une seule fois (par exemple pour essayer de tester une recette pour reproduire un bug), vous pouvez souvent vous en tirer avec:
J'ai dit "souvent" car il ne prêtera pas attention aux dépendances, donc dans certains cas, vous devrez ajouter plus d'
-l ...
arguments pour charger les autres packages nécessaires.la source