emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 634cedfea1: Improve compression of article lists in gnus/nnselect


From: Andrew G Cohen
Subject: master 634cedfea1: Improve compression of article lists in gnus/nnselect
Date: Thu, 3 Feb 2022 20:04:57 -0500 (EST)

branch: master
commit 634cedfea17a8caa7d93627b233a2eef19fc43fb
Author: Andrew G Cohen <cohen@andy.bu.edu>
Commit: Andrew G Cohen <cohen@andy.bu.edu>

    Improve compression of article lists in gnus/nnselect
    
    * lisp/gnus/nnselect.el (nnselect-compress-artlist): Allow compressed list.
    nnselect-uncompress-artlist): Properly loop over rsv values.
---
 lisp/gnus/nnselect.el | 39 +++++++++++++++++++++------------------
 1 file changed, 21 insertions(+), 18 deletions(-)

diff --git a/lisp/gnus/nnselect.el b/lisp/gnus/nnselect.el
index 205456a57d..85df0284ef 100644
--- a/lisp/gnus/nnselect.el
+++ b/lisp/gnus/nnselect.el
@@ -79,30 +79,33 @@
 ;;; Helper routines.
 (defun nnselect-compress-artlist (artlist)
   "Compress ARTLIST."
-  (let (selection)
-    (pcase-dolist (`(,artgroup . ,arts)
-                   (nnselect-categorize artlist #'nnselect-artitem-group))
-      (let (list)
-        (pcase-dolist (`(,rsv . ,articles)
-                       (nnselect-categorize
-                        arts #'nnselect-artitem-rsv #'nnselect-artitem-number))
-          (push (cons rsv (gnus-compress-sequence (sort articles #'<)))
-                list))
-        (push (cons artgroup list) selection)))
-    selection))
+  (if (consp artlist)
+      artlist
+    (let (selection)
+      (pcase-dolist (`(,artgroup . ,arts)
+                     (nnselect-categorize artlist #'nnselect-artitem-group))
+       (let (list)
+          (pcase-dolist (`(,rsv . ,articles)
+                        (nnselect-categorize
+                          arts #'nnselect-artitem-rsv 
#'nnselect-artitem-number))
+            (push (cons rsv (gnus-compress-sequence (sort articles #'<)))
+                  list))
+          (push (cons artgroup list) selection)))
+      selection)))
 
 (defun nnselect-uncompress-artlist (artlist)
   "Uncompress ARTLIST."
   (if (vectorp artlist)
       artlist
     (let (selection)
-      (pcase-dolist (`(,artgroup (,artrsv . ,artseq)) artlist)
-       (setq selection
-             (vconcat
-              (cl-map 'vector
-                       (lambda (art)
-                         (vector artgroup art artrsv))
-                   (gnus-uncompress-sequence artseq)) selection)))
+      (pcase-dolist (`(,artgroup . ,list) artlist)
+       (pcase-dolist (`(,artrsv . ,artseq) list)
+         (setq selection
+               (vconcat
+                (cl-map 'vector
+                        (lambda (art)
+                           (vector artgroup art artrsv))
+                        (gnus-uncompress-sequence artseq)) selection))))
       selection)))
 
 (make-obsolete 'nnselect-group-server 'gnus-group-server "28.1")



reply via email to

[Prev in Thread] Current Thread [Next in Thread]