Zwolnij cały pakiet lub drzewo biblioteczne

9

Czasami chcę zadzwonić, unload-featureaby zwolnić bibliotekę… i zależy to od biblioteki… a inna biblioteka zależy od tej biblioteki…

Jak mogę zwolnić bibliotekę i wszystkie biblioteki, które od niej zależą, bez ręcznego przeglądania drzewa zależności?

Typowym przypadkiem użycia jest rozładowanie wszystkich bibliotek pakietu (np. Podczas aktualizacji lub deinstalacji), więc jeśli istnieje sposób, aby to zrobić, byłoby wystarczająco dobre.

Gilles „SO- przestań być zły”
źródło

Odpowiedzi:

2

Nie ma wbudowanego sposób to zrobić - patrz Rozładunek w instrukcji elisp.

unload-featureprzyjmuje forceargument, który pozwala na wymuszone rozładowanie, Pnawet jeśli inne pakiety zależą od P; czy to wystarczy dla twoich potrzeb?

Jeśli nie, możesz spróbować utworzyć rekurencyjną wersję unload-featurezawierającą:

(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
źródło
Dzięki, naprawiłem błąd w pytaniu. Chodziło o napisanie wersji rekurencyjnej unload-feature.
Gilles „SO- przestań być zły”