Function: gnus-get-newsgroup-headers-xover
gnus-get-newsgroup-headers-xover is a byte-compiled function defined
in gnus-sum.el.gz.
Signature
(gnus-get-newsgroup-headers-xover SEQUENCE &optional FORCE-NEW DEPENDENCIES GROUP ALSO-FETCH-HEADS)
Documentation
Parse the news overview data in the server buffer.
Return a list of headers that match SEQUENCE (see
nntp-retrieve-headers).
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-sum.el.gz
;; Goes through the xover lines and returns a list of vectors
(defun gnus-get-newsgroup-headers-xover (sequence &optional
force-new dependencies
group also-fetch-heads)
"Parse the news overview data in the server buffer.
Return a list of headers that match SEQUENCE (see
`nntp-retrieve-headers')."
;; Get the Xref when the users reads the articles since most/some
;; NNTP servers do not include Xrefs when using XOVER.
(setq gnus-article-internal-prepare-hook (list #'gnus-article-get-xrefs))
(let ((mail-parse-charset gnus-newsgroup-charset)
(mail-parse-ignored-charsets gnus-newsgroup-ignored-charsets)
(cur nntp-server-buffer)
(dependencies (or dependencies gnus-newsgroup-dependencies))
(allp (cond
((eq gnus-read-all-available-headers t)
t)
((and (stringp gnus-read-all-available-headers)
group)
(string-match gnus-read-all-available-headers group))
(t
nil)))
number headers header)
(with-current-buffer nntp-server-buffer
(subst-char-in-region (point-min) (point-max) ?\r ? t)
;; Allow the user to mangle the headers before parsing them.
(gnus-run-hooks 'gnus-parse-headers-hook)
(goto-char (point-min))
(gnus-parse-without-error
(while (and (or sequence allp)
(not (eobp)))
(setq number (read cur))
(when (not allp)
(while (and sequence
(< (car sequence) number))
(setq sequence (cdr sequence))))
(when (and (or allp
(and sequence
(eq number (car sequence))))
(progn
(setq sequence (cdr sequence))
(setq header (inline
(gnus-nov-parse-line
number dependencies force-new)))))
(push header headers))
(forward-line 1)))
;; A common bug in inn is that if you have posted an article and
;; then retrieves the active file, it will answer correctly --
;; the new article is included. However, a NOV entry for the
;; article may not have been generated yet, so this may fail.
;; We work around this problem by retrieving the last few
;; headers using HEAD.
(if (or (not also-fetch-heads)
(not sequence))
;; We (probably) got all the headers.
(nreverse headers)
(let ((gnus-nov-is-evil t))
(nconc
(nreverse headers)
(when (eq (gnus-retrieve-headers sequence group) 'headers)
(gnus-get-newsgroup-headers))))))))