aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorDmitry Gutov2023-05-06 03:54:59 +0300
committerDmitry Gutov2023-05-06 03:58:49 +0300
commit53cc61d60dbfe94e5bf47cf167f816837540d2b3 (patch)
tree67ade04396372804fea90097f3652bfab6e9fb87 /lisp
parent0c6311386a12560c6578ffe50996c1f2c841ddfe (diff)
downloademacs-53cc61d60dbfe94e5bf47cf167f816837540d2b3.tar.gz
emacs-53cc61d60dbfe94e5bf47cf167f816837540d2b3.zip
package-upgrade: Implement the upgrading of built-ins
* lisp/emacs-lisp/package.el (package--upgradeable-packages): Add new argument. When INCLUDE-BUILTINS is non-nil, also search among package--builtins (bug#62720). (package-upgrade): Use the new argument. Bind package-install-upgrade-built-in when necessary. Mark the package as selected if it was previously an "active built-in". (package-upgrade-all): Update the docstring.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/emacs-lisp/package.el52
1 files changed, 32 insertions, 20 deletions
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 0cd54c3fbe2..2892728ebd9 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -2263,25 +2263,26 @@ had been enabled."
2263 2263
2264;;;###autoload 2264;;;###autoload
2265(defun package-upgrade (name) 2265(defun package-upgrade (name)
2266 "Upgrade package NAME if a newer version exists. 2266 "Upgrade package NAME if a newer version exists."
2267
2268Currently, packages which are part of the Emacs distribution
2269cannot be upgraded that way. To enable upgrades of such a
2270package using this command, first upgrade the package to a
2271newer version from ELPA by using `\\<package-menu-mode-map>\\[package-menu-mark-install]' after `\\[list-packages]'."
2272 (interactive 2267 (interactive
2273 (list (completing-read 2268 (list (completing-read
2274 "Upgrade package: " (package--upgradeable-packages) nil t))) 2269 "Upgrade package: " (package--upgradeable-packages t) nil t)))
2275 (let* ((package (if (symbolp name) 2270 (let* ((package (if (symbolp name)
2276 name 2271 name
2277 (intern name))) 2272 (intern name)))
2278 (pkg-desc (cadr (assq package package-alist)))) 2273 (pkg-desc (cadr (assq package package-alist)))
2279 (if (package-vc-p pkg-desc) 2274 (package-install-upgrade-built-in (not pkg-desc)))
2275 ;; `pkg-desc' will be nil when the package is an "active built-in".
2276 (if (and pkg-desc (package-vc-p pkg-desc))
2280 (package-vc-upgrade pkg-desc) 2277 (package-vc-upgrade pkg-desc)
2281 (package-delete pkg-desc 'force 'dont-unselect) 2278 (when pkg-desc
2282 (package-install package 'dont-select)))) 2279 (package-delete pkg-desc 'force 'dont-unselect))
2283 2280 (package-install package
2284(defun package--upgradeable-packages () 2281 ;; An active built-in has never been "selected"
2282 ;; before. Mark it as installed explicitly.
2283 (and pkg-desc 'dont-select)))))
2284
2285(defun package--upgradeable-packages (&optional include-builtins)
2285 ;; Initialize the package system to get the list of package 2286 ;; Initialize the package system to get the list of package
2286 ;; symbols for completion. 2287 ;; symbols for completion.
2287 (package--archives-initialize) 2288 (package--archives-initialize)
@@ -2292,11 +2293,21 @@ newer version from ELPA by using `\\<package-menu-mode-map>\\[package-menu-mark-
2292 (or (let ((available 2293 (or (let ((available
2293 (assq (car elt) package-archive-contents))) 2294 (assq (car elt) package-archive-contents)))
2294 (and available 2295 (and available
2295 (version-list-< 2296 (or (and
2296 (package-desc-version (cadr elt)) 2297 include-builtins
2297 (package-desc-version (cadr available))))) 2298 (not (package-desc-version (cadr elt))))
2298 (package-vc-p (cadr (assq (car elt) package-alist))))) 2299 (version-list-<
2299 package-alist))) 2300 (package-desc-version (cadr elt))
2301 (package-desc-version (cadr available))))))
2302 (package-vc-p (cadr elt))))
2303 (if include-builtins
2304 (append package-alist
2305 (mapcan
2306 (lambda (elt)
2307 (when (not (assq (car elt) package-alist))
2308 (list (list (car elt) (package--from-builtin elt)))))
2309 package--builtins))
2310 package-alist))))
2300 2311
2301;;;###autoload 2312;;;###autoload
2302(defun package-upgrade-all (&optional query) 2313(defun package-upgrade-all (&optional query)
@@ -2306,8 +2317,9 @@ interactively, QUERY is always true.
2306 2317
2307Currently, packages which are part of the Emacs distribution are 2318Currently, packages which are part of the Emacs distribution are
2308not upgraded by this command. To enable upgrading such a package 2319not upgraded by this command. To enable upgrading such a package
2309using this command, first upgrade the package to a newer version 2320using this command, first upgrade the package to a newer version
2310from ELPA by using `\\<package-menu-mode-map>\\[package-menu-mark-install]' after `\\[list-packages]'." 2321from ELPA by either using `\\[package-upgrade]' or
2322`\\<package-menu-mode-map>\\[package-menu-mark-install]' after `\\[list-packages]'."
2311 (interactive (list (not noninteractive))) 2323 (interactive (list (not noninteractive)))
2312 (package-refresh-contents) 2324 (package-refresh-contents)
2313 (let ((upgradeable (package--upgradeable-packages))) 2325 (let ((upgradeable (package--upgradeable-packages)))