emacs: Remove "M" key binding for marking all lines.
* emacs/guix-list.el: Split 'guix-list-mark' into internal and interactive functions. Remove "M" key binding, use "C-u m" instead. (guix-list--mark): New function. Use it in other marking functions. (guix-list-mark): Mark all lines with a prefix argument. * doc/emacs.texi (Emacs List buffer): Document changes in the key bindings.
This commit is contained in:
parent
5ff408d998
commit
578b98da43
|
@ -213,9 +213,7 @@ Default key bindings available for both ``package-list'' and
|
||||||
|
|
||||||
@table @kbd
|
@table @kbd
|
||||||
@item m
|
@item m
|
||||||
Mark the current entry.
|
Mark the current entry (with prefix, mark all entries).
|
||||||
@item M
|
|
||||||
Mark all entries.
|
|
||||||
@item u
|
@item u
|
||||||
Unmark the current entry (with prefix, unmark all entries).
|
Unmark the current entry (with prefix, unmark all entries).
|
||||||
@item @key{DEL}
|
@item @key{DEL}
|
||||||
|
|
|
@ -292,13 +292,11 @@ See `guix-list-marked' for the meaning of ARGS."
|
||||||
See `guix-list-get-marked' for details."
|
See `guix-list-get-marked' for details."
|
||||||
(mapcar #'car (apply #'guix-list-get-marked mark-names)))
|
(mapcar #'car (apply #'guix-list-get-marked mark-names)))
|
||||||
|
|
||||||
(defun guix-list-mark (mark-name &optional advance &rest args)
|
(defun guix-list--mark (mark-name &optional advance &rest args)
|
||||||
"Put a mark on the current line.
|
"Put a mark on the current line.
|
||||||
Also add the current entry to `guix-list-marked' using its ID and ARGS.
|
Also add the current entry to `guix-list-marked' using its ID and ARGS.
|
||||||
MARK-NAME is a symbol from `guix-list-mark-alist'.
|
MARK-NAME is a symbol from `guix-list-mark-alist'.
|
||||||
If ADVANCE is non-nil, move forward by one line after marking.
|
If ADVANCE is non-nil, move forward by one line after marking."
|
||||||
Interactively, put a general mark and move to the next line."
|
|
||||||
(interactive '(general t))
|
|
||||||
(let ((id (guix-list-current-id)))
|
(let ((id (guix-list-current-id)))
|
||||||
(if (eq mark-name 'empty)
|
(if (eq mark-name 'empty)
|
||||||
(setq guix-list-marked (assq-delete-all id guix-list-marked))
|
(setq guix-list-marked (assq-delete-all id guix-list-marked))
|
||||||
|
@ -310,12 +308,21 @@ Interactively, put a general mark and move to the next line."
|
||||||
(tabulated-list-put-tag (guix-list-get-mark-string mark-name)
|
(tabulated-list-put-tag (guix-list-get-mark-string mark-name)
|
||||||
advance))
|
advance))
|
||||||
|
|
||||||
(defun guix-list-mark-all (mark-name)
|
(defun guix-list-mark (&optional arg)
|
||||||
|
"Mark the current line and move to the next line.
|
||||||
|
With ARG, mark all lines."
|
||||||
|
(interactive "P")
|
||||||
|
(if arg
|
||||||
|
(guix-list-mark-all)
|
||||||
|
(guix-list--mark 'general t)))
|
||||||
|
|
||||||
|
(defun guix-list-mark-all (&optional mark-name)
|
||||||
"Mark all lines with MARK-NAME mark.
|
"Mark all lines with MARK-NAME mark.
|
||||||
MARK-NAME is a symbol from `guix-list-mark-alist'.
|
MARK-NAME is a symbol from `guix-list-mark-alist'.
|
||||||
Interactively, put a general mark on all lines."
|
Interactively, put a general mark on all lines."
|
||||||
(interactive '(general))
|
(interactive)
|
||||||
(guix-list-for-each-line #'guix-list-mark mark-name))
|
(or mark-name (setq mark-name 'general))
|
||||||
|
(guix-list-for-each-line #'guix-list--mark mark-name))
|
||||||
|
|
||||||
(defun guix-list-unmark (&optional arg)
|
(defun guix-list-unmark (&optional arg)
|
||||||
"Unmark the current line and move to the next line.
|
"Unmark the current line and move to the next line.
|
||||||
|
@ -323,13 +330,13 @@ With ARG, unmark all lines."
|
||||||
(interactive "P")
|
(interactive "P")
|
||||||
(if arg
|
(if arg
|
||||||
(guix-list-unmark-all)
|
(guix-list-unmark-all)
|
||||||
(guix-list-mark 'empty t)))
|
(guix-list--mark 'empty t)))
|
||||||
|
|
||||||
(defun guix-list-unmark-backward ()
|
(defun guix-list-unmark-backward ()
|
||||||
"Move up one line and unmark it."
|
"Move up one line and unmark it."
|
||||||
(interactive)
|
(interactive)
|
||||||
(forward-line -1)
|
(forward-line -1)
|
||||||
(guix-list-mark 'empty))
|
(guix-list--mark 'empty))
|
||||||
|
|
||||||
(defun guix-list-unmark-all ()
|
(defun guix-list-unmark-all ()
|
||||||
"Unmark all lines."
|
"Unmark all lines."
|
||||||
|
@ -360,7 +367,6 @@ Same as `tabulated-list-sort', but also restore marks after sorting."
|
||||||
(define-key map (kbd "RET") 'guix-list-describe)
|
(define-key map (kbd "RET") 'guix-list-describe)
|
||||||
(define-key map (kbd "m") 'guix-list-mark)
|
(define-key map (kbd "m") 'guix-list-mark)
|
||||||
(define-key map (kbd "*") 'guix-list-mark)
|
(define-key map (kbd "*") 'guix-list-mark)
|
||||||
(define-key map (kbd "M") 'guix-list-mark-all)
|
|
||||||
(define-key map (kbd "u") 'guix-list-unmark)
|
(define-key map (kbd "u") 'guix-list-unmark)
|
||||||
(define-key map (kbd "DEL") 'guix-list-unmark-backward)
|
(define-key map (kbd "DEL") 'guix-list-unmark-backward)
|
||||||
(define-key map [remap tabulated-list-sort] 'guix-list-sort)
|
(define-key map [remap tabulated-list-sort] 'guix-list-sort)
|
||||||
|
@ -417,7 +423,7 @@ This macro defines the following functions:
|
||||||
,(concat "Put '" mark-name-str "' mark and move to the next line.\n"
|
,(concat "Put '" mark-name-str "' mark and move to the next line.\n"
|
||||||
"Also add the current entry to `guix-list-marked'.")
|
"Also add the current entry to `guix-list-marked'.")
|
||||||
(interactive)
|
(interactive)
|
||||||
(guix-list-mark ',mark-name t))))
|
(guix-list--mark ',mark-name t))))
|
||||||
marks-val)
|
marks-val)
|
||||||
|
|
||||||
(defun ,init-fun ()
|
(defun ,init-fun ()
|
||||||
|
@ -531,7 +537,7 @@ AVAILABLE list, otherwise mark all DEFAULT outputs."
|
||||||
(guix-completing-read-multiple
|
(guix-completing-read-multiple
|
||||||
prompt available nil t)
|
prompt available nil t)
|
||||||
default)))
|
default)))
|
||||||
(apply #'guix-list-mark mark t outputs)))
|
(apply #'guix-list--mark mark t outputs)))
|
||||||
|
|
||||||
(defun guix-package-list-mark-install (&optional arg)
|
(defun guix-package-list-mark-install (&optional arg)
|
||||||
"Mark the current package for installation and move to the next line.
|
"Mark the current package for installation and move to the next line.
|
||||||
|
@ -606,7 +612,7 @@ accept an entry as argument."
|
||||||
(interactive)
|
(interactive)
|
||||||
(guix-list-mark-package-upgrades
|
(guix-list-mark-package-upgrades
|
||||||
(lambda (entry)
|
(lambda (entry)
|
||||||
(apply #'guix-list-mark
|
(apply #'guix-list--mark
|
||||||
'upgrade nil
|
'upgrade nil
|
||||||
(guix-get-installed-outputs entry)))))
|
(guix-get-installed-outputs entry)))))
|
||||||
|
|
||||||
|
@ -661,7 +667,7 @@ The specification is suitable for `guix-process-package-actions'."
|
||||||
(installed (guix-get-key-val entry 'installed)))
|
(installed (guix-get-key-val entry 'installed)))
|
||||||
(if installed
|
(if installed
|
||||||
(user-error "This output is already installed")
|
(user-error "This output is already installed")
|
||||||
(guix-list-mark 'install t))))
|
(guix-list--mark 'install t))))
|
||||||
|
|
||||||
(defun guix-output-list-mark-delete ()
|
(defun guix-output-list-mark-delete ()
|
||||||
"Mark the current output for deletion and move to the next line."
|
"Mark the current output for deletion and move to the next line."
|
||||||
|
@ -670,7 +676,7 @@ The specification is suitable for `guix-process-package-actions'."
|
||||||
(let* ((entry (guix-list-current-entry))
|
(let* ((entry (guix-list-current-entry))
|
||||||
(installed (guix-get-key-val entry 'installed)))
|
(installed (guix-get-key-val entry 'installed)))
|
||||||
(if installed
|
(if installed
|
||||||
(guix-list-mark 'delete t)
|
(guix-list--mark 'delete t)
|
||||||
(user-error "This output is not installed"))))
|
(user-error "This output is not installed"))))
|
||||||
|
|
||||||
(defun guix-output-list-mark-upgrade ()
|
(defun guix-output-list-mark-upgrade ()
|
||||||
|
@ -683,13 +689,13 @@ The specification is suitable for `guix-process-package-actions'."
|
||||||
(user-error "This output is not installed"))
|
(user-error "This output is not installed"))
|
||||||
(when (or (guix-get-key-val entry 'obsolete)
|
(when (or (guix-get-key-val entry 'obsolete)
|
||||||
(y-or-n-p "This output is not obsolete. Try to upgrade it anyway? "))
|
(y-or-n-p "This output is not obsolete. Try to upgrade it anyway? "))
|
||||||
(guix-list-mark 'upgrade t))))
|
(guix-list--mark 'upgrade t))))
|
||||||
|
|
||||||
(defun guix-output-list-mark-upgrades ()
|
(defun guix-output-list-mark-upgrades ()
|
||||||
"Mark all obsolete package outputs for upgrading."
|
"Mark all obsolete package outputs for upgrading."
|
||||||
(interactive)
|
(interactive)
|
||||||
(guix-list-mark-package-upgrades
|
(guix-list-mark-package-upgrades
|
||||||
(lambda (_) (guix-list-mark 'upgrade))))
|
(lambda (_) (guix-list--mark 'upgrade))))
|
||||||
|
|
||||||
(defun guix-output-list-execute ()
|
(defun guix-output-list-execute ()
|
||||||
"Perform actions on the marked outputs."
|
"Perform actions on the marked outputs."
|
||||||
|
@ -850,7 +856,7 @@ With ARG, mark all generations for deletion."
|
||||||
(interactive "P")
|
(interactive "P")
|
||||||
(if arg
|
(if arg
|
||||||
(guix-list-mark-all 'delete)
|
(guix-list-mark-all 'delete)
|
||||||
(guix-list-mark 'delete t)))
|
(guix-list--mark 'delete t)))
|
||||||
|
|
||||||
(defun guix-generation-list-execute ()
|
(defun guix-generation-list-execute ()
|
||||||
"Delete marked generations."
|
"Delete marked generations."
|
||||||
|
|
Loading…
Reference in New Issue