]> git.eshelyaron.com Git - emacs.git/commitdiff
Make dired commands report how many files they mark
authorDrew Adams <drew.adams@oracle.com>
Tue, 25 Jun 2019 15:42:25 +0000 (17:42 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Tue, 25 Jun 2019 15:44:56 +0000 (17:44 +0200)
* lisp/dired.el (dired-mark-if): Report the number of files marked
when called, not the total number of marked files (bug#22457).

etc/NEWS
lisp/dired.el

index efe250146368455a7c29d911f117106d32d10665..3b229ae1c147e24139aa91bd19e30fdbf6e6a1ab 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -611,6 +611,9 @@ remapped to these, respectively.
 *** New command and keystroke `dired-number-of-marked-files' bound to
 `* N'.
 
+*** The marking commands now report how many files were marked by the
+command itself, not how many files are marked in total.
+
 ** Find-Dired
 
 *** New customizable variable 'find-dired-refine-function'.
index ce82093bf09bcfd55dd5c97dacfc38e433365cfd..5618b25f6f9bfb9df4bda3771e0f5db3b2306ab2 100644 (file)
@@ -538,7 +538,7 @@ Subexpression 2 must end right before the \\n.")
 ;;; Macros must be defined before they are used, for the byte compiler.
 
 (defmacro dired-mark-if (predicate msg)
-  "Mark all files for which PREDICATE evals to non-nil.
+  "Mark files for PREDICATE, according to `dired-marker-char'.
 PREDICATE is evaluated on each line, with point at beginning of line.
 MSG is a noun phrase for the type of files being marked.
 It should end with a noun that can be pluralized by adding `s'.
@@ -558,13 +558,13 @@ Return value is the number of files marked, or nil if none were marked."
                   "")))
       (goto-char (point-min))
       (while (not (eobp))
-        (if ,predicate
-            (progn
-              (delete-char 1)
-              (insert dired-marker-char)
-              (setq count (1+ count))))
+        (when ,predicate
+          (unless (looking-at-p (char-to-string dired-marker-char))
+            (delete-char 1)
+            (insert dired-marker-char)
+            (setq count (1+ count))))
         (forward-line 1))
-      (if ,msg (message "%s %s%s %s%s."
+      (when ,msg (message "%s %s%s %s%s"
                         count
                         ,msg
                         (dired-plural-s count)