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))))