Entladen Sie ein ganzes Paket oder einen Bibliotheksbaum

9

Manchmal möchte ich anrufen unload-feature, um eine Bibliothek zu entladen ... und eine Bibliothek hängt davon ab ... und eine andere Bibliothek hängt von dieser Bibliothek ab ...

Wie kann ich eine Bibliothek und alle davon abhängigen Bibliotheken entladen, ohne den Abhängigkeitsbaum manuell zu durchlaufen?

Ein häufiger Anwendungsfall ist das Entladen aller Bibliotheken eines Pakets (z. B. beim Aktualisieren oder Deinstallieren). Wenn dies möglich ist, ist dies ausreichend.

Gilles 'SO - hör auf böse zu sein'
quelle

Antworten:

2

Es gibt keine eingebaute Möglichkeit, dies zu tun - siehe Entladen im Elisp-Handbuch.

unload-featurenimmt ein forceArgument an, das das gewaltsame Entladen ermöglicht, Pselbst wenn andere Pakete davon abhängen P; reicht das für deine bedürfnisse aus?

Wenn nicht, können Sie versuchen, eine rekursive Version von Folgendes zu erstellen unload-feature:

(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
quelle
Danke, ich habe den Fehler in der Frage behoben. Das Schreiben einer rekursiven Version von unload-featurewar der Punkt der Frage.
Gilles 'SO - hör auf böse zu sein'