Mercurial > emacs
diff lisp/vc-hg.el @ 81538:ac8e3d72984f
(vc-hg-log-view-mode): New mode.
author | Dan Nicolaescu <dann@ics.uci.edu> |
---|---|
date | Fri, 22 Jun 2007 02:11:59 +0000 |
parents | 145f53e0ff66 |
children | 99961edaa9c1 |
line wrap: on
line diff
--- a/lisp/vc-hg.el Fri Jun 22 01:13:01 2007 +0000 +++ b/lisp/vc-hg.el Fri Jun 22 02:11:59 2007 +0000 @@ -111,6 +111,33 @@ (if (and (vc-stay-local-p file) (fboundp 'start-process)) 'async 0) file "log")) +(defvar log-view-message-re) +(defvar log-view-file-re) +(defvar log-view-font-lock-keywords) +(defvar log-view-current-tag-function) + +(define-derived-mode vc-hg-log-view-mode log-view-mode "HG-Log-View" + (require 'add-log) ;; we need the faces add-log + ;; Don't have file markers, so use impossible regexp. + (set (make-local-variable 'log-view-file-re) "\\'\\`") + (set (make-local-variable 'log-view-message-re) + "^changeset:[ \t]*\\([0-9]+\\):\\(.+\\)") + (set (make-local-variable 'log-view-font-lock-keywords) + (append + ;; XXX maybe use a different face for the version number + `((,log-view-message-re (1 'change-log-acknowledgement))) + ;; Handle the case: + ;; user: foo@bar + '(("^user:[ \t]+\\([A-Za-z0-9_.+-]+@[A-Za-z0-9_.-]+\\)" + (1 'change-log-email)) + ;; Handle the case: + ;; user: FirstName LastName <foo@bar> + ("^user:[ \t]+\\([^<(]+?\\)[ \t]*[(<]\\([A-Za-z0-9_.+-]+@[A-Za-z0-9_.-]+\\)[>)]" + (1 'change-log-name) + (2 'change-log-email)) + ("^date: \\(.+\\)" (1 'change-log-date)) + ("^summary:[ \t]+\\(.+\\)" (1 'log-view-message)))))) + (defun vc-hg-diff (file &optional oldvers newvers buffer) "Get a difference report using hg between two versions of FILE." (let ((working (vc-workfile-version file)))