Function: nnselect-retrieve-headers

nnselect-retrieve-headers is a byte-compiled function defined in nnselect.el.gz.

Signature

(nnselect-retrieve-headers ARTICLES GROUP &optional SERVER FETCH-OLD)

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/nnselect.el.gz
(deffoo nnselect-retrieve-headers (articles group &optional _server fetch-old)
  (let ((group (nnselect-add-prefix group)))
    (with-current-buffer (gnus-summary-buffer-name group)
      (setq gnus-newsgroup-selection (or gnus-newsgroup-selection
					 (nnselect-get-artlist group)))
      (let ((gnus-inhibit-demon t)
	    (gartids (ids-by-group articles))
	    headers)
	(with-current-buffer nntp-server-buffer
	  (pcase-dolist (`(,artgroup . ,artids) gartids)
	    (let ((artlist (sort (mapcar #'cdr artids) #'<))
		  (gnus-override-method (gnus-find-method-for-group artgroup))
		  (fetch-old
		   (or
		    (car-safe
		     (gnus-group-find-parameter artgroup
						'gnus-fetch-old-headers t))
		    fetch-old)))
	      (erase-buffer)
	      (pcase (setq gnus-headers-retrieved-by
			   (or
			    (and
			     nnselect-retrieve-headers-override-function
			     (funcall
			      nnselect-retrieve-headers-override-function
			      artlist artgroup))
			    (gnus-retrieve-headers
			     artlist artgroup fetch-old)))
		('nov
		 (goto-char (point-min))
		 (while (not (eobp))
		   (nnselect-add-novitem
		    (nnheader-parse-nov))
		   (forward-line 1)))
		('headers
		 (gnus-run-hooks 'gnus-parse-headers-hook)
		 (let ((nnmail-extra-headers gnus-extra-headers))
		   (goto-char (point-min))
		   (while (not (eobp))
		     (nnselect-add-novitem
		      (nnheader-parse-head))
		     (forward-line 1))))
		((pred listp)
		 (dolist (novitem gnus-headers-retrieved-by)
		   (nnselect-add-novitem novitem)))
		(_ (error "Unknown header type %s while requesting articles \
                    of group %s" gnus-headers-retrieved-by artgroup)))))
	  (setq headers
		(sort
		 headers
		 (lambda (x y)
		   (< (mail-header-number x) (mail-header-number y))))))))))