]> code.delx.au - gnu-emacs/blobdiff - lisp/vc-hg.el
Fix typos.
[gnu-emacs] / lisp / vc-hg.el
index ab4bdab8c500408caa851b92e80fa649c87051ae..b6e1d39c2ff38c0cf6d3a6f976a45132f1f1926d 100644 (file)
@@ -1,6 +1,6 @@
 ;;; vc-hg.el --- VC backend for the mercurial version control system
 
-;; Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+;; Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 
 ;; Author: Ivan Kanis
 ;; Keywords: tools
@@ -68,7 +68,7 @@
 ;; - merge-news (file)                         NEEDED
 ;; - steal-lock (file &optional revision)      NOT NEEDED
 ;; HISTORY FUNCTIONS
-;; * print-log (files buffer &optional shortlog) OK
+;; * print-log (files buffer &optional shortlog start-revision limit) OK
 ;; - log-view-mode ()                          OK
 ;; - show-log-entry (revision)                 NOT NEEDED, DEFAULT IS GOOD
 ;; - comment-history (file)                    NOT NEEDED
@@ -167,9 +167,13 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
             (setq status
                   (condition-case nil
                       ;; Ignore all errors.
-                      (process-file
+                     (let ((process-environment
+                            ;; Avoid localization of messages so we can parse the output.
+                            (append (list "TERM=dumb" "LANGUAGE=C" "HGRC=") process-environment)))
+
+                     (process-file
                        "hg" nil t nil
-                       "status" "-A" (file-relative-name file))
+                       "status" "-A" (file-relative-name file)))
                     ;; Some problem happened.  E.g. We can't find an `hg'
                     ;; executable.
                     (error nil)))))))
@@ -198,17 +202,18 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
               standard-output
             (setq status
                   (condition-case nil
-                      ;; Ignore all errors.
-                      (process-file
-                       "hg" nil t nil
-                       "log" "-l1" (file-relative-name file))
+                     (let ((process-environment
+                            ;; Avoid localization of messages so we can parse the output.
+                            (append (list "TERM=dumb" "LANGUAGE=C" "HGRC=")
+                                    process-environment)))
+                       ;; Ignore all errors.
+                       (process-file
+                        "hg" nil t nil
+                        "parent" "--template" "{rev}" (file-relative-name 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"))))
+    (when (eq 0 status) out)))
 
 ;;; History functions
 
@@ -219,7 +224,7 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
                  (repeat :tag "Argument List" :value ("") string))
   :group 'vc-hg)
 
-(defun vc-hg-print-log (files buffer &optional shortlog limit)
+(defun vc-hg-print-log (files buffer &optional shortlog start-revision limit)
   "Get change log associated with FILES."
   ;; `vc-do-command' creates the buffer, but we need it before running
   ;; the command.
@@ -231,6 +236,7 @@ If nil, use the value of `vc-diff-switches'.  If t, use no switches."
        buffer
       (apply 'vc-hg-command buffer 0 files "log"
             (append
+             (when start-revision (list (format "-r%s:" start-revision)))
              (when limit (list "-l" (format "%s" limit)))
              (when shortlog '("--style" "compact"))
              vc-hg-log-switches)))))