diff lisp/vc-git.el @ 94003:2ecb2ea8d5b5

Change `dir-status' to not take (and pass) status-buffer. (vc-status-create-fileinfo): Make `extra' optional. (vc-status-busy): New fun. (vc-status-menu-map): Use it. (vc-status-crt-marked): Remove. (vc-status-update): Rename from vc-status-add-entries. Add argument so as to prevent addition of entries. Rewrite. (vc-update-vc-status-buffer): Remove. (vc-status-refresh): Don't remove old entries, set them to up-to-date instead. Also do it after the update is complete. (vc-status-marked-files): ¦Ç-reduce.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Fri, 11 Apr 2008 15:17:59 +0000
parents 912e50ecb992
children 6c138603231c
line wrap: on
line diff
--- a/lisp/vc-git.el	Fri Apr 11 13:34:14 2008 +0000
+++ b/lisp/vc-git.el	Fri Apr 11 15:17:59 2008 +0000
@@ -313,13 +313,13 @@
 ;; Variable used to keep the intermediate results for vc-git-status.
 (defvar vc-git-status-result nil)
 
-(defun vc-git-after-dir-status-stage2 (update-function status-buffer)
+(defun vc-git-after-dir-status-stage2 (update-function)
   (goto-char (point-min))
   (while (re-search-forward "\\([^\0]*?\\)\0" nil t 1)
     (push (list (match-string 1) 'unregistered (vc-git-create-extra-fileinfo 0 0)) vc-git-status-result))
-  (funcall update-function (nreverse vc-git-status-result) status-buffer))
+  (funcall update-function (nreverse vc-git-status-result)))
 
-(defun vc-git-after-dir-status-stage1 (update-function status-buffer)
+(defun vc-git-after-dir-status-stage1 (update-function)
   (goto-char (point-min))
   (while (re-search-forward
           ":\\([0-7]\\{6\\}\\) \\([0-7]\\{6\\}\\) [0-9a-f]\\{40\\} [0-9a-f]\\{40\\} \\(\\([ADMUT]\\)\0\\([^\0]+\\)\\|\\([CR]\\)[0-9]*\0\\([^\0]+\\)\0\\([^\0]+\\)\\)\0"
@@ -339,9 +339,9 @@
   (vc-git-command (current-buffer) 'async nil "ls-files" "-z" "-o"
 		  "--directory" "--no-empty-directory" "--exclude-standard")
   (vc-exec-after
-   `(vc-git-after-dir-status-stage2 (quote ,update-function) ,status-buffer)))
+   `(vc-git-after-dir-status-stage2 (quote ,update-function))))
 
-(defun vc-git-after-dir-status-stage1-empty-db (update-function status-buffer)
+(defun vc-git-after-dir-status-stage1-empty-db (update-function)
   (goto-char (point-min))
   (while (re-search-forward "\\([0-7]\\{6\\}\\) [0-9a-f]\\{40\\} 0\t\\([^\0]+\\)\0" nil t)
     (let ((new-perm (string-to-number (match-string 1) 8))
@@ -351,9 +351,9 @@
   (vc-git-command (current-buffer) 'async nil "ls-files" "-z" "-o"
 		  "--directory" "--no-empty-directory" "--exclude-standard")
   (vc-exec-after
-   `(vc-git-after-dir-status-stage2 (quote ,update-function) ,status-buffer)))
+   `(vc-git-after-dir-status-stage2 (quote ,update-function))))
 
-(defun vc-git-dir-status (dir update-function status-buffer)
+(defun vc-git-dir-status (dir update-function)
   "Return a list of conses (file . state) for DIR."
   ;; Further things that would have to be fixed later:
   ;; - how to handle unregistered directories
@@ -364,10 +364,10 @@
 	(vc-git-command (current-buffer) 'async nil "ls-files" "-z" "-c" "-s")
 	(vc-exec-after
 	 `(vc-git-after-dir-status-stage1-empty-db 
-	   (quote ,update-function) ,status-buffer)))
+	   (quote ,update-function))))
     (vc-git-command (current-buffer) 'async nil "diff-index" "-z" "-M" "HEAD")
     (vc-exec-after
-     `(vc-git-after-dir-status-stage1 (quote ,update-function) ,status-buffer))))
+     `(vc-git-after-dir-status-stage1 (quote ,update-function)))))
 
 (defun vc-git-status-extra-headers (dir)
   (let ((str (with-output-to-string