Commit 62ccc42c authored by Stefan Monnier's avatar Stefan Monnier
Browse files

(vc-bzr-annotate-command): Make operation asynchronous.

parent 6a7ce3a2
2009-11-26 Stefan Monnier <monnier@iro.umontreal.ca>
* vc-bzr.el (vc-bzr-annotate-command): Make operation asynchronous.
2009-11-26 Dan Nicolaescu <dann@ics.uci.edu>
* finder.el (finder-mode-map): Add a menu.
......@@ -13,17 +17,18 @@
2009-11-26 Wilson Snyder <wsnyder@wsnyder.org>
* verilog-mode.el (verilog-auto-insert-lisp, verilog-delete-auto)
(verilog-delete-empty-auto-pair, verilog-library-filenames): Fix
AUTOINSERTLISP to support insert-file. Reported by Clay Douglass.
(verilog-delete-empty-auto-pair, verilog-library-filenames):
Fix AUTOINSERTLISP to support insert-file. Reported by Clay Douglass.
(verilog-auto-inst, verilog-auto-star-safe)
(verilog-delete-auto-star-implicit, verilog-read-sub-decls): Fix
removing "// Interfaces" when saving .* expansions. Reported by
(verilog-delete-auto-star-implicit, verilog-read-sub-decls):
Fix removing "// Interfaces" when saving .* expansions. Reported by
Pierre-David Pfister.
2009-11-26 Glenn Morris <rgm@gnu.org>
* eshell/em-dirs.el (eshell/cd): Don't throw to a tag outside the scope.
* eshell/em-dirs.el (eshell/cd): Don't throw to a tag outside
the scope.
2009-11-25 Johan Bockgård <bojohan@gnu.org>
......
......@@ -551,27 +551,34 @@ REV non-nil gets an error."
"Prepare BUFFER for `vc-annotate' on FILE.
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"
(apply #'vc-bzr-command "annotate" buffer 'async 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.]+ *\\) \\([^\n ]+\\) +\\([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)))
(lexical-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))
(while (string-match "^\\( *[0-9.]+ *\\) \\([^\n ]+\\) +\\([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 rev 'help-echo (concat "Author: " author
", date: " date)
'mouse-face 'highlight))
(puthash key tag vc-bzr-annotation-table))
(replace-match "")
(insert tag " |")))))
(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)))))))
(declare-function vc-annotate-convert-time "vc-annotate" (time))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment