답변:
출처는 https://github.com/emacs-mirror/emacs/blob/master/lisp/emacs-lisp/package.el#L2113 입니다.
패키지 선택 패키지에 없거나 종속성이없는 모든 패키지를 삭제합니다.
(defun package-autoremove ()
"Remove packages that are no more needed.
Packages that are no more needed by other packages in
`package-selected-packages' and their dependencies
will be deleted."
(interactive)
;; If `package-selected-packages' is nil, it would make no sense to
;; try to populate it here, because then `package-autoremove' will
;; do absolutely nothing.
(when (or package-selected-packages
(yes-or-no-p
(format-message
"`package-selected-packages' is empty! Really remove ALL packages? ")))
(let ((removable (package--removable-packages)))
(if removable
(when (y-or-n-p
(format "%s packages will be deleted:\n%s, proceed? "
(length removable)
(mapconcat #'symbol-name removable ", ")))
(mapc (lambda (p)
(package-delete (cadr (assq p package-alist)) t))
removable))
(message "Nothing to autoremove")))))
(defun package--removable-packages ()
"Return a list of names of packages no longer needed.
These are packages which are neither contained in
`package-selected-packages' nor a dependency of one that is."
(let ((needed (cl-loop for p in package-selected-packages
if (assq p package-alist)
;; `p' and its dependencies are needed.
append (cons p (package--get-deps p)))))
(cl-loop for p in (mapcar #'car package-alist)
unless (memq p needed)
collect p)))
package-selected-packages
패키지를 설치하고 제거 할 때 자동으로 업데이트됩니다. 일반적으로 직접 수정하지 않아도됩니다. 사물이 자동 제거되는 것을 발견하면 설치 한 후 종속 항목으로 가져 와서 나중에 제거한 패키지 일 수 있습니다. 자동 제거를 지원하는 것 외에도이 변수는 emacs 구성을 새 컴퓨터에 복사하고을 사용하여 선택한 패키지 목록에 모든 것을 설치하려고 할 때 사용할 수 있습니다 package-install-selected-packages
.
package-selected-packages
입니다.
package-selected-packages
되면 자동으로 제거되지 않음을 의미합니다.