Function: cvs-tree-tags-insert
cvs-tree-tags-insert is a byte-compiled function defined in
cvs-status.el.gz.
Signature
(cvs-tree-tags-insert TAGS PREV)
Source Code
;; Defined in /usr/src/emacs/lisp/vc/cvs-status.el.gz
(defun cvs-tree-tags-insert (tags prev)
(when tags
(let* ((tag (car tags))
(vlist (cvs-tag->vlist tag))
(nprev ;"next prev"
(let* ((next (cvs-car (cadr tags)))
(nprev (if (and cvs-tree-nomerge next
(equal vlist (cvs-tag->vlist next)))
prev vlist)))
(cl-mapcar (lambda (v _p) v) nprev prev)))
(after (save-excursion
(newline)
(cvs-tree-tags-insert (cdr tags) nprev)))
(pe t) ;"prev equal"
(nas nil)) ;"next afters" to be returned
(insert " ")
(cl-do* ((vs vlist (cdr vs))
(ps prev (cdr ps))
(as after (cdr as)))
((and (null as) (null vs) (null ps))
(let ((revname (cvs-status-vl-to-str vlist)))
(if (cl-every #'identity (cl-mapcar #'equal prev vlist))
(insert (make-string (+ 4 (length revname)) ? )
(or (cvs-tag->name tag) ""))
(insert " " revname ": " (or (cvs-tag->name tag) "")))))
(let* ((eq (and pe (equal (car ps) (car vs))))
(next-eq (equal (cadr ps) (cadr vs))))
(let* ((na+char
(if (car as)
(if eq
(if next-eq (cons t cvs-tree-char-vbar)
(cons t cvs-tree-char-branch))
(cons nil cvs-tree-char-bob))
(if eq
(if next-eq (cons nil cvs-tree-char-space)
(cons t cvs-tree-char-eob))
(cons nil (if (and (eq (cvs-tag->type tag) 'branch)
(cl-every #'null as))
cvs-tree-char-space
cvs-tree-char-hbar))))))
(insert (cdr na+char))
(push (car na+char) nas))
(setq pe eq)))
(nreverse nas))))