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
                         group)))))              ; group name

(deffoo nnselect-retrieve-headers (articles group &optional _server fetch-old)
  (let ((group (nnselect-add-prefix group))
        (gnus-inhibit-demon t))
    (with-current-buffer (gnus-summary-buffer-name group)
      (setq gnus-newsgroup-selection
            (or gnus-newsgroup-selection
                (nnselect-get-artlist group)
                ;; maybe don't need to update the info?
                ;; (nnselect-generate-artlist group nil (gnus-get-info group))))
                (nnselect-generate-artlist group)))
      (let ((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)))
              (gnus-request-group artgroup)
              (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))))))))))