Function: rmail-summary-fill-message-parents-and-descs-vectors
rmail-summary-fill-message-parents-and-descs-vectors is a
byte-compiled function defined in rmailsum.el.gz.
Signature
(rmail-summary-fill-message-parents-and-descs-vectors)
Documentation
Fill parents and descendants vectors for messages.
This populates rmail-summary-message-parents-vector
and rmail-summary-message-descendants-vector.
Source Code
;; Defined in /usr/src/emacs/lisp/mail/rmailsum.el.gz
(defun rmail-summary-fill-message-parents-and-descs-vectors ()
"Fill parents and descendants vectors for messages.
This populates `rmail-summary-message-parents-vector'
and `rmail-summary-message-descendants-vector'."
(with-current-buffer rmail-buffer
(rmail-summary-fill-message-ids-hash-table)
(setq rmail-summary-subjects-hash-table
(make-hash-table :test 'equal :size 1024))
(setq rmail-summary-message-parents-vector
(make-vector (1+ rmail-total-messages) nil))
(setq rmail-summary-message-descendants-vector
(make-vector (1+ rmail-total-messages) nil))
(let ((msgnum 1))
(while (<= msgnum rmail-total-messages)
(let* ((parents nil)
(subject (rmail-simplified-subject msgnum))
(subj-cell (gethash subject rmail-summary-subjects-hash-table))
(subj-par (assoc subject subj-cell))
(refs (rmail-summary--split-header-field "References" msgnum))
(reply-tos (rmail-summary--split-header-field "In-reply-to"
msgnum)))
(if subj-par
(progn
(setq parents (cons (cdr subj-par) nil))
(aset rmail-summary-message-descendants-vector (cdr subj-par)
(cons msgnum
(aref rmail-summary-message-descendants-vector
(cdr subj-par)))))
(puthash subject (cons (cons subject msgnum) subj-cell)
rmail-summary-subjects-hash-table))
(dolist (id (append refs reply-tos))
(let ((ent
(assoc id
(gethash id rmail-summary-message-ids-hash-table))))
(when ent
(setq parents (cons (cdr ent) parents))
(aset rmail-summary-message-descendants-vector (cdr ent)
(cons msgnum
(aref rmail-summary-message-descendants-vector
(cdr ent)))))))
(aset rmail-summary-message-parents-vector msgnum parents)
(setq msgnum (1+ msgnum)))))))