From 42917e790eb8e92e40dc79e34846d6598279ca61 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Wed, 19 Sep 2012 02:18:06 +0300 Subject: [PATCH] * lisp/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. Fixes: debbugs:10624 --- etc/NEWS | 4 ++++ lisp/ChangeLog | 7 +++++++ lisp/dired.el | 33 ++++++++++++++++++++++++++------- 3 files changed, 37 insertions(+), 7 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 35d540a9b85..c972180bbbd 100644 --- 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. diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 43eddd7c699..66927960d25 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2012-09-18 Juri Linkov + + * 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 * dired-aux.el (dired-do-chxxx, dired-do-chmod): Default file diff --git a/lisp/dired.el b/lisp/dired.el index df1b5698f12..abbd5acaf4f 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -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))) -- 2.39.2