]> code.delx.au - gnu-emacs/commitdiff
* lisp/dired.el (dired-mark): If the region is active in Transient Mark
authorJuri Linkov <juri@jurta.org>
Tue, 18 Sep 2012 23:18:06 +0000 (02:18 +0300)
committerJuri Linkov <juri@jurta.org>
Tue, 18 Sep 2012 23:18:06 +0000 (02:18 +0300)
mode, mark all files in the active region.  Doc fix.
(dired-unmark, dired-flag-file-deletion, dired-unmark-backward):
Doc fix.

Fixes: debbugs:10624
etc/NEWS
lisp/ChangeLog
lisp/dired.el

index 35d540a9b85ddeabd1424710ec277d9885321b2b..c972180bbbd60808e353f06e92c8f5129fe8d9f9 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -463,6 +463,10 @@ Otherwise, it executes the command on each file in parallel.
 `dired-do-chown', `dired-do-touch' pulls the file attributes of the
 file at point.
 
+*** When the region is active, `m' (`dired-mark'), `u' (`dired-unmark'),
+`DEL' (`dired-unmark-backward'), `d' (`dired-flag-file-deletion')
+mark/unmark/flag all files in the active region.
+
 *** The minibuffer default for `=' (`dired-diff) has changed.
 It is now the backup file for the file at point, if one exists, rather
 than the file at the mark.
index 43eddd7c699de95e8597c3435af81be61d5fe024..66927960d2524e4e5902c57b59a0e35d3c8701b4 100644 (file)
@@ -1,3 +1,10 @@
+2012-09-18  Juri Linkov  <juri@jurta.org>
+
+       * dired.el (dired-mark): If the region is active in Transient Mark
+       mode, mark all files in the active region.  Doc fix.
+       (dired-unmark, dired-flag-file-deletion, dired-unmark-backward):
+       Doc fix.  (Bug#10624)
+
 2012-09-18  Juri Linkov  <juri@jurta.org>
 
        * dired-aux.el (dired-do-chxxx, dired-do-chmod): Default file
index df1b5698f1217d9885817c959b2fb152f0b7464f..abbd5acaf4f1f006eab73da9f04f292a5d630b21 100644 (file)
@@ -3097,21 +3097,37 @@ argument or confirmation)."
 (defun dired-mark (arg)
   "Mark the current (or next ARG) files.
 If on a subdir headerline, mark all its files except `.' and `..'.
+If the region is active in Transient Mark mode, mark all files
+in the active region.
 
 Use \\[dired-unmark-all-files] to remove all marks
 and \\[dired-unmark] on a subdir to remove the marks in
 this subdir."
   (interactive "P")
-  (if (dired-get-subdir)
-      (save-excursion (dired-mark-subdir-files))
+  (cond
+   ;; Mark files in the active region.
+   ((and transient-mark-mode mark-active)
+    (save-excursion
+      (let ((beg (region-beginning))
+           (end (region-end)))
+       (dired-mark-files-in-region
+        (progn (goto-char beg) (line-beginning-position))
+        (progn (goto-char end) (line-beginning-position))))))
+   ;; Mark subdir files from the subdir headerline.
+   ((dired-get-subdir)
+    (save-excursion (dired-mark-subdir-files)))
+   ;; Mark the current (or next ARG) files.
+   (t
     (let ((inhibit-read-only t))
       (dired-repeat-over-lines
        (prefix-numeric-value arg)
-       (function (lambda () (delete-char 1) (insert dired-marker-char)))))))
+       (function (lambda () (delete-char 1) (insert dired-marker-char))))))))
 
 (defun dired-unmark (arg)
   "Unmark the current (or next ARG) files.
-If looking at a subdir, unmark all its files except `.' and `..'."
+If looking at a subdir, unmark all its files except `.' and `..'.
+If the region is active in Transient Mark mode, unmark all files
+in the active region."
   (interactive "P")
   (let ((dired-marker-char ?\040))
     (dired-mark arg)))
@@ -3119,8 +3135,9 @@ If looking at a subdir, unmark all its files except `.' and `..'."
 (defun dired-flag-file-deletion (arg)
   "In Dired, flag the current line's file for deletion.
 With prefix arg, repeat over several lines.
-
-If on a subdir headerline, mark all its files except `.' and `..'."
+If on a subdir headerline, flag all its files except `.' and `..'.
+If the region is active in Transient Mark mode, flag all files
+in the active region."
   (interactive "P")
   (let ((dired-marker-char dired-del-marker))
     (dired-mark arg)))
@@ -3128,7 +3145,9 @@ If on a subdir headerline, mark all its files except `.' and `..'."
 (defun dired-unmark-backward (arg)
   "In Dired, move up lines and remove marks or deletion flags there.
 Optional prefix ARG says how many lines to unmark/unflag; default
-is one line."
+is one line.
+If the region is active in Transient Mark mode, unmark all files
+in the active region."
   (interactive "p")
   (dired-unmark (- arg)))