Function: majutsu-annotate--parse-output
majutsu-annotate--parse-output is a natively compiled function defined
in majutsu-annotate.el.
Signature
(majutsu-annotate--parse-output OUTPUT)
Documentation
Parse OUTPUT from jj file annotate into chunks.
Returns a list of majutsu-annotate-chunk structures.
Source Code
;; Defined in /nix/store/jagqw3nms546pad0gxi5f3wsckk6pji7-emacs-packages-deps/share/emacs/site-lisp/majutsu-annotate.el
;;; Parsing
(defun majutsu-annotate--parse-output (output)
"Parse OUTPUT from `jj file annotate' into chunks.
Returns a list of `majutsu-annotate-chunk' structures."
(let ((lines (split-string output "\n" t))
chunks current-chunk)
(dolist (line lines)
(let* ((fields (split-string line "\t"))
(change-id (nth 0 fields))
(parents (nth 1 fields))
(author (nth 2 fields))
(timestamp (nth 3 fields))
(line-num (string-to-number (or (nth 4 fields) "0")))
(orig-line-num (string-to-number (or (nth 5 fields) "0")))
(first-in-hunk (equal (nth 6 fields) "true"))
(summary (or (nth 7 fields) "")))
(when (and change-id (> line-num 0))
;; Cache revinfo
(unless (gethash change-id majutsu-annotate-cache)
(puthash change-id
`(("summary" . ,summary)
("author" . ,author)
("committer-time" . ,timestamp))
majutsu-annotate-cache))
(if (and current-chunk
(not first-in-hunk)
(equal change-id (majutsu-annotate-chunk-orig-rev current-chunk)))
;; Extend current chunk
(cl-incf (majutsu-annotate-chunk-num-lines current-chunk))
;; Start new chunk
(when current-chunk
(push current-chunk chunks))
(setq current-chunk
(make-majutsu-annotate-chunk
:orig-rev change-id
:orig-line orig-line-num
:final-line line-num
:num-lines 1
:prev-rev (and (not (string-empty-p parents))
(car (split-string parents ",")))))))))
(when current-chunk
(push current-chunk chunks))
(nreverse chunks)))