[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Dired: Improve symmetry in mark/unmark commands bound to keys
From: |
Tino Calancha |
Subject: |
Re: Dired: Improve symmetry in mark/unmark commands bound to keys |
Date: |
Mon, 3 Oct 2016 18:21:51 +0900 (JST) |
User-agent: |
Alpine 2.20 (DEB 67 2015-01-07) |
On Mon, 26 Sep 2016, Eli Zaretskii wrote:
From: Tino Calancha <address@hidden>
Date: Tue, 27 Sep 2016 01:30:35 +0900 (JST)
I believe Eli has proposed a solution that offers a middle ground. Can we move
to discussing that?
Yes, we can talk about that.
Eli suggestion would be consistent with Dired if, for instance:
I) C-u * . el RET
;; unmark
II) C-u C-u * . el RET
;; prompt for the marker char.
FWIW, I'm okay with this.
I mean, we should not invert the number of C-u's in I) II)
Indeed, no need.
Thanks.
Thank you Eli. I propose following patch:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
From 53e519484ea22e47f12ac761e2684e38cdf55d0e Mon Sep 17 00:00:00 2001
From: Tino Calancha <address@hidden>
Date: Mon, 3 Oct 2016 18:15:27 +0900
Subject: [PATCH] dired-mark-extension: Unmark if called with C-u prefix
See discussion in #Bug2518 and:
https://lists.gnu.org/archive/html/emacs-devel/2016-09/msg00711.html
* lisp/dired-x.el (dired-mark-extension):
Update interactive calls: a prefix arg C-u unmark files;
a prefix C-u C-u prompt for MARKER-CHAR and mark files with it.
(dired-mark-sexp):
Show in the prompt that we are unmarking if called with a prefix argument.
* doc/misc/dired-x.texi: Update documentation for 'dired-mark-extension'.
---
doc/misc/dired-x.texi | 6 ++++--
lisp/dired-x.el | 38 +++++++++++++++++++++++++++-----------
2 files changed, 31 insertions(+), 13 deletions(-)
diff --git a/doc/misc/dired-x.texi b/doc/misc/dired-x.texi
index 2391852..0b03486 100644
--- a/doc/misc/dired-x.texi
+++ b/doc/misc/dired-x.texi
@@ -710,8 +710,10 @@ Advanced Mark Commands
@findex dired-mark-extension
Mark all files with a certain extension for use in later commands. A @samp{.}
is not automatically prepended to the string entered, you must type it
-explicitly. If invoked with a prefix argument, this command asks for
-a character to use as the marker.
+explicitly.
+If invoked with prefix argument @kbd{C-u}, this command unmark files instead.
+Calling it with the @kbd{C-u C-u} prefix, asks for a character to use
+as the marker, and mark files with it.
When called from Lisp, @var{extension} may also be a list of extensions
and an optional argument @var{marker-char} specifies the marker used.
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index 7d73c42..7f0ab95 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -334,17 +334,27 @@ dired-mark-extension
A `.' is *not* automatically prepended to the string entered.
EXTENSION may also be a list of extensions instead of a single one.
Optional MARKER-CHAR is marker to use.
-Interactively, ask for EXTENSION, and if invoked with a prefix
-argument, for MARKER-CHAR as well."
+Interactively, ask for EXTENSION.
+Prefixed with one C-u, unmark files instead.
+Prefixed with two C-u’s, prompt for MARKER-CHAR and mark files with it."
(interactive
- (list (read-string "Marking extension: ")
- (and current-prefix-arg
- (let* ((dflt (char-to-string dired-marker-char))
- (input (read-string
- (format
- "Marker character to use (default %s): " dflt)
- nil nil dflt)))
- (aref input 0)))))
+ (let ((suffix
+ (read-string (format "%s extension: "
+ (if (equal current-prefix-arg '(4))
+ "UNmarking"
+ "Marking"))))
+ (marker
+ (pcase current-prefix-arg
+ ('(4) ?\s)
+ ('(16)
+ (let* ((dflt (char-to-string dired-marker-char))
+ (input (read-string
+ (format
+ "Marker character to use (default %s): " dflt)
+ nil nil dflt)))
+ (aref input 0)))
+ (_ dired-marker-char))))
+ (list suffix marker)))
(or (listp extension)
(setq extension (list extension)))
(dired-mark-files-regexp
@@ -1470,7 +1480,13 @@ dired-mark-sexp
;; (string-match "foo" sym) into which a user would soon fall.
;; Give `equal' instead of `=' in the example, as this works on
;; integers and strings.
- (interactive "xMark if (lisp expr): \nP")
+ (interactive
+ (list (read--expression
+ (format "%s if (lisp expr): "
+ (if current-prefix-arg
+ "UNmark"
+ "Mark")))
+ current-prefix-arg))
(message "%s" predicate)
(let ((dired-marker-char (if unflag-p ?\040 dired-marker-char))
inode s mode nlink uid gid size time name sym)
--
2.9.3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
In GNU Emacs 26.0.50.3 (x86_64-pc-linux-gnu, GTK+ Version 3.22.0)
of 2016-10-03 built on calancha-pc
Repository revision: 8cd975cebd588d5435fa2b333dba6c526e602933
- Re: Dired: Improve symmetry in mark/unmark commands bound to keys,
Tino Calancha <=