diff options
| author | Lars Ingebrigtsen <larsi@gnus.org> | 2019-06-25 16:29:03 +0200 |
|---|---|---|
| committer | Lars Ingebrigtsen <larsi@gnus.org> | 2019-06-25 16:29:03 +0200 |
| commit | b26c2767edd98787297879c4570a2702eef031be (patch) | |
| tree | db03a45239248e3c296b115366ef3b6ace374d93 /lisp | |
| parent | 9e81b22113de41ba80df9c5a7aaf08a056180785 (diff) | |
| download | emacs-b26c2767edd98787297879c4570a2702eef031be.tar.gz | |
Add a new command to report the number and size of the marked files
2019-06-25 Constantino Calancha <f92capac@gmail.com>
* lisp/dired.el (dired-mode-map): New keystroke and menu binding
(bug#22829).
2019-06-25 Lars Ingebrigtsen <larsi@gnus.org>
* doc/emacs/dired.texi (Marks vs Flags): Document it.
* lisp/dired.el (dired-number-of-marked-files): New command.
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/dired.el | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/lisp/dired.el b/lisp/dired.el index ea1943de1db..ce82093bf09 100644 --- a/lisp/dired.el +++ b/lisp/dired.el @@ -1669,6 +1669,7 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST." (define-key map "*/" 'dired-mark-directories) (define-key map "*@" 'dired-mark-symlinks) (define-key map "*%" 'dired-mark-files-regexp) + (define-key map "*N" 'dired-number-of-marked-files) (define-key map "*c" 'dired-change-marks) (define-key map "*s" 'dired-mark-subdir-files) (define-key map "*m" 'dired-mark) @@ -1815,6 +1816,9 @@ Do so according to the former subdir alist OLD-SUBDIR-ALIST." (define-key map [menu-bar immediate revert-buffer] '(menu-item "Refresh" revert-buffer :help "Update contents of shown directories")) + (define-key map [menu-bar immediate dired-number-of-marked-files] + '(menu-item "#Marked Files" dired-number-of-marked-files + :help "Display the number and size of the marked files")) (define-key map [menu-bar immediate dashes] '("--")) @@ -3607,6 +3611,30 @@ object files--just `.o' will mark more than you might think." (and fn (string-match-p regexp fn)))) "matching file"))) +(defun dired-number-of-marked-files () + "Display the number and total size of the marked files." + (interactive) + (let* ((files (dired-get-marked-files nil nil nil t)) + (nmarked + (cond ((null (cdr files)) + 0) + ((and (= (length files) 2) + (eq (car files) t)) + 1) + (t + (length files)))) + (size (cl-loop for file in files + when (stringp file) + sum (file-attribute-size (file-attributes file))))) + (if (zerop nmarked) + (message "No marked files")) + (message "%d marked file%s (%sB total size)" + nmarked + (if (= nmarked 1) + "" + "s") + (file-size-human-readable size)))) + (defun dired-mark-files-containing-regexp (regexp &optional marker-char) "Mark all files with contents containing REGEXP for use in later commands. A prefix argument means to unmark them instead. |
