Function: gnus-summary-next-group
gnus-summary-next-group is an interactive and byte-compiled function
defined in gnus-sum.el.gz.
Signature
(gnus-summary-next-group &optional NO-ARTICLE TARGET-GROUP BACKWARD)
Documentation
Exit current newsgroup and then select next unread newsgroup.
If prefix argument NO-ARTICLE is non-nil, no article is selected initially. If TARGET-GROUP, go to this group. If BACKWARD, go to previous group instead.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-sum.el.gz
;; Walking around group mode buffer from summary mode.
(defun gnus-summary-next-group (&optional no-article target-group backward)
"Exit current newsgroup and then select next unread newsgroup.
If prefix argument NO-ARTICLE is non-nil, no article is selected
initially. If TARGET-GROUP, go to this group. If BACKWARD, go to
previous group instead."
(interactive "P" gnus-summary-mode)
;; Stop pre-fetching.
(gnus-async-halt-prefetch)
(let ((current-group gnus-newsgroup-name)
(current-buffer (current-buffer))
entered)
;; First we semi-exit this group to update Xrefs and all variables.
;; We can't do a real exit, because the window conf must remain
;; the same in case the user is prompted for info, and we don't
;; want the window conf to change before that...
(gnus-summary-exit t)
(while (not entered)
;; Then we find what group we are supposed to enter.
(set-buffer gnus-group-buffer)
(gnus-group-jump-to-group current-group)
(setq target-group
(or target-group
(if (eq gnus-keep-same-level 'best)
(gnus-summary-best-group gnus-newsgroup-name)
(gnus-summary-search-group backward gnus-keep-same-level))))
(if (not target-group)
;; There are no further groups, so we return to the group
;; buffer.
(progn
(gnus-message 5 "Returning to the group buffer")
(setq entered t)
(when (gnus-buffer-live-p current-buffer)
(set-buffer current-buffer)
(gnus-summary-exit))
(gnus-run-hooks 'gnus-group-no-more-groups-hook))
;; We try to enter the target group.
(gnus-group-jump-to-group target-group)
(let ((unreads (gnus-group-group-unread)))
(if (and (or (eq t unreads)
(and unreads (not (zerop unreads))))
(gnus-summary-read-group
target-group nil no-article
(and (buffer-live-p current-buffer) current-buffer)
nil backward))
(setq entered t)
(setq current-group target-group
target-group nil)))))))