emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: vc-annotate with bzr


From: Dan Nicolaescu
Subject: Re: vc-annotate with bzr
Date: Fri, 14 Mar 2008 13:07:12 -0700

Stefan Monnier <address@hidden> writes:

  > > The vc-annotate display with bzr (i.e. the output of
  > > vc-bzr-annotate-command) is not consistent with the output of other 
  > > VC backends: the annotations don't start from the same column, so it is
  > > hard to follow. 
  > 
  > I'm not sure what you mean, but if you refer to the fact that the
  > annotation takes a varying amount of space which breaks alignment, I've
  > just installed a fix for it in the 22 branch.

Yep, I am referring to the fact that the alignment is broken.  The
alignment is seems to be still broken on the 22 branch... 

My patch (vs trunk) does not edit the output of "bzr annotate", and does
not add any properties that are not really needed...

--- vc-bzr.el.~1.29.~   Fri Mar 14 00:57:48 2008
+++ vc-bzr.el   Fri Mar 14 13:00:40 2008
@@ -461,45 +461,26 @@
 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 0 file "--long" "--all"
-         (if revision (list "-r" revision)))
-  (with-current-buffer buffer
-    ;; Store the tags for the annotated source lines in a hash table
-    ;; to allow saving space by sharing the text properties.
-    (setq vc-bzr-annotation-table (make-hash-table :test 'equal))
-    (goto-char (point-min))
-    (while (re-search-forward "^\\( *[0-9]+\\) +\\(.+\\) +\\([0-9]\\{8\\}\\) |"
-                              nil t)
-      (let* ((rev (match-string 1))
-             (author (match-string 2))
-             (date (match-string 3))
-             (key (match-string 0))
-             (tag (gethash key vc-bzr-annotation-table)))
-        (unless tag
-          (setq tag (propertize rev 'help-echo (concat "Author: " author
-                                                       ", date: " date)
-                                'mouse-face 'highlight))
-          (puthash key tag vc-bzr-annotation-table))
-        (replace-match "")
-        (insert tag " |")))))
+         (when revision (list "-r" revision))))
 
 (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)
+  (when (re-search-forward "^[0-9]+.* \\([0-9]+ | \\)" nil t)
+    (goto-char (match-end 1))
+    (let ((str (buffer-substring-no-properties 
+                (match-beginning 1) (match-end 1))))
       (vc-annotate-convert-time
        (encode-time 0 0 0
-                    (string-to-number (substring (match-string 0 prop) 6 8))
-                    (string-to-number (substring (match-string 0 prop) 4 6))
-                    (string-to-number (substring (match-string 0 prop) 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 annoation buffer, or nil.
 Return nil if current line isn't annotated."
   (save-excursion
     (beginning-of-line)
-    (if (looking-at " *\\([0-9]+\\) | ")
-        (match-string-no-properties 1))))
+    (when (looking-at "\\([0-9.]+\\) ")
+      (match-string-no-properties 1))))
 
 (defun vc-bzr-command-discarding-stderr (command &rest args)
   "Execute shell command COMMAND (with ARGS); return its output and exitcode.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]