The Gnus Newsreader
Table of Contents
- 1 Don’t Panic
- 2 Starting Gnus
- 3 Group Buffer
- 3.1 Group Buffer Format
- 3.2 Group Maneuvering
- 3.3 Selecting a Group
- 3.4 Subscription Commands
- 3.5 Group Data
- 3.6 Group Levels
- 3.7 Group Score
- 3.8 Marking Groups
- 3.9 Foreign Groups
- 3.10 Group Parameters
- 3.11 Listing Groups
- 3.12 Sorting Groups
- 3.13 Group Maintenance
- 3.14 Browse Foreign Server
- 3.15 Exiting Gnus
- 3.16 Group Topics
- 3.17 Accessing groups of non-English names
- 3.18 Misc Group Stuff
- 4 Summary Buffer
- 4.1 Summary Buffer Format
- 4.2 Summary Maneuvering
- 4.3 Choosing Articles
- 4.4 Scrolling the Article
- 4.5 Reply, Followup and Post
- 4.6 Delayed Articles
- 4.7 Marking Articles
- 4.8 Limiting
- 4.9 Threading
- 4.10 Sorting the Summary Buffer
- 4.11 Asynchronous Article Fetching
- 4.12 Article Caching
- 4.13 Persistent Articles
- 4.14 Sticky Articles
- 4.15 Article Backlog
- 4.16 Saving Articles
- 4.17 Decoding Articles
- 4.18 Article Treatment
- 4.19 MIME Commands
- 4.20 Charsets
- 4.21 Article Commands
- 4.22 Summary Sorting
- 4.23 Finding the Parent
- 4.24 Alternative Approaches
- 4.25 Tree Display
- 4.26 Mail Group Commands
- 4.27 Various Summary Stuff
- 4.28 Exiting the Summary Buffer
- 4.29 Crosspost Handling
- 4.30 Duplicate Suppression
- 4.31 Security
- 4.32 Mailing List
- 5 Article Buffer
- 6 Composing Messages
- 7 Select Methods
- 7.1 Server Buffer
- 7.2 Getting News
- 7.3 Using IMAP
- 7.4 Getting Mail
- 7.4.1 Mail in a Newsreader
- 7.4.2 Getting Started Reading Mail
- 7.4.3 Splitting Mail
- 7.4.4 Mail Sources
- 7.4.5 Mail Back End Variables
- 7.4.6 Fancy Mail Splitting
- 7.4.7 Group Mail Splitting
- 7.4.8 Incorporating Old Mail
- 7.4.9 Expiring Mail
- 7.4.10 Washing Mail
- 7.4.11 Duplicates
- 7.4.12 Not Reading Mail
- 7.4.13 Choosing a Mail Back End
- 7.5 Browsing the Web
- 7.6 Other Sources
- 7.7 Virtual Groups
- 7.8 Email Based Diary
- 7.9 Gnus Unplugged
- 7.9.1 Agent Basics
- 7.9.2 Agent Categories
- 7.9.3 Agent Commands
- 7.9.4 Agent Visuals
- 7.9.5 Agent as Cache
- 7.9.6 Agent Expiry
- 7.9.7 Agent Regeneration
- 7.9.8 Agent and flags
- 7.9.9 Agent and IMAP
- 7.9.10 Outgoing Messages
- 7.9.11 Agent Variables
- 7.9.12 Example Setup
- 7.9.13 Batching Agents
- 7.9.14 Agent Caveats
- 8 Scoring
- 8.1 Summary Score Commands
- 8.2 Group Score Commands
- 8.3 Score Variables
- 8.4 Score File Format
- 8.5 Score File Editing
- 8.6 Adaptive Scoring
- 8.7 Home Score File
- 8.8 Followups To Yourself
- 8.9 Scoring On Other Headers
- 8.10 Scoring Tips
- 8.11 Reverse Scoring
- 8.12 Global Score Files
- 8.13 Kill Files
- 8.14 Converting Kill Files
- 8.15 Advanced Scoring
- 8.16 Score Decays
- 9 Searching
- 10 Various
- 10.1 Process/Prefix
- 10.2 Interactive
- 10.3 Symbolic Prefixes
- 10.4 Formatting Variables
- 10.5 Window Layout
- 10.6 Tabbed Interface
- 10.7 Faces and Fonts
- 10.8 Mode Lines
- 10.9 Highlighting and Menus
- 10.10 Daemons
- 10.11 Undo
- 10.12 Predicate Specifiers
- 10.13 Moderation
- 10.14 Fetching a Group
- 10.15 Image Enhancements
- 10.16 Fuzzy Matching
- 10.17 Thwarting Email Spam
- 10.18 Spam Package
- 10.18.1 Spam Package Introduction
- 10.18.2 Filtering Incoming Mail
- 10.18.3 Detecting Spam in Groups
- 10.18.4 Spam and Ham Processors
- 10.18.5 Spam Package Configuration Examples
- 10.18.6 Spam Back Ends
- 10.18.6.1 Blacklists and Whitelists
- 10.18.6.2 BBDB Whitelists
- 10.18.6.3 Gmane Spam Reporting
- 10.18.6.4 Anti-spam Hashcash Payments
- 10.18.6.5 Blackholes
- 10.18.6.6 Regular Expressions Header Matching
- 10.18.6.7 Bogofilter
- 10.18.6.8 SpamAssassin back end
- 10.18.6.9 ifile spam filtering
- 10.18.6.10 Spam Statistics Filtering
- 10.18.6.11 Using SpamOracle with Gnus
- 10.18.7 Extending the Spam package
- 10.18.8 Spam Statistics Package
- 10.19 The Gnus Registry
- 10.20 The Gnus Cloud
- 10.21 D-Bus Integration
- 10.22 Interaction with other modes
- 10.23 Various Various
- 11 The End
- 12 Appendices
- 12.1 History
- 12.2 On Writing Manuals
- 12.3 Terminology
- 12.4 Customization
- 12.5 Troubleshooting
- 12.6 Gnus Reference Guide
- 12.7 Emacs for Heathens
- 12.8 Frequently Asked Questions
- 13 GNU Free Documentation License
- 14 Index
- 15 Key Index
Short Table of Contents
Next: Starting Gnus, Previous: The Gnus Newsreader, Up: The Gnus Newsreader [Contents][Index]
1 Don’t Panic
Welcome, gentle user, to the Gnus newsreader and email client! Gnus is unlike most clients, in part because of its endless configurability, in part because of its historical origins. Gnus is now a fully-featured email client, but it began life as a Usenet-style newsreader, and its genes are still newsreader genes. Thus it behaves a little differently than most mail clients.
The typical assumptions of a newsreader are:
- The server offers a potentially enormous number of newsgroups on a variety of subjects. The user may only be interested in some of those groups, and more interested in some than others.
- Many groups see a high volume of articles, and the user won’t want to read all of them. Mechanisms are needed for foregrounding interesting articles, and backgrounding uninteresting articles.
- Once a group has been scanned and dealt with by the user, it’s unlikely to be of further interest until new articles come in.
These assumptions lead to certain default Gnus behaviors:
- Not all interesting groups are equally interesting, thus groups have varying degrees of “subscribedness”, with different behavior depending on “how subscribed” a group is.
- There are many commands and tools for scoring and sorting articles, or otherwise sweeping them under the rug.
- Gnus will only show you groups with unread or ticked articles; groups with no new articles are hidden.
- When entering a group, only unread or ticked articles are shown, all other articles are hidden.
If this seems draconian, think of it as Automatic Inbox Zero. This is the way Gnus works by default. It is possible to make it work more like an email client (always showing read groups and read articles), but that takes some effort on the part of the user.
The brief introduction below should be enough to get you off the ground.
The Basics of Servers, Groups, and Articles
The fundamental building blocks of Gnus are servers, groups, and articles. Servers can be local or remote. Each server maintains a list of groups, and those groups contain articles. Because Gnus presents a unified interface to a wide variety of servers, the vocabulary doesn’t always quite line up (see Glossary, for a more complete glossary). Thus a local Maildir is referred to as a “server” (see Finding the News) the same as a Usenet or IMAP server is; “groups” (see Group Buffer) might mean an NNTP group, IMAP folder, or local mail directory; and an “article” (see Summary Buffer) might elsewhere be known as a message or an email. Gnus employs unified terms for all these things.
Servers fall into two general categories: “news-like”, meaning that the articles are part of a public archive and can’t be manipulated by the user; and “mail-like”, meaning that the articles are owned by the user, who can freely edit them, move them around, and delete them.
For news-like servers, which typically offer hundreds or thousands of groups, it’s important to be able to subscribe to a subset of those groups. For mail-like servers, the user is generally automatically subscribed to all groups (though IMAP, for example, also allows selective subscription). To change group subscription, enter the Server buffer (with ^) and press RET on the server in question. From here, Gnus provides commands to change or toggle your group subscriptions (see Browse Foreign Server).
A Gnus installation is basically just a list of one or more servers, plus the user’s subscribed groups from those servers, plus articles in those groups.
Servers can be added and configured in two places: in the user’s
gnus.el startup file, using the gnus-select-method
and
gnus-secondary-select-methods
options, or within Gnus itself
using interactive commands in the Server buffer. See Finding the News, for details.
Fetching Mail
New mail has to come from somewhere. Some servers, such as NNTP or IMAP, are themselves responsible for fetching newly-arrived articles. Others, such as Maildir or mbox servers, only store articles and don’t fetch them from anywhere.
In the latter case, Gnus provides for mail sources
: places
where new mail is fetched from. A mail source might be a local spool,
or a remote POP server, or some other source of incoming articles.
Mail sources are usually configured globally, but can be specified
per-group (see Mail Sources for more information).
See Scanning New Messages, for details on fetching new mail.
Viewing Mail
By default, Gnus’s Group buffer only displays groups with unread articles. It is always possible to display all the groups temporarily with L, and to configure Gnus to always display some groups (see Listing Groups).
See Selecting a Group, for how to enter a group, and see Summary Buffer for what to do once you’re there.
Sending Mail
New message composition can be initiated from the Group buffer (see Misc Group Stuff). If you’re in a Summary buffer, you can compose replies and forward emails in addition to starting new messages, see Summary Mail Commands, for details.
For information about what happens once you’ve started composing a message, see Composing Messages. For information on setting up SMTP servers in particular, see Mail Variables in Message manual.
Next: Group Buffer, Previous: Don’t Panic, Up: The Gnus Newsreader [Contents][Index]
2 Starting Gnus
If you haven’t used Emacs much before using Gnus, read Emacs for Heathens first.
If your system administrator has set things up properly, starting Gnus
and reading news is extremely easy—you just type M-x gnus in
your Emacs. If not, you should customize the variable
gnus-select-method
as described in Finding the News. For a
minimal setup for posting should also customize the variables
user-full-name
and user-mail-address
.
If you want to start Gnus in a different frame, you can use the command M-x gnus-other-frame instead.
If things do not go smoothly at startup, you have to twiddle some variables in your ~/.gnus.el file. This file is similar to ~/.emacs, but is read when Gnus starts.
If you puzzle at any terms used in this manual, please refer to the terminology section (see Terminology).
- Finding the News
- The Server is Down
- Child Gnusae
- New Groups
- Changing Servers
- Startup Files
- Auto Save
- The Active File
- Startup Variables
Next: The Server is Down, Up: Starting Gnus [Contents][Index]
2.1 Finding the News
First of all, you should know that there is a special buffer called *Server* that lists all the servers Gnus knows about. You can press ^ from the Group buffer to see it. In the Server buffer, you can press RET on a defined server to see all the groups it serves (subscribed or not!). You can also add or delete servers, edit a foreign server’s definition, agentize or de-agentize a server, and do many other neat things. See Server Buffer. See Foreign Groups. See Agent Basics.
The gnus-select-method
variable says where Gnus should look for
news. This variable should be a list where the first element says
how and the second element says where. This method is your
native method. All groups not fetched with this method are
secondary or foreign groups.
For instance, if the ‘news.somewhere.edu’ NNTP server is where you want to get your daily dosage of news from, you’d say:
(setq gnus-select-method '(nntp "news.somewhere.edu"))
If you want to read directly from the local spool, say:
(setq gnus-select-method '(nnspool ""))
If you can use a local spool, you probably should, as it will almost
certainly be much faster. But do not use the local spool if your
server is running Leafnode (which is a simple, standalone private news
server); in this case, use (nntp "localhost")
.
If this variable is not set, Gnus will take a look at the
NNTPSERVER
environment variable. If that variable isn’t set,
Gnus will see whether gnus-nntpserver-file
(/etc/nntpserver by default) has any opinions on the matter.
If that fails as well, Gnus will try to use the machine running Emacs
as an NNTP server. That’s a long shot, though.
However, if you use one NNTP server regularly and are just interested in a couple of groups from a different server, you would be better served by using the B command in the group buffer. It will let you have a look at what groups are available, and you can subscribe to any of the groups you want to. This also makes .newsrc maintenance much tidier. See Foreign Groups.
A slightly different approach to foreign groups is to set the
gnus-secondary-select-methods
variable. The select methods
listed in this variable are in many ways just as native as the
gnus-select-method
server. They will also be queried for active
files during startup (if that’s required), and new newsgroups that
appear on these servers will be subscribed (or not) just as native
groups are.
For instance, if you use the nnmbox
back end to read your mail,
you would typically set this variable to
(setq gnus-secondary-select-methods '((nnmbox "")))
Next: Child Gnusae, Previous: Finding the News, Up: Starting Gnus [Contents][Index]
2.2 The Server is Down
If the default server is down, Gnus will understandably have some problems starting. However, if you have some mail groups in addition to the news groups, you may want to start Gnus anyway.
Gnus, being the trusting sort of program, will ask whether to proceed without a native select method if that server can’t be contacted. This will happen whether the server doesn’t actually exist (i.e., you have given the wrong address) or the server has just momentarily taken ill for some reason or other. If you decide to continue and have no foreign groups, you’ll find it difficult to actually do anything in the group buffer. But, hey, that’s your problem. Blllrph!
If you know that the server is definitely down, or you just want to read
your mail without bothering with the server at all, you can use the
gnus-no-server
command to start Gnus. That might come in handy
if you’re in a hurry as well. This command will not attempt to contact
your primary server—instead, it will just activate all groups on level
1 and 2. (You should preferably keep no native groups on those two
levels.) Also see Group Levels.
Next: New Groups, Previous: The Server is Down, Up: Starting Gnus [Contents][Index]
2.3 Child Gnusae
You might want to run more than one Emacs with more than one Gnus at the same time. If you are using different .newsrc files (e.g., if you are using the two different Gnusae to read from two different servers), that is no problem whatsoever. You just do it.
The problem appears when you want to run two Gnusae that use the same .newsrc file.
To work around that problem some, we here at the Think-Tank at the Gnus Towers have come up with a new concept: Parents and children.
Anyway, you start one Gnus up the normal way with M-x gnus (or however you do it). Each subsequent child Gnusae should be started with M-x gnus-child. These children won’t save normal .newsrc files, but instead save child files that contain information only on what groups have been read in the child session. When a parent Gnus starts, it will read (and delete) these child files, incorporating all information from them. (The child files will be read in the sequence they were created, so the latest changes will have precedence.)
Information from the child files has, of course, precedence over the information in the normal (i.e., parent) .newsrc file.
If the .newsrc* files have not been saved in the parent when the child starts, you may be prompted as to whether to read an auto-save file. If you answer “yes”, the unsaved changes to the parent will be incorporated into the child. If you answer “no”, the child may see some messages as unread that have been read in the parent.
Next: Changing Servers, Previous: Child Gnusae, Up: Starting Gnus [Contents][Index]
2.4 New Groups
If you are satisfied that you really never want to see any new groups,
you can set gnus-check-new-newsgroups
to nil
. This will
also save you some time at startup. Even if this variable is
nil
, you can always subscribe to the new groups just by pressing
U in the group buffer (see Group Maintenance). This variable
is ask-server
by default. If you set this variable to
always
, then Gnus will query the back ends for new groups even
when you do the g command (see Scanning New Messages).
Next: Subscription Methods, Up: New Groups [Contents][Index]
2.4.1 Checking New Groups
Gnus normally determines whether a group is new or not by comparing
the list of groups from the active file(s) with the lists of
subscribed and dead groups. This isn’t a particularly fast method.
If gnus-check-new-newsgroups
is ask-server
, Gnus will
ask the server for new groups since the last time. This is both
faster and cheaper. This also means that you can get rid of the list
of killed groups (see Group Levels) altogether, so you may set
gnus-save-killed-list
to nil
, which will save time both
at startup, at exit, and all over. Saves disk space, too. Why isn’t
this the default, then? Unfortunately, not all servers support this
command.
I bet I know what you’re thinking now: How do I find out whether my
server supports ask-server
? No? Good, because I don’t have a
fail-safe answer. I would suggest just setting this variable to
ask-server
and see whether any new groups appear within the next
few days. If any do, then it works. If none do, then it doesn’t
work. I could write a function to make Gnus guess whether the server
supports ask-server
, but it would just be a guess. So I won’t.
You could telnet
to the server and say HELP
and see
whether it lists ‘NEWGROUPS’ among the commands it understands. If
it does, then it might work. (But there are servers that lists
‘NEWGROUPS’ without supporting the function properly.)
This variable can also be a list of select methods. If so, Gnus will
issue an ask-server
command to each of the select methods, and
subscribe them (or not) using the normal methods. This might be handy
if you are monitoring a few servers for new groups. A side effect is
that startup will take much longer, so you can meditate while waiting.
Use the mantra “dingnusdingnusdingnus” to achieve permanent bliss.
Next: Filtering New Groups, Previous: Checking New Groups, Up: New Groups [Contents][Index]
2.4.2 Subscription Methods
What Gnus does when it encounters a new group is determined by the
gnus-subscribe-newsgroup-method
variable.
This variable should contain a function. This function will be called with the name of the new group as the only parameter.
Some handy pre-fab functions are:
gnus-subscribe-zombies
¶Make all new groups zombies (see Group Levels). This is the default. You can browse the zombies later (with A z) and either kill them all off properly (with S z), or subscribe to them (with u).
gnus-subscribe-randomly
¶Subscribe all new groups in arbitrary order. This really means that all new groups will be added at “the top” of the group buffer.
gnus-subscribe-alphabetically
¶Subscribe all new groups in alphabetical order.
gnus-subscribe-hierarchically
¶Subscribe all new groups hierarchically. The difference between this function and
gnus-subscribe-alphabetically
is slight.gnus-subscribe-alphabetically
will subscribe new groups in a strictly alphabetical fashion, while this function will enter groups into its hierarchy. So if you want to have the ‘rec’ hierarchy before the ‘comp’ hierarchy, this function will not mess that configuration up. Or something like that.gnus-subscribe-interactively
¶Subscribe new groups interactively. This means that Gnus will ask you about all new groups. The groups you choose to subscribe to will be subscribed hierarchically.
gnus-subscribe-killed
¶Kill all new groups.
gnus-subscribe-topics
¶Put the groups into the topic that has a matching
subscribe
topic parameter (see Topic Parameters). For instance, asubscribe
topic parameter that looks like"nnml"
will mean that all groups that match that regex will be subscribed under that topic.
If no topics match the groups, the groups will be subscribed in the top-level topic.
A closely related variable is
gnus-subscribe-hierarchical-interactive
. (That’s quite a
mouthful.) If this variable is non-nil
, Gnus will ask you in a
hierarchical fashion whether to subscribe to new groups or not. Gnus
will ask you for each sub-hierarchy whether you want to descend the
hierarchy or not.
One common mistake is to set the variable a few paragraphs above
(gnus-subscribe-newsgroup-method
) to
gnus-subscribe-hierarchical-interactive
. This is an error. This
will not work. This is ga-ga. So don’t do it.
Previous: Subscription Methods, Up: New Groups [Contents][Index]
2.4.3 Filtering New Groups
A nice and portable way to control which new newsgroups should be subscribed (or ignored) is to put an options line at the start of the .newsrc file. Here’s an example:
options -n !alt.all !rec.all sci.all
This line obviously belongs to a serious-minded intellectual scientific
person (or she may just be plain old boring), because it says that all
groups that have names beginning with ‘alt’ and ‘rec’ should
be ignored, and all groups with names beginning with ‘sci’ should
be subscribed. Gnus will not use the normal subscription method for
subscribing these groups.
gnus-subscribe-options-newsgroup-method
is used instead. This
variable defaults to gnus-subscribe-alphabetically
.
The “options -n” format is very simplistic. The syntax above is all that is supports: you can force-subscribe hierarchies, or you can deny hierarchies, and that’s it.
If you don’t want to mess with your .newsrc file, you can just
set the two variables gnus-options-subscribe
and
gnus-options-not-subscribe
. These two variables do exactly the
same as the .newsrc ‘options -n’ trick. Both are regexps,
and if the new group matches the former, it will be unconditionally
subscribed, and if it matches the latter, it will be ignored.
Yet another variable that meddles here is
gnus-auto-subscribed-groups
. It works exactly like
gnus-options-subscribe
, and is therefore really superfluous,
but I thought it would be nice to have two of these. This variable is
more meant for setting some ground rules, while the other variable is
used more for user fiddling. By default this variable makes all new
groups that come from mail back ends (nnml
, nnbabyl
,
nnfolder
, nnmbox
, nnmh
, nnimap
, and
nnmaildir
) subscribed. If you don’t like that, just set this
variable to nil
.
As if that wasn’t enough, gnus-auto-subscribed-categories
also
allows you to specify that new groups should be subscribed based on the
category their select methods belong to. The default is ‘(mail
post-mail)’, meaning that all new groups from mail-like backends
should be subscribed automatically.
New groups that match these variables are subscribed using
gnus-subscribe-options-newsgroup-method
.
Next: Startup Files, Previous: New Groups, Up: Starting Gnus [Contents][Index]
2.5 Changing Servers
Sometimes it is necessary to move from one NNTP server to another. This happens very rarely, but perhaps you change jobs, or one server is very flaky and you want to use another.
Changing the server is pretty easy, right? You just change
gnus-select-method
to point to the new server?
Wrong!
Article numbers are not (in any way) kept synchronized between different
NNTP servers, and the only way Gnus keeps track of what articles
you have read is by keeping track of article numbers. So when you
change gnus-select-method
, your .newsrc file becomes
worthless.
You can use the M-x gnus-group-clear-data-on-native-groups command to clear out all data that you have on your native groups. Use with caution.
Clear the data from the current group only—nix out marks and the
list of read articles (gnus-group-clear-data
).
After changing servers, you must move the cache hierarchy away,
since the cached articles will have wrong article numbers, which will
affect which articles Gnus thinks are read.
gnus-group-clear-data-on-native-groups
will ask you if you want
to have it done automatically; for gnus-group-clear-data
, you
can use M-x gnus-cache-move-cache (but beware, it will move the
cache for all groups).
Next: Auto Save, Previous: Changing Servers, Up: Starting Gnus [Contents][Index]
2.6 Startup Files
Most common Unix news readers use a shared startup file called .newsrc. This file contains all the information about what groups are subscribed, and which articles in these groups have been read.
Things got a bit more complicated with GNUS. In addition to keeping the .newsrc file updated, it also used a file called .newsrc.el for storing all the information that didn’t fit into the .newsrc file. (Actually, it also duplicated everything in the .newsrc file.) GNUS would read whichever one of these files was the most recently saved, which enabled people to swap between GNUS and other newsreaders.
That was kinda silly, so Gnus went one better: In addition to the .newsrc and .newsrc.el files, Gnus also has a file called .newsrc.eld. It will read whichever of these files that are most recent, but it will never write a .newsrc.el file. You should never delete the .newsrc.eld file—it contains much information not stored in the .newsrc file.
You can turn off writing the .newsrc file by setting
gnus-save-newsrc-file
to nil
, which means you can delete
the file and save some space, as well as exiting from Gnus faster.
However, this will make it impossible to use other newsreaders than
Gnus. But hey, who would want to, right? Similarly, setting
gnus-read-newsrc-file
to nil
makes Gnus ignore the
.newsrc file and any .newsrc-SERVER files, which can be
convenient if you use a different news reader occasionally, and you
want to read a different subset of the available groups with that
news reader.
If gnus-save-killed-list
(default t
) is nil
, Gnus
will not save the list of killed groups to the startup file. This will
save both time (when starting and quitting) and space (on disk). It
will also mean that Gnus has no record of what groups are new or old,
so the automatic new groups subscription methods become meaningless.
You should always set gnus-check-new-newsgroups
to nil
or
ask-server
if you set this variable to nil
(see New Groups). This variable can also be a regular expression. If that’s
the case, remove all groups that do not match this regexp before
saving. This can be useful in certain obscure situations that involve
several servers where not all servers support ask-server
.
The gnus-startup-file
variable says where the startup files are.
The default value is ~/.newsrc, with the Gnus (El Dingo) startup
file being whatever that one is, with a ‘.eld’ appended.
If you want to keep multiple numbered backups of this file, set
gnus-backup-startup-file
. It respects the same values as the
version-control
variable.
gnus-save-newsrc-hook
is called before saving any of the newsrc
files, while gnus-save-quick-newsrc-hook
is called just before
saving the .newsrc.eld file, and
gnus-save-standard-newsrc-hook
is called just before saving the
.newsrc file. The latter two are commonly used to turn version
control on or off. Version control is on by default when saving the
startup files. If you want to turn backup creation off, say something like:
(defun turn-off-backup () (set (make-local-variable 'backup-inhibited) t)) (add-hook 'gnus-save-quick-newsrc-hook 'turn-off-backup) (add-hook 'gnus-save-standard-newsrc-hook 'turn-off-backup)
When Gnus starts, it will read the gnus-site-init-file
(.../site-lisp/gnus-init by default) and gnus-init-file
(~/.gnus by default) files. These are normal Emacs Lisp files
and can be used to avoid cluttering your ~/.emacs and
site-init files with Gnus stuff. Gnus will also check for files
with the same names as these, but with .elc and .el
suffixes. In other words, if you have set gnus-init-file
to
~/.gnus, it will look for ~/.gnus.elc, ~/.gnus.el,
and finally ~/.gnus (in this order). If Emacs was invoked with
the -q or --no-init-file options (see Initial Options in The Emacs Manual), Gnus doesn’t read
gnus-init-file
.
Next: The Active File, Previous: Startup Files, Up: Starting Gnus [Contents][Index]
2.7 Auto Save
Whenever you do something that changes the Gnus data (reading articles, catching up, killing/subscribing groups), the change is added to a special dribble buffer. This buffer is auto-saved the normal Emacs way. If your Emacs should crash before you have saved the .newsrc files, all changes you have made can be recovered from this file.
If Gnus detects this file at startup, it will ask the user whether to read it. The auto save file is deleted whenever the real startup file is saved.
If gnus-use-dribble-file
is nil
, Gnus won’t create and
maintain a dribble buffer. The default is t
.
Gnus will put the dribble file(s) in gnus-dribble-directory
. If
this variable is nil
, which it is by default, Gnus will dribble
into the directory where the .newsrc file is located. (This is
normally the user’s home directory.) The dribble file will get the same
file permissions as the .newsrc file.
If gnus-always-read-dribble-file
is non-nil
, Gnus will
read the dribble file on startup without querying the user.
Next: Startup Variables, Previous: Auto Save, Up: Starting Gnus [Contents][Index]
2.8 The Active File
When Gnus starts, or indeed whenever it tries to determine whether new articles have arrived, it reads the active file. This is a very large file that lists all the active groups and articles on the server.
Before examining the active file, Gnus deletes all lines that match the
regexp gnus-ignored-newsgroups
. This is done primarily to reject
any groups with bogus names, but you can use this variable to make Gnus
ignore hierarchies you aren’t ever interested in. However, this is not
recommended. In fact, it’s highly discouraged. Instead, see New Groups for an overview of other variables that can be used instead.
The active file can be rather Huge, so if you have a slow network, you
can set gnus-read-active-file
to nil
to prevent Gnus from
reading the active file. This variable is some
by default.
Gnus will try to make do by getting information just on the groups that you actually subscribe to.
Note that if you subscribe to lots and lots of groups, setting this
variable to nil
will probably make Gnus slower, not faster. At
present, having this variable nil
will slow Gnus down
considerably, unless you read news over a 2400 baud modem.
This variable can also have the value some
. Gnus will then
attempt to read active info only on the subscribed groups. On some
servers this is quite fast (on sparkling, brand new INN servers that
support the LIST ACTIVE group
command), on others this isn’t fast
at all. In any case, some
should be faster than nil
, and
is certainly faster than t
over slow lines.
Some news servers (old versions of Leafnode and old versions of INN, for
instance) do not support the LIST ACTIVE group
. For these
servers, nil
is probably the most efficient value for this
variable.
If this variable is nil
, Gnus will ask for group info in total
lock-step, which isn’t very fast. If it is some
and you use an
NNTP server, Gnus will pump out commands as fast as it can, and
read all the replies in one swoop. This will normally result in better
performance, but if the server does not support the aforementioned
LIST ACTIVE group
command, this isn’t very nice to the server.
If you think that starting up Gnus takes too long, try all the three different values for this variable and see what works best for you.
In any case, if you use some
or nil
, you should definitely
kill all groups that you aren’t interested in to speed things up.
Note that this variable also affects active file retrieval from secondary select methods.
Previous: The Active File, Up: Starting Gnus [Contents][Index]
2.9 Startup Variables
gnus-before-startup-hook
¶A hook called as the first thing when Gnus is started.
gnus-before-resume-hook
¶A hook called as the first thing when Gnus is resumed after a suspend.
gnus-startup-hook
¶A hook run as the very last thing after starting up Gnus
gnus-started-hook
¶A hook that is run as the very last thing after starting up Gnus successfully.
gnus-setup-news-hook
¶A hook that is run after reading the .newsrc file(s), but before generating the group buffer.
gnus-check-bogus-newsgroups
¶If non-
nil
, Gnus will check for and delete all bogus groups at startup. A bogus group is a group that you have in your .newsrc file, but doesn’t exist on the news server. Checking for bogus groups can take quite a while, so to save time and resources it’s best to leave this option off, and do the checking for bogus groups once in a while from the group buffer instead (see Group Maintenance).gnus-inhibit-startup-message
¶If non-
nil
, the startup message won’t be displayed. That way, your boss might not notice as easily that you are reading news instead of doing your job. Note that this variable is used before ~/.gnus.el is loaded, so it should be set in .emacs instead.gnus-no-groups-message
¶Message displayed by Gnus when no groups are available.
Next: Summary Buffer, Previous: Starting Gnus, Up: The Gnus Newsreader [Contents][Index]
3 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
- Group Maneuvering
- Selecting a Group
- Subscription Commands
- Group Data
- Group Levels
- Group Score
- Marking Groups
- Foreign Groups
- Group Parameters
- Listing Groups
- Sorting Groups
- Group Maintenance
- Browse Foreign Server
- Exiting Gnus
- Group Topics
- Accessing groups of non-English names
- Misc Group Stuff
Next: Group Maneuvering, Up: Group Buffer [Contents][Index]
3.1 Group Buffer Format
You can customize the Group Mode tool bar, see M-x customize-apropos RET gnus-group-tool-bar.
The tool bar icons are now (de)activated correctly depending on the
cursor position. Therefore, moving around in the Group Buffer is
slower. You can disable this via the variable
gnus-group-update-tool-bar
. Its default value depends on your
Emacs version.
Next: Group Mode Line Specification, Up: Group Buffer Format [Contents][Index]
3.1.1 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 Formatting Variables.
‘%M%S%5y:%B%(%g%)\n’ is the value that produced those lines above.
There should always be a colon on the line; the cursor always moves to the colon after performing an operation. See Positioning Point. 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’
An asterisk if the group only has 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.
- ‘U’
Number of unseen articles.
- ‘t’
Estimated total number of articles. (This is really max-number minus min-number plus 1.)
Gnus uses this estimation because the NNTP protocol provides efficient access to max-number and min-number but getting the true unread message count is not possible efficiently. For hysterical raisins, even the mail back ends, where the true number of unread messages might be available efficiently, use the same limited interface. To remove this restriction from Gnus means that the back end interface has to be changed, which is not an easy job.
The nnml backend (see Mail Spool) has a feature called “group compaction” which circumvents this deficiency: the idea is to renumber all articles from 1, removing all gaps between numbers, hence getting a correct total count. Other backends may support this in the future. In order to keep your total article count relatively up to date, you might want to compact your groups (or even directly your server) from time to time. See Misc Group Stuff, See Server Commands.
- ‘y’
Number of unread, unticked, non-dormant articles.
- ‘i’
Number of ticked and dormant articles.
- ‘g’
Full group name.
- ‘G’
Group name.
- ‘C’
Group comment (see Group Parameters) or group name if there is no comment element in the group parameters.
- ‘D’
Newsgroup description. You need to read the group descriptions before these will appear, and to do that, you either have to set
gnus-read-active-file
or use the group buffer M-d command.- ‘o’
‘m’ if moderated.
- ‘O’
‘(m)’ if moderated.
- ‘s’
Select method.
- ‘B’
If the summary buffer for the group is open or not.
- ‘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 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—this will mean that group names like ‘gnu.emacs.gnus’ will be shortened to ‘g.e.gnus’.- ‘m’ ¶
-
‘%’ (
gnus-new-mail-mark
) if there has arrived new mail to the group lately. - ‘p’
‘#’ (
gnus-process-mark
) if the group is process marked.- ‘d’
A string that says when you last read the group (see Group Timestamp).
- ‘F’
The disk space used by the articles fetched by both the cache and agent. The value is automatically scaled to bytes(B), kilobytes(K), megabytes(M), or gigabytes(G) to minimize the column width. A format of %7F is sufficient for a fixed-width column.
- ‘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 a single dummy parameter 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 native group.
Next: Group Highlighting, Previous: Group Line Specification, Up: Group Buffer Format [Contents][Index]
3.1.2 Group Mode Line Specification
The mode line can be changed by setting
gnus-group-mode-line-format
(see Mode Line Formatting). It
doesn’t understand that many format specifiers:
- ‘S’
The native news server.
- ‘M’
The native select method.
Previous: Group Mode Line Specification, Up: Group Buffer Format [Contents][Index]
3.1.3 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:
(cond (window-system (setq custom-background-mode 'light) (defface my-group-face-1 '((t (:foreground "Red" :bold t))) "First group face") (defface my-group-face-2 '((t (:foreground "DarkSeaGreen4" :bold t))) "Second group face") (defface my-group-face-3 '((t (:foreground "Green4" :bold t))) "Third group face") (defface my-group-face-4 '((t (:foreground "SteelBlue" :bold t))) "Fourth group face") (defface my-group-face-5 '((t (:foreground "Blue" :bold t))) "Fifth group face"))) (setq gnus-group-highlight '(((> unread 200) . my-group-face-1) ((and (< level 3) (zerop unread)) . my-group-face-2) ((< level 3) . my-group-face-3) ((zerop unread) . my-group-face-4) (t . my-group-face-5)))
Also see Faces and Fonts.
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.
total
The total number of articles in the group. Or rather, max-number minus min-number plus one.
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
.
Next: Selecting a Group, Previous: Group Buffer Format, Up: Group Buffer [Contents][Index]
3.2 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 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-n ¶
-
Go to the next unread group on the same (or lower) level (
gnus-group-next-unread-group-same-level
). - M-p ¶
-
Go to the previous unread group on the same (or lower) level (
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
.
If gnus-summary-next-group-on-exit
is t
, when a summary is
exited, the point in the group buffer is moved to the next unread group.
Otherwise, the point is set to the group just exited. The default is
t
.
Next: Subscription Commands, Previous: Group Maneuvering, Up: Group Buffer [Contents][Index]
3.3 Selecting a Group
- SPC ¶
-
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, n determines the number of articles Gnus will fetch. If n is positive, Gnus fetches the n newest articles, if n is negative, Gnus fetches theabs(n)
oldest articles.Thus, SPC enters the group normally, C-u SPC offers old articles, C-u 4 2 SPC fetches the 42 newest articles, and C-u - 4 2 SPC fetches the 42 oldest ones.
When you are in the group (in the Summary buffer), you can type M-g to fetch new articles, or C-u M-g to also show the old ones.
- RET ¶
-
Select the current group and switch to the summary buffer (
gnus-group-select-group
). Takes the same arguments asgnus-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 of 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. If you give a 0 prefix to this command (i.e., 0 M-RET), Gnus won’t even generate the summary buffer, which is useful if you want to toggle threading before generating the summary buffer (see Summary Generation Commands). - M-SPC ¶
-
This is yet one more command that does the same as the RET command, but this one does it without expunging and hiding dormants (
gnus-group-visible-select-group
). - C-M-RET ¶
-
Finally, this command selects the current group ephemerally without doing any processing of its contents (
gnus-group-select-group-ephemerally
). Even threading has been turned off. Everything you do in the group after selecting it in this manner will have no permanent effects.
The gnus-large-newsgroup
variable says what Gnus should
consider to be a big group. If it is nil
, no groups are
considered big. The default value is 200. If the group has more
(unread and/or ticked) 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-large-ephemeral-newsgroup
is the same as
gnus-large-newsgroup
, but is only used for ephemeral
newsgroups.
In groups in some news servers, there might be a big gap between a few
very old articles that will never be expired and the recent ones. In
such a case, the server will return the data like (1 . 30000000)
for the LIST ACTIVE group
command, for example. Even if there
are actually only the articles 1–10 and 29999900–30000000, Gnus doesn’t
know it at first and prepares for getting 30000000 articles. However,
it will consume hundreds megabytes of memories and might make Emacs get
stuck as the case may be. If you use such news servers, set the
variable gnus-newsgroup-maximum-articles
to a positive number.
The value means that Gnus ignores articles other than this number of the
latest ones in every group. For instance, the value 10000 makes Gnus
get only the articles 29990001–30000000 (if the latest article number is
30000000 in a group). Note that setting this variable to a number might
prevent you from reading very old articles. The default value of the
variable gnus-newsgroup-maximum-articles
is nil
, which
means Gnus never ignores old articles.
If gnus-auto-select-first
is non-nil
, select an article
automatically when entering a group with the SPC command.
Which article this is controlled by the
gnus-auto-select-subject
variable. Valid values for this
variable are:
unread
Place point on the subject line of the first unread article.
first
Place point on the subject line of the first article.
unseen
Place point on the subject line of the first unseen article.
unseen-or-unread
Place point on the subject line of the first unseen article, and if there is no such article, place point on the subject line of the first unread article.
best
Place point on the subject line of the highest-scored unread article.
This variable can also be a function. In that case, that function will be called to place point on a subject line.
If you want to prevent automatic selection in some group (say, in a
binary group with Huge articles) you can set the
gnus-auto-select-first
variable to nil
in
gnus-select-group-hook
, which is called when a group is
selected.
Next: Group Data, Previous: Selecting a Group, Up: Group Buffer [Contents][Index]
3.4 Subscription Commands
The following commands allow for managing your subscriptions in the Group buffer. If you want to subscribe to many groups, it’s probably more convenient to go to the Server Buffer, and choose the server there using RET or SPC. Then you’ll have the commands listed in Browse Foreign Server at hand.
- S t ¶
- u
-
Toggle subscription to group under point (
gnus-group-toggle-subscription-at-point
). - S s ¶
- U
-
Prompt for group, and toggle its subscription. (
gnus-group-toggle-subscription
). - 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 time 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 Group Levels.
Next: Group Levels, Previous: Subscription Commands, Up: Group Buffer [Contents][Index]
3.5 Group Data
- c ¶
-
Mark all unticked articles in this group as read (
gnus-group-catchup-current
).gnus-group-catchup-group-hook
is called 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
). - M-c ¶
-
Clear the data from the current group—nix out marks and the list of read articles (
gnus-group-clear-data
). - M-x gnus-group-clear-data-on-native-groups ¶
If you have switched from one NNTP server to another, all your marks and read ranges have become worthless. You can use this command to clear out all data that you have on your native groups. Use with caution.
Next: Group Score, Previous: Group Data, Up: Group Buffer [Contents][Index]
3.6 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 Listing Groups), or to just check for new articles in groups on a given level or lower (see 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 from levels 1 to
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 (completely dead)
(default 9). Gnus treats subscribed and unsubscribed groups exactly the
same, but zombie and killed groups store no information on what articles
you have read, etc. 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 (e.g., 1 or 2).
Maybe the following description of the default behavior of Gnus helps to understand what these levels are all about. By default, Gnus shows you subscribed nonempty groups, but by hitting L you can have it show empty subscribed groups and unsubscribed groups, too. Type l to go back to showing nonempty subscribed groups again. Thus, unsubscribed groups are hidden, in a way.
Zombie and killed groups are similar to unsubscribed groups in that they are hidden by default. But they are different from subscribed and unsubscribed groups in that Gnus doesn’t ask the news server for information (number of messages, number of unread messages) on zombie and killed groups. Normally, you use C-k to kill the groups you aren’t interested in. If most groups are killed, Gnus is faster.
Why does Gnus distinguish between zombie and killed groups? Well, when a new group arrives on the server, Gnus by default makes it a zombie group. This means that you are normally not bothered with new groups, but you can type A z to get a list of all new groups. Subscribe the ones you like and kill the ones you don’t want. (A k shows a list of killed groups.)
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 valid ranges.
If gnus-keep-same-level
is non-nil
, some movement commands
will only move to groups 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.
If this variable is best
, Gnus will make the next newsgroup the
one with the best level.
All groups with a level less than or equal to
gnus-group-default-list-level
will be listed in the group buffer
by default.
This variable can also be a function. In that case, that function will
be called and the result will be used as value.
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 (i.e., query the server about) groups
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. The default is 6.
Next: Marking Groups, Previous: Group Levels, Up: Group Buffer [Contents][Index]
3.7 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 have Gnus assign a score to each group through the mechanism described below. 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.
Next: Foreign Groups, Previous: Group Score, Up: Group Buffer [Contents][Index]
3.8 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
-
Toggle the process mark for the current group (
gnus-group-mark-group
).
Ifgnus-process-mark-toggle
isnil
, set the process mark for the current group. - M-# ¶
- M u
-
Remove the process mark, if any, from the current group (
gnus-group-unmark-group
). - M U ¶
-
Remove the process mark from all groups (
gnus-group-unmark-all-groups
). - M w ¶
-
Mark groups in region (
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 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.
Next: Group Parameters, Previous: Marking Groups, Up: Group Buffer [Contents][Index]
3.9 Foreign Groups
If you recall how to subscribe to servers (see Finding the News)
you will remember that gnus-secondary-select-methods
and
gnus-select-method
let you write a definition in Emacs Lisp of
what servers you want to see when you start up. The alternate
approach is to use foreign servers and groups. “Foreign” here means
they are not coming from the select methods. All foreign server
configuration and subscriptions are stored only in the
~/.newsrc.eld file.
Below 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. All these commands insert the newly created
groups under point—gnus-subscribe-newsgroup-method
is not
consulted.
Changes from the group editing commands are stored in
~/.newsrc.eld (gnus-startup-file
). An alternative is the
variable gnus-parameters
, See Group Parameters.
- 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 Browse Foreign Server). - G M ¶
-
Make an ephemeral group (
gnus-group-read-ephemeral-group
). Gnus will prompt you for a name, a method and an address. - G r ¶
-
Rename the current group to something else (
gnus-group-rename-group
). This is valid only on some groups—mail groups mostly. This command might very well be quite slow on some back ends. - G c ¶
-
Customize the group parameters (
gnus-group-customize
). - 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 (see Directory Groups). You will be prompted for the directory’s name (
gnus-group-make-directory-group
). - G h ¶
-
Make the Gnus help group (
gnus-group-make-help-group
). - G D ¶
-
Read an arbitrary directory as if it were a newsgroup with the
nneething
back end (gnus-group-enter-directory
). See Anything Groups. - 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 arembox
,babyl
,digest
,news
,rnews
,mmdf
,forward
,rfc934
,rfc822-forward
,mime-parts
,standard-digest
,slack-digest
,clari-briefs
,nsmail
,outlook
,oe-dbx
, andmailman
. If you run this command without a prefix, Gnus will guess at the file type. See Document Groups. - G u ¶
-
Create one of the groups mentioned in
gnus-useful-groups
(gnus-group-make-useful-group
). - G w ¶
-
Make an ephemeral group based on a web search (
gnus-group-make-web-group
). If you give a prefix to this command, make a solid group instead. You will be prompted for the search engine type and the search string. Valid search engine types includegoogle
anddejanews
. See Web Searches.If you use the
google
search engine, you can limit the search to a particular group by using a match string like ‘shaving group:alt.sysadmin.recovery’. - G R ¶
-
Make a group based on an RSS feed (
gnus-group-make-rss-group
). You will be prompted for an URL. See RSS. - 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. This command can’t be used on read-only groups (likenntp
groups), though. - G V ¶
-
Make a new, fresh, empty
nnvirtual
group (gnus-group-make-empty-virtual
). See Virtual Groups. - G v ¶
-
Add the current group to an
nnvirtual
group (gnus-group-add-to-virtual
). Uses the process/prefix convention.
See Select Methods, for more information on the various select methods.
If 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. Also see Group Levels;
gnus-activate-level
also affects activation of foreign
newsgroups.
The following commands create ephemeral groups. They can be called not only from the Group buffer, but in any Gnus buffer.
gnus-read-ephemeral-emacs-bug-group
¶Read an Emacs bug report in an ephemeral group. Gnus will prompt for multiple bug numbers. The default is the number at point. The URL template is specified in
gnus-bug-group-download-format-alist
.gnus-read-ephemeral-debian-bug-group
¶Read a Debian bug report in an ephemeral group. Analog to
gnus-read-ephemeral-emacs-bug-group
.
Some of these command are also useful for article buttons, See Article Buttons.
Here is an example:
(require 'gnus-art) (add-to-list 'gnus-button-alist '("#\\([0-9]+\\)\\>" 1 (string-match "\\<emacs\\>" (or gnus-newsgroup-name "")) gnus-read-ephemeral-emacs-bug-group 1))
Next: Listing Groups, Previous: Foreign Groups, Up: Group Buffer [Contents][Index]
3.10 Group Parameters
The group parameters store information local to a particular group.
Use the G p or the G c command to edit group parameters of a
group. (G p presents you with a Lisp-based interface, G c
presents you with a Customize-like interface. The latter helps avoid
silly Lisp errors.) You might also be interested in reading about topic
parameters (see Topic Parameters).
Additionally, you can set group parameters via the
gnus-parameters
variable, see below.
Here’s an example group parameter list:
((to-address . "ding@gnus.org") (auto-expire . t))
We see that each element consists of a “dotted pair”—the thing before the dot is the key, while the thing after the dot is the value. All the parameters have this form except local variable specs, which are not dotted pairs, but proper lists.
Some parameters have correspondent customizable variables, each of which is an alist of regexps and values.
The following group parameters can be used:
to-address
¶Address used by when doing followups and new posts.
(to-address . "some@where.com")
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.See also
gnus-parameter-to-address-alist
.to-list
¶Address used when doing a in that group.
(to-list . "some@where.com")
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.
If you do an a command in a mail group and you have neither a
to-list
group parameter nor ato-address
group parameter, then ato-list
group parameter will be added automatically upon sending the message ifgnus-add-to-list
is set tot
.If this variable is set,
gnus-mailing-list-mode
is turned on when entering summary buffer.subscribed
¶-
If this parameter is set to
t
, Gnus will consider the to-address and to-list parameters for this group as addresses of mailing lists you are subscribed to. Giving Gnus this information is (only) a first step in getting it to generate correct Mail-Followup-To headers for your posts to these lists. The second step is to put the following in your .gnus.el(setq message-subscribed-address-functions '(gnus-find-subscribed-addresses))
See Mailing Lists in The Message Manual, for a complete treatment of available MFT support.
visible
¶If the group parameter list has the element
(visible . t)
, that group will always be visible in the Group buffer, regardless of whether it has any unread articles.This parameter cannot be set via
gnus-parameters
. Seegnus-permanently-visible-groups
as an alternative.broken-reply-to
¶Elements like
(broken-reply-to . t)
signals thatReply-To
headers in this group are to be ignored, and for the header to be hidden ifreply-to
is part ofgnus-boring-article-headers
. This can be useful if you’re reading a mailing list group where the listserv has insertedReply-To
headers that point back to the listserv itself. That is broken behavior. So there!to-group
¶Elements like
(to-group . "some.group.name")
means that all posts in that group will be sent tosome.group.name
.newsgroup
¶If you have
(newsgroup . t)
in the group parameter list, Gnus will treat all responses as if they were responses to news articles. This can be useful if you have a mail group that’s really a mirror of a news group.gcc-self
¶If
(gcc-self . t)
is present in the group parameter list, newly composed messages will begcc
d to the current group. If(gcc-self . none)
is present, noGcc:
header will be generated, if(gcc-self . "group")
is present, this string will be inserted literally as aGcc:
header. It should be a group name. Thegcc-self
value may also be a list of strings andt
, e.g.,(gcc-self "group1" "group2" t)
means togcc
the newly composed message into the groups"group1"
and"group2"
, and into the current group. Thegcc-self
parameter takes precedence over any defaultGcc
rules as described later (see Archived Messages), with the exception for messages to resend.Caveat: Adding
(gcc-self . t)
to the parameter list ofnntp
groups (or the like) isn’t valid. Annntp
server doesn’t accept articles.auto-expire
¶-
If the group parameter has an element that looks like
(auto-expire . t)
, all articles read will be marked as expirable. For an alternative approach, see Expiring Mail.See also
gnus-auto-expirable-newsgroups
. total-expire
¶-
If the group parameter has an element that looks like
(total-expire . t)
, all read articles will be put through the expiry process, even if they are not marked as expirable. Use with caution. Unread, ticked and dormant articles are not eligible for expiry.See also
gnus-total-expirable-newsgroups
. expiry-wait
¶-
If the group parameter has an element that looks like
(expiry-wait . 10)
, this value will override anynnmail-expiry-wait
andnnmail-expiry-wait-function
settings (see Expiring Mail) when expiring expirable messages. The value can be either a number of days (not necessarily an integer), or one of the symbolsnever
orimmediate
. expiry-target
¶Where expired messages end up. This parameter overrides
nnmail-expiry-target
.score-file
¶Elements that look like
(score-file . "file")
will make file into the current score file for the group in question. All interactive score entries will be put into this file.adapt-file
¶Elements that look like
(adapt-file . "file")
will make file into the current adaptive file for the group in question. All adaptive score entries will be put into this file.admin-address
¶When unsubscribing from 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.
display
¶Elements that look like
(display . MODE)
say which articles to display on entering the group. Valid values are:all
Display all articles, both read and unread.
an integer
Display the last integer articles in the group. This is the same as entering the group with C-u integer.
default
Display the default visible articles, which normally includes unread and ticked articles.
an array
Display articles that satisfy a predicate.
Here are some examples:
[unread]
Display only unread articles.
[not expire]
Display everything except expirable articles.
[and (not reply) (not expire)]
Display everything except expirable and articles you’ve already responded to.
The available operators are
not
,and
andor
. Predicates includetick
,unsend
,undownload
,unread
,dormant
,expire
,reply
,killed
,bookmark
,score
,save
,cache
,forward
, andunseen
.
The
display
parameter works by limiting the summary buffer to the subset specified. You can pop the limit by using the / w command (see Limiting).comment
¶Elements that look like
(comment . "This is a comment")
are arbitrary comments on the group. You can display comments in the group line (see Group Line Specification).charset
¶Elements that look like
(charset . iso-8859-1)
will makeiso-8859-1
the default charset; that is, the charset that will be used for all articles that do not specify a charset.See also
gnus-group-charset-alist
.ignored-charsets
¶Elements that look like
(ignored-charsets x-unknown iso-8859-1)
will makeiso-8859-1
andx-unknown
ignored; that is, the default charset will be used for decoding articles.See also
gnus-group-ignored-charsets-alist
.posting-style
¶You can store additional posting style information for this group here (see Posting Styles). The format is that of an entry in the
gnus-posting-styles
alist, except that there’s no regexp matching the group name (of course). Style elements in this group parameter will take precedence over the ones found ingnus-posting-styles
.For instance, if you want a funky name and signature in this group only, instead of hacking
gnus-posting-styles
, you could put something like this in the group parameters:(posting-style (name "Funky Name") ("X-Message-SMTP-Method" "smtp smtp.example.org 587") ("X-My-Header" "Funky Value") (signature "Funky Signature"))
If you’re using topics to organize your group buffer (see Group Topics), note that posting styles can also be set in the topics parameters. Posting styles in topic parameters apply to all groups in this topic. More precisely, the posting-style settings for a group result from the hierarchical merging of all posting-style entries in the parameters of this group and all the topics it belongs to.
post-method
¶If it is set, the value is used as the method for posting message instead of
gnus-post-method
.mail-source
¶If it is set, and the setting of
mail-sources
includes agroup
mail source (see Mail Sources), the value is a mail source for this group.An item like
(banner . regexp)
causes any part of an article that matches the regular expression regexp to be stripped. Instead of regexp, you can also use the symbolsignature
which strips the last signature or any of the elements of the alistgnus-article-banner-alist
.sieve
¶This parameter contains a Sieve test that should match incoming mail that should be placed in this group. From this group parameter, a Sieve ‘IF’ control structure is generated, having the test as the condition and ‘fileinto "group.name";’ as the body.
For example, if the ‘INBOX.list.sieve’ group has the
(sieve address "sender" "sieve-admin@extundo.com")
group parameter, when translating the group parameter into a Sieve script (see Sieve Commands) the following Sieve code is generated:if address "sender" "sieve-admin@extundo.com" { fileinto "INBOX.list.sieve"; }
To generate tests for multiple email-addresses use a group parameter like
(sieve address "sender" ("name@one.org" "else@two.org"))
. When generating a sieve script (see Sieve Commands) Sieve code like the following is generated:if address "sender" ["name@one.org", "else@two.org"] { fileinto "INBOX.list.sieve"; }
You can also use regexp expansions in the rules:
(sieve header :regex "list-id" "<c++std-\\1.accu.org>")
See Sieve Commands, for commands and variables that might be of interest in relation to the sieve parameter.
The Sieve language is described in RFC 3028. See Top in Emacs Sieve.
match-list
¶If this parameter is set to
t
andnnmail-split-method
is set tognus-group-split
, Gnus will matchto-address
,to-list
,extra-aliases
andsplit-regexp
against thelist
split abbreviation. The split regexp is modified to match either a@
or a dot.
in mail addresses to conform to RFC2919List-ID
.See
nnmail-split-abbrev-alist
for the regular expression matching mailing-list headers.See Group Mail Splitting, for details on how to automatically split on group parameters.
(agent parameters)
If the agent has been enabled, you can set any of its parameters to control the behavior of the agent in individual groups. See Agent Parameters in Category Syntax. Most users will choose to set agent parameters in either an agent category or group topic to minimize the configuration effort.
(variable form)
You can use the group parameters to set variables local to the group you are entering. If you want to turn threading off in ‘news.answers’, you could 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 formnil
will beeval
ed there.Note that this feature sets the variable locally to the summary buffer if and only if variable has been bound as a variable. Otherwise, only evaluating the form will take place. So, you may want to bind the variable in advance using
defvar
or other if the result of the form needs to be set to it.But some variables are evaluated in the article buffer, or in the message buffer (of a reply or followup or otherwise newly created message). As a workaround, it might help to add the variable in question to
gnus-newsgroup-variables
. See Various Summary Stuff. So if you want to setmessage-from-style
via the group parameters, then you may need the following statement elsewhere in your ~/.gnus.el file:(add-to-list 'gnus-newsgroup-variables 'message-from-style)
A use for this feature is to remove a mailing list identifier tag in the subject fields of articles. E.g., if the news group
nntp+news.gnus.org:gmane.text.docbook.apps
has the tag ‘DOC-BOOK-APPS:’ in the subject of all articles, this tag can be removed from the article subjects in the summary buffer for the group by putting
(gnus-list-identifiers "DOCBOOK-APPS:")
into the group parameters for the group.This can also be used as a group-specific hook function. If you want to hear a beep when you enter a group, you could put something like
(dummy-variable (ding))
in the parameters of that group. Ifdummy-variable
has been bound (see above), it will be set to the (meaningless) result of the(ding)
form.Alternatively, since the VARIABLE becomes local to the group, this pattern can be used to temporarily change a hook. For example, if the following is added to a group parameter
(gnus-summary-prepared-hook (lambda nil (local-set-key "d" (local-key-binding "n"))))
when the group is entered, the ’d’ key will not mark the article as expired.
Group parameters can be set via the gnus-parameters
variable too.
But some variables, such as visible
, have no effect (For this
case see gnus-permanently-visible-groups
as an alternative.).
For example:
(setq gnus-parameters '(("mail\\..*" (gnus-show-threads nil) (gnus-use-scoring nil) (gnus-summary-line-format "%U%R%z%I%(%[%d:%ub%-23,23f%]%) %s\n") (gcc-self . t) (display . all)) ("^nnimap:\\(foo.bar\\)$" (to-group . "\\1")) ("mail\\.me" (gnus-use-scoring t)) ("list\\..*" (total-expire . t) (broken-reply-to . t))))
All clauses that match the group name will be used, but the last
setting “wins”. So if you have two clauses that both match the
group name, and both set, say display
, the last setting will
override the first.
Parameters that are strings will be subjected to regexp substitution,
as the to-group
example shows.
By default, whether comparing the group name and one of those regexps
specified in gnus-parameters
is done in a case-sensitive manner
or a case-insensitive manner depends on the value of
case-fold-search
at the time when the comparison is done. The
value of case-fold-search
is typically t
; it means, for
example, the element ("INBOX\\.FOO" (total-expire . t))
might be
applied to both the ‘INBOX.FOO’ group and the ‘INBOX.foo’
group. If you want to make those regexps always case-sensitive, set the
value of the gnus-parameters-case-fold-search
variable to
nil
. Otherwise, set it to t
if you want to compare them
always in a case-insensitive manner.
You can define different sorting to different groups via
gnus-parameters
. Here is an example to sort an NNTP
group by reverse date to see the latest news at the top and an
RSS group by subject. In this example, the first group is the
Debian daily news group gmane.linux.debian.user.news
from
news.gmane.io. The RSS group corresponds to the Debian
weekly news RSS feed
https://packages.debian.org/unstable/newpkg_main.en.rdf,
See RSS.
(setq gnus-parameters '(("nntp.*gmane\\.debian\\.user\\.news" (gnus-show-threads nil) (gnus-article-sort-functions '((not gnus-article-sort-by-date))) (gnus-use-adaptive-scoring nil) (gnus-use-scoring nil)) ("nnrss.*debian" (gnus-show-threads nil) (gnus-article-sort-functions 'gnus-article-sort-by-subject) (gnus-use-adaptive-scoring nil) (gnus-use-scoring t) (gnus-score-find-score-files-function 'gnus-score-find-single) (gnus-summary-line-format "%U%R%z%d %I%(%[ %s %]%)\n"))))
Next: Sorting Groups, Previous: Group Parameters, Up: Group Buffer [Contents][Index]
3.11 Listing Groups
These commands all list various slices of the groups 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 (i.e.,gnus-group-default-list-level
) 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 unread, subscribed groups with names 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 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. Also note that this command may list groups that don’t exist (yet)—these will be listed as if they were killed groups. Take the output with some grains of salt. - 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
). - A c ¶
-
List all groups with cached articles (
gnus-group-list-cached
). - A ? ¶
-
List all groups with dormant articles (
gnus-group-list-dormant
). - A ! ¶
-
List all groups with ticked articles (
gnus-group-list-ticked
). - A / ¶
-
Further limit groups within the current selection (
gnus-group-list-limit
). If you’ve first limited to groups with dormant articles with A ?, you can then further limit with A / c, which will then limit to groups with cached articles, giving you the groups that have both dormant articles and cached articles. - A f ¶
-
Flush groups from the current selection (
gnus-group-list-flush
). - A p ¶
-
List groups plus the current selection (
gnus-group-list-plus
).
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.
Next: Group Maintenance, Previous: Listing Groups, Up: Group Buffer [Contents][Index]
3.12 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-real-name
¶Sort the group alphabetically on the real (unprefixed) group names.
gnus-group-sort-by-level
¶Sort by group level.
gnus-group-sort-by-score
¶Sort by group score. See 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. See Group Score.
gnus-group-sort-by-unread
¶Sort by number of unread articles.
gnus-group-sort-by-method
¶Sort alphabetically on the select method.
gnus-group-sort-by-server
¶Sort alphabetically on the Gnus server name.
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
). See Group Score. - G S r ¶
-
Sort the group buffer by group rank (
gnus-group-sort-groups-by-rank
). See Group Score. - G S m ¶
-
Sort the group buffer alphabetically by back end name
(gnus-group-sort-groups-by-method
). - G S n ¶
-
Sort the group buffer alphabetically by real (unprefixed) group name (
gnus-group-sort-groups-by-real-name
).
All the commands below obey the process/prefix convention (see Process/Prefix).
When given a symbolic prefix (see Symbolic Prefixes), all these commands will sort in reverse order.
You can also sort a subset of the groups:
- G P a ¶
-
Sort the groups alphabetically by group name (
gnus-group-sort-selected-groups-by-alphabet
). - G P u ¶
-
Sort the groups by the number of unread articles (
gnus-group-sort-selected-groups-by-unread
). - G P l ¶
-
Sort the groups by group level (
gnus-group-sort-selected-groups-by-level
). - G P v ¶
-
Sort the groups by group score (
gnus-group-sort-selected-groups-by-score
). See Group Score. - G P r ¶
-
Sort the groups by group rank (
gnus-group-sort-selected-groups-by-rank
). See Group Score. - G P m ¶
-
Sort the groups alphabetically by back end name
(gnus-group-sort-selected-groups-by-method
). - G P n ¶
-
Sort the groups alphabetically by real (unprefixed) group name (
gnus-group-sort-selected-groups-by-real-name
). - G P s ¶
-
Sort the groups according to
gnus-group-sort-function
.
And finally, note that you can use C-k and C-y to manually move groups around.
Next: Browse Foreign Server, Previous: Sorting Groups, Up: Group Buffer [Contents][Index]
3.13 Group Maintenance
- b ¶
-
Find bogus groups and delete them (
gnus-group-check-bogus-groups
). - F ¶
-
Find new groups and process them (
gnus-group-find-new-groups
). With 1 C-u, use theask-server
method to query the server for new groups. With 2 C-u’s, use most complete method possible to query the server for new groups, and subscribe the new groups as zombies. - C-c C-x ¶
-
Run all expirable articles in the current group through the expiry process (if any) (
gnus-group-expire-articles
). That is, delete all expirable articles in the group that have been around for a while. (see Expiring Mail). - C-c C-M-x ¶
-
Run all expirable articles in all groups through the expiry process (
gnus-group-expire-all-groups
).
Next: Exiting Gnus, Previous: Group Maintenance, Up: Group Buffer [Contents][Index]
3.14 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 use the gnus-browse-mode
. This buffer looks a bit (well,
a lot) like a normal group 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
). - SPC ¶
-
Enter the current group and display the first article (
gnus-browse-read-group
). - RET ¶
-
Enter the current group (
gnus-browse-select-group
). - u ¶
-
Toggle subscription of the current group (
gnus-browse-toggle-subscription
). You can affect the way the new group is entered into the Group buffer using the variablegnus-browse-subscribe-newsgroup-method
. See see Subscription Methods for available options. - l ¶
- q
-
Exit browse mode (
gnus-browse-exit
). - d ¶
-
Describe the current group (
gnus-browse-describe-group
). - ? ¶
-
Describe browse mode briefly (well, there’s not much to describe, is there) (
gnus-browse-describe-briefly
). - DEL ¶
-
This function will delete the current group (
gnus-browse-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.
Next: Group Topics, Previous: Browse Foreign Server, Up: Group Buffer [Contents][Index]
3.15 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 the .newsrc files (
gnus-group-quit
). The dribble file will be saved, though (see Auto Save).
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.
Next: Accessing groups of non-English names, Previous: Exiting Gnus, Up: Group Buffer [Contents][Index]
3.16 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!
Here’s an example:
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
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. Put the following line in your ~/.gnus.el file:
(add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
Next: Topic Variables, Up: Group Topics [Contents][Index]
3.16.1 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.
In general, the following kinds of operations are possible on topics. First of all, you want to create topics. Secondly, you want to put groups in topics and to move them around until you have an order you like. The third kind of operation is to show/hide parts of the whole shebang. You might want to hide a topic including its subtopics and groups, to get a better overview of the other groups.
Here is a list of the basic keys that you might need to set up topics the way you like.
- T n ¶
-
Prompt for a new topic name and create it (
gnus-topic-create-topic
). - T TAB ¶
- 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. - M-TAB ¶
-
“Un-indent” the current topic so that it becomes a sub-topic of the parent of its current parent (
gnus-topic-unindent
).
The following two keys can be used to move groups and topics around. They work like the well-known cut and paste. C-k is like cut and C-y is like paste. Of course, this being Emacs, we use the terms kill and yank rather than cut and paste.
- C-k ¶
-
Kill a group or topic (
gnus-topic-kill-group
). All groups in the topic will be removed along with the topic. - C-y ¶
-
Yank the previously killed group or topic (
gnus-topic-yank-group
). Note that all topics will be yanked before all groups.So, to move a topic to the beginning of the list of topics, just hit C-k on it. This is like the “cut” part of cut and paste. Then, move the cursor to the beginning of the buffer (just below the “Gnus” topic) and hit C-y. This is like the “paste” part of cut and paste. Like I said—E-Z.
You can use C-k and C-y on groups as well as on topics. So you can move topics around as well as groups.
After setting up the topics the way you like them, you might wish to hide a topic, or to show it again. That’s why we have the following key.
- RET
- SPC
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.
Now for a list of other commands, in no particular order.
- T m ¶
-
Move the current group to some other topic (
gnus-topic-move-group
). This command uses the process/prefix convention (see Process/Prefix). - T j ¶
-
Go to a topic (
gnus-topic-jump-to-topic
). - T c ¶
-
Copy the current group to some other topic (
gnus-topic-copy-group
). This command uses the process/prefix convention (see Process/Prefix). - T h ¶
-
Hide the current topic (
gnus-topic-hide-topic
). If given a prefix, hide the topic permanently. - T s ¶
-
Show the current topic (
gnus-topic-show-topic
). If given a prefix, show the topic permanently. - T D ¶
-
Remove a group from the current topic (
gnus-topic-remove-group
). This command is mainly useful if you have the same group in several topics and wish to remove it from one of the topics. You may also remove a group from all topics, but in that case, Gnus will add it to the root topic the next time you start Gnus. In fact, all new groups (which, naturally, don’t belong to any topic) will show up in the root topic.This command uses the process/prefix convention (see 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 H ¶
-
Toggle hiding empty topics (
gnus-topic-toggle-display-empty-topics
). - T # ¶
-
Toggle the process mark for all groups in the current topic (
gnus-topic-mark-topic
). This command works recursively on sub-topics unless given a prefix.
Ifgnus-process-mark-toggle
isnil
, set the process mark for the current topic. - T M-# ¶
-
Remove the process mark from all groups in the current topic (
gnus-topic-unmark-topic
). This command works recursively on sub-topics unless given a prefix. - C-c C-x ¶
-
Run all expirable articles in the current group or topic through the expiry process (if any) (
gnus-topic-expire-articles
). (see Expiring Mail). - 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
). - T M-n ¶
-
Go to the next topic (
gnus-topic-goto-next-topic
). - T M-p ¶
-
Go to the previous topic (
gnus-topic-goto-previous-topic
). - G p ¶
-
Edit the topic parameters (
gnus-topic-edit-parameters
). See Topic Parameters.
Next: Topic Sorting, Previous: Topic Commands, Up: Group Topics [Contents][Index]
3.16.2 Topic Variables
The previous section told you how to tell Gnus which topics to display. This section explains how to tell Gnus what to display about each topic.
The topic lines themselves are created according to the
gnus-topic-line-format
variable (see Formatting Variables).
Valid elements are:
- ‘i’
Indentation.
- ‘n’
Topic name.
- ‘v’
Visibility.
- ‘l’
Level.
- ‘g’
Number of groups in the topic.
- ‘G’
Number of groups in the topic and all its subtopics.
- ‘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.
The gnus-topic-display-empty-topics
says whether to display even
topics that have no unread articles in them. The default is t
.
If gnus-topic-display-predicate
is non-nil
, it should be
a function that says whether the topic is to be displayed or not.
The function will be called with one parameter (the name of the topic)
and should return non-nil
is the topic is to be displayed.
For instance, if you don’t even want to be reminded that work exists outside of office hours, you can gather all the work-related groups into a topic called ‘"Work"’, and then say something like the following:
(setq gnus-topic-display-predicate (lambda (name) (or (not (equal name "Work")) (< 090000 (string-to-number (format-time-string "%H%M%S")) 170000))))
Next: Topic Topology, Previous: Topic Variables, Up: Group Topics [Contents][Index]
3.16.3 Topic Sorting
You can sort the groups in each topic individually with the following commands:
- T S a ¶
-
Sort the current topic alphabetically by group name (
gnus-topic-sort-groups-by-alphabet
). - T S u ¶
-
Sort the current topic by the number of unread articles (
gnus-topic-sort-groups-by-unread
). - T S l ¶
-
Sort the current topic by group level (
gnus-topic-sort-groups-by-level
). - T S v ¶
-
Sort the current topic by group score (
gnus-topic-sort-groups-by-score
). See Group Score. - T S r ¶
-
Sort the current topic by group rank (
gnus-topic-sort-groups-by-rank
). See Group Score. - T S m ¶
-
Sort the current topic alphabetically by back end name (
gnus-topic-sort-groups-by-method
). - T S e ¶
-
Sort the current topic alphabetically by server name (
gnus-topic-sort-groups-by-server
). - T S s ¶
-
Sort the current topic according to the function(s) given by the
gnus-group-sort-function
variable (gnus-topic-sort-groups
).
When given a prefix argument, all these commands will sort in reverse order. See Sorting Groups, for more information about group sorting.
Next: Topic Parameters, Previous: Topic Sorting, Up: Group Topics [Contents][Index]
3.16.4 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 (‘Gnus’), 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
.
Previous: Topic Topology, Up: Group Topics [Contents][Index]
3.16.5 Topic Parameters
All groups in a topic will inherit group parameters from the parent (and ancestor) topic parameters. All valid group parameters are valid topic parameters (see Group Parameters). When the agent is enabled, all agent parameters (See Agent Parameters in Category Syntax) are also valid topic parameters.
In addition, the following parameters are only valid as topic parameters:
subscribe
When subscribing new groups by topic (see Subscription Methods), the
subscribe
topic parameter says what groups go in what topic. Its value should be a regexp to match the groups that should go in that topic.subscribe-level
When subscribing new groups by topic (see the
subscribe
parameter), the group will be subscribed with the level specified in thesubscribe-level
instead ofgnus-level-default-subscribed
.
Group parameters (of course) override topic parameters, and topic parameters in sub-topics override topic parameters in super-topics. You know. Normal inheritance rules. (Rules is here a noun, not a verb, although you may feel free to disagree with me here.)
Gnus Emacs 3: comp.emacs 2: alt.religion.emacs 452: alt.sex.emacs Relief 452: alt.sex.emacs 0: comp.talk.emacs.recovery Misc 8: comp.binaries.fractals 13: comp.sources.unix 452: alt.sex.emacs
The ‘Emacs’ topic has the topic parameter (score-file
. "emacs.SCORE")
; the ‘Relief’ topic has the topic parameter
(score-file . "relief.SCORE")
; and the ‘Misc’ topic has the
topic parameter (score-file . "emacs.SCORE")
. In addition,
‘alt.religion.emacs’ has the group parameter (score-file
. "religion.SCORE")
.
Now, when you enter ‘alt.sex.emacs’ in the ‘Relief’ topic, you will get the relief.SCORE home score file. If you enter the same group in the ‘Emacs’ topic, you’ll get the emacs.SCORE home score file. If you enter the group ‘alt.religion.emacs’, you’ll get the religion.SCORE home score file.
This seems rather simple and self-evident, doesn’t it? Well, yes. But
there are some problems, especially with the total-expiry
parameter. Say you have a mail group in two topics; one with
total-expiry
and one without. What happens when you do M-x
gnus-expire-all-expirable-groups? Gnus has no way of telling which one
of these topics you mean to expire articles from, so anything may
happen. In fact, I hereby declare that it is undefined what
happens. You just have to be careful if you do stuff like that.
Next: Misc Group Stuff, Previous: Group Topics, Up: Group Buffer [Contents][Index]
3.17 Accessing groups of non-English names
There are some news servers that provide groups of which the names are
expressed with their native languages in the world. For instance, in a
certain news server there are some newsgroups of which the names are
spelled in Chinese, where people are talking in Chinese. You can, of
course, subscribe to such news groups using Gnus. Currently Gnus
supports non-ASCII group names not only with the nntp
back end but also with the nnml
back end and the nnrss
back end.
Every such group name is encoded by a certain charset in the server side (in an NNTP server its administrator determines the charset, but for groups in the other back ends it is determined by you). Gnus has to display the decoded ones for you in the group buffer and the article buffer, and needs to use the encoded ones when communicating with servers. However, Gnus doesn’t know what charset is used for each non-ASCII group name. The following two variables are just the ones for telling Gnus what charset should be used for each group:
gnus-group-name-charset-method-alist
¶An alist of select methods and charsets. The default value is
nil
. The names of groups in the server specified by that select method are all supposed to use the corresponding charset. For example:(setq gnus-group-name-charset-method-alist '(((nntp "news.com.cn") . cn-gb-2312)))
Charsets specified for groups with this variable are preferred to the ones specified for the same groups with the
gnus-group-name-charset-group-alist
variable (see below).A select method can be very long, like:
(nntp "gmane" (nntp-address "news.gmane.io") (nntp-end-of-line "\n") (nntp-open-connection-function nntp-open-via-rlogin-and-telnet) (nntp-via-rlogin-command "ssh") (nntp-via-rlogin-command-switches ("-C" "-t" "-e" "none")) (nntp-via-address …))
In that case, you can truncate it into
(nntp "gmane")
in this variable. That is, it is enough to contain only the back end name and the server name.gnus-group-name-charset-group-alist
¶-
An alist of regexp of group name and the charset for group names.
((".*" . utf-8))
is the default value if UTF-8 is supported, otherwise the default isnil
. For example:(setq gnus-group-name-charset-group-alist '(("\\.com\\.cn:" . cn-gb-2312) (".*" . utf-8)))
Note that this variable is ignored if the match is made with
gnus-group-name-charset-method-alist
.
Those two variables are used also to determine the charset for encoding
and decoding non-ASCII group names that are in the back ends
other than nntp
. It means that it is you who determine it. If
you do nothing, the charset used for group names in those back ends will
all be utf-8
because of the last element of
gnus-group-name-charset-group-alist
.
There is one more important variable for non-ASCII group names:
nnmail-pathname-coding-system
¶The value of this variable should be a coding system or
nil
. The default isnil
in Emacs.The
nnml
back end, thennrss
back end, the agent, and the cache use non-ASCII group names in those files and directories. This variable overrides the value offile-name-coding-system
which specifies the coding system used when encoding and decoding those file names and directory names.Emacs uses the value of
default-file-name-coding-system
iffile-name-coding-system
isnil
or it is bound to the value ofnnmail-pathname-coding-system
which isnil
.Normally the value of
default-file-name-coding-system
is initialized according to the locale, so you will need to do nothing if the value is suitable to encode and decode non-ASCII group names.The value of this variable (or
default-file-name-coding-system
) does not necessarily need to be the same value that is determined bygnus-group-name-charset-method-alist
andgnus-group-name-charset-group-alist
.If
default-file-name-coding-system
or this variable is initialized by default toiso-latin-1-unix
for example, although you want to subscribe to the groups spelled in Chinese, that is the most typical case where you have to customizennmail-pathname-coding-system
. Theutf-8-unix
coding system is a good candidate for it. Otherwise, you may change the locale in your system so thatdefault-file-name-coding-system
or this variable may be initialized to an appropriate value.
Note that when you copy or move articles from a non-ASCII group to another group, the charset used to encode and decode group names should be the same in both groups. Otherwise the Newsgroups header will be displayed incorrectly in the article buffer.
Previous: Accessing groups of non-English names, Up: Group Buffer [Contents][Index]
3.18 Misc Group Stuff
- v ¶
-
The key v is reserved for users. You can bind it to some command or better use it as a prefix key. For example:
(define-key gnus-group-mode-map (kbd "v j d") (lambda () (interactive) (gnus-group-jump-to-group "nndraft:drafts")))
On keys reserved for users in Emacs and on key bindings in general See Keymaps in The Emacs Editor.
- ^ ¶
-
Enter the server buffer (
gnus-group-enter-server-mode
). See Server Buffer. - a ¶
-
Start composing a message (a news by default) (
gnus-group-post-news
). If given a prefix, post to the group under the point. If the prefix is 1, prompt for a group to post to. Contrary to what the name of this function suggests, the prepared article might be a mail instead of a news, if a mail group is specified with the prefix argument. See Composing Messages. - m ¶
-
Mail a message somewhere (
gnus-group-mail
). If given a prefix, use the posting style of the group under the point. If the prefix is 1, prompt for a group name to find the posting style. See Composing Messages. - i ¶
-
Start composing a news (
gnus-group-news
). If given a prefix, post to the group under the point. If the prefix is 1, prompt for group to post to. See Composing Messages.This function actually prepares a news even when using mail groups. This is useful for “posting” messages to mail groups without actually sending them over the network: they’re just saved directly to the group in question. The corresponding back end must have a request-post method for this to work though.
- G z ¶
-
Compact the group under point (
gnus-group-compact-group
). Currently implemented only in nnml (see Mail Spool). This removes gaps between article numbers, hence getting a correct total article count.
Variables for the group buffer:
gnus-group-mode-hook
¶is called after the group buffer has been created.
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-group-prepared-hook
¶is called as the very last thing after the group buffer has been generated. It may be used to move point around, for instance.
gnus-permanently-visible-groups
¶Groups matching this regexp will always be listed in the group buffer, whether they are empty or not.
Next: Group Information, Up: Misc Group Stuff [Contents][Index]
3.18.1 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 re-reading of the active file(s) from the back end(s). - M-g ¶
-
Check whether new articles have arrived in the current group (
gnus-group-get-new-news-this-group
).gnus-goto-next-group-when-activating
says whether this command is to move point to the next group or not. It ist
by default. - C-c M-g ¶
Activate absolutely all groups (
gnus-activate-all-groups
).- R ¶
-
Restart Gnus (
gnus-group-restart
). This saves the .newsrc file(s), closes the connection to all servers, clears up all run-time Gnus variables, and then starts Gnus all over again.
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.
Next: Group Timestamp, Previous: Scanning New Messages, Up: Misc Group Stuff [Contents][Index]
3.18.2 Group Information
- H d
- C-c C-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. - H v ¶
- 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
).
Next: File Commands, Previous: Group Information, Up: Misc Group Stuff [Contents][Index]
3.18.3 Group Timestamp
It can be convenient to let Gnus keep track of when you last read a
group. To set the ball rolling, you should add
gnus-group-set-timestamp
to gnus-select-group-hook
:
(add-hook 'gnus-select-group-hook 'gnus-group-set-timestamp)
After doing this, each time you enter a group, it’ll be recorded.
This information can be displayed in various ways—the easiest is to use the ‘%d’ spec in the group line format:
(setq gnus-group-line-format "%M\%S\%p\%P\%5y: %(%-40,40g%) %d\n")
This will result in lines looking like:
* 0: mail.ding 19961002T012943 0: custom 19961002T012713
As you can see, the date is displayed in compact ISO 8601 format. This may be a bit too much, so to just display the date, you could say something like:
(setq gnus-group-line-format "%M\%S\%p\%P\%5y: %(%-40,40g%) %6,6~(cut 2)d\n")
If you would like greater control of the time format, you can use a user-defined format spec. Something like the following should do the trick:
(setq gnus-group-line-format "%M\%S\%p\%P\%5y: %(%-40,40g%) %ud\n") (defun gnus-user-format-function-d (headers) (let ((time (gnus-group-timestamp gnus-tmp-group))) (if time (format-time-string "%b %d %H:%M" time) "")))
To see what variables are dynamically bound (like
gnus-tmp-group
), you have to look at the source code. The
variable names aren’t guaranteed to be stable over Gnus versions,
either.
Next: Sieve Commands, Previous: Group Timestamp, Up: Misc Group Stuff [Contents][Index]
3.18.4 File Commands
- r ¶
-
Re-read the init file (
gnus-init-file
, which defaults to ~/.gnus.el) (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.
Previous: File Commands, Up: Misc Group Stuff [Contents][Index]
3.18.5 Sieve Commands
Sieve is a server-side mail filtering language. In Gnus you can use
the sieve
group parameter (see Group Parameters) to specify
sieve rules that should apply to each group. Gnus provides two
commands to translate all these group parameters into a proper Sieve
script that can be transferred to the server somehow.
The generated Sieve script is placed in gnus-sieve-file
(by
default ~/.sieve). The Sieve code that Gnus generate is placed
between two delimiters, gnus-sieve-region-start
and
gnus-sieve-region-end
, so you may write additional Sieve code
outside these delimiters that will not be removed the next time you
regenerate the Sieve script.
The variable gnus-sieve-crosspost
controls how the Sieve script
is generated. If it is non-nil
(the default) articles is
placed in all groups that have matching rules, otherwise the article
is only placed in the group with the first matching rule. For
example, the group parameter ‘(sieve address "sender"
"owner-ding@hpc.uh.edu")’ will generate the following piece of Sieve
code if gnus-sieve-crosspost
is nil
. (When
gnus-sieve-crosspost
is non-nil
, it looks the same
except that the line containing the call to stop
is removed.)
if address "sender" "owner-ding@hpc.uh.edu" { fileinto "INBOX.ding"; stop; }
See Top in Emacs Sieve.
- D g ¶
-
Regenerate a Sieve script from the
sieve
group parameters and put you into thegnus-sieve-file
without saving it. - D u ¶
-
Regenerates the Gnus managed part of
gnus-sieve-file
using thesieve
group parameters, save the file and upload it to the server using thesieveshell
program.
Next: Article Buffer, Previous: Group Buffer, Up: The Gnus Newsreader [Contents][Index]
4 Summary Buffer
A line for each article is displayed in the summary buffer. You can move around, read articles, post articles and reply to articles.
The most common way to a summary buffer is to select a group from the group buffer (see Selecting a Group).
You can have as many summary buffers open as you wish.
You can customize the Summary Mode tool bar, see M-x customize-apropos RET gnus-summary-tool-bar.
The key v is reserved for users. You can bind it to some command or better use it as a prefix key. For example:
(define-key gnus-summary-mode-map (kbd "v -") "LrS") ;; lower subthread
- Summary Buffer Format
- Summary Maneuvering
- Choosing Articles
- Scrolling the Article
- Reply, Followup and Post
- Delayed Articles
- Marking Articles
- Limiting
- Threading
- Sorting the Summary Buffer
- Asynchronous Article Fetching
- Article Caching
- Persistent Articles
- Sticky Articles
- Article Backlog
- Saving Articles
- Decoding Articles
- Article Treatment
- MIME Commands
- Charsets
- Article Commands
- Summary Sorting
- Finding the Parent
- Alternative Approaches
- Tree Display
- Mail Group Commands
- Various Summary Stuff
- Exiting the Summary Buffer
- Crosspost Handling
- Duplicate Suppression
- Security
- Mailing List
Next: Summary Maneuvering, Up: Summary Buffer [Contents][Index]
4.1 Summary Buffer Format
Gnus will use the value of the gnus-extract-address-components
variable as a function for getting the name and address parts of a
From
header. Two pre-defined functions exist:
gnus-extract-address-components
, which is the default, quite
fast, and too simplistic solution; and
mail-extract-address-components
, which works very nicely, but is
slower. The default function will return the wrong answer in 5% of the
cases. If this is unacceptable to you, use the other function instead:
(setq gnus-extract-address-components 'mail-extract-address-components)
gnus-summary-same-subject
is a string indicating that the current
article has the same subject as the previous. This string will be used
with those specs that require it. The default is ""
.
Next: To From Newsgroups, Up: Summary Buffer Format [Contents][Index]
4.1.1 Summary Buffer Lines
You can change the format of the lines in the summary buffer by changing
the gnus-summary-line-format
variable. It works along the same
lines as a normal format
string, with some extensions
(see Formatting Variables).
There should always be a colon or a point position marker on the line;
the cursor always moves to the point position marker or the colon after
performing an operation. (Of course, Gnus wouldn’t be Gnus if it wasn’t
possible to change this. Just write a new function
gnus-goto-colon
which does whatever you like with the cursor.)
See Positioning Point.
The default string is ‘%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n’.
The following format specification characters and extended format specification(s) are understood:
- ‘N’
Article number.
- ‘S’
Subject string. List identifiers stripped,
gnus-list-identifiers
. See Article Hiding.- ‘s’
Subject if the article is the root of the thread or the previous article had a different subject,
gnus-summary-same-subject
otherwise. (gnus-summary-same-subject
defaults to""
.)- ‘F’
Full
From
header.- ‘n’
The name (from the
From
header).- ‘f’
The name,
To
header or theNewsgroups
header (see To From Newsgroups).- ‘a’
The name (from the
From
header). This differs from then
spec in that it uses the function designated by thegnus-extract-address-components
variable, which is slower, but may be more thorough.- ‘A’
The address (from the
From
header). This works the same way as thea
spec.- ‘L’
Number of lines in the article.
- ‘Z’
Retrieval Score Value (RSV) of the article;
nil
if not in an nnselect group.- ‘G’
Originating group name of the article;
nil
if not in an nnselect group.- ‘g’
Short form of the originating group name of the article;
nil
if not in an nnselect group.- ‘c’
Number of characters in the article. This specifier is not supported in some methods (like nnfolder).
- ‘k’
Pretty-printed version of the number of characters in the article; for example, ‘1.2k’ or ‘0.4M’.
- ‘I’
Indentation based on thread level (see Customizing Threading).
- ‘B’
A complex trn-style thread tree, showing response-connecting trace lines. A thread could be drawn like this:
> +-> | +-> | | \-> | | \-> | \-> +-> \->
You can customize the appearance with the following options. Note that it is possible to make the thread display look really neat by replacing the default ASCII characters with graphic line-drawing glyphs.
gnus-sum-thread-tree-root
¶Used for the root of a thread. If
nil
, use subject instead. The default is ‘> ’.gnus-sum-thread-tree-false-root
¶Used for the false root of a thread (see Loose Threads). If
nil
, use subject instead. The default is ‘> ’.gnus-sum-thread-tree-single-indent
¶Used for a thread with just one message. If
nil
, use subject instead. The default is ‘’.gnus-sum-thread-tree-vertical
¶Used for drawing a vertical line. The default is ‘| ’.
gnus-sum-thread-tree-indent
¶Used for indenting. The default is ‘ ’.
gnus-sum-thread-tree-leaf-with-other
¶Used for a leaf with brothers. The default is ‘+-> ’.
gnus-sum-thread-tree-single-leaf
¶Used for a leaf without brothers. The default is ‘\-> ’
- ‘T’
Nothing if the article is a root and lots of spaces if it isn’t (it pushes everything after it off the screen).
- ‘[’
Opening bracket, which is normally ‘[’, but can also be ‘<’ for adopted articles (see Customizing Threading). This can be customized using following settings:
- ‘]’
Closing bracket, which is normally ‘]’, but can also be ‘>’ for adopted articles. This can be customized using following settings:
- ‘>’
One space for each thread level.
- ‘<’
Twenty minus thread level spaces.
- ‘U’
Unread. See Read Articles.
- ‘R’
This misleadingly named specifier is the secondary mark. This mark will say whether the article has been replied to, has been cached, or has been saved. See Other Marks.
- ‘i’
Score as a number (see Scoring).
- ‘z’ ¶
Zcore, ‘+’ if above the default level and ‘-’ if below the default level. If the difference between
gnus-summary-default-score
and the score is less thangnus-summary-zcore-fuzz
, this spec will not be used.- ‘V’
Total thread score.
- ‘x’
Xref
.- ‘D’
Date
.- ‘d’
The
Date
inDD-MMM
format.- ‘o’
The
Date
in YYYYMMDDT
HHMMSS format.- ‘M’
Message-ID
.- ‘r’
References
.- ‘t’
Number of articles in the current sub-thread. Using this spec will slow down summary buffer generation somewhat.
- ‘e’
An ‘=’ (
gnus-not-empty-thread-mark
) will be displayed if the article has any children.- ‘P’
The line number.
- ‘O’
Download mark.
- ‘*’
Desired cursor position (instead of after first colon).
- ‘&user-date;’
Age sensitive date format. Various date format is defined in
gnus-user-date-format-alist
.- ‘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 header as argument. The function should return a string, which will be inserted into the summary just like information from any other summary specifier.
Text between ‘%(’ and ‘%)’ will be highlighted with
gnus-mouse-face
when the mouse point is placed inside the area.
There can only be one such area.
The ‘%U’ (status), ‘%R’ (replied) and ‘%z’ (zcore) specs have to be handled with care. For reasons of efficiency, Gnus will compute what column these characters will end up in, and “hard-code” that. This means that it is invalid to have these specs after a variable-length spec. Well, you might not be arrested, but your summary buffer will look strange, which is bad enough.
The smart choice is to have these specs as far to the left as possible. (Isn’t that the case with everything, though? But I digress.)
This restriction may disappear in later versions of Gnus.
Next: Summary Buffer Mode Line, Previous: Summary Buffer Lines, Up: Summary Buffer Format [Contents][Index]
4.1.2 To From Newsgroups
In some groups (particularly in archive groups), the From
header
isn’t very interesting, since all the articles there are written by
you. To display the information in the To
or Newsgroups
headers instead, you need to decide three things: What information to
gather; where to display it; and when to display it.
-
The reading of extra header information is controlled by the
gnus-extra-headers
. This is a list of header symbols. For instance:(setq gnus-extra-headers '(To Newsgroups X-Newsreader))
This will result in Gnus trying to obtain these three headers, and storing it in header structures for later easy retrieval.
-
The value of these extra headers can be accessed via the
gnus-extra-header
function. Here’s a format line spec that will access theX-Newsreader
header:"%~(form (gnus-extra-header 'X-Newsreader))@"
-
The
gnus-ignored-from-addresses
variable says when the ‘%f’ summary line spec returns theTo
,Newsreader
orFrom
header. The variable may be a regexp or a predicate function. If this matches the contents of theFrom
header, the value of theTo
orNewsreader
headers are used instead.To distinguish regular articles from those where the
From
field has been swapped, a string is prefixed to theTo
orNewsgroups
header in the summary line. By default the string is ‘-> ’ forTo
and ‘=> ’ forNewsgroups
, you can customize these strings withgnus-summary-to-prefix
andgnus-summary-newsgroup-prefix
.
A related variable is nnmail-extra-headers
, which controls when
to include extra headers when generating overview (NOV) files.
If you have old overview files, you should regenerate them after
changing this variable, by entering the server buffer using ^,
and then g on the appropriate mail server (e.g., nnml) to cause
regeneration.
You also have to instruct Gnus to display the data by changing the
%n
spec to the %f
spec in the
gnus-summary-line-format
variable.
In summary, you’d typically put something like the following in ~/.gnus.el:
(setq gnus-extra-headers '(To Newsgroups)) (setq nnmail-extra-headers gnus-extra-headers) (setq gnus-summary-line-format "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n") (setq gnus-ignored-from-addresses "Your Name Here")
(The values listed above are the default values in Gnus. Alter them to fit your needs.)
A note for news server administrators, or for users who wish to try to convince their news server administrator to provide some additional support:
The above is mostly useful for mail groups, where you have control over the NOV files that are created. However, if you can persuade your nntp admin to add (in the usual implementation, notably INN):
Newsgroups:full
to the end of her overview.fmt file, then you can use that just as you would the extra headers from the mail groups. Otherwise, you have to disable fetching headers with ‘XOVER’:
(setq nntp-nov-is-evil t gnus-nov-is-evil t)
Be aware, though, that this will make entering an NNTP group much, much slower, so this is not recommended.
One particular scenario in which it can be desirable to not use
‘XOVER’ is for nnvirtual
groups in order to support
limiting by extra headers (e.g., by the newsgroup of its component
groups). Because group parameters are not inherited, a separate
select method for the component groups with the appropriate
nov-is-evil
set as a method variable is required.
Next: Summary Highlighting, Previous: To From Newsgroups, Up: Summary Buffer Format [Contents][Index]
4.1.3 Summary Buffer Mode Line
You can also change the format of the summary mode bar (see Mode Line Formatting). Set gnus-summary-mode-line-format
to whatever you
like. The default is ‘Gnus: %%b [%A] %Z’.
Here are the elements you can play with:
- ‘G’
Group name.
- ‘p’
Unprefixed group name.
- ‘A’
Current article number.
- ‘z’
Current article score.
- ‘V’
Gnus version.
- ‘U’
Number of unread articles in this group.
- ‘e’
Number of unread articles in this group that aren’t displayed in the summary buffer.
- ‘Z’
A string with the number of unread and unselected articles represented either as ‘<%U(+%e) more>’ if there are both unread and unselected articles, and just as ‘<%U more>’ if there are just unread articles and no unselected ones.
- ‘g’
Shortish group name. For instance, ‘rec.arts.anime’ will be shortened to ‘r.a.anime’.
- ‘S’
Subject of the current article.
- ‘u’
User-defined spec (see User-Defined Specs).
- ‘s’
Name of the current score file (see Scoring).
- ‘d’
Number of dormant articles (see Unread Articles).
- ‘t’
Number of ticked articles (see Unread Articles).
- ‘r’
Number of articles that have been marked as read in this session.
- ‘E’
Number of articles expunged by the score files.
Previous: Summary Buffer Mode Line, Up: Summary Buffer Format [Contents][Index]
4.1.4 Summary Highlighting
gnus-visual-mark-article-hook
¶This hook is run after selecting an article. It is meant to be used for highlighting the article in some way. It is not run if
gnus-visual
isnil
.gnus-summary-update-hook
¶This hook is called when a summary line is changed. It is not run if
gnus-visual
isnil
.gnus-summary-selected-face
¶This is the face (or font as some people call it) used to highlight the current article in the summary buffer.
gnus-summary-highlight
¶Summary lines are highlighted according to this variable, which is a list where the elements are of the format
(form . face)
. If you would, for instance, like ticked articles to be italic and high-scored articles to be bold, you could set this variable to something like(((eq mark gnus-ticked-mark) . italic) ((> score default) . bold))
As you may have guessed, if form returns a non-
nil
value, face will be applied to the line.
Next: Choosing Articles, Previous: Summary Buffer Format, Up: Summary Buffer [Contents][Index]
4.2 Summary Maneuvering
All the straight movement commands understand the numeric prefix and behave pretty much as you’d expect.
None of these commands select articles.
- G M-n ¶
- M-n
-
Go to the next summary line of an unread article (
gnus-summary-next-unread-subject
). - G M-p ¶
- M-p
-
Go to the previous summary line of an unread article (
gnus-summary-prev-unread-subject
). - G g ¶
-
Ask for an article number and then go to the summary line of that article without displaying the article (
gnus-summary-goto-subject
).
If Gnus asks you to press a key to confirm going to the next group, you can use the C-n and C-p keys to move around the group buffer, searching for the next group to read without actually returning to the group buffer.
Variables related to summary movement:
gnus-auto-select-next
If you issue one of the movement commands (like n) and there are no more unread articles after the current one, Gnus will offer to go to the next group. If this variable is
t
and the next group is empty, Gnus will exit summary mode and return to the group buffer. If this variable is neithert
nornil
, Gnus will select the next group with unread articles. As a special case, if this variable isquietly
, Gnus will select the next group without asking for confirmation. If this variable isalmost-quietly
, the same will happen only if you are located on the last article in the group. Finally, if this variable isslightly-quietly
, the Z n command will go to the next group without confirmation. Also see Group Levels.gnus-auto-select-same
¶If non-
nil
, all the movement commands will try to go to the next article with the same subject as the current. (Same here might mean roughly equal. Seegnus-summary-gather-subject-limit
for details (see Customizing Threading).) If there are no more articles with the same subject, go to the first unread article.This variable is not particularly useful if you use a threaded display.
gnus-paging-select-next
¶Control whether to select the next/previous article when paging (with commands like SPC or DEL). If non-
nil
, select the next article when reaching the end of the article (or the previous article when paging backwards).If
nil
, don’t do anything at the end/start of the articles.gnus-summary-check-current
¶If non-
nil
, all the “unread” movement commands will not proceed to the next (or previous) article if the current article is unread. Instead, they will choose the current article.gnus-auto-center-summary
¶If non-
nil
, Gnus will keep the point in the summary buffer centered at all times. This makes things quite tidy, but if you have a slow network connection, or simply do not like this un-Emacsism, you can set this variable tonil
to get the normal Emacs scrolling action. This will also inhibit horizontal re-centering of the summary buffer, which might make it more inconvenient to read extremely long threads.This variable can also be a number. In that case, center the window at the given number of lines from the top.
gnus-summary-stop-at-end-of-message
¶If non-
nil
, don’t go to the next article when hitting SPC, and you’re at the end of the article.
Next: Scrolling the Article, Previous: Summary Maneuvering, Up: Summary Buffer [Contents][Index]
4.3 Choosing Articles
Next: Choosing Variables, Up: Choosing Articles [Contents][Index]
4.3.1 Choosing Commands
None of the following movement commands understand the numeric prefix, and they all select and display an article.
If you want to fetch new articles or redisplay the group, see Exiting the Summary Buffer.
- SPC ¶
-
Select the current article, or, if that one’s read already, the next unread article (
gnus-summary-next-page
).If you have an article window open already and you press SPC again, the article will be scrolled. This lets you conveniently SPC through an entire newsgroup. See Scrolling the Article.
- G n ¶
- n
-
Go to next unread article (
gnus-summary-next-unread-article
). - G p ¶
- p
-
Go to previous unread article (
gnus-summary-prev-unread-article
). - G N ¶
- N
-
Go to the next article (
gnus-summary-next-article
). - G P ¶
- P
-
Go to the previous article (
gnus-summary-prev-article
). - G u ¶
- ]
-
Go to the next unseen article (
gnus-summary-next-unseen-article
). - G U ¶
- [
-
Go to the previous unseen article (
gnus-summary-prev-unseen-article
). - G C-n ¶
-
Go to the next article with the same subject (
gnus-summary-next-same-subject
). - G C-p ¶
-
Go to the previous article with the same subject (
gnus-summary-prev-same-subject
). - G f ¶
- .
-
Go to the first unread article (
gnus-summary-first-unread-article
). - G b ¶
- ,
-
Go to the unread article with the highest score (
gnus-summary-best-unread-article
). If given a prefix argument, go to the first unread article that has a score over the default score. - G l ¶
- l
-
Go to the previous article read (
gnus-summary-goto-last-article
). - G o ¶
-
Pop an article off the summary history and go to this article (
gnus-summary-pop-article
). This command differs from the command above in that you can pop as many previous articles off the history as you like, while l toggles the two last read articles. For a somewhat related issue (if you use these commands a lot), see Article Backlog. - G j ¶
- j
-
Ask for an article number or
Message-ID
, and then go to that article (gnus-summary-goto-article
).
Previous: Choosing Commands, Up: Choosing Articles [Contents][Index]
4.3.2 Choosing Variables
Some variables relevant for moving and selecting articles:
gnus-auto-extend-newsgroup
¶All the movement commands will try to go to the previous (or next) article, even if that article isn’t displayed in the Summary buffer if this variable is non-
nil
. Gnus will then fetch the article from the server and display it in the article buffer.gnus-select-article-hook
¶This hook is called whenever an article is selected. The default is
nil
. If you would like each article to be saved in the Agent as you read it, puttinggnus-agent-fetch-selected-article
on this hook will do so.gnus-mark-article-hook
¶-
This hook is called whenever an article is selected. It is intended to be used for marking articles as read. The default value is
gnus-summary-mark-read-and-unread-as-read
, and will change the mark of almost any article you read tognus-read-mark
. The only articles not affected by this function are ticked, dormant, and expirable articles. If you’d instead like to just have unread articles marked as read, you can usegnus-summary-mark-unread-as-read
instead. It will leave marks likegnus-low-score-mark
,gnus-del-mark
(and so on) alone.
Next: Reply, Followup and Post, Previous: Choosing Articles, Up: Summary Buffer [Contents][Index]
4.4 Scrolling the Article
- SPC ¶
-
Pressing SPC will scroll the current article forward one page, or, if you have come to the end of the current article, will choose the next article (
gnus-summary-next-page
).If
gnus-article-skip-boring
is non-nil
and the rest of the article consists only of citations and signature, then it will be skipped; the next article will be shown instead. You can customize what is considered uninteresting withgnus-article-boring-faces
. You can manually view the article’s pages, no matter how boring, using C-M-v. - DEL ¶
-
Scroll the current article back one page (
gnus-summary-prev-page
). - RET ¶
-
Scroll the current article one line forward (
gnus-summary-scroll-up
). - M-RET ¶
-
Scroll the current article one line backward (
gnus-summary-scroll-down
). - A g ¶
- g
-
(Re)fetch the current article (
gnus-summary-show-article
). If given a prefix, show a completely “raw” article, just the way it came from the server. If given a prefix twice (i.e., C-u C-u g'), fetch the current article, but don’t run any of the article treatment functions.If given a numerical prefix, you can do semi-manual charset stuff. C-u 0 g cn-gb-2312 RET will decode the message as if it were encoded in the
cn-gb-2312
charset. If you have(setq gnus-summary-show-article-charset-alist '((1 . cn-gb-2312) (2 . big5)))
then you can say C-u 1 g to get the same effect.
- A < ¶
- <
-
Scroll to the beginning of the article (
gnus-summary-beginning-of-article
). - A > ¶
- >
-
Scroll to the end of the article (
gnus-summary-end-of-article
). - A s ¶
- s
-
Perform an isearch in the article buffer (
gnus-summary-isearch-article
). - h ¶
-
Select the article buffer (
gnus-summary-select-article-buffer
).
Next: Delayed Articles, Previous: Scrolling the Article, Up: Summary Buffer [Contents][Index]
4.5 Reply, Followup and Post
Next: Summary Post Commands, Up: Reply, Followup and Post [Contents][Index]
4.5.1 Summary Mail Commands
Commands for composing a mail message:
- S r ¶
- r
-
Mail a reply to the author of the current article (
gnus-summary-reply
). - S R ¶
- R
-
Mail a reply to the author of the current article and include the original message (
gnus-summary-reply-with-original
). This command uses the process/prefix convention. - S w ¶
-
Mail a wide reply to the author of the current article (
gnus-summary-wide-reply
). A wide reply is a reply that goes out to all people listed in theTo
,From
(orReply-To
) andCc
headers. IfMail-Followup-To
is present, that’s used instead. - S W ¶
-
Mail a wide reply to the current article and include the original message (
gnus-summary-wide-reply-with-original
). This command uses the process/prefix convention, but only uses the headers from the first article to determine the recipients. - S L ¶
-
When replying to a message from a mailing list, send a reply to that message to the mailing list, and include the original message (
gnus-summary-reply-to-list-with-original
). - S v ¶
-
Mail a very wide reply to the author of the current article (
gnus-summary-very-wide-reply
). A very wide reply is a reply that goes out to all people listed in theTo
,From
(orReply-To
) andCc
headers in all the process/prefixed articles. This command uses the process/prefix convention. - S V ¶
-
Mail a very wide reply to the author of the current article and include the original message (
gnus-summary-very-wide-reply-with-original
). This command uses the process/prefix convention. - S B r ¶
-
Mail a reply to the author of the current article but ignore the
Reply-To
field (gnus-summary-reply-broken-reply-to
). If you need this because a mailing list incorrectly sets aReply-To
header pointing to the list, you probably want to set thebroken-reply-to
group parameter instead, so things will work correctly. See Group Parameters. - S B R ¶
-
Mail a reply to the author of the current article and include the original message but ignore the
Reply-To
field (gnus-summary-reply-broken-reply-to-with-original
). - S o m ¶
- C-c C-f
-
Forward the current article to some other person (
gnus-summary-mail-forward
). If no prefix is given, the message is forwarded according to the value of (message-forward-as-mime
) and (message-forward-show-mml
); if the prefix is 1, decode the message and forward directly inline; if the prefix is 2, forward message as an rfc822 MIME section; if the prefix is 3, decode message and forward as an rfc822 MIME section; if the prefix is 4, forward message directly inline; otherwise, the message is forwarded as no prefix given but use the flipped value of (message-forward-as-mime
). By default, the forwarded message is inlined into the mail. - S m ¶
- m
-
Prepare a mail (
gnus-summary-mail-other-window
). By default, use the posting style of the current group. If given a prefix, disable that. If the prefix is 1, prompt for a group name to find the posting style. - S i ¶
-
Prepare a news (
gnus-summary-news-other-window
). By default, post to the current group. If given a prefix, disable that. If the prefix is 1, prompt for a group to post to.This function actually prepares a news even when using mail groups. This is useful for “posting” messages to mail groups without actually sending them over the network: they’re just saved directly to the group in question. The corresponding back end must have a request-post method for this to work though.
- S D b ¶
-
If you have sent a mail, but the mail was bounced back to you for some reason (wrong address, transient failure), you can use this command to resend that bounced mail (
gnus-summary-resend-bounced-mail
). You will be popped into a mail buffer where you can edit the headers before sending the mail off again. If you give a prefix to this command, and the bounced mail is a reply to some other mail, Gnus will try to fetch that mail and display it for easy perusal of its headers. This might very well fail, though. - S D r ¶
-
Not to be confused with the previous command,
gnus-summary-resend-message
will prompt you for an address to send the current message off to, and then send it to that place. The headers of the message won’t be altered—but lots of headers that sayResent-To
,Resent-From
and so on will be added. This means that you actually send a mail to someone that has aTo
header that (probably) points to yourself. This will confuse people. So, natcherly you’ll only do that if you’re really eVIl.This command is mainly used if you have several accounts and want to ship a mail to a different account of yours. (If you’re both
root
andpostmaster
and get a mail forpostmaster
to theroot
account, you may want to resend it topostmaster
. Ordnung muss sein!This command understands the process/prefix convention (see Process/Prefix).
- S D e ¶
-
Like the previous command, but will allow you to edit the message as if it were a new message before resending.
- S O m ¶
-
Digest the current series (see Decoding Articles) and forward the result using mail (
gnus-uu-digest-mail-forward
). This command uses the process/prefix convention (see Process/Prefix). - S M-c ¶
-
Send a complaint about excessive crossposting to the author of the current article (
gnus-summary-mail-crosspost-complaint
).This command is provided as a way to fight back against the current crossposting pandemic that’s sweeping Usenet. It will compose a reply using the
gnus-crosspost-complaint
variable as a preamble. This command understands the process/prefix convention (see Process/Prefix) and will prompt you before sending each mail.
Also See Header Commands in The Message Manual, for more information.
Next: Summary Message Commands, Previous: Summary Mail Commands, Up: Reply, Followup and Post [Contents][Index]
4.5.2 Summary Post Commands
Commands for posting a news article:
- S p ¶
- a
-
Prepare for posting an article (
gnus-summary-post-news
). By default, post to the current group. If given a prefix, disable that. If the prefix is 1, prompt for another group instead. - S f ¶
- f
-
Post a followup to the current article (
gnus-summary-followup
). - S F ¶
- F
-
Post a followup to the current article and include the original message (
gnus-summary-followup-with-original
). This command uses the process/prefix convention. - S n ¶
-
Post a followup to the current article via news, even if you got the message through mail (
gnus-summary-followup-to-mail
). - S N ¶
-
Post a followup to the current article via news, even if you got the message through mail and include the original message (
gnus-summary-followup-to-mail-with-original
). This command uses the process/prefix convention. - S o p ¶
-
Forward the current article to a newsgroup (
gnus-summary-post-forward
). If no prefix is given, the message is forwarded according to the value of (message-forward-as-mime
) and (message-forward-show-mml
); if the prefix is 1, decode the message and forward directly inline; if the prefix is 2, forward message as an rfc822 MIME section; if the prefix is 3, decode message and forward as an rfc822 MIME section; if the prefix is 4, forward message directly inline; otherwise, the message is forwarded as no prefix given but use the flipped value of (message-forward-as-mime
). By default, the message is decoded and forwarded as an rfc822 MIME section. - S O p ¶
-
Digest the current series and forward the result to a newsgroup (
gnus-uu-digest-post-forward
). This command uses the process/prefix convention. - S u ¶
-
Uuencode a file, split it into parts, and post it as a series (
gnus-uu-post-news
). (see Uuencoding and Posting).
Also See Header Commands in The Message Manual, for more information.
Next: Canceling Articles, Previous: Summary Post Commands, Up: Reply, Followup and Post [Contents][Index]
4.5.3 Summary Message Commands
- S y ¶
-
Yank the current article into an already existing Message composition buffer (
gnus-summary-yank-message
). This command prompts for what message buffer you want to yank into, and understands the process/prefix convention (see Process/Prefix). - S A ¶
-
Attach the current article into an already existing Message composition buffer (
gnus-summary-attach-message
). If no such buffer exists, a new one is created. This command prompts for what message buffer you want to yank into, and understands the process/prefix convention (see Process/Prefix).
Previous: Summary Message Commands, Up: Reply, Followup and Post [Contents][Index]
4.5.4 Canceling Articles
Have you ever written something, and then decided that you really, really, really wish you hadn’t posted that?
Well, you can’t cancel mail, but you can cancel posts.
Find the article you wish to cancel (you can only cancel your own
articles, so don’t try any funny stuff). Then press C or S
c (gnus-summary-cancel-article
). Your article will be
canceled—machines all over the world will be deleting your article.
This command uses the process/prefix convention (see Process/Prefix).
Be aware, however, that not all sites honor cancels, so your article may live on here and there, while most sites will delete the article in question.
Gnus will use the “current” select method when canceling. If you want to use the standard posting method, use the ‘a’ symbolic prefix (see Symbolic Prefixes).
Gnus ensures that only you can cancel your own messages using a
Cancel-Lock
header (see Canceling News in Message Manual).
If you discover that you have made some mistakes and want to do some corrections, you can post a superseding article that will replace your original article.
Go to the original article and press S s
(gnus-summary-supersede-article
). You will be put in a buffer
where you can edit the article all you want before sending it off the
usual way.
The same goes for superseding as for canceling, only more so: Some sites do not honor superseding. On those sites, it will appear that you have posted almost the same article twice.
If you have just posted the article, and change your mind right away,
there is a trick you can use to cancel/supersede the article without
waiting for the article to appear on your site first. You simply return
to the post buffer (which is called *sent ...*). There you will
find the article you just posted, with all the headers intact. Change
the Message-ID
header to a Cancel
or Supersedes
header by substituting one of those words for the word
Message-ID
. Then just press C-c C-c to send the article as
you would do normally. The previous article will be
canceled/superseded.
Just remember, kids: There is no ’c’ in ’supersede’.
Next: Marking Articles, Previous: Reply, Followup and Post, Up: Summary Buffer [Contents][Index]
4.6 Delayed Articles
Sometimes, you might wish to delay the sending of a message. For
example, you might wish to arrange for a message to turn up just in time
to remind your about the birthday of your Significant Other. For this,
there is the gnus-delay
package. Setup is simple:
(gnus-delay-initialize)
Normally, to send a message you use the C-c C-c command from
Message mode. To delay a message, use C-c C-j
(gnus-delay-article
) instead. This will ask you for how long the
message should be delayed. Possible answers are:
Jump to: | $
%
*
.
/
<
>
A B C D E F G H I K L M N O P Q R S T U V W X Y Z |
---|
Jump to: | $
%
*
.
/
<
>
A B C D E F G H I K L M N O P Q R S T U V W X Y Z |
---|
Previous: Index, Up: The Gnus Newsreader [Contents][Index]
15 Key Index
Jump to: | !
#
$
&
*
,
.
/
<
=
>
?
@
[
]
^
|
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z |
---|
Jump to: | !
#
$
&
*
,
.
/
<
=
>
?
@
[
]
^
|
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z |
---|
Footnotes
(1)
PGP keys for many hierarchies are available at https://ftp.isc.org/pub/pgpcontrol/README.html
(2)
shr
displays colors as declared in the HTML
article but tries to adjust them in order to be readable. If you
prefer more contrast, See FAQ 4-16.
(3)
The name “Gnus Cloud” parodizes but otherwise has little to do with “cloud computing”, a misleading term normally best avoided.
(4)
See the function
nnchoke-request-update-info
, Optional Back End Functions.