changeset 93173:019e6794fecf

(vc-git-after-dir-status-stage1): Move state matching code ... (vc-git--state-code): ... to this new function. (vc-git-state): Use it.
author Dan Nicolaescu <dann@ics.uci.edu>
date Mon, 24 Mar 2008 08:21:43 +0000
parents 4154c9e624be
children b7cb59b2c42d
files lisp/ChangeLog lisp/vc-git.el
diffstat 2 files changed, 19 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Mon Mar 24 02:54:07 2008 +0000
+++ b/lisp/ChangeLog	Mon Mar 24 08:21:43 2008 +0000
@@ -1,3 +1,10 @@
+2008-03-24  Alexandre Julliard  <julliard@winehq.org>
+
+	* vc-git.el (vc-git-after-dir-status-stage1): Move state matching
+	code ...
+	(vc-git--state-code): ... to this new function.
+	(vc-git-state): Use it.
+
 2008-03-24  Trent Buck  <trentbuck@gmail.com>  (tiny change)
 
 	* textmodes/remember.el (remember-mail-date)
--- a/lisp/vc-git.el	Mon Mar 24 02:54:07 2008 +0000
+++ b/lisp/vc-git.el	Mon Mar 24 08:21:43 2008 +0000
@@ -141,14 +141,23 @@
 		    (string= (substring str 0 (1+ (length name)))
                              (concat name "\0")))))))))
 
+(defun vc-git--state-code (code)
+  "Convert from a string to a added/deleted/modified state."
+  (case (string-to-char code)
+    (?M 'edited)
+    (?A 'added)
+    (?D 'removed)
+    (?U 'edited)     ;; FIXME
+    (?T 'edited)))   ;; FIXME
+
 (defun vc-git-state (file)
   "Git-specific version of `vc-state'."
   ;; FIXME: This can't set 'ignored yet
   (vc-git--call nil "add" "--refresh" "--" (file-relative-name file))
   (let ((diff (vc-git--run-command-string file "diff-index" "-z" "HEAD" "--")))
-    (if (and diff (string-match ":[0-7]\\{6\\} [0-7]\\{6\\} [0-9a-f]\\{40\\} [0-9a-f]\\{40\\} \\([ADMU]\\)\0[^\0]+\0"
+    (if (and diff (string-match ":[0-7]\\{6\\} [0-7]\\{6\\} [0-9a-f]\\{40\\} [0-9a-f]\\{40\\} \\([ADMUT]\\)\0[^\0]+\0"
                                 diff))
-	(if (string= (match-string 1 diff) "A") 'added 'edited)
+        (vc-git--state-code (match-string 1 diff))
       (if (vc-git--empty-db-p) 'added 'up-to-date))))
 
 (defun vc-git--ls-files-state (state &rest args)
@@ -216,12 +225,7 @@
 	  ":[0-7]\\{6\\} [0-7]\\{6\\} [0-9a-f]\\{40\\} [0-9a-f]\\{40\\} \\([ADMUT]\\)\0\\([^\0]+\\)\0"
 	  nil t 1)
     (let ((filename (match-string 2))
-	  (status (case (string-to-char( match-string 1))
-		    (?M 'edited)
-		    (?A 'added)
-		    (?D 'removed)
-		    (?U 'edited)      ;; FIXME
-		    (?T 'edited))))   ;; FIXME
+	  (status (vc-git--state-code (match-string 1))))
       (push (cons filename status) vc-git-status-result)))
   (erase-buffer)
   (vc-git-command (current-buffer) 'async nil "ls-files" "-z" "-o"