Import Gnus v5.10.2.
[elisp/gnus.git-] / texi / gnus.texi
index 9b22c48..7cb87c7 100644 (file)
@@ -33,7 +33,7 @@
 \makeindex
 \begin{document}
 
-\newcommand{\gnusversionname}{Gnus v5.10.1}
+\newcommand{\gnusversionname}{Gnus v5.10.2}
 \newcommand{\gnuschaptername}{}
 \newcommand{\gnussectionname}{}
 
@@ -389,7 +389,7 @@ can be gotten by any nefarious means you can think of---@acronym{NNTP}, local
 spool or your mbox file.  All at the same time, if you want to push your
 luck.
 
-This manual corresponds to Gnus v5.10.1.
+This manual corresponds to Gnus v5.10.2.
 
 @end ifinfo
 
@@ -757,6 +757,7 @@ Gnus Unplugged
 * Agent Basics::                How it all is supposed to work.
 * Agent Categories::            How to tell the Gnus Agent what to download.
 * Agent Commands::              New commands for all the buffers.
+* Agent Visuals::               Ways that the agent may effect your summary buffer.
 * Agent as Cache::              The Agent is a big cache too.
 * Agent Expiry::                How to make old articles go away.
 * Agent Regeneration::          How to recover from lost connections and other accidents.
@@ -2119,17 +2120,19 @@ manner will have no permanent effects.
 @end table
 
 @vindex gnus-large-newsgroup
-The @code{gnus-large-newsgroup} variable says what Gnus should consider
-to be a big group.  This is 200 by default.  If the group has more
+The @code{gnus-large-newsgroup} variable says what Gnus should
+consider to be a big group.  If it is @code{nil}, no groups are
+considered big.  The default vaule 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 (@code{-n}), the @code{n} oldest articles will be fetched.  If it
-is positive, the @code{n} articles that have arrived most recently will
-be fetched.
+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 (@var{-n}), the @var{n} oldest articles will be
+fetched.  If it is positive, the @var{n} articles that have arrived
+most recently will be fetched.
 
 @vindex gnus-large-ephemeral-newsgroup
-Same as @code{gnus-large-newsgroup}, but only used for ephemeral
+@code{gnus-large-ephemeral-newsgroup} is the same as
+@code{gnus-large-newsgroup}, but is only used for ephemeral
 newsgroups.
 
 @vindex gnus-select-group-hook
@@ -9213,7 +9216,7 @@ To have all Vcards be ignored, you'd say something like this:
 
 @item gnus-article-loose-mime
 @vindex gnus-article-loose-mime
-If non-@code{nil}, Gnus won't required the @samp{MIME-Version} header
+If non-@code{nil}, Gnus won't require the @samp{MIME-Version} header
 before interpreting the message as a @acronym{MIME} message.  This helps
 when reading messages from certain broken mail user agents.  The
 default is @code{nil}.
@@ -15949,7 +15952,7 @@ Unlike Parmenides the @acronym{IMAP} designers has decided that things that
 doesn't exist actually does exist.  More specifically, @acronym{IMAP} has
 this concept of marking articles @code{Deleted} which doesn't actually
 delete them, and this (marking them @code{Deleted}, that is) is what
-nnimap does when you delete a article in Gnus (with @kbd{B DEL} or
+nnimap does when you delete an article in Gnus (with @kbd{B DEL} or
 similar).
 
 Since the articles aren't really removed when we mark them with the
@@ -16261,8 +16264,8 @@ limiting (or enabling) other users access to your mail boxes.  Not all
 @acronym{IMAP} servers support this, this function will give an error if it
 doesn't.
 
-To edit a ACL for a mailbox, type @kbd{G l}
-(@code{gnus-group-edit-nnimap-acl}) and you'll be presented with a ACL
+To edit an ACL for a mailbox, type @kbd{G l}
+(@code{gnus-group-edit-nnimap-acl}) and you'll be presented with an ACL
 editing window with detailed instructions.
 
 Some possible uses:
@@ -17238,6 +17241,7 @@ Of course, to use it as such, you have to learn a few new commands.
 * Agent Basics::                How it all is supposed to work.
 * Agent Categories::            How to tell the Gnus Agent what to download.
 * Agent Commands::              New commands for all the buffers.
+* Agent Visuals::               Ways that the agent may effect your summary buffer.
 * Agent as Cache::              The Agent is a big cache too.
 * Agent Expiry::                How to make old articles go away.
 * Agent Regeneration::          How to recover from lost connections and other accidents.
@@ -17266,6 +17270,29 @@ connected to the net continuously.
 @dfn{Downloading} means fetching things from the net to your local
 machine.  @dfn{Uploading} is doing the opposite.
 
+You know that Gnus gives you all the opportunity you'd ever want for
+shooting yourself in the foot.  Some people call it flexibility.  Gnus
+is also customizable to a great extent, which means that the user has a
+say on how Gnus behaves.  Other newsreaders might unconditionally shoot
+you in your foot, but with Gnus, you have a choice!
+
+Gnus is never really in plugged or unplugged state.  Rather, it applies
+that state to each server individually.  This means that some servers
+can be plugged while others can be unplugged.  Additionally, some
+servers can be ignored by the Agent altogether (which means that
+they're kinda like plugged always).
+
+So when you unplug the Agent and then wonder why is Gnus opening a
+connection to the Net, the next step to do is to look whether all
+servers are agentized.  If there is an unagentized server, you found
+the culprit.
+
+Another thing is the @dfn{offline} state.  Sometimes, servers aren't
+reachable.  When Gnus notices this, it asks you whether you want the
+server to be switched to offline state.  If you say yes, then the
+server will behave somewhat as if it was unplugged, except that Gnus
+will ask you whether you want to switch it back online again.
+
 Let's take a typical Gnus session using the Agent.
 
 @itemize @bullet
@@ -17311,7 +17338,7 @@ Agent.  Go to the server buffer (@kbd{^} in the group buffer) and press
 @kbd{J a} on the server (or servers) that you wish to have covered by the
 Agent (@pxref{Server Agent Commands}), or @kbd{J r} on automatically
 added servers you do not wish to have covered by the Agent.  By default,
-all @code{nntp} and @code{nnimap} groups in @code{gnus-select-method} and
+all @code{nntp} and @code{nnimap} servers in @code{gnus-select-method} and
 @code{gnus-secondary-select-methods} are agentized.
 
 @item
@@ -17954,6 +17981,68 @@ Agent (@code{gnus-agent-remove-server}).
 @end table
 
 
+@node Agent Visuals
+@subsection Agent Visuals
+
+If you open a summary while unplugged and, Gnus knows from the group's
+active range that there are more articles than the headers currently
+stored in the Agent, you may see some articles whose subject looks
+something like @samp{[Undownloaded article #####]}.  These are
+placeholders for the missing headers.  Aside from setting a mark,
+there is not much that can be done with one of these placeholders.
+When Gnus finally gets a chance to fetch the group's headers, the
+placeholders will automatically be replaced by the actual headers.
+You can configure the summary buffer's maneuvering to skip over the
+placeholders if you care (See @code{gnus-auto-goto-ignores}).
+
+While it may be obvious to all, the only headers and articles
+available while unplugged are those headers and articles that were
+fetched into the Agent while previously plugged.  To put it another
+way, "If you forget to fetch something while plugged, you might have a
+less than satisfying unplugged session".  For this reason, the Agent
+adds two visual effects to your summary buffer.  These effects display
+the download status of each article so that you always know which
+articles will be available when unplugged.
+
+The first visual effect is the @samp{%O} spec.  If you customize
+gnus-summary-line-format to include this specifier, you will add a
+single character field that indicates an article's download status.
+Articles that have been fetched into either the Agent or the Cache,
+will display @code{gnus-downloaded-mark} (defaults to @samp{+}).  All
+other articles will display @code{gnus-undownloaded-mark} (defaults to
+@samp{-}).  If you open a group that has not been agentized, a space
+(@samp{ }) will be displayed.
+
+The second visual effect are the undownloaded faces.  The faces, there
+are three indicating the article's score (low, normal, high), seem to
+result in a love/hate response from many Gnus users.  The problem is
+that the face selection is controlled by a list of condition tests and
+face names (See @code{gnus-summary-highlight}).  Each condition is
+tested in the order in which it appears in the list so early
+conditions have precedence over later conditions.  All of this means
+that, if you tick an undownloaded article, the article will continue
+to be displayed in the undownloaded face rather than the ticked face.
+
+If you use the Agent as a cache (to avoid downloading the same article
+each time you visit it or to minimize your connection time), the
+undownloaded face will probably seem like a good idea.  The reason
+being that you do all of our work (marking, reading, deleting) with
+downloaded articles so the normal faces always appear.
+
+For occasional Agent users, the undownloaded faces may appear to be an
+absolutely horrible idea.  The issue being that, since most of their
+articles have not been fetched into the Agent, most of the normal
+faces will be obscured by the undownloaded faces.  If this is your
+situation, you have two choices available.  First, you can completely
+disable the undownload faces by customizing
+@code{gnus-summary-highlight} to delete the three cons-cells that
+refer to the gnus-summary*-undownloaded-face faces.  Second, if you
+prefer to take a more fine-grained approach, you may set the
+@code{agent-disable-undownloaded-faces} group parameter to t.  This
+parameter, like all other agent parameters, may be set on an Agent
+Category (@pxref{Agent Categories}), a Group Topic (@pxref{Topic
+Parameters}), or an individual group (@pxref{Group Parameters}).
+
 @node Agent as Cache
 @subsection Agent as Cache
 
@@ -18094,7 +18183,7 @@ Creating/deleting nnimap groups when unplugged.
 Technical note: the synchronization algorithm does not work by ``pushing''
 all local flags to the server, but rather incrementally update the
 server view of flags by changing only those flags that were changed by
-the user.  Thus, if you set one flag on a article, quit the group and
+the user.  Thus, if you set one flag on an article, quit the group and
 re-select the group and remove the flag; the flag will be set and
 removed from the server when you ``synchronize''.  The queued flag
 operations can be found in the per-server @code{flags} file in the Agent
@@ -18187,7 +18276,7 @@ see any cycling.
 
 @item gnus-server-unopen-status
 @vindex gnus-server-unopen-status
-Perhaps not a Agent variable, but closely related to the Agent, this
+Perhaps not an Agent variable, but closely related to the Agent, this
 variable says what will happen if Gnus cannot open a server.  If the
 Agent is enabled, the default, @code{nil}, makes Gnus ask the user
 whether to deny the server or whether to unplug the agent.  If the
@@ -18197,7 +18286,7 @@ is only valid if the Agent is used.
 
 @item gnus-auto-goto-ignores
 @vindex gnus-auto-goto-ignores
-Another variable that isn't a Agent variable, yet so closely related
+Another variable that isn't an Agent variable, yet so closely related
 that most will look for it here, this variable tells the summary
 buffer how to maneuver around undownloaded (only headers stored in the
 agent) and unfetched (neither article nor headers stored) articles.
@@ -18857,7 +18946,7 @@ final ``header'' you can score on is @code{Followup}.  These score
 entries will result in new score entries being added for all follow-ups
 to articles that matches these score entries.
 
-Following this key is a arbitrary number of score entries, where each
+Following this key is an arbitrary number of score entries, where each
 score entry has one to four elements.
 @enumerate
 
@@ -21938,12 +22027,6 @@ check for legitimate mail, though.  If you feel like being a good net
 citizen, you can even send off complaints to the proper authorities on
 each unsolicited commercial email---at your leisure.
 
-If you are also a lazy net citizen, you will probably prefer complaining
-automatically with the @file{gnus-junk.el} package, available FOR FREE
-at @* @uref{http://stud2.tuwien.ac.at/~e9426626/gnus-junk.html}.
-Since most e-mail spam is sent automatically, this may reconcile the
-cosmic balance somewhat.
-
 This works for me.  It allows people an easy way to contact me (they can
 just press @kbd{r} in the usual way), and I'm not bothered at all with
 spam.  It's a win-win situation.  Forging @code{From} headers to point
@@ -23518,7 +23601,7 @@ Message Mode is able to request notifications from the receiver.
 @cindex RFC 1991
 @cindex RFC 2440
 RFC 1991 is the original @acronym{PGP} message specification,
-published as a Information RFC.  RFC 2440 was the follow-up, now
+published as an informational RFC.  RFC 2440 was the follow-up, now
 called Open PGP, and put on the Standards Track.  Both document a
 non-@acronym{MIME} aware @acronym{PGP} format.  Gnus supports both
 encoding (signing and encryption) and decoding (verification and
@@ -24702,7 +24785,7 @@ appearance of all article buttons.  @xref{Article Button Levels}.
 Dired integration
 
 @code{gnus-dired-minor-mode} installs key bindings in dired buffers to send
-a file as an attachment (@kbd{C-c C-a}), open a file using the approriate
+a file as an attachment (@kbd{C-c C-a}), open a file using the appropriate
 mailcap entry (@kbd{C-c C-l}), and print a file using the mailcap entry
 (@kbd{C-c P}).  It is enabled with 
 @lisp
@@ -24889,7 +24972,7 @@ Gnus no longer generate the Sender: header automatically.
 
 Earlier it was generated iff the user configurable email address was
 different from the Gnus guessed default user address.  As the guessing
-algorithm is rarely correct these days, and (more controversally) the
+algorithm is rarely correct these days, and (more controversially) the
 only use of the Sender: header was to check if you are entitled to
 cancel/supersede news (which is now solved by Cancel Locks instead,
 see another entry), generation of the header has been disabled by
@@ -25113,7 +25196,7 @@ the valid values.
 Gnus supports Cancel Locks in News.
 
 This means a header @samp{Cancel-Lock} is inserted in news posting.  It is
-used to determine if you wrote a article or not (for cancelling and
+used to determine if you wrote an article or not (for cancelling and
 superseding).  Gnus generates a random password string the first time
 you post a message, and saves it in your @file{~/.emacs} using the Custom
 system.  While the variable is called @code{canlock-password}, it is not
@@ -25150,7 +25233,7 @@ out other articles.
 @item Some limiting commands accept a @kbd{C-u} prefix to negate the match.
 
 If @kbd{C-u} is used on subject, author or extra headers, i.e., @kbd{/
-s'}, @kbd{/ a}, and @kbd{/ x}
+s}, @kbd{/ a}, and @kbd{/ x}
 (@code{gnus-summary-limit-to-@{subject,author,extra@}}) respectively, the
 result will be to display all articles that do not match the expression.
 
@@ -25162,7 +25245,7 @@ This is supposedly what USEFOR wanted to migrate to.  See
 @code{gnus-group-name-charset-method-alist} for customization.
 
 @item
-The nnml and nnfolder backends store marks for each groups.
+The nnml and nnfolder back ends store marks for each groups.
 
 This makes it possible to take backup of nnml/nnfolder servers/groups
 separately of @file{~/.newsrc.eld}, while preserving marks.  It also
@@ -25737,7 +25820,7 @@ evaluate expressions using @kbd{M-:} or inspect variables using
 @cindex elp
 @cindex profile
 @cindex slow
-Sometimes, a problem do not directly generate a elisp error but
+Sometimes, a problem do not directly generate an elisp error but
 manifests itself by causing Gnus to be very slow.  In these cases, you
 can use @kbd{M-x toggle-debug-on-quit} and press @kbd{C-g} when things are
 slow, and then try to analyze the backtrace (repeating the procedure