Function: dired-buffers-for-dir

dired-buffers-for-dir is a byte-compiled function defined in dired.el.gz.

Signature

(dired-buffers-for-dir DIR &optional FILE)

Documentation

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.

Source Code

;; Defined in /usr/src/emacs/lisp/dired.el.gz
;;; 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 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 (expand-file-name dir)))
  (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)))
       ((dired-in-this-tree-p 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 (zerop (length wildcards))
			     (string-match-p (dired-glob-regexp wildcards)
                                             file)))
		     (member (expand-file-name file dir)
			     (cdr dired-directory))))
               (setq result (cons buf result)))))))
    result))