Выгрузить весь пакет или библиотечное дерево

9

Иногда я хочу позвонить, unload-featureчтобы выгрузить библиотеку ... и это зависит от библиотеки ... а другая библиотека зависит от этой библиотеки ...

Как я могу выгрузить библиотеку и все библиотеки, которые зависят от нее, не обходя дерево зависимостей вручную?

Распространенным вариантом использования является выгрузка всех библиотек пакета (например, при обновлении или удалении), поэтому, если есть способ сделать это, этого будет достаточно.

Жиль "ТАК - перестань быть злым"
источник

Ответы:

2

Нет встроенного способа сделать это - см. Разгрузка в руководстве Elisp.

unload-featureпринимает forceаргумент, который разрешает принудительную выгрузку, Pдаже если другие пакеты зависят от P; этого достаточно для ваших нужд?

Если нет, вы можете попытаться создать рекурсивную версию, 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))))
Тяньсян Сюн
источник
Спасибо, я исправил ошибку в вопросе. Написание рекурсивной версии unload-featureбыло предметом вопроса.
Жиль "ТАК - перестань быть злым"