Last Modified:

パッケージを削除するとき、不要になったパッケージも同時に削除するEmacs

とあるパッケージを削除したとき、そのパッケージだけが依存しているパッケージは不要になるので同時に消えて欲しいですよね。

解決方法

(defun ad:package-delete (pkg-desc)
  "不要になった依存パッケージも同時に削除する"
  (let ((this-reqs (mapcar 'car (package-desc-reqs pkg-desc)))
        all-reqs)
    (dolist (package package-alist)
      (dolist (req (mapcar 'car (package-desc-reqs (cadr package))))
        (add-to-list 'all-reqs req)))
    (dolist (req this-reqs)
      (unless (memq req all-reqs)
        (package-delete (car (assoc-default req package-alist)))))))

(advice-add 'package-delete :after #'ad:package-delete)