emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/emacs-23 r99931: * lisp/dired.el (dired-buf


From: Chong Yidong
Subject: [Emacs-diffs] /srv/bzr/emacs/emacs-23 r99931: * lisp/dired.el (dired-buffers-for-dir): Handle list values of dired-directory (Bug#6636).
Date: Sat, 17 Jul 2010 17:25:32 -0400
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 99931
committer: Chong Yidong <address@hidden>
branch nick: emacs-23
timestamp: Sat 2010-07-17 17:25:32 -0400
message:
  * lisp/dired.el (dired-buffers-for-dir): Handle list values of 
dired-directory (Bug#6636).
modified:
  lisp/ChangeLog
  lisp/dired.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2010-07-16 10:17:13 +0000
+++ b/lisp/ChangeLog    2010-07-17 21:25:32 +0000
@@ -1,3 +1,8 @@
+2010-07-17  Chong Yidong  <address@hidden>
+
+       * dired.el (dired-buffers-for-dir): Handle list values of
+       dired-directory (Bug#6636).
+
 2010-07-16  Reiner Steib  <address@hidden>
 
        * vc.el (vc-coding-system-inherit-eol): New defvar.

=== modified file 'lisp/dired.el'
--- a/lisp/dired.el     2010-02-04 16:25:57 +0000
+++ b/lisp/dired.el     2010-07-17 21:25:32 +0000
@@ -2227,31 +2227,33 @@
 ;; Keeping Dired buffers in sync with the filesystem and with each other
 
 (defun dired-buffers-for-dir (dir &optional file)
-;; Return a list of buffers that dired DIR (top level or in-situ subdir).
+;; Return a list of buffers for DIR (top level or in-situ subdir).
 ;; If FILE is non-nil, include only those whose wildcard pattern (if any)
 ;; matches FILE.
 ;; The list is in reverse order of buffer creation, most recent last.
 ;; As a side effect, killed dired buffers for DIR are removed from
 ;; dired-buffers.
   (setq dir (file-name-as-directory dir))
-  (let ((alist dired-buffers) result elt buf)
-    (while alist
-      (setq elt (car alist)
-           buf (cdr elt))
-      (if (buffer-name buf)
-         (if (dired-in-this-tree dir (car elt))
-             (with-current-buffer buf
-               (and (assoc dir dired-subdir-alist)
-                    (or (null file)
-                        (let ((wildcards
-                               (file-name-nondirectory dired-directory)))
-                          (or (= 0 (length wildcards))
-                              (string-match (dired-glob-regexp wildcards)
-                                            file))))
-                    (setq result (cons buf result)))))
-       ;; else buffer is killed - clean up:
+  (let (result buf)
+    (dolist (elt dired-buffers)
+      (setq buf (cdr elt))
+      (cond
+       ((null (buffer-name buf))
+       ;; Buffer is killed - clean up:
        (setq dired-buffers (delq elt dired-buffers)))
-      (setq alist (cdr alist)))
+       ((dired-in-this-tree dir (car elt))
+       (with-current-buffer buf
+         (and (assoc dir dired-subdir-alist)
+              (or (null file)
+                  (if (stringp dired-directory)
+                      (let ((wildcards (file-name-nondirectory
+                                        dired-directory)))
+                        (or (= 0 (length wildcards))
+                            (string-match (dired-glob-regexp wildcards)
+                                          file)))
+                    (member (expand-file-name file dir)
+                            (cdr dired-directory))))
+              (setq result (cons buf result)))))))
     result))
 
 (defun dired-glob-regexp (pattern)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]