Go to the first, previous, next, last section, table of contents.

# The Group Buffer

The group buffer lists all (or parts) of the available groups. It is the first buffer shown when Gnus starts, and will never be killed as long as Gnus is active.

- Group Buffer Format: Information listed and how you can change it.
- Group Maneuvering: Commands for moving in the group buffer.
- Selecting a Group: Actually reading news.
- Subscription Commands: Unsubscribing, killing, subscribing.
- Group Levels: Levels? What are those, then?
- Group Score: A mechanism for finding out what groups you like.
- Marking Groups: You can mark groups for later processing.
- Foreign Groups: Creating and editing groups.
- Group Parameters: Each group may have different parameters set.
- Listing Groups: Gnus can list various subsets of the groups.
- Sorting Groups: Re-arrange the group order.
- Group Maintenance: Maintaining a tidy ``.newsrc'` file.
- Browse Foreign Server: You can browse a server. See what it has to offer.
- Exiting Gnus: Stop reading news and get some work done.
- Group Topics: A folding group mode divided into topics.
- Misc Group Stuff: Other stuff that you can to do.

## Group Buffer Format

- Group Line Specification: Deciding how the group buffer is to look.
- Group Modeline Specification: The group buffer modeline.
- Group Highlighting: Having nice colors in the group buffer.

### Group Line Specification

The default format of the group buffer is nice and dull, but you can make it as exciting and ugly as you feel like.

Here's a couple of example group lines:

         25: news.announce.newusers
     *    0: alt.fan.andrea-dworkin

Quite simple, huh?

You can see that there are 25 unread articles in ``news.announce.newusers'`. There are no unread articles, but some ticked articles, in ``alt.fan.andrea-dworkin'` (see that little asterisk at the beginning of the line?)

You can change that format to whatever you want by fiddling with the `gnus-group-line-format` variable. This variable works along the lines of a `format` specification, which is pretty much the same as a `printf` specifications, for those of you who use (feh!) C. See section Formatting Variables.

The default value that produced those lines above is ``%M%S%5y: %(%g%)\n'`.

There should always be a colon on the line; the cursor always moves to the colon after performing an operation. Nothing else is required--not even the group name. All displayed text is just window dressing, and is never examined by Gnus. Gnus stores all real information it needs using text properties.

(Note that if you make a really strange, wonderful, spreadsheet-like layout, everybody will believe you are hard at work with the accounting instead of wasting time reading news.)

Here's a list of all available format characters:

``M'`
  Only marked articles.
``S'`
  Whether the group is subscribed.
``L'`
  Level of subscribedness.
``N'`
  Number of unread articles.
``I'`
  Number of dormant articles.
``T'`
  Number of ticked articles.
``R'`
  Number of read articles.
``t'`
  Total number of articles.
``y'`
  Number of unread, unticked, non-dormant articles.
``i'`
  Number of ticked and dormant articles.
``g'`
  Full group name.
``G'`
  Group name.
``D'`
  Newsgroup description.
``o'`
  ``m'` if moderated.
``O'`
  ``(m)'` if moderated.
``s'`
  Select method.
``n'`
  Select from where.
``z'`
  A string that looks like ``<%s:%n>'` if a foreign select method is used.
``P'`
  Indentation based on the level of the topic (see section Group Topics).
``c'`
  Short (collapsed) group name. The `gnus-group-uncollapsed-levels` variable says how many levels to leave at the end of the group name. The default is `1`.
``u'`
  User defined specifier. The next character in the format string should be a letter. GNUS will call the function `gnus-user-format-function-```X'`, where ``X'` is the letter following ``%u'`. The function will be passed the current headers as argument. The function should return a string, which will be inserted into the buffer just like information from any other specifier.

All the "number-of" specs will be filled with an asterisk (``*'`) if no info is available--for instance, if it is a non-activated foreign group, or a bogus (or semi-bogus) native group.

### Group Modeline Specification

The mode line can be changed by setting (`gnus-group-mode-line-format`). It doesn't understand that many format specifiers:

``S'`
  The native news server.
``M'`
  The native select method.

### Group Highlighting

Highlighting in the group buffer is controlled by the `gnus-group-highlight` variable. This is an alist with elements that look like (form . face). If form evaluates to something non-`nil`, the face will be used on the line.

Here's an example value for this variable that might look nice if the background is dark:

    (setq gnus-group-highlight
        `(((> unread 200) .
           ,(custom-face-lookup "Red" nil nil t nil nil))
          ((and (< level 3) (zerop unread)) .
           ,(custom-face-lookup "SeaGreen" nil nil t nil nil))
          ((< level 3) .
           ,(custom-face-lookup "SpringGreen" nil nil t nil nil))
          ((zerop unread) .
           ,(custom-face-lookup "SteelBlue" nil nil t nil nil))
          (t .
           ,(custom-face-lookup "SkyBlue" nil nil t nil nil))
          ))

Variables that are dynamically bound when the forms are evaluated include:

`group`
  The group name.
`unread`
  The number of unread articles in the group.
`method`
  The select method.
`mailp`
  Whether the group is a mail group.
`level`
  The level of the group.
`score`
  The score of the group.
`ticked`
  The number of ticked articles in the group.
`topic`
  When using the topic minor mode, this variable is bound to the current topic being inserted.

When the forms are `eval`ed, point is at the beginning of the line of the group in question, so you can use many of the normal Gnus functions for snarfing info on the group.

`gnus-group-update-hook` is called when a group line is changed. It will not be called when `gnus-visual` is `nil`. This hook calls `gnus-group-highlight-line` by default.

## Group Maneuvering

All movement commands understand the numeric prefix and will behave as expected, hopefully.

`n`
  Go to the next group that has unread articles (`gnus-group-next-unread-group`).
`p`
`DEL`
  Go to the previous group group that has unread articles (`gnus-group-prev-unread-group`).
`N`
  Go to the next group (`gnus-group-next-group`).
`P`
  Go to the previous group (`gnus-group-prev-group`).
`M-p`
  Go to the next unread group on the same level (or lower) (`gnus-group-next-unread-group-same-level`).
`M-n`
  Go to the previous unread group on the same level (or lower) (`gnus-group-prev-unread-group-same-level`).

Three commands for jumping to groups:

`j`
  Jump to a group (and make it visible if it isn't already) (`gnus-group-jump-to-group`). Killed groups can be jumped to, just like living groups.
`,`
  Jump to the unread group with the lowest level (`gnus-group-best-unread-group`).
`.`
  Jump to the first group with unread articles (`gnus-group-first-unread-group`).

If `gnus-group-goto-unread` is `nil`, all the movement commands will move to the next group, not the next unread group. Even the commands that say they move to the next unread group. The default is `t`.

## Selecting a Group

`SPACE`
  Select the current group, switch to the summary buffer and display the first unread article (`gnus-group-read-group`). If there are no unread articles in the group, or if you give a non-numerical prefix to this command, Gnus will offer to fetch all the old articles in this group from the server. If you give a numerical prefix N, Gnus will fetch N number of articles. If N is positive, fetch the N newest articles, if N is negative, fetch the abs(N) oldest articles.
`RET`
  Select the current group and switch to the summary buffer (`gnus-group-select-group`). Takes the same arguments as `gnus-group-read-group`---the only difference is that this command does not display the first unread article automatically upon group entry.
`M-RET`
  This does the same as the command above, but tries to do it with the minimum amount off fuzz (`gnus-group-quick-select-group`). No scoring/killing will be performed, there will be no highlights and no expunging. This might be useful if you're in a real hurry and have to enter some humongous group.
`M-SPACE`
  This is yet one more command that does the same as the one above, but this one does it without expunging and hiding dormants (`gnus-group-visible-select-group`).
`c`
  Mark all unticked articles in this group as read (`gnus-group-catchup-current`). `gnus-group-catchup-group-hook` is when catching up a group from the group buffer.
`C`
  Mark all articles in this group, even the ticked ones, as read (`gnus-group-catchup-current-all`).

The `gnus-large-newsgroup` variable says what Gnus should consider to be a big group. This is 200 by default. If the group has more unread articles than this, Gnus will query the user before entering the group. The user can then specify how many articles should be fetched from the server. If the user specifies a negative number (`-n`), the `n` oldest articles will be fetched. If it is positive, the `n` articles that have arrived most recently will be fetched.

`gnus-auto-select-first` control whether any articles are selected automatically when entering a group.

`nil`
  Don't select any articles when entering the group. Just display the full summary buffer.
`t`
  Select the first unread article when entering the group.
`best`
  Select the most high-scored article in the group when entering the group.

If you want to prevent automatic selection in some group (say, in a binary group with Huge articles) you can set this variable to `nil` in `gnus-select-group-hook`, which is called when a group is selected.

## Subscription Commands

`S t`
`u`
  Toggle subscription to the current group (`gnus-group-unsubscribe-current-group`).
`S s`
`U`
  Prompt for a group to subscribe, and then subscribe it. If it was subscribed already, unsubscribe it instead (`gnus-group-unsubscribe-group`).
`S k`
`C-k`
  Kill the current group (`gnus-group-kill-group`).
`S y`
`C-y`
  Yank the last killed group (`gnus-group-yank-group`).
`C-x C-t`
  Transpose two groups (`gnus-group-transpose-groups`). This isn't really a subscription command, but you can use it instead of a kill-and-yank sequence sometimes.
`S w`
`C-w`
  Kill all groups in the region (`gnus-group-kill-region`).
`S z`
  Kill all zombie groups (`gnus-group-kill-all-zombies`).
`S C-k`
  Kill all groups on a certain level (`gnus-group-kill-level`). These groups can't be yanked back after killing, so this command should be used with some caution. The only thing where this command comes in really handy is when you have a ``.newsrc'` with lots of unsubscribed groups that you want to get rid off. `S C-k` on level `7` will kill off all unsubscribed groups that do not have message numbers in the ``.newsrc'` file.

Also see section Group Levels.

## Group Levels

All groups have a level of subscribedness. For instance, if a group is on level 2, it is more subscribed than a group on level 5. You can ask Gnus to just list groups on a given level or lower (see section Listing Groups), or to just check for new articles in groups on a given level or lower (see section Scanning New Messages).

Remember: The higher the level of the group, the less important it is.

`S l`
  Set the level of the current group. If a numeric prefix is given, the next n groups will have their levels set. The user will be prompted for a level.

Gnus considers groups on between levels 1 and `gnus-level-subscribed` (inclusive) (default 5) to be subscribed, `gnus-level-subscribed` (exclusive) and `gnus-level-unsubscribed` (inclusive) (default 7) to be unsubscribed, `gnus-level-zombie` to be zombies (walking dead) (default 8) and `gnus-level-killed` to be killed (default 9), completely dead. Gnus treats subscribed and unsubscribed groups exactly the same, but zombie and killed groups have no information on what articles you have read, etc, stored. This distinction between dead and living groups isn't done because it is nice or clever, it is done purely for reasons of efficiency.

It is recommended that you keep all your mail groups (if any) on quite low levels (eg. 1 or 2).

If you want to play with the level variables, you should show some care. Set them once, and don't touch them ever again. Better yet, don't touch them at all unless you know exactly what you're doing.

Two closely related variables are `gnus-level-default-subscribed` (default 3) and `gnus-level-default-unsubscribed` (default 6), which are the levels that new groups will be put on if they are (un)subscribed. These two variables should, of course, be inside the relevant legal ranges.

If `gnus-keep-same-level` is non-`nil`, some movement commands will only move to groups that are of the same level (or lower). In particular, going from the last article in one group to the next group will go to the next group of the same level (or lower). This might be handy if you want to read the most important groups before you read the rest.

All groups with a level less than or equal to `gnus-group-default-list-level` will be listed in the group buffer by default.

If `gnus-group-list-inactive-groups` is non-`nil`, non-active groups will be listed along with the unread groups. This variable is `t` by default. If it is `nil`, inactive groups won't be listed.

If `gnus-group-use-permanent-levels` is non-`nil`, once you give a level prefix to `g` or `l`, all subsequent commands will use this level as the "work" level.

Gnus will normally just activate groups that are on level `gnus-activate-level` or less. If you don't want to activate unsubscribed groups, for instance, you might set this variable to `5`.

## Group Score

You would normally keep important groups on high levels, but that scheme is somewhat restrictive. Don't you wish you could have Gnus sort the group buffer according to how often you read groups, perhaps? Within reason?

This is what group score is for. You can assign a score to each group. You can then sort the group buffer based on this score. Alternatively, you can sort on score and then level. (Taken together, the level and the score is called the rank of the group. A group that is on level 4 and has a score of 1 has a higher rank than a group on level 5 that has a score of 300. (The level is the most significant part and the score is the least significant part.)

If you want groups you read often to get higher scores than groups you read seldom you can add the `gnus-summary-bubble-group` function to the `gnus-summary-exit-hook` hook. This will result (after sorting) in a bubbling sort of action. If you want to see that in action after each summary exit, you can add `gnus-group-sort-groups-by-rank` or `gnus-group-sort-groups-by-score` to the same hook, but that will slow things down somewhat.

## Marking Groups

If you want to perform some command on several groups, and they appear subsequently in the group buffer, you would normally just give a numerical prefix to the command. Most group commands will then do your bidding on those groups.

However, if the groups are not in sequential order, you can still perform a command on several groups. You simply mark the groups first with the process mark and then execute the command.

`#`
`M m`
  Set the mark on the current group (`gnus-group-mark-group`).
`M-#`
`M u`
  Remove the mark from the current group (`gnus-group-unmark-group`).
`M U`
  Remove the mark from all groups (`gnus-group-unmark-all-groups`).
`M w`
  Mark all groups between point and mark (`gnus-group-mark-region`).
`M b`
  Mark all groups in the buffer (`gnus-group-mark-buffer`).
`M r`
  Mark all groups that match some regular expression (`gnus-group-mark-regexp`).

Also see section Process/Prefix.

If you want to execute some command on all groups that have been marked with the process mark, you can use the `M-&` (`gnus-group-universal-argument`) command. It will prompt you for the command to be executed.

## Foreign Groups

Here are some group mode commands for making and editing general foreign groups, as well as commands to ease the creation of a few special-purpose groups:

`G m`
  Make a new group (`gnus-group-make-group`). Gnus will prompt you for a name, a method and possibly an address. For an easier way to subscribe to NNTP groups, see section Browse Foreign Server.
`G r`
  Rename the current group to something else (`gnus-group-rename-group`). This is legal only on some groups -- mail groups mostly. This command might very well be quite slow on some backends.
`G e`
  Enter a buffer where you can edit the select method of the current group (`gnus-group-edit-group-method`).
`G p`
  Enter a buffer where you can edit the group parameters (`gnus-group-edit-group-parameters`).
`G E`
  Enter a buffer where you can edit the group info (`gnus-group-edit-group`).
`G d`
  Make a directory group. You will be prompted for a directory name (`gnus-group-make-directory-group`).
`G h`
  Make the Gnus help group (`gnus-group-make-help-group`).
`G a`
  Make a Gnus archive group (`gnus-group-make-archive-group`). By default a group pointing to the most recent articles will be created (`gnus-group-recent-archive-directory`), but given a prefix, a full group will be created from from `gnus-group-archive-directory`.
`G k`
  Make a kiboze group. You will be prompted for a name, for a regexp to match groups to be "included" in the kiboze group, and a series of strings to match on headers (`gnus-group-make-kiboze-group`). See section Kibozed Groups
`G D`
  Read an arbitrary directory as if with were a newsgroup with the `nneething` backend (`gnus-group-enter-directory`).
`G f`
  Make a group based on some file or other (`gnus-group-make-doc-group`). If you give a prefix to this command, you will be prompted for a file name and a file type. Currently supported types are `babyl`, `mbox`, `digest`, `mmdf`, `news`, `rnews`, `clari-briefs`, and `forward`. If you run this command without a prefix, Gnus will guess at the file type.
`G DEL`
  This function will delete the current group (`gnus-group-delete-group`). If given a prefix, this function will actually delete all the articles in the group, and forcibly remove the group itself from the face of the Earth. Use a prefix only if you are absolutely sure of what you are doing.
`G V`
  Make a new, fresh, empty `nnvirtual` group (`gnus-group-make-empty-virtual`).
`G v`
  Add the current group to an `nnvirtual` group (`gnus-group-add-to-virtual`). Uses the process/prefix convention.

See section Select Methods for more information on the various select methods.

If the `gnus-activate-foreign-newsgroups` is a positive number, Gnus will check all foreign groups with this level or lower at startup. This might take quite a while, especially if you subscribe to lots of groups from different NNTP servers.

## Group Parameters

Gnus stores all information on a group in a list that is usually known as the group info. This list has from three to six elements. Here's an example info.

    ("nnml:mail.ding" 3 ((1 . 232) 244 (256 . 270)) ((tick 246 249))
                      (nnml "private") ((to-address . "ding@ifi.uio.no")))

The first element is the group name, as Gnus knows the group, anyway. The second element is the subscription level, which normally is a small integer. The third element is a list of ranges of read articles. The fourth element is a list of lists of article marks of various kinds. The fifth element is the select method (or virtual server, if you like). The sixth element is a list of group parameters, which is what this section is about.

Any of the last three elements may be missing if they are not required. In fact, the vast majority of groups will normally only have the first three elements, which saves quite a lot of cons cells.

The group parameters store information local to a particular group:

`to-address`
  If the group parameter list contains an element that looks like `(to-address . "some@where.com")`, that address will be used by the backend when doing followups and posts. This is primarily useful in mail groups that represent closed mailing lists--mailing lists where it's expected that everybody that writes to the mailing list is subscribed to it. Since using this parameter ensures that the mail only goes to the mailing list itself, it means that members won't receive two copies of your followups. Using `to-address` will actually work whether the group is foreign or not. Let's say there's a group on the server that is called ``fa.4ad-l'`. This is a real newsgroup, but the server has gotten the articles from a mail-to-news gateway. Posting directly to this group is therefore impossible--you have to send mail to the mailing list address instead.
`to-list`
  If the group parameter list has an element that looks like `(to-list . "some@where.com")`, that address will be used when doing a `a` in any group. It is totally ignored when doing a followup--except that if it is present in a news group, you'll get mail group semantics when doing `f`.
`broken-reply-to`
  Elements like `(broken-reply-to . t)` signals that `Reply-To` headers in this group are to be ignored. This can be useful if you're reading a mailing list group where the listserv has inserted `Reply-To` headers that point back to the listserv itself. This is broken behavior. So there!
`to-group`
  If the group parameter list contains an element like `(to-group . "some.group.name")`, all posts will be sent to that group.
`auto-expire`
  If this symbol is present in the group parameter list, all articles that are read will be marked as expirable. For an alternative approach, see section Expiring Mail.
`total-expire`
  If this symbol is present, all read articles will be put through the expiry process, even if they are not marked as expirable. Use with caution.
`expiry-wait`
  If the group parameter has an element that looks like `(expiry-wait . 10)`, this value will override any `nnmail-expiry-wait` and `nnmail-expiry-wait-function` when expiring expirable messages. The value can either be a number of days (not necessarily an integer) or the symbols `never` or `immediate`.
`score-file`
  Elements that look like `(score-file . "file")` will make ``file'` into the current score file for the group in question. This means that all score commands you issue will end up in that file.
`admin-address`
  When unsubscribing to a mailing list you should never send the unsubscription notice to the mailing list itself. Instead, you'd send messages to the administrative address. This parameter allows you to put the admin address somewhere convenient.
`comment`
  This parameter allows you to enter a arbitrary comment on the group.
`(variable form)`
  You can use the group parameters to set variables local to the group you are entering. Say you want to turn threading off in ``news.answers'`. You'd then put `(gnus-show-threads nil)` in the group parameters of that group. `gnus-show-threads` will be made into a local variable in the summary buffer you enter, and the form `nil` will be `eval`ed there. This can also be used as a group-specific hook function, if you'd like. If you want to hear a beep when you enter the group ``alt.binaries.pictures.furniture'`, you could put something like `(dummy-variable (ding))` in the parameters of that group. `dummy-variable` will be set to the result of the `(ding)` form, but who cares?

If you want to change the group info you can use the `G E` command to enter a buffer where you can edit it.

You usually don't want to edit the entire group info, so you'd be better off using the `G p` command to just edit the group parameters.

## Listing Groups

These commands all list various slices of the groups that are available.

`l`
`A s`
  List all groups that have unread articles (`gnus-group-list-groups`). If the numeric prefix is used, this command will list only groups of level ARG and lower. By default, it only lists groups of level five or lower (i.e., just subscribed groups).
`L`
`A u`
  List all groups, whether they have unread articles or not (`gnus-group-list-all-groups`). If the numeric prefix is used, this command will list only groups of level ARG and lower. By default, it lists groups of level seven or lower (i.e., just subscribed and unsubscribed groups).
`A l`
  List all unread groups on a specific level (`gnus-group-list-level`). If given a prefix, also list the groups with no unread articles.
`A k`
  List all killed groups (`gnus-group-list-killed`). If given a prefix argument, really list all groups that are available, but aren't currently (un)subscribed. This could entail reading the active file from the server.
`A z`
  List all zombie groups (`gnus-group-list-zombies`).
`A m`
  List all subscribed groups with unread articles that match a regexp (`gnus-group-list-matching`).
`A M`
  List groups that match a regexp (`gnus-group-list-all-matching`).
`A A`
  List absolutely all groups that are in the active file(s) of the server(s) you are connected to (`gnus-group-list-active`). This might very well take quite a while. It might actually be a better idea to do a `A m` to list all matching, and just give ``.'` as the thing to match on.
`A a`
  List all groups that have names that match a regexp (`gnus-group-apropos`).
`A d`
  List all groups that have names or descriptions that match a regexp (`gnus-group-description-apropos`).

Groups that match the `gnus-permanently-visible-groups` regexp will always be shown, whether they have unread articles or not. You can also add the `visible` element to the group parameters in question to get the same effect.

Groups that have just ticked articles in it are normally listed in the group buffer. If `gnus-list-groups-with-ticked-articles` is `nil`, these groups will be treated just like totally empty groups. It is `t` by default.

## Sorting Groups

The `C-c C-s` (`gnus-group-sort-groups`) command sorts the group buffer according to the function(s) given by the `gnus-group-sort-function` variable. Available sorting functions include:

`gnus-group-sort-by-alphabet`
  Sort the group names alphabetically. This is the default.
`gnus-group-sort-by-level`
  Sort by group level.
`gnus-group-sort-by-score`
  Sort by group score.
`gnus-group-sort-by-rank`
  Sort by group score and then the group level. The level and the score are, when taken together, the group's rank.
`gnus-group-sort-by-unread`
  Sort by number of unread articles.
`gnus-group-sort-by-method`
  Sort by alphabetically on the select method.

`gnus-group-sort-function` can also be a list of sorting functions. In that case, the most significant sort key function must be the last one.

There are also a number of commands for sorting directly according to some sorting criteria:

`G S a`
  Sort the group buffer alphabetically by group name (`gnus-group-sort-groups-by-alphabet`).
`G S u`
  Sort the group buffer by the number of unread articles (`gnus-group-sort-groups-by-unread`).
`G S l`
  Sort the group buffer by group level (`gnus-group-sort-groups-by-level`).
`G S v`
  Sort the group buffer by group score (`gnus-group-sort-groups-by-score`).
`G S r`
  Sort the group buffer by group level (`gnus-group-sort-groups-by-rank`).
`G S m`
  Sort the group buffer alphabetically by backend name (`gnus-group-sort-groups-by-method`).

When given a prefix, all these commands will sort in reverse order.

## Group Maintenance

`b`
  Find bogus groups and delete them (`gnus-group-check-bogus-groups`).
`F`
  Find new groups and process them (`gnus-find-new-newsgroups`). If given a prefix, use the `ask-server` method to query the server for new groups.
`C-c C-x`
  Run all expirable articles in the current group through the expiry process (if any) (`gnus-group-expire-articles`).
`C-c M-C-x`
  Run all articles in all groups through the expiry process (`gnus-group-expire-all-groups`).

## Browse Foreign Server

`B`
  You will be queried for a select method and a server name. Gnus will then attempt to contact this server and let you browse the groups there (`gnus-group-browse-foreign-server`).

A new buffer with a list of available groups will appear. This buffer will be use the `gnus-browse-mode`. This buffer looks a bit (well, a lot) like a normal group buffer, but with one major difference - you can't enter any of the groups. If you want to read any of the news available on that server, you have to subscribe to the groups you think may be interesting, and then you have to exit this buffer. The new groups will be added to the group buffer, and then you can read them as you would any other group.

Future versions of Gnus may possibly permit reading groups straight from the browse buffer.

Here's a list of keystrokes available in the browse mode:

`n`
  Go to the next group (`gnus-group-next-group`).
`p`
  Go to the previous group (`gnus-group-prev-group`).
`SPACE`
  Enter the current group and display the first article (`gnus-browse-read-group`).
`RET`
  Enter the current group (`gnus-browse-select-group`).
`u`
  Unsubscribe to the current group, or, as will be the case here, subscribe to it (`gnus-browse-unsubscribe-current-group`).
`l`
`q`
  Exit browse mode (`gnus-browse-exit`).
`?`
  Describe browse mode briefly (well, there's not much to describe, is there) (`gnus-browse-describe-briefly`).

## Exiting Gnus

Yes, Gnus is ex(c)iting.

`z`
  Suspend Gnus (`gnus-group-suspend`). This doesn't really exit Gnus, but it kills all buffers except the Group buffer. I'm not sure why this is a gain, but then who am I to judge?
`q`
  Quit Gnus (`gnus-group-exit`).
`Q`
  Quit Gnus without saving any startup files (`gnus-group-quit`).

`gnus-suspend-gnus-hook` is called when you suspend Gnus and `gnus-exit-gnus-hook` is called when you quit Gnus, while `gnus-after-exiting-gnus-hook` is called as the final item when exiting Gnus.

If you wish to completely unload Gnus and all its adherents, you can use the `gnus-unload` command. This command is also very handy when trying to customize meta-variables.

Note:

> Miss Lisa Cannifax, while sitting in English class, feels her feet go numbly heavy and herself fall into a hazy trance as the boy sitting behind her drew repeated lines with his pencil across the back of her plastic chair.

## Group Topics

If you read lots and lots of groups, it might be convenient to group them hierarchically according to topics. You put your Emacs groups over here, your sex groups over there, and the rest (what, two groups or so?) you put in some misc section that you never bother with anyway. You can even group the Emacs sex groups as a sub-topic to either the Emacs groups or the sex groups--or both! Go wild!

To get this fab functionality you simply turn on (ooh!) the `gnus-topic` minor mode--type `t` in the group buffer. (This is a toggling command.)

Go ahead, just try it. I'll still be here when you get back. La de dum... Nice tune, that... la la la... What, you're back? Yes, and now press `l`. There. All your groups are now listed under ``misc'`. Doesn't that make you feel all warm and fuzzy? Hot and bothered?

If you want this permanently enabled, you should add that minor mode to the hook for the group mode:

    (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)

- Topic Variables: How to customize the topics the Lisp Way.
- Topic Commands: Interactive E-Z commands.
- Topic Topology: A map of the world.

### Topic Variables

Now, if you select a topic, if will fold/unfold that topic, which is really neat, I think.

The topic lines themselves are created according to the `gnus-topic-line-format` variable. See section Formatting Variables. Elements allowed are:

``i'`
  Indentation.
``n'`
  Topic name.
``v'`
  Visibility.
``l'`
  Level.
``g'`
  Number of groups in the topic.
``a'`
  Number of unread articles in the topic.
``A'`
  Number of unread articles in the topic and all its subtopics.

Each sub-topic (and the groups in the sub-topics) will be indented with `gnus-topic-indent-level` times the topic level number of spaces. The default is `2`.

`gnus-topic-mode-hook` is called in topic minor mode buffers.

### Topic Commands

When the topic minor mode is turned on, a new `T` submap will be available. In addition, a few of the standard keys change their definitions slightly.

`T n`
  Prompt for a new topic name and create it (`gnus-topic-create-topic`).
`T m`
  Move the current group to some other topic (`gnus-topic-move-group`). This command understands the process/prefix convention (see section Process/Prefix).
`T c`
  Copy the current group to some other topic (`gnus-topic-copy-group`). This command understands the process/prefix convention (see section Process/Prefix).
`T D`
  Remove a group from the current topic (`gnus-topic-remove-group`). This command understands the process/prefix convention (see section Process/Prefix).
`T M`
  Move all groups that match some regular expression to a topic (`gnus-topic-move-matching`).
`T C`
  Copy all groups that match some regular expression to a topic (`gnus-topic-copy-matching`).
`T #`
  Mark all groups in the current topic with the process mark (`gnus-topic-mark-topic`).
`T M-#`
  Remove the process mark from all groups in the current topic (`gnus-topic-unmark-topic`).
`RET`
`SPACE`
  Either select a group or fold a topic (`gnus-topic-select-group`). When you perform this command on a group, you'll enter the group, as usual. When done on a topic line, the topic will be folded (if it was visible) or unfolded (if it was folded already). So it's basically a toggling command on topics. In addition, if you give a numerical prefix, group on that level (and lower) will be displayed.
`T TAB`
  "Indent" the current topic so that it becomes a sub-topic of the previous topic (`gnus-topic-indent`). If given a prefix, "un-indent" the topic instead.
`C-k`
  Kill a group or topic (`gnus-topic-kill-group`).
`C-y`
  Yank the previously killed group or topic (`gnus-topic-yank-group`). Note that all topics will be yanked before all groups.
`T r`
  Rename a topic (`gnus-topic-rename`).
`T DEL`
  Delete an empty topic (`gnus-topic-delete`).
`A T`
  List all groups that Gnus knows about in a topics-ified way (`gnus-topic-list-active`).

### Topic Topology

So, let's have a look at an example group buffer:

    Gnus
      Emacs -- I wuw it!
           3: comp.emacs
           2: alt.religion.emacs
        Naughty Emacs
         452: alt.sex.emacs
           0: comp.talk.emacs.recovery
      Misc
           8: comp.binaries.fractals
          13: comp.sources.unix

So, here we have one top-level topic, two topics under that, and one sub-topic under one of the sub-topics. (There is always just one (1) top-level topic). This topology can be expressed as follows:

    (("Gnus" visible)
     (("Emacs -- I wuw it!" visible)
      (("Naughty Emacs" visible)))
     (("Misc" visible)))

This is in fact how the variable `gnus-topic-topology` would look for the display above. That variable is saved in the ``.newsrc.eld'` file, and shouldn't be messed with manually--unless you really want to. Since this variable is read from the ``.newsrc.eld'` file, setting it in any other startup files will have no effect.

This topology shows what topics are sub-topics of what topics (right), and which topics are visible. Two settings are currently allowed---`visible` and `invisible`.

## Misc Group Stuff

- Scanning New Messages: Asking Gnus to see whether new messages have arrived.
- Group Information: Information and help on groups and Gnus.
- File Commands: Reading and writing the Gnus files.

`^`
  Enter the server buffer (`gnus-group-enter-server-mode`). See section The Server Buffer.
`a`
  Post an article to a group (`gnus-group-post-news`). The current group name will be used as the default.
`m`
  Mail a message somewhere (`gnus-group-mail`).

Variables for the group buffer:

`gnus-group-mode-hook`
  `gnus-group-mode-hook` is called after the group buffer has been created.
`gnus-group-prepare-hook`
  `gnus-group-prepare-hook` is called after the group buffer is generated. It may be used to modify the buffer in some strange, unnatural way.
`gnus-permanently-visible-groups`
  Groups matching this regexp will always be listed in the group buffer, whether they are empty or not.

### Scanning New Messages

`g`
  Check the server(s) for new articles. If the numerical prefix is used, this command will check only groups of level arg and lower (`gnus-group-get-new-news`). If given a non-numerical prefix, this command will force a total rereading of the active file(s) from the backend(s).
`M-g`
  Check whether new articles have arrived in the current group (`gnus-group-get-new-news-this-group`). The `gnus-goto-next-group-when-activating` variable controls whether this command is to move point to the next group or not. It is `t` by default.
`C-c M-g`
  Activate absolutely all groups (`gnus-activate-all-groups`).
`R`
  Restart Gnus (`gnus-group-restart`).

`gnus-get-new-news-hook` is run just before checking for new news.

`gnus-after-getting-new-news-hook` is run after checking for new news.

### Group Information

`M-f`
  Try to fetch the FAQ for the current group (`gnus-group-fetch-faq`). Gnus will try to get the FAQ from `gnus-group-faq-directory`, which is usually a directory on a remote machine. `ange-ftp` will be used for fetching the file.
`D`
  Describe the current group (`gnus-group-describe-group`). If given a prefix, force Gnus to re-read the description from the server.
`M-d`
  Describe all groups (`gnus-group-describe-all-groups`). If given a prefix, force Gnus to re-read the description file from the server.
`V`
  Display current Gnus version numbers (`gnus-version`).
`?`
  Give a very short help message (`gnus-group-describe-briefly`).
`C-c C-i`
  Go to the Gnus info node (`gnus-info-find-node`).

### File Commands

`r`
  Read the init file (`gnus-init-file`, which defaults to ``~/.gnus'`) (`gnus-group-read-init-file`).
`s`
  Save the ``.newsrc.eld'` file (and ``.newsrc'` if wanted) (`gnus-group-save-newsrc`). If given a prefix, force saving the file(s) whether Gnus thinks it is necessary or not.

Go to the first, previous, next, last section, table of contents.