Function: vc-dir-resynch-file
vc-dir-resynch-file is a byte-compiled function defined in
vc-dir.el.gz.
Signature
(vc-dir-resynch-file &optional FNAME)
Documentation
Update the entries for FNAME in any directory buffers that list it.
Source Code
;; Defined in /usr/src/emacs/lisp/vc/vc-dir.el.gz
(defun vc-dir-resynch-file (&optional fname)
"Update the entries for FNAME in any directory buffers that list it."
(let ((file (expand-file-name (or fname buffer-file-name)))
(drop '()))
(save-current-buffer
;; look for a vc-dir buffer that might show this file.
(dolist (status-buf vc-dir-buffers)
(if (not (buffer-live-p status-buf))
(push status-buf drop)
(set-buffer status-buf)
(if (not (derived-mode-p 'vc-dir-mode))
(push status-buf drop)
(let ((ddir (expand-file-name
;; The actual contents of this VC-Dir buffer,
;; which is what we care about here, is always
;; relative to the toplevel value.
;; If we invoked the current command from
;; STATUS-BUF then it might have shadowed
;; `default-directory' in order to do its work,
;; but that's irrelevant to us here.
(buffer-local-toplevel-value 'default-directory))))
(when (file-in-directory-p file ddir)
(if (file-directory-p file)
(progn
(vc-dir-resync-directory-files file)
(ewoc-set-hf vc-ewoc
(vc-dir-headers vc-dir-backend ddir) ""))
(let* ((complete-state (vc-dir-recompute-file-state file ddir))
(state (cadr complete-state)))
(vc-dir-update
(list complete-state)
status-buf (or (not state)
(eq state 'up-to-date)))))))))))
;; Remove out-of-date entries from vc-dir-buffers.
(setq vc-dir-buffers
(cl-nset-difference vc-dir-buffers drop :test #'eq))))