Function: package-menu--find-upgrades

package-menu--find-upgrades is a byte-compiled function defined in package.el.gz.

Signature

(package-menu--find-upgrades)

Documentation

In Package Menu, return an alist of packages that can be upgraded.

The alist has the same form as package-alist, namely a list of elements of the form (PKG . DESCS), but where DESCS is the package-desc object corresponding to the newer version.

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/package.el.gz
(defun package-menu--find-upgrades ()
  "In Package Menu, return an alist of packages that can be upgraded.
The alist has the same form as `package-alist', namely a list
of elements of the form (PKG . DESCS), but where DESCS is the `package-desc'
object corresponding to the newer version."
  (let (installed available upgrades)
    ;; Build list of installed/available packages in this buffer.
    (dolist (entry tabulated-list-entries)
      ;; ENTRY is (PKG-DESC [NAME VERSION STATUS DOC])
      (let ((pkg-desc (car entry))
            (status (aref (cadr entry) 2)))
        (cond ((member status '("installed" "dependency" "unsigned" "external" "built-in"))
               (push pkg-desc installed))
              ((member status '("available" "new"))
               (setq available (package--append-to-alist pkg-desc available))))))
    ;; Loop through list of installed packages, finding upgrades.
    (dolist (pkg-desc installed)
      (let* ((name (package-desc-name pkg-desc))
             (avail-pkg (cadr (assq name available))))
        (and avail-pkg
             (version-list-< (package-desc-priority-version pkg-desc)
                             (package-desc-priority-version avail-pkg))
             (or (not (package--active-built-in-p pkg-desc))
                 package-install-upgrade-built-in)
             (push (cons name avail-pkg) upgrades))))
    upgrades))