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.

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))))

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'
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.