diff lisp/vc-git.el @ 106464:67d9cb4f16c3

* vc-git.el (vc-git-print-log): Handle a limit argument. Display the short log in graph form and with labels. (vc-git-log-view-mode): Handle labels.
author Dan Nicolaescu <dann@ics.uci.edu>
date Sun, 06 Dec 2009 22:18:03 +0000
parents 783bd2552dd4
children 6e0f1038bc44
line wrap: on
line diff
--- a/lisp/vc-git.el	Sun Dec 06 21:25:55 2009 +0000
+++ b/lisp/vc-git.el	Sun Dec 06 22:18:03 2009 +0000
@@ -551,15 +551,15 @@
     (let ((inhibit-read-only t))
       (with-current-buffer
           buffer
-	(if shortlog
-	(vc-git-command buffer 'async files
-			    "log" ;; "--graph"
-			    "--date=short" "--pretty=format:%h  %ad  %s" "--abbrev-commit"
-			    "--")
-	  (vc-git-command buffer 'async files
-			  "rev-list" ;; "--graph"
-			  "--pretty" "HEAD" "--")))
-        (when limit 'limit-unsupported))))
+	(apply 'vc-git-command buffer
+	       'async files
+	       (append
+		'("log")
+		(when shortlog
+		  '("--graph" "--decorate"
+		    "--date=short" "--pretty=format:%d%h  %ad  %s" "--abbrev-commit"))
+		(when limit (list "-n" (format "%s" limit)))
+		'("--")))))))
 
 (defvar log-view-message-re)
 (defvar log-view-file-re)
@@ -576,16 +576,19 @@
   (set (make-local-variable 'log-view-per-file-logs) nil)
   (set (make-local-variable 'log-view-message-re)
        (if vc-short-log
-	 "^\\(?:[*/\\| ]+ \\)?\\([0-9a-z]+\\)  \\([-a-z0-9]+\\)  \\(.*\\)"
+	   "^\\(?:[*/\\| ]+ \\)?\\(?: ([^)]+)\\)?\\([0-9a-z]+\\)  \\([-a-z0-9]+\\)  \\(.*\\)"
 	 "^commit *\\([0-9a-z]+\\)"))
   (set (make-local-variable 'log-view-font-lock-keywords)
        (if vc-short-log
-	   (append
-	    `((,log-view-message-re
-	       (1 'change-log-acknowledgement)
-	       (2 'change-log-date))))
+	   '(
+	     ;; Same as log-view-message-re, except that we don't
+	     ;; want the shy group for the tag name.
+	     ("^\\(?:[*/\\| ]+ \\)?\\( ([^)]+)\\)?\\([0-9a-z]+\\)  \\([-a-z0-9]+\\)  \\(.*\\)"
+	      (1 'highlight nil lax)
+	      (2 'change-log-acknowledgement)
+	      (3 'change-log-date)))
        (append
-        `((,log-view-message-re  (1 'change-log-acknowledgement)))
+        `((,log-view-message-re (1 'change-log-acknowledgement)))
         ;; Handle the case:
         ;; user: foo@bar
         '(("^Author:[ \t]+\\([A-Za-z0-9_.+-]+@[A-Za-z0-9_.-]+\\)"