Function: gnus-summary-insert-old-articles
gnus-summary-insert-old-articles is an interactive and byte-compiled
function defined in gnus-sum.el.gz.
Signature
(gnus-summary-insert-old-articles &optional ALL)
Documentation
Insert all old articles in this group.
If ALL is non-nil, already read articles become readable. If ALL is a number, fetch this number of articles.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-sum.el.gz
(defun gnus-summary-insert-old-articles (&optional all)
"Insert all old articles in this group.
If ALL is non-nil, already read articles become readable.
If ALL is a number, fetch this number of articles."
(interactive "P" gnus-summary-mode)
(prog1
(let ((old (sort (mapcar #'gnus-data-number gnus-newsgroup-data) #'<))
older len)
(setq older
;; Some nntp servers lie about their active range. When
;; this happens, the active range can be in the millions.
;; Use a compressed range to avoid creating a huge list.
(range-difference
(range-difference (list gnus-newsgroup-active) old)
gnus-newsgroup-unexist))
(setq len (range-length older))
(cond
((null older) nil)
((numberp all)
(if (< all len)
(let ((older-range (nreverse older)))
(setq older nil)
(while (> all 0)
(let* ((r (pop older-range))
(min (if (numberp r) r (car r)))
(max (if (numberp r) r (cdr r))))
(while (and (<= min max)
(> all 0))
(push max older)
(setq all (1- all)
max (1- max))))))
(setq older (range-uncompress older))))
(all
(setq older (range-uncompress older)))
(t
(when (and (numberp gnus-large-newsgroup)
(> len gnus-large-newsgroup))
(let ((cursor-in-echo-area nil)
(initial (gnus-parameter-large-newsgroup-initial
gnus-newsgroup-name))
input)
(when (eq initial 'all)
(setq initial len))
(setq input
(read-string
(format
"How many articles from %s (%s %d): "
gnus-newsgroup-name
(if initial "max" "default")
len)
nil nil
(and initial
(number-to-string initial))))
(unless (string-match "^[ \t]*$" input)
(setq all (string-to-number input))
(if (< all len)
(let ((older-range (nreverse older)))
(setq older nil)
(while (> all 0)
(let* ((r (pop older-range))
(min (if (numberp r) r (car r)))
(max (if (numberp r) r (cdr r))))
(while (and (<= min max)
(> all 0))
(push max older)
(setq all (1- all)
max (1- max))))))))))
(setq older (range-uncompress older))))
(if (not older)
(message "No old news.")
(gnus-summary-insert-articles older)
(gnus-summary-limit (gnus-sorted-nunion old older))))
(gnus-summary-position-point)))