Function: package-desc-status
package-desc-status is a byte-compiled function defined in
package.el.gz.
Signature
(package-desc-status PKG-DESC)
Documentation
Return the status of package-desc object PKG-DESC.
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/package.el.gz
(defun package-desc-status (pkg-desc)
"Return the status of `package-desc' object PKG-DESC."
(let* ((name (package-desc-name pkg-desc))
(dir (package-desc-dir pkg-desc))
(lle (assq name package-load-list))
(held (cadr lle))
(version (package-desc-version pkg-desc))
(signed (or (not package-list-unsigned)
(package-desc-signed pkg-desc))))
(cond
((package-vc-p pkg-desc) "source")
((eq dir 'builtin) "built-in")
((and lle (null held)) "disabled")
((stringp held)
(let ((hv (if (stringp held) (version-to-list held))))
(cond
((version-list-= version hv) "held")
((version-list-< version hv) "obsolete")
(t "disabled"))))
(dir ;One of the installed packages.
(cond
((not (file-exists-p dir)) "deleted")
;; Not inside `package-user-dir'.
((not (file-in-directory-p dir package-user-dir)) "external")
((eq pkg-desc (cadr (assq name package-alist)))
(if (not signed) "unsigned"
(if (package--user-selected-p name)
"installed" "dependency")))
(t "obsolete")))
((package--incompatible-p pkg-desc) "incompat")
(t
(let* ((ins (cadr (assq name package-alist)))
(ins-v (if ins (package-desc-version ins))))
(cond
;; Installed obsolete packages are handled in the `dir'
;; clause above. Here we handle available obsolete, which
;; are displayed depending on `package-menu--hide-packages'.
((and ins (version-list-<= version ins-v)) "avail-obso")
(t
(if (memq name package-menu--new-package-list)
"new" "available"))))))))