summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorSean Devlin <spd@toadstyle.org>2024-10-21 11:28:06 -0400
committerPhilip Kaludercic <philipk@posteo.net>2024-11-21 22:12:32 +0100
commitb4e2d9a3af3dbd0ac7fa944e9386f667feb1c124 (patch)
tree619788e12eac854c6e393733169397818bb002c6 /lisp/emacs-lisp
parent7cb77385d38b96377d404a2ab0e778b2dfce5c77 (diff)
downloademacs-b4e2d9a3af3dbd0ac7fa944e9386f667feb1c124.tar.gz
emacs-b4e2d9a3af3dbd0ac7fa944e9386f667feb1c124.tar.bz2
emacs-b4e2d9a3af3dbd0ac7fa944e9386f667feb1c124.zip
Add noconfirm to 'package-autoremove'
* lisp/emacs-lisp/package.el (package-autoremove): Add optional argument NOCONFIRM to skip user confirmation when removing packages. * etc/NEWS: Announce the new argument. (Bug#73932)
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/package.el21
1 files changed, 13 insertions, 8 deletions
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index af07ba44e28..4403e5ffb63 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -2616,26 +2616,31 @@ are invalid due to changed byte-code, macros or the like."
(package-recompile pkg-desc))))
;;;###autoload
-(defun package-autoremove ()
+(defun package-autoremove (&optional noconfirm)
"Remove packages that are no longer needed.
Packages that are no more needed by other packages in
`package-selected-packages' and their dependencies
-will be deleted."
- (interactive)
+will be deleted.
+
+If optional argument NOCONFIRM is non-nil, or when invoked with a prefix
+argument, don't ask for confirmation to install packages."
+ (interactive "P")
;; If `package-selected-packages' is nil, it would make no sense to
;; try to populate it here, because then `package-autoremove' will
;; do absolutely nothing.
- (when (or package-selected-packages
+ (when (or noconfirm
+ package-selected-packages
(yes-or-no-p
(format-message
"`package-selected-packages' is empty! Really remove ALL packages? ")))
(let ((removable (package--removable-packages)))
(if removable
- (when (y-or-n-p
- (format "Packages to delete: %d (%s), proceed? "
- (length removable)
- (mapconcat #'symbol-name removable " ")))
+ (when (or noconfirm
+ (y-or-n-p
+ (format "Packages to delete: %d (%s), proceed? "
+ (length removable)
+ (mapconcat #'symbol-name removable " "))))
(mapc (lambda (p)
(package-delete (cadr (assq p package-alist)) t))
removable))