diff options
| author | Richard M. Stallman | 1998-05-24 00:55:39 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1998-05-24 00:55:39 +0000 |
| commit | e9b8e22d7e86d39636c88a70690849fcf304ce88 (patch) | |
| tree | 9aad0609cc375f386633e4e52519150288ffb105 | |
| parent | ecb079ed6d2740f1b624781338236bf04b319919 (diff) | |
| download | emacs-e9b8e22d7e86d39636c88a70690849fcf304ce88.tar.gz emacs-e9b8e22d7e86d39636c88a70690849fcf304ce88.zip | |
(dired-mark-files-containing-regexp): New command.
(dired-mode-map): Bind it to %g and in menu bar.
| -rw-r--r-- | lisp/dired.el | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/lisp/dired.el b/lisp/dired.el index 348fda3017b..8b602c60777 100644 --- a/lisp/dired.el +++ b/lisp/dired.el | |||
| @@ -853,6 +853,7 @@ If DIRNAME is already in a dired buffer, that buffer is used without refresh." | |||
| 853 | (define-key map "%u" 'dired-upcase) | 853 | (define-key map "%u" 'dired-upcase) |
| 854 | (define-key map "%l" 'dired-downcase) | 854 | (define-key map "%l" 'dired-downcase) |
| 855 | (define-key map "%d" 'dired-flag-files-regexp) | 855 | (define-key map "%d" 'dired-flag-files-regexp) |
| 856 | (define-key map "%g" 'dired-mark-files-containing-regexp) | ||
| 856 | (define-key map "%m" 'dired-mark-files-regexp) | 857 | (define-key map "%m" 'dired-mark-files-regexp) |
| 857 | (define-key map "%r" 'dired-do-rename-regexp) | 858 | (define-key map "%r" 'dired-do-rename-regexp) |
| 858 | (define-key map "%C" 'dired-do-copy-regexp) | 859 | (define-key map "%C" 'dired-do-copy-regexp) |
| @@ -987,6 +988,8 @@ If DIRNAME is already in a dired buffer, that buffer is used without refresh." | |||
| 987 | '("Flag..." . dired-flag-files-regexp)) | 988 | '("Flag..." . dired-flag-files-regexp)) |
| 988 | (define-key map [menu-bar regexp mark] | 989 | (define-key map [menu-bar regexp mark] |
| 989 | '("Mark..." . dired-mark-files-regexp)) | 990 | '("Mark..." . dired-mark-files-regexp)) |
| 991 | (define-key map [menu-bar regexp mark] | ||
| 992 | '("Mark Containing..." . dired-mark-files-containing-regexp)) | ||
| 990 | 993 | ||
| 991 | (define-key map [menu-bar mark] | 994 | (define-key map [menu-bar mark] |
| 992 | (cons "Mark" (make-sparse-keymap "Mark"))) | 995 | (cons "Mark" (make-sparse-keymap "Mark"))) |
| @@ -2148,6 +2151,32 @@ object files--just `.o' will mark more than you might think." | |||
| 2148 | (and fn (string-match regexp (file-name-nondirectory fn))))) | 2151 | (and fn (string-match regexp (file-name-nondirectory fn))))) |
| 2149 | "matching file"))) | 2152 | "matching file"))) |
| 2150 | 2153 | ||
| 2154 | (defun dired-mark-files-containing-regexp (regexp &optional marker-char) | ||
| 2155 | "Mark all files with contents containing REGEXP for use in later commands. | ||
| 2156 | A prefix argument means to unmark them instead. | ||
| 2157 | `.' and `..' are never marked." | ||
| 2158 | (interactive | ||
| 2159 | (list (dired-read-regexp (concat (if current-prefix-arg "Unmark" "Mark") | ||
| 2160 | " files containing (regexp): ")) | ||
| 2161 | (if current-prefix-arg ?\040))) | ||
| 2162 | (let ((dired-marker-char (or marker-char dired-marker-char))) | ||
| 2163 | (dired-mark-if | ||
| 2164 | (and (not (looking-at dired-re-dot)) | ||
| 2165 | (not (eolp)) ; empty line | ||
| 2166 | (let ((fn (dired-get-filename nil t))) | ||
| 2167 | (and fn (save-excursion | ||
| 2168 | ;; For now we do it inside emacs | ||
| 2169 | ;; Grep might be better if there are a lot of files | ||
| 2170 | (message "Checking %s" fn) | ||
| 2171 | (let* ((prebuf (get-file-buffer fn))) | ||
| 2172 | (find-file fn) | ||
| 2173 | (goto-char (point-min)) | ||
| 2174 | (prog1 | ||
| 2175 | (re-search-forward regexp nil t) | ||
| 2176 | (if (not prebuf) (kill-buffer nil)))) | ||
| 2177 | )))) | ||
| 2178 | "matching file"))) | ||
| 2179 | |||
| 2151 | (defun dired-flag-files-regexp (regexp) | 2180 | (defun dired-flag-files-regexp (regexp) |
| 2152 | "In dired, flag all files containing the specified REGEXP for deletion. | 2181 | "In dired, flag all files containing the specified REGEXP for deletion. |
| 2153 | The match is against the non-directory part of the filename. Use `^' | 2182 | The match is against the non-directory part of the filename. Use `^' |