(let ((gnus-group-marked (copy-sequence nnvirtual-component-groups))
(gnus-expert-user t))
;; Make sure all groups are activated.
- (mapcar
+ (mapc
(lambda (g)
- (when (not (numberp (car (gnus-gethash g gnus-newsrc-hashtb))))
+ (when (not (numberp (gnus-group-unread g)))
(gnus-activate-group g)))
nnvirtual-component-groups)
(save-excursion
(defun nnvirtual-convert-headers ()
"Convert HEAD headers into NOV headers."
- (save-excursion
- (set-buffer nntp-server-buffer)
+ (with-current-buffer nntp-server-buffer
(let* ((dependencies (make-vector 100 0))
- (headers (gnus-get-newsgroup-headers dependencies))
- header)
+ (headers (gnus-get-newsgroup-headers dependencies)))
(erase-buffer)
- (while (setq header (pop headers))
- (nnheader-insert-nov header)))))
+ (mapc 'nnheader-insert-nov headers))))
(defun nnvirtual-update-xref-header (group article prefix system-name)
(nnvirtual-partition-sequence (cdr ml)))))
(gnus-info-marks (gnus-get-info
(nnvirtual-current-group))))))
- mark type groups carticles info entry)
+ type groups info)
;; Ok, atomically move all of the (un)read info, clear any old
;; marks, and move all of the current marks. This way if someone
;; move (un)read
;; bind for workaround guns-update-read-articles
(let ((gnus-newsgroup-active nil))
- (while (setq entry (pop unreads))
+ (dolist (entry unreads)
(gnus-update-read-articles (car entry) (cdr entry))))
;; clear all existing marks on the component groups
- (setq groups nnvirtual-component-groups)
- (while groups
- (when (and (setq info (gnus-get-info (pop groups)))
+ (dolist (group nnvirtual-component-groups)
+ (when (and (setq info (gnus-get-info group))
(gnus-info-marks info))
(gnus-info-set-marks
info
;; Ok, currently type-marks is an assq list with keys of a mark type,
;; with data of an assq list with keys of component group names
;; and the articles which correspond to that key/group pair.
- (while (setq mark (pop type-marks))
+ (dolist (mark type-marks)
(setq type (car mark))
(setq groups (cdr mark))
- (while (setq carticles (pop groups))
+ (dolist (carticles groups)
(gnus-add-marked-articles (car carticles) type (cdr carticles)
nil t))))
;; possibly update the display, it is really slow
(when update-p
- (setq groups nnvirtual-component-groups)
- (while groups
- (gnus-group-update-group (pop groups) t))))))
+ (dolist (group nnvirtual-component-groups)
+ (gnus-group-update-group group t))))))
(defun nnvirtual-current-group ()
the result."
(when (numberp (cdr-safe articles))
(setq articles (list articles)))
- (let ((carticles (mapcar (lambda (g) (list g))
- nnvirtual-component-groups))
+ (let ((carticles (mapcar 'list nnvirtual-component-groups))
a i j article entry)
(while (setq a (pop articles))
(if (atom a)
(setq entry (assoc (car article) carticles))
(setcdr entry (cons (cdr article) (cdr entry))))
(setq i (1+ i))))
- (mapcar (lambda (x) (setcdr x (nreverse (cdr x))))
- carticles)
+ (mapc (lambda (x) (setcdr x (nreverse (cdr x))))
+ carticles)
carticles))
;; Into all-unreads we put (g unreads).
;; Into all-marks we put (g marks).
;; We also increment cnt and tot here, and compute M (max of sizes).
- (mapcar (lambda (g)
- (setq active (gnus-activate-group g)
- min (car active)
- max (cdr active))
- (when (and active (>= max min) (not (zerop max)))
- ;; store active information
- (push (list g (- max min -1) max) actives)
- ;; collect unread/mark info for later
- (setq unreads (gnus-list-of-unread-articles g))
- (setq marks (gnus-info-marks (gnus-get-info g)))
- (when gnus-use-cache
- (push (cons 'cache
- (gnus-cache-articles-in-group g))
- marks))
- (push (cons g unreads) all-unreads)
- (push (cons g marks) all-marks)
- ;; count groups, total #articles, and max size
- (setq size (- max min -1))
- (setq cnt (1+ cnt)
- tot (+ tot size)
- M (max M size))))
- nnvirtual-component-groups)
-
+ (mapc (lambda (g)
+ (setq active (gnus-activate-group g)
+ min (car active)
+ max (cdr active))
+ (when (and active (>= max min) (not (zerop max)))
+ ;; store active information
+ (push (list g (- max min -1) max) actives)
+ ;; collect unread/mark info for later
+ (setq unreads (gnus-list-of-unread-articles g))
+ (setq marks (gnus-info-marks (gnus-get-info g)))
+ (when gnus-use-cache
+ (push (cons 'cache
+ (gnus-cache-articles-in-group g))
+ marks))
+ (push (cons g unreads) all-unreads)
+ (push (cons g marks) all-marks)
+ ;; count groups, total #articles, and max size
+ (setq size (- max min -1))
+ (setq cnt (1+ cnt)
+ tot (+ tot size)
+ M (max M size))))
+ nnvirtual-component-groups)
+
;; Number of articles in the virtual group.
(setq nnvirtual-mapping-len tot)
;; Remove any empty marks lists, and store.
(setq nnvirtual-mapping-marks nil)
- (while marks
- (if (cdr (car marks))
- (push (car marks) nnvirtual-mapping-marks))
- (setq marks (cdr marks)))
+ (dolist (mark marks)
+ (when (cdr mark)
+ (push mark nnvirtual-mapping-marks)))
;; We need to convert the unreads to reads. We compress the
;; sequence as we go, otherwise it could be huge.