# HG changeset patch # User Dan Nicolaescu # Date 1183647334 0 # Node ID fc97b55f9678b75e2933b8ec74f9bc340782a591 # Parent 4dec588dee751c2a8475399fd42976817ca8d406 * 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. diff -r 4dec588dee75 -r fc97b55f9678 lisp/ChangeLog --- 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 + + * 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 * calculator.el (calculator-expt): Use more cases to determine diff -r 4dec588dee75 -r fc97b55f9678 lisp/vc-hg.el --- 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