mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-30 19:53:09 +00:00
* lisp/emacs-lisp/package.el: New "external" package status
An external package is any installed package that's not built-in and not from `package-user-dir', which usually means it's from an entry in `package-directory-list'. They are treated much like built-in packages, in that they cannot be through the Package Menu deleted and are not considered for upgrades. (package-desc-status): Identify if a package is installed outside `package-user-dir'. (package-menu--print-info-simple) (package-menu--status-predicate): Add support for it. * etc/NEWS: Document it.
This commit is contained in:
parent
ad39858fae
commit
14bb519f10
11
etc/NEWS
11
etc/NEWS
@ -255,6 +255,17 @@ by default at least in Debian, for security reasons).
|
||||
|
||||
** package.el
|
||||
|
||||
*** New "external" package status.
|
||||
An external package is any installed package that's not built-in and
|
||||
not from `package-user-dir', which usually means it's from an entry in
|
||||
`package-directory-list'. They are treated much like built-in
|
||||
packages, in that they cannot be through the Package Menu deleted and
|
||||
are not considered for upgrades.
|
||||
|
||||
The effect, is that a user can manually place a specific version of a
|
||||
package inside `package-directory-list' and the Package Menu will
|
||||
always respect that.
|
||||
|
||||
*** If a package is available on multiple archives and one has higher
|
||||
priority (as per `package-archive-priorities') only that one is
|
||||
listed. This can be configured with `package-menu-hide-low-priority'.
|
||||
|
@ -2457,7 +2457,9 @@ of these dependencies, similar to the list returned by
|
||||
(t "disabled"))))
|
||||
(dir ;One of the installed packages.
|
||||
(cond
|
||||
((not (file-exists-p (package-desc-dir pkg-desc))) "deleted")
|
||||
((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)
|
||||
@ -2662,6 +2664,7 @@ Return (PKG-DESC [NAME VERSION STATUS DOC])."
|
||||
(let* ((status (package-desc-status pkg))
|
||||
(face (pcase status
|
||||
(`"built-in" 'font-lock-builtin-face)
|
||||
(`"external" 'font-lock-builtin-face)
|
||||
(`"available" 'default)
|
||||
(`"avail-obso" 'font-lock-comment-face)
|
||||
(`"new" 'bold)
|
||||
@ -2977,6 +2980,8 @@ Optional argument NOQUERY non-nil means do not ask the user to confirm."
|
||||
((string= sB "unsigned") nil)
|
||||
((string= sA "held") t)
|
||||
((string= sB "held") nil)
|
||||
((string= sA "external") t)
|
||||
((string= sB "external") nil)
|
||||
((string= sA "built-in") t)
|
||||
((string= sB "built-in") nil)
|
||||
((string= sA "obsolete") t)
|
||||
|
Loading…
Reference in New Issue
Block a user