]> git.eshelyaron.com Git - emacs.git/commitdiff
Have gnus-summary-limit-to-age operate on calendar days
authorEric Abrahamsen <eric@ericabrahamsen.net>
Sat, 23 Sep 2023 23:31:10 +0000 (16:31 -0700)
committerEric Abrahamsen <eric@ericabrahamsen.net>
Fri, 13 Oct 2023 23:48:55 +0000 (16:48 -0700)
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.

lisp/gnus/gnus-sum.el

index a3be5577f7a0a1e5b0a389242cd88bacfac18fa0..f576d4e61476553bc482ed5865dcebe8eddfe55c 100644 (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))