From: Sam Steingold Date: Wed, 4 Jun 2008 14:04:28 +0000 (+0000) Subject: (vc-hg-status-extra-header, vc-hg-status-extra-headers): X-Git-Tag: emacs-pretest-23.0.90~5112 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=fe4f86953e1dd494ca50c10cae4706fa21caf7c5;p=emacs.git (vc-hg-status-extra-header, vc-hg-status-extra-headers): Generate extra status headers for a Mercurial tree. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c48d3c7e23e..807e8668934 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -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 --git a/lisp/vc-hg.el b/lisp/vc-hg.el index eb392291653..025b2d9500e 100644 --- a/lisp/vc-hg.el +++ b/lisp/vc-hg.el @@ -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 @@ 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