Function: vc-dir-refresh-files
vc-dir-refresh-files is a byte-compiled function defined in
vc-dir.el.gz.
Signature
(vc-dir-refresh-files FILES)
Documentation
Refresh some FILES in the *VC-Dir* buffer.
Source Code
;; Defined in /usr/src/emacs/lisp/vc/vc-dir.el.gz
(defun vc-dir-refresh-files (files)
"Refresh some FILES in the *VC-Dir* buffer."
(let ((def-dir default-directory)
(backend vc-dir-backend))
(vc-set-mode-line-busy-indicator)
;; Call the `dir-status-files' backend function.
;; `dir-status-files' is supposed to be asynchronous.
;; It should compute the results, and then call the function
;; passed as an argument in order to update the vc-dir buffer
;; with the results.
(unless (buffer-live-p vc-dir-process-buffer)
(setq vc-dir-process-buffer
(generate-new-buffer (format " *VC-%s* tmp status" backend))))
(let ((buffer (current-buffer)))
(with-current-buffer vc-dir-process-buffer
(setq default-directory def-dir)
(erase-buffer)
(vc-call-backend
backend 'dir-status-files def-dir files
(lambda (entries &optional more-to-come)
;; ENTRIES is a list of (FILE VC_STATE EXTRA) items.
;; If MORE-TO-COME is true, then more updates will come from
;; the asynchronous process.
(with-current-buffer buffer
(vc-dir-update entries buffer)
(unless more-to-come
(setq mode-line-process nil)
;; Remove the ones that haven't been updated at all.
;; Those not-updated are those whose state is nil because the
;; file/dir doesn't exist and isn't versioned.
(ewoc-filter vc-ewoc
(lambda (info)
;; The state for directory entries might
;; have been changed to 'up-to-date,
;; reset it, otherwise it will be removed when doing 'x'
;; next time.
;; FIXME: There should be a more elegant way to do this.
(when (and (vc-dir-fileinfo->directory info)
(eq (vc-dir-fileinfo->state info)
'up-to-date))
(setf (vc-dir-fileinfo->state info) nil))
(not (vc-dir-fileinfo->needs-update info))))))))))))