]> git.eshelyaron.com Git - emacs.git/commitdiff
(vc-hg-status-extra-header, vc-hg-status-extra-headers):
authorSam Steingold <sds@gnu.org>
Wed, 4 Jun 2008 14:04:28 +0000 (14:04 +0000)
committerSam Steingold <sds@gnu.org>
Wed, 4 Jun 2008 14:04:28 +0000 (14:04 +0000)
Generate extra status headers for a Mercurial tree.

lisp/ChangeLog
lisp/vc-hg.el

index c48d3c7e23ea86de405090099ee1eb80d395f1e0..807e86689341106a6e58de8aea1c475c2daef254 100644 (file)
@@ -1,3 +1,8 @@
+2008-06-04  Sam Steingold  <sds@gnu.org>
+
+       * vc-hg.el (vc-hg-status-extra-header, vc-hg-status-extra-headers):
+       Generate extra status headers for a Mercurial tree.
+
 2008-06-04  John Paul Wallington  <jpw@pobox.com>
 
        * echistory.el (electric-history-map): Define within defvar.
index eb392291653c746370772d77ec86ff181f5bcaac..025b2d9500e7880a67c13c28149893dec9007e49 100644 (file)
 (defun vc-hg-annotate-command (file buffer &optional revision)
   "Execute \"hg annotate\" on FILE, inserting the contents in BUFFER.
 Optional arg REVISION is a revision to annotate from."
-  (vc-hg-command buffer 0 file "annotate" "-d" "-n" 
+  (vc-hg-command buffer 0 file "annotate" "-d" "-n"
                 (when revision (concat "-r" revision)))
   (with-current-buffer buffer
     (goto-char (point-min))
@@ -425,7 +425,7 @@ REV is the revision to check out into WORKFILE."
             (:constructor vc-hg-create-extra-fileinfo (rename-state extra-name))
             (:conc-name vc-hg-extra-fileinfo->))
   rename-state        ;; rename or copy state
-  extra-name)         ;; original name for copies and rename targets, new name for 
+  extra-name)         ;; original name for copies and rename targets, new name for
 
 (defun vc-hg-status-printer (info)
   "Pretty-printer for the vc-dir-fileinfo structure."
@@ -471,7 +471,7 @@ REV is the revision to check out into WORKFILE."
               ;; For copied files the output looks like this:
               ;; A COPIED_FILE_NAME
               ;;   ORIGINAL_FILE_NAME
-              (setf (nth 2 last-added) 
+              (setf (nth 2 last-added)
                     (vc-hg-create-extra-fileinfo 'copied file))
               (setq last-line-copy t))
              ((and last-line-copy (eq translated 'removed))
@@ -498,6 +498,26 @@ REV is the revision to check out into WORKFILE."
   (vc-exec-after
    `(vc-hg-after-dir-status (quote ,update-function))))
 
+(defun vc-hg-status-extra-header (name &rest commands)
+  (concat (propertize name 'face 'font-lock-type-face)
+          (propertize
+           (with-temp-buffer
+             (apply 'vc-hg-command (current-buffer) 0 nil commands)
+             (buffer-substring-no-properties (point-min) (1- (point-max))))
+           'face 'font-lock-variable-name-face)))
+
+(defun vc-hg-status-extra-headers (dir)
+  "Generate extra status headers for a Mercurial tree."
+  (let ((default-directory dir))
+    (concat
+     (vc-hg-status-extra-header "Root       : " "root") "\n"
+     (vc-hg-status-extra-header "Branch     : " "id" "-b") "\n"
+     (vc-hg-status-extra-header "Tags       : " "id" "-t") ; "\n"
+     ;; these change after each commit
+     ;; (vc-hg-status-extra-header "Local num  : " "id" "-n") "\n"
+     ;; (vc-hg-status-extra-header "Global id  : " "id" "-i")
+     )))
+
 ;; XXX this adds another top level menu, instead figure out how to
 ;; replace the Log-View menu.
 (easy-menu-define log-view-mode-menu vc-hg-outgoing-mode-map