changeset 95542:dfffc14d8182

(vc-hg-status-extra-header, vc-hg-status-extra-headers): Generate extra status headers for a Mercurial tree.
author Sam Steingold <sds@gnu.org>
date Wed, 04 Jun 2008 14:04:28 +0000
parents 781cfe985f14
children 635ee5674343
files lisp/ChangeLog lisp/vc-hg.el
diffstat 2 files changed, 28 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Wed Jun 04 13:49:43 2008 +0000
+++ b/lisp/ChangeLog	Wed Jun 04 14:04:28 2008 +0000
@@ -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.
--- a/lisp/vc-hg.el	Wed Jun 04 13:49:43 2008 +0000
+++ b/lisp/vc-hg.el	Wed Jun 04 14:04:28 2008 +0000
@@ -284,7 +284,7 @@
 (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 @@
             (: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 @@
 	       ;; 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 @@
   (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