Function: gnus-summary-refer-thread
gnus-summary-refer-thread is an interactive and byte-compiled function
defined in gnus-sum.el.gz.
Signature
(gnus-summary-refer-thread &optional LIMIT)
Documentation
Fetch all articles in the current thread.
A non-numeric prefix arg will search the entire server; without a
prefix arg only the current group is searched. If the variable
gnus-refer-thread-use-search is t the prefix arg has the
reverse meaning. If searching is not enabled for the current
group, fetch LIMIT (the numerical prefix) old headers. If LIMIT
is non-numeric or nil fetch the number specified by the
gnus-refer-thread-limit variable.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-sum.el.gz
(defun gnus-summary-refer-thread (&optional limit)
"Fetch all articles in the current thread.
A non-numeric prefix arg will search the entire server; without a
prefix arg only the current group is searched. If the variable
`gnus-refer-thread-use-search' is t the prefix arg has the
reverse meaning. If searching is not enabled for the current
group, fetch LIMIT (the numerical prefix) old headers. If LIMIT
is non-numeric or nil fetch the number specified by the
`gnus-refer-thread-limit' variable."
(interactive "P" gnus-summary-mode)
(let* ((group gnus-newsgroup-name)
(header (gnus-summary-article-header))
(id (mail-header-id header))
(gnus-inhibit-demon t)
(gnus-summary-ignore-duplicates t)
(gnus-refer-thread-use-search
(if (or (null limit) (numberp limit))
gnus-refer-thread-use-search
(if (booleanp gnus-refer-thread-use-search)
(not gnus-refer-thread-use-search)
gnus-refer-thread-use-search)))
article-ids new-unreads
(new-headers
(cond
;; If there is a backend-specific method, use it.
((gnus-check-backend-function
'request-thread group)
(gnus-request-thread header group))
;; If a search engine is configured, use it.
((ignore-errors
(gnus-search-server-to-engine (gnus-group-server group)))
(gnus-search-thread header))
;; Otherwise just retrieve some headers.
(t
(let* ((gnus-read-all-available-headers t)
(limit (if (numberp limit)
limit
gnus-refer-thread-limit))
(last (if (numberp limit)
(min (+ (mail-header-number header) limit)
gnus-newsgroup-highest)
gnus-newsgroup-highest))
(subject (gnus-simplify-subject
(mail-header-subject header)))
(refs (split-string
(or (mail-header-references header) "")))
(gnus-parse-headers-hook
(let ((refs (append refs (list id subject))))
(lambda () (goto-char (point-min))
(keep-lines (regexp-opt refs))))))
(gnus-fetch-headers
(list last) (if (numberp limit) (* 2 limit) limit) t))))))
(when (listp new-headers)
(dolist (header new-headers)
(push (mail-header-number header) article-ids))
(setq article-ids (nreverse article-ids))
(setq new-unreads
(gnus-sorted-intersection gnus-newsgroup-unselected article-ids))
(setq gnus-newsgroup-unselected
(gnus-sorted-ndifference gnus-newsgroup-unselected new-unreads))
(setq gnus-newsgroup-unreads
(gnus-sorted-nunion gnus-newsgroup-unreads new-unreads))
(setq gnus-newsgroup-headers
(gnus-delete-duplicate-headers
(cl-merge 'list gnus-newsgroup-headers new-headers
'gnus-article-sort-by-number)))
(setq gnus-newsgroup-articles
(gnus-sorted-nunion gnus-newsgroup-articles article-ids)))
(gnus-summary-limit-include-thread id gnus-refer-thread-limit-to-thread))
(gnus-summary-show-thread))