Mercurial > emacs
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"