有时我想打电话unload-feature
来卸载一个库……它依赖于一个库……而另一个库依赖于那个库……
如何卸载一个库和所有依赖它的库,而无需手动遍历依赖树?
一个常见的用例是卸载软件包的所有库(例如,在升级或卸载时),因此,如果有做到这一点的方法,那就足够了。
有时我想打电话unload-feature
来卸载一个库……它依赖于一个库……而另一个库依赖于那个库……
如何卸载一个库和所有依赖它的库,而无需手动遍历依赖树?
一个常见的用例是卸载软件包的所有库(例如,在升级或卸载时),因此,如果有做到这一点的方法,那就足够了。
Answers:
没有内置的方法可以执行此操作-请参阅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
问题的重点在于编写递归版本的。