Function: gnus-agent-get-undownloaded-list
gnus-agent-get-undownloaded-list is an autoloaded and byte-compiled
function defined in gnus-agent.el.gz.
Signature
(gnus-agent-get-undownloaded-list)
Documentation
Construct list of articles that have not been downloaded.
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-agent.el.gz
;;;###autoload
(defun gnus-agent-get-undownloaded-list ()
"Construct list of articles that have not been downloaded."
(let ((gnus-command-method (gnus-find-method-for-group gnus-newsgroup-name)))
(when (setq-local gnus-newsgroup-agentized
(gnus-agent-method-p gnus-command-method))
(let* ((alist (gnus-agent-load-alist gnus-newsgroup-name))
(headers (sort (mapcar (lambda (h)
(mail-header-number h))
gnus-newsgroup-headers)
#'<))
(cached (and gnus-use-cache gnus-newsgroup-cached))
(undownloaded (list nil))
(tail-undownloaded undownloaded)
(unfetched (list nil))
(tail-unfetched unfetched))
(while (and alist headers)
(let ((a (caar alist))
(h (car headers)))
(cond ((< a h)
;; Ignore IDs in the alist that are not being
;; displayed in the summary.
(setq alist (cdr alist)))
((> a h)
;; Headers that are not in the alist should be
;; fictitious (see nnagent-retrieve-headers); they
;; imply that this article isn't in the agent.
(gnus-agent-append-to-list tail-undownloaded h)
(gnus-agent-append-to-list tail-unfetched h)
(setq headers (cdr headers)))
((cdar alist)
(setq alist (cdr alist))
(setq headers (cdr headers))
nil ; ignore already downloaded
)
(t
(setq alist (cdr alist))
(setq headers (cdr headers))
;; This article isn't in the agent. Check to see
;; if it is in the cache. If it is, it's been
;; downloaded.
(while (and cached (< (car cached) a))
(setq cached (cdr cached)))
(unless (equal a (car cached))
(gnus-agent-append-to-list tail-undownloaded a))))))
(while headers
(let ((num (pop headers)))
(gnus-agent-append-to-list tail-undownloaded num)
(gnus-agent-append-to-list tail-unfetched num)))
(setq gnus-newsgroup-undownloaded (cdr undownloaded)
gnus-newsgroup-unfetched (cdr unfetched))))))