Déchargez tout un package ou une arborescence de bibliothèques

9

Parfois, je veux appeler unload-featurepour décharger une bibliothèque… et une bibliothèque en dépend… et une autre bibliothèque dépend de cette bibliothèque…

Comment puis-je décharger une bibliothèque et toutes les bibliothèques qui en dépendent, sans parcourir manuellement l'arborescence des dépendances?

Un cas d'utilisation courant consiste à décharger toutes les bibliothèques d'un package (par exemple lors de la mise à niveau ou de la désinstallation), donc s'il y a un moyen de le faire, ce serait suffisant.

Gilles 'SO- arrête d'être méchant'
la source

Réponses:

2

Il n'y a aucun moyen intégré de le faire - voir Déchargement dans le manuel Elisp.

unload-featureprend un forceargument qui permet le déchargement forcé Pmême si d'autres packages dépendentP ; est-ce suffisant pour vos besoins?

Sinon, vous pouvez essayer de créer une version récursive de unload-featurecontenant:

(let* ((file (feature-file feature))
       (dependents (delete file (copy-sequence (file-dependents file))))) 
  (when dependents
    (mapc #'unload-feature-recursive (mapcan #'file-provides dependents))))
Tianxiang Xiong
la source
Merci, j'ai corrigé l'erreur dans la question. La rédaction d'une version récursive de unload-featureétait le point de la question.
Gilles 'SO- arrête d'être méchant'