comparison 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
comparison
equal deleted inserted replaced
106463:783bd2552dd4 106464:67d9cb4f16c3
549 ;; If the buffer exists from a previous invocation it might be 549 ;; If the buffer exists from a previous invocation it might be
550 ;; read-only. 550 ;; read-only.
551 (let ((inhibit-read-only t)) 551 (let ((inhibit-read-only t))
552 (with-current-buffer 552 (with-current-buffer
553 buffer 553 buffer
554 (if shortlog 554 (apply 'vc-git-command buffer
555 (vc-git-command buffer 'async files 555 'async files
556 "log" ;; "--graph" 556 (append
557 "--date=short" "--pretty=format:%h %ad %s" "--abbrev-commit" 557 '("log")
558 "--") 558 (when shortlog
559 (vc-git-command buffer 'async files 559 '("--graph" "--decorate"
560 "rev-list" ;; "--graph" 560 "--date=short" "--pretty=format:%d%h %ad %s" "--abbrev-commit"))
561 "--pretty" "HEAD" "--"))) 561 (when limit (list "-n" (format "%s" limit)))
562 (when limit 'limit-unsupported)))) 562 '("--")))))))
563 563
564 (defvar log-view-message-re) 564 (defvar log-view-message-re)
565 (defvar log-view-file-re) 565 (defvar log-view-file-re)
566 (defvar log-view-font-lock-keywords) 566 (defvar log-view-font-lock-keywords)
567 (defvar log-view-per-file-logs) 567 (defvar log-view-per-file-logs)
574 ;; Don't have file markers, so use impossible regexp. 574 ;; Don't have file markers, so use impossible regexp.
575 (set (make-local-variable 'log-view-file-re) "\\`a\\`") 575 (set (make-local-variable 'log-view-file-re) "\\`a\\`")
576 (set (make-local-variable 'log-view-per-file-logs) nil) 576 (set (make-local-variable 'log-view-per-file-logs) nil)
577 (set (make-local-variable 'log-view-message-re) 577 (set (make-local-variable 'log-view-message-re)
578 (if vc-short-log 578 (if vc-short-log
579 "^\\(?:[*/\\| ]+ \\)?\\([0-9a-z]+\\) \\([-a-z0-9]+\\) \\(.*\\)" 579 "^\\(?:[*/\\| ]+ \\)?\\(?: ([^)]+)\\)?\\([0-9a-z]+\\) \\([-a-z0-9]+\\) \\(.*\\)"
580 "^commit *\\([0-9a-z]+\\)")) 580 "^commit *\\([0-9a-z]+\\)"))
581 (set (make-local-variable 'log-view-font-lock-keywords) 581 (set (make-local-variable 'log-view-font-lock-keywords)
582 (if vc-short-log 582 (if vc-short-log
583 (append 583 '(
584 `((,log-view-message-re 584 ;; Same as log-view-message-re, except that we don't
585 (1 'change-log-acknowledgement) 585 ;; want the shy group for the tag name.
586 (2 'change-log-date)))) 586 ("^\\(?:[*/\\| ]+ \\)?\\( ([^)]+)\\)?\\([0-9a-z]+\\) \\([-a-z0-9]+\\) \\(.*\\)"
587 (1 'highlight nil lax)
588 (2 'change-log-acknowledgement)
589 (3 'change-log-date)))
587 (append 590 (append
588 `((,log-view-message-re (1 'change-log-acknowledgement))) 591 `((,log-view-message-re (1 'change-log-acknowledgement)))
589 ;; Handle the case: 592 ;; Handle the case:
590 ;; user: foo@bar 593 ;; user: foo@bar
591 '(("^Author:[ \t]+\\([A-Za-z0-9_.+-]+@[A-Za-z0-9_.-]+\\)" 594 '(("^Author:[ \t]+\\([A-Za-z0-9_.+-]+@[A-Za-z0-9_.-]+\\)"
592 (1 'change-log-email)) 595 (1 'change-log-email))
593 ;; Handle the case: 596 ;; Handle the case: