- ;; First, kill any existing vc-dired buffers of this directory.
- ;; (Code much like dired-find-buffer-nocreate.)
- (let ((buffers (buffer-list))
- (dir (expand-file-name default-directory)))
- (while buffers
- (if (buffer-name (car buffers))
- (progn (set-buffer (car buffers))
- (if (and (eq major-mode 'dired-mode)
- (string= dir
- (expand-file-name default-directory))
- vc-dired-mode)
- (kill-buffer (car buffers)))))
- (setq buffers (cdr buffers)))
- ;; This uses a semi-documented feature of dired; giving a switch
- ;; argument forces the buffer to refresh each time.
- (dired
- (cons dir (nreverse filelist))
- dired-listing-switches)
- (setq dired-buf (current-buffer))
- (setq nonempty (not (eq 0 (length filelist)))))))
+ ;; This uses a semi-documented feature of dired; giving a switch
+ ;; argument forces the buffer to refresh each time.
+ (setq dired-buf
+ (dired-internal-noselect
+ (cons dirname (nreverse filelist))
+ dired-listing-switches 'vc-dired-mode))
+ (setq nonempty (not (eq 0 (length filelist))))))