From 20add1cd22f9775a4475148b300cf2a4de4bd54a Mon Sep 17 00:00:00 2001 From: Eric Abrahamsen Date: Tue, 17 Mar 2020 20:53:05 -0700 Subject: Allow gnus-retrieve-headers to return headers directly Previously, all Gnus backends returned header information by writing nov lines into the nntp-server-buffer, which was later parsed. This commit allows the backends to return their header information as a list of already-parsed headers, though so far none of the backends actually do that. The agent, cache, cloud etc. now operate on parsed headers rather than nov text, ie. they use gnus-fetch-headers instead of gnus-retrieve-headers. * lisp/gnus/gnus-sum.el (gnus-fetch-headers): Handle the case in which gnus-retrieve-headers returns headers directly. * lisp/gnus/nnvirtual.el (nnvirtual-retrieve-headers): Use gnus-fetch-headers rather than gnus-retrieve-headers to get headers, meaning we're operating on already-parsed headers. (nnvirtual-convert-headers): Remove now-unnecessary function. (nnvirtual-update-xref-header): Rewrite to operate on parsed header. * lisp/gnus/gnus-cloud.el (gnus-cloud-available-chunks): Use gnus-fetch-headers instead of gnus-retrieve-headers. * lisp/gnus/gnus-cache.el (gnus-cache-retrieve-headers): Use gnus-fetch-headers. (gnus-cache-braid-nov, gnus-cache-braid-heads): Delete unnecessary functions -- we now do this work on a list of parsed headers. * lisp/gnus/gnus-agent.el (gnus-agent-retrieve-headers): Use gnus-fetch-headers. (gnus-agent-braid-nov): Remove unnecessary function. (gnus-agent-fetch-headers): Use gnus-fetch-headers. --- lisp/gnus/gnus-async.el | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'lisp/gnus/gnus-async.el') diff --git a/lisp/gnus/gnus-async.el b/lisp/gnus/gnus-async.el index fefd02c7bfb..ed948a26c0b 100644 --- a/lisp/gnus/gnus-async.el +++ b/lisp/gnus/gnus-async.el @@ -357,8 +357,13 @@ that was fetched." (let ((nntp-server-buffer (current-buffer)) (nnheader-callback-function (lambda (_arg) - (setq gnus-async-header-prefetched - (cons group unread))))) + (setq gnus-async-header-prefetched + (cons group unread))))) + ;; FIXME: If header prefetch is ever put into use, we'll + ;; have to handle the possibility that + ;; `gnus-retrieve-headers' might return a list of header + ;; vectors directly, rather than writing them into the + ;; current buffer. (gnus-retrieve-headers unread group gnus-fetch-old-headers)))))) (defun gnus-async-retrieve-fetched-headers (articles group) -- cgit v1.2.3