changeset 81702:fc97b55f9678

* vc-hg.el (vc-hg-internal-status): Inline in `vc-hg-state', the only caller, and delete. (vc-hg-state): Deal with exceptions and only parse the output on successful return. * vc-hg.el (vc-hg-internal-log): Inline in `vc-hg-workfile-version', the only caller, and delete. (vc-hg-workfile-version): Deal with exceptions and only parse the output on successful return.
author Dan Nicolaescu <dann@ics.uci.edu>
date Thu, 05 Jul 2007 14:55:34 +0000
parents 4dec588dee75
children 427009f42fcb
files lisp/ChangeLog lisp/vc-hg.el
diffstat 2 files changed, 60 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Wed Jul 04 13:54:30 2007 +0000
+++ b/lisp/ChangeLog	Thu Jul 05 14:55:34 2007 +0000
@@ -1,3 +1,15 @@
+2007-07-05  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* vc-hg.el (vc-hg-internal-status): Inline in `vc-hg-state', the
+	only caller, and delete.
+	(vc-hg-state): Deal with exceptions and only parse the output on
+	successful return.
+
+	* vc-hg.el (vc-hg-internal-log): Inline in
+	`vc-hg-workfile-version', the only caller, and delete.
+	(vc-hg-workfile-version): Deal with exceptions and only parse the
+	output on successful return.
+
 2007-07-04  Jay Belanger  <jay.p.belanger@gmail.com>
 
 	* calculator.el (calculator-expt): Use more cases to determine
--- a/lisp/vc-hg.el	Wed Jul 04 13:54:30 2007 +0000
+++ b/lisp/vc-hg.el	Thu Jul 05 14:55:34 2007 +0000
@@ -91,22 +91,52 @@
 
 (defun vc-hg-state (file)
   "Hg-specific version of `vc-state'."
-  (let ((out (vc-hg-internal-status file)))
-    (if (eq 0 (length out)) 'up-to-date
-      (let ((state (aref out 0)))
-        (cond
-         ((eq state ?M) 'edited)
-         ((eq state ?A) 'edited)
-         ((eq state ?P) 'needs-patch)
-	 ((eq state ??) nil)
-         (t 'up-to-date))))))
+  (let* 
+      ((status nil)
+       (out
+	(with-output-to-string
+	  (with-current-buffer
+	      standard-output
+	    (setq status
+		  (condition-case nil
+		      ;; Ignore all errors.
+		      (call-process
+		       "hg" nil t nil "--cwd" (file-name-directory file)
+		       "status" (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
+	(let ((state (aref out 0)))
+	  (cond
+	   ((eq state ?M) 'edited)
+	   ((eq state ?A) 'edited)
+	   ((eq state ?P) 'needs-patch)
+	   ((eq state ??) nil)
+	   (t 'up-to-date)))))))
 
 (defun vc-hg-workfile-version (file)
   "Hg-specific version of `vc-workfile-version'."
-  (let ((out (vc-hg-internal-log file)))
-    (if (string-match "changeset: *\\([0-9]*\\)" out)
-        (match-string 1 out)
-      "0")))
+  (let* 
+      ((status nil)
+       (out
+	(with-output-to-string
+	  (with-current-buffer
+	      standard-output
+	    (setq status
+		  (condition-case nil
+		      ;; Ignore all errors.
+		      (call-process
+		       "hg" nil t nil "--cwd" (file-name-directory file)
+		       "log" "-l1" (file-name-nondirectory file))
+		    ;; Some problem happened.  E.g. We can't find an `hg'
+		    ;; executable.
+		    (error nil)))))))
+    (when (eq 0 status)
+      (if (string-match "changeset: *\\([0-9]*\\)" out)
+	  (match-string 1 out)
+	"0"))))
 
 ;;; History functions
 
@@ -231,6 +261,11 @@
 (defun vc-hg-checkout-model (file)
   'implicit)
 
+;; Modelled after the similar function in vc-bzr.el
+(defun vc-hg-revert (file &optional contents-done)
+  (unless contents-done
+    (with-temp-buffer (vc-hg-command t nil file "revert"))))
+
 ;;; Internal functions
 
 (defun vc-hg-command (buffer okstatus file &rest flags)
@@ -243,24 +278,6 @@
            (append vc-hg-global-switches
                    flags))))
 
-(defun vc-hg-internal-log (file &optional buffer)
-  "Return log of FILE."
-  (with-output-to-string
-    (with-current-buffer
-        standard-output
-      (call-process
-       "hg" nil t nil "--cwd" (file-name-directory file)
-       "log" "-l1" (file-name-nondirectory file)))))
-
-(defun vc-hg-internal-status(file)
-  "Return status of FILE."
-  (with-output-to-string
-    (with-current-buffer
-        standard-output
-      (call-process
-       "hg" nil t nil "--cwd" (file-name-directory file)
-       "status" (file-name-nondirectory file)))))
-
 (provide 'vc-hg)
 
 ;;; vc-hg.el ends here