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


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было предметом вопроса.
Жиль "ТАК - перестань быть злым"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.