comparison lisp/vc.el @ 87512:4146f1cc135e

* vc.el (vc-dired-hook): Speed tuning. Replace a vc-backend call with vc-state.
author Eric S. Raymond <esr@snark.thyrsus.com>
date Tue, 01 Jan 2008 11:17:37 +0000
parents de46129c1767
children 3df0bed5b17a c938ab6810a4
comparison
equal deleted inserted replaced
87511:b8ae06eabc33 87512:4146f1cc135e
2391 ((string-match "\\`\\.\\.?\\'" (file-name-nondirectory filename)) 2391 ((string-match "\\`\\.\\.?\\'" (file-name-nondirectory filename))
2392 (dired-kill-line)) 2392 (dired-kill-line))
2393 (t 2393 (t
2394 (vc-dired-reformat-line nil) 2394 (vc-dired-reformat-line nil)
2395 (forward-line 1)))) 2395 (forward-line 1))))
2396 ;; try to head off calling the expensive state query - 2396 ;; Try to head off calling the expensive state query -
2397 ;; ignore object files, TeX intermediate files, and so forth. 2397 ;; ignore object files, TeX intermediate files, and so forth.
2398 ((vc-dired-ignorable-p filename) 2398 ((vc-dired-ignorable-p filename)
2399 (dired-kill-line)) 2399 (dired-kill-line))
2400 ;; ordinary file -- call the (possibly expensive) state query 2400 ;; Ordinary file -- call the (possibly expensive) state query
2401 (t 2401 ;;
2402 (let ((backend (vc-backend filename))) 2402 ;; First case: unregistered or unknown. (Unknown shouldn't happen here)
2403 (cond 2403 ((member (vc-state filename) '(nil unregistered))
2404 ;; Not registered 2404 (if vc-dired-terse-mode
2405 ((not backend) 2405 (dired-kill-line)
2406 (if vc-dired-terse-mode 2406 (vc-dired-reformat-line "?")
2407 (dired-kill-line) 2407 (forward-line 1)))
2408 (vc-dired-reformat-line "?") 2408 ;; Either we're in non-terse mode or it's out of date
2409 (forward-line 1))) 2409 ((not (and vc-dired-terse-mode (vc-up-to-date-p filename)))
2410 ;; Either we're in non-terse mode or it's out of date 2410 (vc-dired-reformat-line (vc-call dired-state-info filename))
2411 ((not (and vc-dired-terse-mode (vc-up-to-date-p filename))) 2411 (forward-line 1))
2412 (vc-dired-reformat-line (vc-call dired-state-info filename)) 2412 ;; Remaining cases are under version control but uninteresting
2413 (forward-line 1)) 2413 (t
2414 ;; Remaining cases are under version control but uninteresting 2414 (dired-kill-line))))
2415 (t
2416 (dired-kill-line)))))))
2417 ;; any other line 2415 ;; any other line
2418 (t (forward-line 1)))) 2416 (t (forward-line 1))))
2419 (vc-dired-purge)) 2417 (vc-dired-purge))
2420 (message "Getting version information... done") 2418 (message "Getting version information... done")
2421 (save-restriction 2419 (save-restriction