1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-26 07:33:47 +00:00

Allow to disable the DWIMish behavior of 'x' in package menu

* lisp/emacs-lisp/package.el
(package-menu-use-current-if-no-marks): New defcustom.
(package-menu-execute): Use it.  (Bug#62563)

* etc/NEWS: Announce the new option.
This commit is contained in:
Eli Zaretskii 2023-05-29 16:44:48 +03:00
parent 08104c0150
commit afc1f32935
2 changed files with 17 additions and 2 deletions

View File

@ -1886,7 +1886,9 @@ These commands can be useful if the ".elc" files are out of date
+++ +++
*** New DWIM action on 'x' in "*Packages*" buffer. *** New DWIM action on 'x' in "*Packages*" buffer.
If no packages are marked, 'x' will install the package under point if If no packages are marked, 'x' will install the package under point if
it isn't already, and remove it if it is installed. it isn't already, and remove it if it is installed. Customize the new
option 'package-menu-use-current-if-no-marks' to the nil value to get
back the old behavior of signaling an error in that case.
+++ +++
*** New command 'package-vc-install'. *** New command 'package-vc-install'.

View File

@ -3313,6 +3313,18 @@ Values can be interactively added to this list by typing
:version "25.1" :version "25.1"
:type '(repeat (regexp :tag "Hide packages with name matching"))) :type '(repeat (regexp :tag "Hide packages with name matching")))
(defcustom package-menu-use-current-if-no-marks t
"Whether \\<package-menu-mode-map>\\[package-menu-execute] in package menu operates on current package if none are marked.
If non-nil, and no packages are marked for installation or
deletion, \\<package-menu-mode-map>\\[package-menu-execute] will operate on the current package at point,
see `package-menu-execute' for details.
The default is t. Set to nil to get back the original behavior
of having `package-menu-execute' signal an error when no packages
are marked for installation or deletion."
:version "29.1"
:type 'boolean)
(defun package-menu--refresh (&optional packages keywords) (defun package-menu--refresh (&optional packages keywords)
"Re-populate the `tabulated-list-entries'. "Re-populate the `tabulated-list-entries'.
PACKAGES should be nil or t, which means to display all known packages. PACKAGES should be nil or t, which means to display all known packages.
@ -3943,7 +3955,8 @@ invocations."
;; Nothing marked. ;; Nothing marked.
(unless (or delete-list install-list) (unless (or delete-list install-list)
;; Not on a package line. ;; Not on a package line.
(unless (tabulated-list-get-id) (unless (and (tabulated-list-get-id)
package-menu-use-current-if-no-marks)
(user-error "No operations specified")) (user-error "No operations specified"))
(let* ((id (tabulated-list-get-id)) (let* ((id (tabulated-list-get-id))
(status (package-menu-get-status))) (status (package-menu-get-status)))