mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-05 22:20:24 -08:00
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.
This commit is contained in:
parent
d539d00c42
commit
634cedfea1
1 changed files with 21 additions and 18 deletions
|
|
@ -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")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue