Function: gnus-agent-set-cat-groups
gnus-agent-set-cat-groups is a byte-compiled function defined in
gnus-agent.el.gz.
Signature
(gnus-agent-set-cat-groups CATEGORY GROUPS)
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-agent.el.gz
(defun gnus-agent-set-cat-groups (category groups)
(unless (eq groups 'ignore)
(let ((new-g groups)
(old-g (gnus-agent-cat-groups category)))
(cond ((eq new-g old-g)
;; gnus-agent-add-group is fiddling with the group
;; list. Still, Im done.
nil
)
((eq new-g (cdr old-g))
;; gnus-agent-add-group is fiddling with the group list
(setcdr (or (assq 'agent-groups category)
(let ((cell (cons 'agent-groups nil)))
(setcdr category (cons cell (cdr category)))
cell))
new-g))
(t
(let ((groups groups))
(while groups
(let* ((group (pop groups))
(old-category (gnus-group-category group)))
(if (eq category old-category)
nil
(setf (gnus-agent-cat-groups old-category)
(delete group (gnus-agent-cat-groups
old-category))))))
;; Purge cache as preceding loop invalidated it.
(setq gnus-category-group-cache nil))
(setcdr (or (assq 'agent-groups category)
(let ((cell (cons 'agent-groups nil)))
(setcdr category (cons cell (cdr category)))
cell))
groups))))))