automatically when entering a group with the @kbd{SPACE} command.
Which article this is is controlled by the
@code{gnus-auto-select-subject} variable. Valid values for this
-variable is:
+variable are:
@table @code
groups under point---@code{gnus-subscribe-newsgroup-method} is not
consulted.
+Changes from the group editing commands are stored in
+@file{~/.newsrc.eld} (@code{gnus-startup-file}). An alternative is the
+variable @code{gnus-parameters}, @xref{Group Parameters}.
+
@table @kbd
@item G m
@item auto-expire
@cindex auto-expire
+@cindex expiring mail
If the group parameter has an element that looks like @code{(auto-expire
. t)}, all articles read will be marked as expirable. For an
alternative approach, @pxref{Expiring Mail}.
@item total-expire
@cindex total-expire
+@cindex expiring mail
If the group parameter has an element that looks like
@code{(total-expire . t)}, all read articles will be put through the
expiry process, even if they are not marked as expirable. Use with
@item C-c C-x
@kindex C-c C-x (Group)
@findex gnus-group-expire-articles
+@cindex expiring mail
Run all expirable articles in the current group through the expiry
process (if any) (@code{gnus-group-expire-articles}). That is, delete
all expirable articles in the group that have been around for a while.
@item C-c C-M-x
@kindex C-c C-M-x (Group)
@findex gnus-group-expire-all-groups
+@cindex expiring mail
Run all expirable articles in all groups through the expiry process
(@code{gnus-group-expire-all-groups}).
@item C-c C-x
@kindex C-c C-x (Topic)
@findex gnus-topic-expire-articles
+@cindex expiring mail
Run all expirable articles in the current group or topic through the
expiry process (if any)
(@code{gnus-topic-expire-articles}). (@pxref{Expiring Mail}).
@item / n
@kindex / n (Summary)
@findex gnus-summary-limit-to-articles
-Limit the summary buffer to the current article
-(@code{gnus-summary-limit-to-articles}). Uses the process/prefix
-convention (@pxref{Process/Prefix}).
+With prefix @samp{n}, limit the summary buffer to the next @samp{n}
+articles. If not given a prefix, use the process marked articles
+instead. (@code{gnus-summary-limit-to-articles}).
@item / w
@kindex / w (Summary)
@item gnus-article-emulate-mime
@vindex gnus-article-emulate-mime
+@cindex uuencode
+@cindex yEnc
There are other, non-@acronym{MIME} encoding methods used. The most common
is @samp{uuencode}, but yEncode is also getting to be popular. If
this variable is non-@code{nil}, Gnus will look in message bodies to
see if it finds these encodings, and if so, it'll run them through the
-Gnus @acronym{MIME} machinery. The default is @code{t}.
+Gnus @acronym{MIME} machinery. The default is @code{t}. Only
+single-part yEnc encoded attachments can be decoded. There's no support
+for encoding in Gnus.
@item gnus-unbuttonized-mime-types
@vindex gnus-unbuttonized-mime-types
@item B e
@kindex B e (Summary)
@findex gnus-summary-expire-articles
+@cindex expiring mail
Run all expirable articles in the current group through the expiry
process (@code{gnus-summary-expire-articles}). That is, delete all
expirable articles in the group that have been around for a while.
@item B C-M-e
@kindex B C-M-e (Summary)
@findex gnus-summary-expire-articles-now
+@cindex expiring mail
Delete all the expirable articles in the group
(@code{gnus-summary-expire-articles-now}). This means that @strong{all}
articles eligible for expiry in the current group will
Remove the @code{To} header if it only contains the address identical to
the current group's @code{to-list} parameter.
@item cc-list
-Remove the @code{CC} header if it only contains the address identical to
+Remove the @code{Cc} header if it only contains the address identical to
the current group's @code{to-list} parameter.
@item date
Remove the @code{Date} header if the article is less than three days
old.
@item long-to
-Remove the @code{To} header if it is very long.
+Remove the @code{To} and/or @code{Cc} header if it is very long.
@item many-to
-Remove all @code{To} headers if there are more than one.
+Remove all @code{To} and/or @code{Cc} headers if there are more than one.
@end table
To include these three elements, you could say something like:
possible but those listed are probably sufficient for most people.
@table @code
+@vindex gnus-treat-buttonize
@item gnus-treat-buttonize (t, integer)
+@vindex gnus-treat-buttonize-head
@item gnus-treat-buttonize-head (head)
@xref{Article Buttons}.
+@vindex gnus-treat-capitalize-sentences
@item gnus-treat-capitalize-sentences (t, integer)
+@vindex gnus-treat-overstrike
@item gnus-treat-overstrike (t, integer)
+@vindex gnus-treat-strip-cr
@item gnus-treat-strip-cr (t, integer)
+@vindex gnus-treat-strip-headers-in-body
@item gnus-treat-strip-headers-in-body (t, integer)
+@vindex gnus-treat-strip-leading-blank-lines
@item gnus-treat-strip-leading-blank-lines (t, integer)
+@vindex gnus-treat-strip-multiple-blank-lines
@item gnus-treat-strip-multiple-blank-lines (t, integer)
+@vindex gnus-treat-strip-pem
@item gnus-treat-strip-pem (t, last, integer)
+@vindex gnus-treat-strip-trailing-blank-lines
@item gnus-treat-strip-trailing-blank-lines (t, last, integer)
+@vindex gnus-treat-unsplit-urls
@item gnus-treat-unsplit-urls (t, integer)
+@vindex gnus-treat-wash-html
@item gnus-treat-wash-html (t, integer)
@xref{Article Washing}.
+@vindex gnus-treat-date-english
@item gnus-treat-date-english (head)
+@vindex gnus-treat-date-iso8601
@item gnus-treat-date-iso8601 (head)
+@vindex gnus-treat-date-lapsed
@item gnus-treat-date-lapsed (head)
+@vindex gnus-treat-date-local
@item gnus-treat-date-local (head)
+@vindex gnus-treat-date-original
@item gnus-treat-date-original (head)
+@vindex gnus-treat-date-user-defined
@item gnus-treat-date-user-defined (head)
+@vindex gnus-treat-date-ut
@item gnus-treat-date-ut (head)
@xref{Article Date}.
+@vindex gnus-treat-from-picon
@item gnus-treat-from-picon (head)
+@vindex gnus-treat-mail-picon
@item gnus-treat-mail-picon (head)
+@vindex gnus-treat-newsgroups-picon
@item gnus-treat-newsgroups-picon (head)
@xref{Picons}.
+@vindex gnus-treat-display-smileys
@item gnus-treat-display-smileys (t, integer)
+@vindex gnus-treat-body-boundary
@item gnus-treat-body-boundary (head)
@vindex gnus-body-boundary-delimiter
@xref{Smileys}.
+@vindex gnus-treat-display-x-face
@item gnus-treat-display-x-face (head)
@xref{X-Face}.
+@vindex gnus-treat-display-face
@item gnus-treat-display-face (head)
@xref{Face}.
+@vindex gnus-treat-emphasize
@item gnus-treat-emphasize (t, head, integer)
+@vindex gnus-treat-fill-article
@item gnus-treat-fill-article (t, integer)
+@vindex gnus-treat-fill-long-lines
@item gnus-treat-fill-long-lines (t, integer)
+@vindex gnus-treat-hide-boring-headers
@item gnus-treat-hide-boring-headers (head)
+@vindex gnus-treat-hide-citation
@item gnus-treat-hide-citation (t, integer)
+@vindex gnus-treat-hide-citation-maybe
@item gnus-treat-hide-citation-maybe (t, integer)
+@vindex gnus-treat-hide-headers
@item gnus-treat-hide-headers (head)
+@vindex gnus-treat-hide-signature
@item gnus-treat-hide-signature (t, last)
+@vindex gnus-treat-strip-banner
@item gnus-treat-strip-banner (t, last)
+@vindex gnus-treat-strip-list-identifiers
@item gnus-treat-strip-list-identifiers (head)
@xref{Article Hiding}.
+@vindex gnus-treat-highlight-citation
@item gnus-treat-highlight-citation (t, integer)
+@vindex gnus-treat-highlight-headers
@item gnus-treat-highlight-headers (head)
+@vindex gnus-treat-highlight-signature
@item gnus-treat-highlight-signature (t, last, integer)
@xref{Article Highlighting}.
+@vindex gnus-treat-play-sounds
@item gnus-treat-play-sounds
+@vindex gnus-treat-translate
@item gnus-treat-translate
+@vindex gnus-treat-x-pgp-sig
@item gnus-treat-x-pgp-sig (head)
+@vindex gnus-treat-unfold-headers
@item gnus-treat-unfold-headers (head)
+@vindex gnus-treat-fold-headers
@item gnus-treat-fold-headers (head)
+@vindex gnus-treat-fold-newsgroups
@item gnus-treat-fold-newsgroups (head)
+@vindex gnus-treat-leading-whitespace
@item gnus-treat-leading-whitespace (head)
@xref{Article Header}.
@vindex pop3-movemail
@vindex pop3-leave-mail-on-server
If the @code{:program} and @code{:function} keywords aren't specified,
-@code{pop3-movemail} will be used. If the
-@code{pop3-leave-mail-on-server} is non-@code{nil} the mail is to be
-left on the @acronym{POP} server after fetching when using
-@code{pop3-movemail}. Note that POP servers maintain no state
-information between sessions, so what the client believes is there and
-what is actually there may not match up. If they do not, then the whole
-thing can fall apart and leave you with a corrupt mailbox.
+@code{pop3-movemail} will be used. If @code{pop3-leave-mail-on-server}
+is non-@code{nil} the mail is to be left on the @acronym{POP} server
+after fetching when using @code{pop3-movemail}. Note that POP servers
+maintain no state information between sessions, so what the client
+believes is there and what is actually there may not match up. If they
+do not, then you may get duplicate mails or the whole thing can fall
+apart and leave you with a corrupt mailbox.
-Here are some examples. Fetch from the default @acronym{POP} server,
-using the default user name, and default fetcher:
+Here are some examples for getting mail from a @acronym{POP} server.
+Fetch from the default @acronym{POP} server, using the default user
+name, and default fetcher:
@lisp
(pop)
@node Expiring Mail
@subsection Expiring Mail
@cindex article expiry
+@cindex expiring mail
Traditional mail readers have a tendency to remove mail articles when
you mark them as read, in some way. Gnus takes a fundamentally
@item nnimap-expunge-search-string
@cindex expunging
@vindex nnimap-expunge-search-string
+@cindex expiring @acronym{IMAP} mail
This variable contain the @acronym{IMAP} search command sent to server when
searching for articles eligible for expiring. The default is
messages instead of the internal article date. See section 6.4.4 of
RFC 2060 for more information on valid strings.
+However, if @code{nnimap-search-uids-not-since-is-evil}
+is true, this variable has no effect since the search logic
+is reversed, as described below.
+
@item nnimap-authinfo-file
@vindex nnimap-authinfo-file
seem to need this under some circumstances; it was reported that
Courier 1.7.1 did.
+@item nnimap-nov-is-evil
+@vindex nnimap-nov-is-evil
+@cindex Courier @acronym{IMAP} server
+@cindex @acronym{NOV}
+
+Never generate or use a local @acronym{NOV} database. Defaults to the
+value of @code{gnus-agent}.
+
+Using a @acronym{NOV} database usually makes header fetching much
+faster, but it uses the @code{UID SEARCH UID} command, which is very
+slow on some servers (notably some versions of Courier). Since the Gnus
+Agent caches the information in the @acronym{NOV} database without using
+the slow command, this variable defaults to true if the Agent is in use,
+and false otherwise.
+
+@item nnimap-search-uids-not-since-is-evil
+@vindex nnimap-search-uids-not-since-is-evil
+@cindex Courier @acronym{IMAP} server
+@cindex expiring @acronym{IMAP} mail
+
+Avoid the @code{UID SEARCH UID @var{message numbers} NOT SINCE
+@var{date}} command, which is slow on some @acronym{IMAP} servers
+(notably, some versions of Courier). Instead, use @code{UID SEARCH SINCE
+@var{date}} and prune the list of expirable articles within Gnus.
+
+When Gnus expires your mail (@pxref{Expiring Mail}), it starts with a
+list of expirable articles and asks the IMAP server questions like ``Of
+these articles, which ones are older than a week?'' While this seems
+like a perfectly reasonable question, some IMAP servers take a long time
+to answer it, since they seemingly go looking into every old article to
+see if it is one of the expirable ones. Curiously, the question ``Of
+@emph{all} articles, which ones are newer than a week?'' seems to be
+much faster to answer, so setting this variable causes Gnus to ask this
+question and figure out the answer to the real question itself.
+
+This problem can really sneak up on you: when you first configure Gnus,
+everything works fine, but once you accumulate a couple thousand
+messages, you start cursing Gnus for being so slow. On the other hand,
+if you get a lot of email within a week, setting this variable will
+cause a lot of network traffic between Gnus and the IMAP server.
+
@end table
@menu
@node Expiring in IMAP
@subsection Expiring in IMAP
-@cindex expiring imap mail
+@cindex expiring @acronym{IMAP} mail
Even though @code{nnimap} is not a proper @code{nnmail} derived back
end, it supports most features in regular expiring (@pxref{Expiring
your server must support permanent storage of client specific flags on
messages. Most do, fortunately.
+If expiring @acronym{IMAP} mail seems very slow, try setting the server
+variable @code{nnimap-search-uids-not-since-is-evil}.
+
@table @code
@item nnmail-expiry-wait
@findex gnus-agent-expire-group
@cindex agent expiry
@cindex Gnus agent expiry
-@cindex expiry
+@cindex expiry, in Gnus agent
The Agent back end, @code{nnagent}, doesn't handle expiry. Well, at
least it doesn't handle it like other back ends. Instead, there are
@file{~/.gnus.el} file to get started.
@lisp
-;;; @r{Define how Gnus is to fetch news. We do this over @acronym{NNTP}}
-;;; @r{from your ISP's server.}
+;; @r{Define how Gnus is to fetch news. We do this over @acronym{NNTP}}
+;; @r{from your ISP's server.}
(setq gnus-select-method '(nntp "news.your-isp.com"))
-;;; @r{Define how Gnus is to read your mail. We read mail from}
-;;; @r{your ISP's @acronym{POP} server.}
+;; @r{Define how Gnus is to read your mail. We read mail from}
+;; @r{your ISP's @acronym{POP} server.}
(setq mail-sources '((pop :server "pop.your-isp.com")))
-;;; @r{Say how Gnus is to store the mail. We use nnml groups.}
+;; @r{Say how Gnus is to store the mail. We use nnml groups.}
(setq gnus-secondary-select-methods '((nnml "")))
-;;; @r{Make Gnus into an offline newsreader.}
-;;; (gnus-agentize) ; @r{The obsolete setting.}
-;;; (setq gnus-agent t) ; @r{Now the default.}
+;; @r{Make Gnus into an offline newsreader.}
+;; (gnus-agentize) ; @r{The obsolete setting.}
+;; (setq gnus-agent t) ; @r{Now the default.}
@end lisp
That should be it, basically. Put that in your @file{~/.gnus.el} file,
@section Image Enhancements
XEmacs, as well as Emacs 21@footnote{Emacs 21 on MS Windows doesn't
-support images yet.}, is able to display pictures and stuff, so Gnus has
-taken advantage of that.
+support images, Emacs 22 does.} and up, are able to display pictures and
+stuff, so Gnus has taken advantage of that.
@menu
* X-Face:: Display a funky, teensy black-and-white image.
has image support the default action is to display the face before the
@code{From} header. If there's no native @code{X-Face} support, Gnus
will try to convert the @code{X-Face} header using external programs
-from the @code{pbmplus} package and friends. For XEmacs it's faster if
-XEmacs has been compiled with @code{X-Face} support. The default action
-under Emacs without image support is to fork off the @code{display}
-program.
+from the @code{pbmplus} package and friends, see below. For XEmacs it's
+faster if XEmacs has been compiled with @code{X-Face} support. The
+default action under Emacs without image support is to fork off the
+@code{display} program.
-On a GNU/Linux system, the @code{display} program is from the
+On a GNU/Linux system, the @code{display} program is included in the
ImageMagick package. For external conversion programs look for packages
with names like @code{netpbm}, @code{libgr-progs} and @code{compface}.
-
-The variable that controls this is the
-@code{gnus-article-x-face-command} variable. If this variable is a
+On Windows, you may use the packages @code{netpbm} and @code{compface}
+from @url{http://gnuwin32.sourceforge.net}. You need to add the
+@code{bin} directory to your @code{PATH} environment variable.
+@c In fact only the following DLLs and binaries seem to be required:
+@c compface1.dll uncompface.exe libnetpbm10.dll icontopbm.exe
+
+The variable @code{gnus-article-x-face-command} controls which programs
+are used to display the @code{X-Face} header. If this variable is a
string, this string will be executed in a sub-shell. If it is a
function, this function will be called with the face as the argument.
-If the @code{gnus-article-x-face-too-ugly} (which is a regexp) matches
-the @code{From} header, the face will not be shown.
+If @code{gnus-article-x-face-too-ugly} (which is a regexp) matches the
+@code{From} header, the face will not be shown.
(Note: @code{x-face} is used in the variable/function names, not
@code{xface}).
group specified by the variable @code{gnus-spam-process-destinations},
or the group parameter @code{spam-process-destination}. If these
variables are not set, the articles are left in their current group.
-If an article cannot not be moved (e.g., with a read-only backend such
+If an article cannot be moved (e.g., with a read-only backend such
as @acronym{NNTP}), it is copied.
If an article is moved to another group, it is processed again when
(gnus-registry-initialize)
(spam-initialize)
-;; @r{I like @kbd{C-s} for marking spam}
-(define-key gnus-summary-mode-map "\C-s" 'gnus-summary-mark-as-spam)
-
(setq
spam-log-to-registry t ; @r{for spam autodetection}
spam-use-BBDB t
the default value of @samp{spam}.
@end defvar
-@defvar spam-ifile-database-path
+@defvar spam-ifile-database
This is the filename for the ifile database. It is not specified by
default, so ifile will use its own default database name.
@end defun
Usually you would call @code{spam-stat-process-spam-directory} on a
-directory such as @file{~/Mail/mail/spam} (this usually corresponds
-the the group @samp{nnml:mail.spam}), and you would call
+directory such as @file{~/Mail/mail/spam} (this usually corresponds to
+the group @samp{nnml:mail.spam}), and you would call
@code{spam-stat-process-non-spam-directory} on a directory such as
-@file{~/Mail/mail/misc} (this usually corresponds the the group
+@file{~/Mail/mail/misc} (this usually corresponds to the group
@samp{nnml:mail.misc}).
When you are using @acronym{IMAP}, you won't have the mails available
@subsection Dired
@cindex dired
-@code{gnus-dired-minor-mode} provided some useful functions for dired
+@code{gnus-dired-minor-mode} provides some useful functions for dired
buffers. It is enabled with
@lisp
(add-hook 'dired-mode-hook 'turn-on-gnus-dired-mode)
@table @kbd
@item C-c C-m C-a
@findex gnus-dired-attach
+@cindex attachments, selection via dired
Send dired's marked files as an attachment (@code{gnus-dired-attach}).
You will be prompted for a message buffer.
later entry for more information about marks. Note that downgrading
isn't save in general.
+@item
+Lisp files are now installed in @file{.../site-lisp/gnus/} by default.
+It defaulted to @file{.../site-lisp/} formerly. In addition to this,
+the new installer issues a warning if other Gnus installations which
+will shadow the latest one are detected. You can then remove those
+shadows manually or remove them using @code{make
+remove-installed-shadows}.
+
@item
New @file{make.bat} for compiling and installing Gnus under MS Windows
@item
The option @code{mm-fill-flowed} can be used to disable treatment of
``format=flowed'' messages. Also, flowed text is disabled when sending
-inline PGP signed messages. (New in Gnus 5.10.7)
+inline PGP signed messages. @xref{Flowed text, , Flowed text,
+emacs-mime, The Emacs MIME Manual}. (New in Gnus 5.10.7)
+@c This entry is also present in the node "No Gnus".
@item
Gnus supports the generation of RFC 2298 Disposition Notification requests.