Function: gnus-create-xref-hashtb
gnus-create-xref-hashtb is a byte-compiled function defined in
gnus-sum.el.gz.
Signature
(gnus-create-xref-hashtb FROM-NEWSGROUP HEADERS UNREADS)
Documentation
Go through the HEADERS list and add all Xrefs to a hash table.
The resulting hash table is returned, or nil if no Xrefs were found.
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-sum.el.gz
(defun gnus-create-xref-hashtb (from-newsgroup headers unreads)
"Go through the HEADERS list and add all Xrefs to a hash table.
The resulting hash table is returned, or nil if no Xrefs were found."
(let* ((virtual (gnus-virtual-group-p from-newsgroup))
(prefix (if virtual "" (gnus-group-real-prefix from-newsgroup)))
(xref-hashtb (gnus-make-hashtable))
start group entry number xrefs header)
(while headers
(setq header (pop headers))
(when (and (setq xrefs (mail-header-xref header))
(not (memq (setq number (mail-header-number header))
unreads)))
(setq start 0)
(while (string-match "\\([^ ]+\\)[:/]\\([0-9]+\\)" xrefs start)
(setq start (match-end 0))
(setq group (if prefix
(concat prefix (substring xrefs (match-beginning 1)
(match-end 1)))
(substring xrefs (match-beginning 1) (match-end 1))))
(setq number
(string-to-number (substring xrefs (match-beginning 2)
(match-end 2))))
(if (setq entry (gethash group xref-hashtb))
(setcdr entry (cons number (cdr entry)))
(puthash group (cons number nil) xref-hashtb)))))
(and start xref-hashtb)))