From 35d33ce76962929591c2b2e9f2b8c1104cee311e Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Thu, 27 Dec 2007 14:41:44 +0000 Subject: [PATCH] * vc.el (vc-dired-ignorable-p, vc-dired-hook): Speed optimization; use completion-ignored-extensions to detect files that should be ignorted in VC-Dired listings, heading off lots of expensive calls to (vc-state). --- lisp/ChangeLog | 11 +++++++++-- lisp/vc.el | 16 +++++++++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index b1878cef3f5..a5f568db299 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2007-12-27 Eric S. Raymond + + * vc.el (vc-dired-ignorable-p, vc-dired-hook): Speed optimization; + use completion-ignored-extensions to detect files that should be + ignorted in VC-Dired listings, heading off lots of expensive calls + to (vc-state). + 2007-12-27 Vinicius Jose Latorre * ps-print.el (ps-mark-active-p): Fun returned back. @@ -6,8 +13,8 @@ 2007-12-27 Eric S. Raymond - * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put - machinery in place to support editing of change comments + * vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el: Put + new machinery in place to support editing of change comments with 'e' in a log-view buffer. Not documented yet as this only works for SCCS, RCS, and maybe CVS if you have admin privileges. When we have backend support for Subversion and diff --git a/lisp/vc.el b/lisp/vc.el index 3d1132aab77..eca24b124d0 100644 --- a/lisp/vc.el +++ b/lisp/vc.el @@ -2327,6 +2327,16 @@ This code, like dired, assumes UNIX -l format." (replace-match (substring (concat vc-info " ") 0 10) t t nil 1))) +(defun vc-dired-ignorable-p (filename) + "Should FILENAME be ignored in VC-Dired listings?" + (catch t + (dolist (ignorable completion-ignored-extensions) + (let ((ext (substring filename + (- (length filename) + (length ignorable))))) + (if (string= ignorable ext) (throw t t)))) + nil)) + (defun vc-dired-hook () "Reformat the listing according to version control. Called by dired after any portion of a vc-dired buffer has been read in." @@ -2372,7 +2382,11 @@ Called by dired after any portion of a vc-dired buffer has been read in." (t (vc-dired-reformat-line nil) (forward-line 1)))) - ;; ordinary file + ;; try to head off calling the expensive state query - + ;; ignore object files, TeX intermediate files, and so forth. + ((vc-dired-ignorable-p filename) + (dired-kill-line)) + ;; ordinary file -- call the (possibly expensive) state query ((and (vc-backend filename) (not (and vc-dired-terse-mode (vc-up-to-date-p filename)))) -- 2.39.2