changeset 87455:06f57a4af48c

(vc-hg-registered): Return the false when vc-hg-state returns 'ignored or 'unregistered. (vc-hg-state): Pass "-A" to the status command and deal with the output. (vc-hg-dir-state): Pass "-A" to the status command.
author Dan Nicolaescu <dann@ics.uci.edu>
date Fri, 28 Dec 2007 22:50:18 +0000
parents 0cbc451989a7
children 537232b11043
files lisp/ChangeLog lisp/vc-hg.el
diffstat 2 files changed, 15 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Fri Dec 28 22:26:31 2007 +0000
+++ b/lisp/ChangeLog	Fri Dec 28 22:50:18 2007 +0000
@@ -1,3 +1,11 @@
+2007-12-28  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* vc-hg.el (vc-hg-registered): Return the false when vc-hg-state
+	returns 'ignored or 'unregistered.
+	(vc-hg-state): Pass "-A" to the status command and deal with the
+	output.
+	(vc-hg-dir-state): Pass "-A" to the status command.
+
 2007-12-29  Richard Stallman  <rms@gnu.org>
 
 	* progmodes/compile.el (compilation-start): Set initial visible
--- a/lisp/vc-hg.el	Fri Dec 28 22:26:31 2007 +0000
+++ b/lisp/vc-hg.el	Fri Dec 28 22:50:18 2007 +0000
@@ -147,7 +147,9 @@
 (defun vc-hg-registered (file)
   "Return non-nil if FILE is registered with hg."
   (when (vc-hg-root file)           ; short cut
-    (vc-file-setprop file 'vc-state (vc-hg-state file)))) ; expensive
+    (let ((state (vc-hg-state file)))  ; expensive
+      (vc-file-setprop file 'vc-state state)
+      (not (memq state '(ignored unregistered))))))
 
 (defun vc-hg-state (file)
   "Hg-specific version of `vc-state'."
@@ -162,26 +164,26 @@
 		      ;; Ignore all errors.
 		      (call-process
 		       "hg" nil t nil "--cwd" (file-name-directory file)
-		       "status" (file-name-nondirectory file))
+		       "status" "-A" (file-name-nondirectory file))
 		    ;; Some problem happened.  E.g. We can't find an `hg'
 		    ;; executable.
 		    (error nil)))))))
     (when (eq 0 status)
-      (if (eq 0 (length out)) 'up-to-date
 	(when (null (string-match ".*: No such file or directory$" out))
 	  (let ((state (aref out 0)))
 	    (cond
+	     ((eq state ?C) 'up-to-date)
 	     ((eq state ?A) 'edited)
 	     ((eq state ?M) 'edited)
 	     ((eq state ?I) 'ignored)
 	     ((eq state ?R) 'unregistered)
 	     ((eq state ??) 'unregistered)
-	     (t 'up-to-date))))))))
+	     (t 'up-to-date)))))))
 
 (defun vc-hg-dir-state (dir)
   (with-temp-buffer
     (buffer-disable-undo)		;; Because these buffers can get huge
-    (vc-hg-command (current-buffer) nil nil "status")
+    (vc-hg-command (current-buffer) nil nil "status" "-A")
     (goto-char (point-min))
     (let ((status-char nil)
 	  (file nil))