From 65e811a0fcf9ffd1f12b8b2a2d9d8a0474543b36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20T=C3=A1vora?= Date: Tue, 11 Apr 2023 11:52:46 +0100 Subject: [PATCH] Add ability to update built-in packages (bug#62720) Previously package.el's M-x package-update command completely ignored built-in packages. With this patch in place, it updates them along with any other manually installed non-built-in packages, as long as the version available from ELPA is newer. To prevent misupdates of the 'transient.el' and 'csharp-mode.el' packages, which are built into emacs-29, version information is now correctly collected from these two. * lisp/finder.el (finder-compile-keywords): Be aware of "Package-Version" header. * lisp/emacs-lisp/package.el (package-update): Rework. (package--updateable-packages): Rework. * lisp/progmodes/csharp-mode.el: Add version information. --- lisp/emacs-lisp/package.el | 26 ++++++++++++++++++-------- lisp/finder.el | 2 +- lisp/progmodes/csharp-mode.el | 1 + 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index f92afe56b76..286583100c3 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -2243,11 +2243,16 @@ package-update (let* ((package (if (symbolp name) name (intern name))) - (pkg-desc (cadr (assq package package-alist)))) - (if (package-vc-p pkg-desc) - (package-vc-update pkg-desc) - (package-delete pkg-desc 'force) - (package-install package 'dont-select)))) + (nonbuiltin (assq package package-alist))) + (cond (nonbuiltin + (let ((desc (cadr nonbuiltin))) + (if (package-vc-p desc) + (package-vc-update desc) + (package-delete desc 'force) + (package-install package 'dont-select)))) + (t + (package-install + (cadr (assq package package-archive-contents))))))) (defun package--updateable-packages () ;; Initialize the package system to get the list of package @@ -2261,10 +2266,15 @@ package--updateable-packages (assq (car elt) package-archive-contents))) (and available (version-list-< - (package-desc-version (cadr elt)) + (if (vectorp (cdr elt)) + (aref (cdr elt) 0) + (package-desc-version (cadr elt))) (package-desc-version (cadr available))))) - (package-vc-p (cadr (assq (car elt) package-alist))))) - package-alist))) + (and (consp (cdr elt)) + (package-desc-p (cadr elt)) + (package-vc-p (cadr elt))))) + (seq-union package-alist package--builtins + (lambda (a b) (eq (car a) (car b))))))) ;;;###autoload (defun package-update-all (&optional query) diff --git a/lisp/finder.el b/lisp/finder.el index 5aec0149b89..ddc6d6f03da 100644 --- a/lisp/finder.el +++ b/lisp/finder.el @@ -231,7 +231,7 @@ finder-compile-keywords summary (or (cdr (assq package finder--builtins-descriptions)) (lm-synopsis)) - version (lm-header "version"))) + version (or (lm-header "package-version") (lm-header "version")))) (when summary (setq version (or (ignore-errors (version-to-list version)) (alist-get package package--builtin-versions))) diff --git a/lisp/progmodes/csharp-mode.el b/lisp/progmodes/csharp-mode.el index 47cd13e7fdb..cd045cd14d1 100644 --- a/lisp/progmodes/csharp-mode.el +++ b/lisp/progmodes/csharp-mode.el @@ -8,6 +8,7 @@ ;; Jostein Kjønigsen ;; Created : September 2022 ;; Keywords : c# languages oop +;; Version : 3.0.0 ;; This file is part of GNU Emacs. -- 2.39.2