# HG changeset patch # User Sam Steingold # Date 1212588268 0 # Node ID dfffc14d8182446eb3381c26cbda8906d9abaeb9 # Parent 781cfe985f14f3fbe73ed60af49f6de06b9ad353 (vc-hg-status-extra-header, vc-hg-status-extra-headers): Generate extra status headers for a Mercurial tree. diff -r 781cfe985f14 -r dfffc14d8182 lisp/ChangeLog --- 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 + + * 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 * echistory.el (electric-history-map): Define within defvar. diff -r 781cfe985f14 -r dfffc14d8182 lisp/vc-hg.el --- 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