Hi emacs, I wish to fix the lisp/vc/vc-hg.el (vc-hg-working-revision) function with the `hg parent' command. Actually this function uses the `hg log -l 1' command that returns the last commited revision, not the last checked out revision. When checking out a specified revision with `hg update REV' the actual revision of FILE is returned by `hg parent'. vc.el: ;; * working-revision (file) ;; ;; Return the working revision of FILE. This is the revision fetched ;; by the last checkout or update, not necessarily the same thing as the ;; head or tip revision. Should return "0" for a file added but not yet ;; committed. On success `hg parent' command returns 0 and prints the parent of FILE. For not registered, as added but not commited files, throws error code and prints a message, so could check the returning value to substitute the printed message with "0" as vc.el requires. Here it is proposed the catch/throw mechanism. 2014-05-24 Santiago PayĆ  i Miralta * lisp/vc/vc-hg.el (vc-hg-working-revision): Fix returning working revision instead of last revision. From 426ae4ae2f4ed6f26fc65bb5023fe79ba79686ae Mon Sep 17 00:00:00 2001 From: Santiago PayĆ  i Miralta Date: Sat, 24 May 2014 00:20:19 +0200 Subject: [PATCH] * lisp/vc/vc-hg.el (vc-hg-working-revision): Fix returning working revision instead of last revision. Actually this function uses the `hg log -l 1' command that returns the last commited revision, not the last checked out revision. When checking out a specified revision with `hg update REV' the actual revision of FILE is returned by `hg parent'. vc.el: ;; * working-revision (file) ;; ;; Return the working revision of FILE. This is the revision fetched ;; by the last checkout or update, not necessarily the same thing as the ;; head or tip revision. Should return "0" for a file added but not yet ;; committed. On success `hg parent' command returns 0 and prints the parent of FILE. For not registered, as added but not commited files, throws error code and prints a message, so could check the returning value to substitute the printed message with "0" as vc.el requires. Here it is proposed the catch/throw mechanism. --- lisp/vc/vc-hg.el | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el index 05b53a3..0326456 100644 --- a/lisp/vc/vc-hg.el +++ b/lisp/vc/vc-hg.el @@ -230,11 +230,14 @@ highlighting the Log View buffer." (let ((default-directory (if (file-directory-p file) (file-name-as-directory file) (file-name-directory file)))) - (ignore-errors - (with-output-to-string - (process-file vc-hg-program nil standard-output nil - "log" "-l" "1" "--template" "{rev}" - (file-relative-name file)))))) + (catch 'wrap + (ignore-errors + (with-output-to-string + (if (/= 0 + (process-file vc-hg-program nil standard-output nil + "parent" "--template" "{rev}" + (file-relative-name file)) + )(throw 'wrap "0"))))))) ;;; History functions -- 1.7.9.5