1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00

Have gnus-summary-limit-to-age operate on calendar days

Reported and patched by Łukasz Stelmach <stlman@poczta.fm>.

* lisp/gnus/gnus-sum.el (gnus-summary-limit-to-age): Rather than
24-hour blocks. Also use `read-number', and drop the confusing option
to reverse younger/older both with the prefix argument and with a
negative number.
This commit is contained in:
Eric Abrahamsen 2023-09-23 16:31:10 -07:00
parent 9ecb595dea
commit 0dd7e6e3ae

View file

@ -8331,39 +8331,29 @@ articles."
(defun gnus-summary-limit-to-age (age &optional younger-p)
"Limit the summary buffer to articles that are older than (or equal) AGE days.
If YOUNGER-P (the prefix) is non-nil, limit the summary buffer to
articles that are younger than AGE days."
Days are counted from midnight to midnight, and now to the
previous midnight counts as day one. If YOUNGER-P (the prefix)
is non-nil, limit the summary buffer to articles that are younger
than AGE days."
(interactive
(let ((younger current-prefix-arg)
(days-got nil)
days)
(while (not days-got)
(setq days (if younger
(read-string "Limit to articles younger than (in days, older when negative): ")
(read-string
"Limit to articles older than (in days, younger when negative): ")))
(when (> (length days) 0)
(setq days (read days)))
(if (numberp days)
(progn
(setq days-got t)
(when (< days 0)
(setq younger (not younger))
(setq days (* days -1))))
(message "Please enter a number.")
(sleep-for 1)))
(let* ((younger current-prefix-arg)
(days (read-number
(if younger "Limit to articles younger than days: "
"Limit to articles older than days: "))))
(list days younger))
gnus-summary-mode)
(prog1
(let ((data gnus-newsgroup-data)
(cutoff (days-to-time age))
articles d date is-younger)
(let* ((data gnus-newsgroup-data)
(now (append '(0 0 0) (cdddr (decode-time))))
(delta (make-decoded-time :day (* -1 (- age 1))))
(cutoff (encode-time (decoded-time-add now delta)))
articles d date is-younger)
(while (setq d (pop data))
(when (and (mail-header-p (gnus-data-header d))
(setq date (mail-header-date (gnus-data-header d))))
(setq is-younger (time-less-p
(time-since (gnus-date-get-time date))
cutoff))
cutoff
(gnus-date-get-time date)))
(when (if younger-p
is-younger
(not is-younger))