summaryrefslogtreecommitdiff
path: root/lisp/gnus/nnselect.el
diff options
context:
space:
mode:
authorAndrew G Cohen <cohen@andy.bu.edu>2022-02-04 08:30:32 +0800
committerAndrew G Cohen <cohen@andy.bu.edu>2022-02-04 09:04:20 +0800
commit634cedfea17a8caa7d93627b233a2eef19fc43fb (patch)
treef61c86b09c2ee56a36ac7efac4a720cdf5f1391b /lisp/gnus/nnselect.el
parentd539d00c4263e1d494213a0bcec655036405bd2e (diff)
downloademacs-634cedfea17a8caa7d93627b233a2eef19fc43fb.tar.gz
emacs-634cedfea17a8caa7d93627b233a2eef19fc43fb.tar.bz2
emacs-634cedfea17a8caa7d93627b233a2eef19fc43fb.zip
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.
Diffstat (limited to 'lisp/gnus/nnselect.el')
-rw-r--r--lisp/gnus/nnselect.el39
1 files changed, 21 insertions, 18 deletions
diff --git a/lisp/gnus/nnselect.el b/lisp/gnus/nnselect.el
index 205456a57df..85df0284ef1 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")