diff options
| author | Chong Yidong | 2010-07-17 17:25:32 -0400 |
|---|---|---|
| committer | Chong Yidong | 2010-07-17 17:25:32 -0400 |
| commit | dad7c7162bddfad0aa60648042f9a7f0d1255ee5 (patch) | |
| tree | 1d960f95d4e68c43b6d13b91344275d9f1557f20 | |
| parent | 499322cef9f248af58fb76334076feb80842d592 (diff) | |
| download | emacs-dad7c7162bddfad0aa60648042f9a7f0d1255ee5.tar.gz emacs-dad7c7162bddfad0aa60648042f9a7f0d1255ee5.zip | |
* lisp/dired.el (dired-buffers-for-dir): Handle list values of dired-directory (Bug#6636).
| -rw-r--r-- | lisp/ChangeLog | 5 | ||||
| -rw-r--r-- | lisp/dired.el | 38 |
2 files changed, 25 insertions, 18 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 0ce0e8e3073..2ce2201f34b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2010-07-17 Chong Yidong <cyd@stupidchicken.com> | ||
| 2 | |||
| 3 | * dired.el (dired-buffers-for-dir): Handle list values of | ||
| 4 | dired-directory (Bug#6636). | ||
| 5 | |||
| 1 | 2010-07-16 Reiner Steib <Reiner.Steib@gmx.de> | 6 | 2010-07-16 Reiner Steib <Reiner.Steib@gmx.de> |
| 2 | 7 | ||
| 3 | * vc.el (vc-coding-system-inherit-eol): New defvar. | 8 | * vc.el (vc-coding-system-inherit-eol): New defvar. |
diff --git a/lisp/dired.el b/lisp/dired.el index c3d1435401e..4a23865dfca 100644 --- a/lisp/dired.el +++ b/lisp/dired.el | |||
| @@ -2227,31 +2227,33 @@ You can then feed the file name(s) to other commands with \\[yank]." | |||
| 2227 | ;; Keeping Dired buffers in sync with the filesystem and with each other | 2227 | ;; Keeping Dired buffers in sync with the filesystem and with each other |
| 2228 | 2228 | ||
| 2229 | (defun dired-buffers-for-dir (dir &optional file) | 2229 | (defun dired-buffers-for-dir (dir &optional file) |
| 2230 | ;; Return a list of buffers that dired DIR (top level or in-situ subdir). | 2230 | ;; Return a list of buffers for DIR (top level or in-situ subdir). |
| 2231 | ;; If FILE is non-nil, include only those whose wildcard pattern (if any) | 2231 | ;; If FILE is non-nil, include only those whose wildcard pattern (if any) |
| 2232 | ;; matches FILE. | 2232 | ;; matches FILE. |
| 2233 | ;; The list is in reverse order of buffer creation, most recent last. | 2233 | ;; The list is in reverse order of buffer creation, most recent last. |
| 2234 | ;; As a side effect, killed dired buffers for DIR are removed from | 2234 | ;; As a side effect, killed dired buffers for DIR are removed from |
| 2235 | ;; dired-buffers. | 2235 | ;; dired-buffers. |
| 2236 | (setq dir (file-name-as-directory dir)) | 2236 | (setq dir (file-name-as-directory dir)) |
| 2237 | (let ((alist dired-buffers) result elt buf) | 2237 | (let (result buf) |
| 2238 | (while alist | 2238 | (dolist (elt dired-buffers) |
| 2239 | (setq elt (car alist) | 2239 | (setq buf (cdr elt)) |
| 2240 | buf (cdr elt)) | 2240 | (cond |
| 2241 | (if (buffer-name buf) | 2241 | ((null (buffer-name buf)) |
| 2242 | (if (dired-in-this-tree dir (car elt)) | 2242 | ;; Buffer is killed - clean up: |
| 2243 | (with-current-buffer buf | ||
| 2244 | (and (assoc dir dired-subdir-alist) | ||
| 2245 | (or (null file) | ||
| 2246 | (let ((wildcards | ||
| 2247 | (file-name-nondirectory dired-directory))) | ||
| 2248 | (or (= 0 (length wildcards)) | ||
| 2249 | (string-match (dired-glob-regexp wildcards) | ||
| 2250 | file)))) | ||
| 2251 | (setq result (cons buf result))))) | ||
| 2252 | ;; else buffer is killed - clean up: | ||
| 2253 | (setq dired-buffers (delq elt dired-buffers))) | 2243 | (setq dired-buffers (delq elt dired-buffers))) |
| 2254 | (setq alist (cdr alist))) | 2244 | ((dired-in-this-tree dir (car elt)) |
| 2245 | (with-current-buffer buf | ||
| 2246 | (and (assoc dir dired-subdir-alist) | ||
| 2247 | (or (null file) | ||
| 2248 | (if (stringp dired-directory) | ||
| 2249 | (let ((wildcards (file-name-nondirectory | ||
| 2250 | dired-directory))) | ||
| 2251 | (or (= 0 (length wildcards)) | ||
| 2252 | (string-match (dired-glob-regexp wildcards) | ||
| 2253 | file))) | ||
| 2254 | (member (expand-file-name file dir) | ||
| 2255 | (cdr dired-directory)))) | ||
| 2256 | (setq result (cons buf result))))))) | ||
| 2255 | result)) | 2257 | result)) |
| 2256 | 2258 | ||
| 2257 | (defun dired-glob-regexp (pattern) | 2259 | (defun dired-glob-regexp (pattern) |