summaryrefslogtreecommitdiff
path: root/lisp/vc/vc-bzr.el
diff options
context:
space:
mode:
authorDan Nicolaescu <dann@ics.uci.edu>2019-06-27 20:13:14 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2019-06-27 21:00:36 +0200
commitb93e5463885f9c99e74b52d2f569ad06ec2d0ff8 (patch)
treea5924bda8ebf66891e773d791d44a237b5aa9e0e /lisp/vc/vc-bzr.el
parentb98b843a5b6df987d3dba3e66fe637570c06cd0d (diff)
downloademacs-b93e5463885f9c99e74b52d2f569ad06ec2d0ff8.tar.gz
Include the date in the bzr annotation buffer
* lisp/vc/vc-bzr.el (vc-bzr-annotate-command) (vc-bzr-annotate-time) (vc-bzr-annotate-extract-revision-at-line): Include a date in the bzr annotation buffer (bug#5428).
Diffstat (limited to 'lisp/vc/vc-bzr.el')
-rw-r--r--lisp/vc/vc-bzr.el50
1 files changed, 7 insertions, 43 deletions
diff --git a/lisp/vc/vc-bzr.el b/lisp/vc/vc-bzr.el
index ee1646cae5a..89f1fcce376 100644
--- a/lisp/vc/vc-bzr.el
+++ b/lisp/vc/vc-bzr.el
@@ -869,61 +869,25 @@ Each line is tagged with the revision number, which has a `help-echo'
property containing author and date information."
(apply #'vc-bzr-command "annotate" buffer 'async file "--long" "--all"
(append (vc-switches 'bzr 'annotate)
- (if revision (list "-r" revision))))
- (let ((table (make-hash-table :test 'equal)))
- (set-process-filter
- (get-buffer-process buffer)
- (lambda (proc string)
- (when (process-buffer proc)
- (with-current-buffer (process-buffer proc)
- (setq string (concat (process-get proc :vc-left-over) string))
- ;; Eg: 102020 Gnus developers 20101020 | regexp."
- ;; As of bzr 2.2.2, no email address in whoami (which can
- ;; lead to spaces in the author field) is allowed but discouraged.
- ;; See bug#7792.
- (while (string-match "^\\( *[0-9.]+ *\\) \\(.+?\\) +\\([0-9]\\{8\\}\\)\\( |.*\n\\)" string)
- (let* ((rev (match-string 1 string))
- (author (match-string 2 string))
- (date (match-string 3 string))
- (key (substring string (match-beginning 0)
- (match-beginning 4)))
- (line (match-string 4 string))
- (tag (gethash key table))
- (inhibit-read-only t))
- (setq string (substring string (match-end 0)))
- (unless tag
- (setq tag
- (propertize
- (format "%s %-7.7s" rev author)
- 'help-echo (format "Revision: %d, author: %s, date: %s"
- (string-to-number rev)
- author date)
- 'mouse-face 'highlight))
- (puthash key tag table))
- (goto-char (process-mark proc))
- (insert tag line)
- (move-marker (process-mark proc) (point))))
- (process-put proc :vc-left-over string)))))))
+ (if revision (list "-r" revision)))))
(declare-function vc-annotate-convert-time "vc-annotate" (&optional time))
(defun vc-bzr-annotate-time ()
- (when (re-search-forward "^ *[0-9.]+ +.+? +|" nil t)
- (let ((prop (get-text-property (line-beginning-position) 'help-echo)))
- (string-match "[0-9]+\\'" prop)
- (let ((str (match-string-no-properties 0 prop)))
+ (when (re-search-forward "^[0-9.]+ +[^\n ]* +\\([0-9]\\{8\\}\\) |" nil t)
+ (let ((str (match-string-no-properties 1)))
(vc-annotate-convert-time
(encode-time 0 0 0
- (string-to-number (substring str 6 8))
- (string-to-number (substring str 4 6))
- (string-to-number (substring str 0 4))))))))
+ (string-to-number (substring str 6 8))
+ (string-to-number (substring str 4 6))
+ (string-to-number (substring str 0 4)))))))
(defun vc-bzr-annotate-extract-revision-at-line ()
"Return revision for current line of annotation buffer, or nil.
Return nil if current line isn't annotated."
(save-excursion
(beginning-of-line)
- (if (looking-at "^ *\\([0-9.]+\\) +.* +|")
+ (if (looking-at "^\\([0-9.]+\\) +[^\n ]* +\\([0-9]\\{8\\}\\) |")
(match-string-no-properties 1))))
(defun vc-bzr-command-discarding-stderr (command &rest args)