# HG changeset patch # User Karl Heuer # Date 888615901 0 # Node ID 0cd10d49b777bcbb10009e9db28cd4adfa3083c5 # Parent eefd01920e5629e36ea002ddf0dbaab35bacb60d (dired-do-toggle): Moved here from dired-x.el. (dired-mode-map): Changed dired-do-toggle from "T" to "t". diff -r eefd01920e56 -r 0cd10d49b777 lisp/dired.el --- a/lisp/dired.el Fri Feb 27 21:44:39 1998 +0000 +++ b/lisp/dired.el Fri Feb 27 21:45:01 1998 +0000 @@ -893,6 +893,7 @@ (define-key map "p" 'dired-previous-line) (define-key map "q" 'dired-quit) (define-key map "s" 'dired-sort-toggle-or-edit) + (define-key map "t" 'dired-do-toggle) (define-key map "u" 'dired-unmark) (define-key map "v" 'dired-view-file) (define-key map "x" 'dired-do-flagged-delete) @@ -1019,6 +1020,8 @@ '("Unmark" . dired-unmark)) (define-key map [menu-bar mark mark] '("Mark" . dired-mark)) + (define-key map [menu-bar mark toggle-marks] + '("Toggle Marks" . dired-do-toggle)) (define-key map [menu-bar operate] (cons "Operate" (make-sparse-keymap "Operate"))) @@ -2099,6 +2102,29 @@ Optional prefix ARG says how many lines to unflag; default is one line." (interactive "p") (dired-unmark (- arg))) + +(defun dired-do-toggle () + "Toggle marks. +That is, currently marked files become unmarked and vice versa. +Files marked with other flags (such as `D') are not affected. +`.' and `..' are never toggled. +As always, hidden subdirs are not affected." + (interactive) + (save-excursion + (goto-char (point-min)) + (let (buffer-read-only) + (while (not (eobp)) + (or (dired-between-files) + (looking-at dired-re-dot) + ;; use subst instead of insdel because it does not move + ;; the gap and thus should be faster and because + ;; other characters are left alone automatically + (apply 'subst-char-in-region + (point) (1+ (point)) + (if (eq ?\040 (following-char)) ; SPC + (list ?\040 dired-marker-char) + (list dired-marker-char ?\040)))) + (forward-line 1))))) ;;; Commands to mark or flag files based on their characteristics or names.