ときどきunload-feature
、ライブラリをアンロードするために呼び出したい…それがライブラリに依存している…そして別のライブラリがそのライブラリに依存している…
依存関係ツリーを手動で移動せずに、ライブラリとそれに依存するすべてのライブラリをアンロードするにはどうすればよいですか?
一般的な使用例は、パッケージのすべてのライブラリをアンロードすることです(たとえば、アップグレードまたはアンインストール時)。そのための方法があれば、それで十分です。
ときどきunload-feature
、ライブラリをアンロードするために呼び出したい…それがライブラリに依存している…そして別のライブラリがそのライブラリに依存している…
依存関係ツリーを手動で移動せずに、ライブラリとそれに依存するすべてのライブラリをアンロードするにはどうすればよいですか?
一般的な使用例は、パッケージのすべてのライブラリをアンロードすることです(たとえば、アップグレードまたはアンインストール時)。そのための方法があれば、それで十分です。
回答:
これを行う組み込みの方法はありません。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
問題のポイントは、の再帰バージョンを作成することでした。