Function: package-autoremove

package-autoremove is an autoloaded, interactive and byte-compiled function defined in package.el.gz.

Signature

(package-autoremove)

Documentation

Remove packages that are no longer needed.

Packages that are no more needed by other packages in package-selected-packages and their dependencies will be deleted.

Probably introduced at or before Emacs version 25.1.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/package.el.gz
;;;###autoload
(defun package-autoremove ()
  "Remove packages that are no longer 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 "Packages to delete: %d (%s), proceed? "
                   (length removable)
                   (mapconcat #'symbol-name removable " ")))
            (mapc (lambda (p)
                    (package-delete (cadr (assq p package-alist)) t))
                  removable))
        (message "Nothing to autoremove")))))