aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChong Yidong2010-07-17 17:25:32 -0400
committerChong Yidong2010-07-17 17:25:32 -0400
commitdad7c7162bddfad0aa60648042f9a7f0d1255ee5 (patch)
tree1d960f95d4e68c43b6d13b91344275d9f1557f20
parent499322cef9f248af58fb76334076feb80842d592 (diff)
downloademacs-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/ChangeLog5
-rw-r--r--lisp/dired.el38
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 @@
12010-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
12010-07-16 Reiner Steib <Reiner.Steib@gmx.de> 62010-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)