\input texinfo @c -*-texinfo-*-
@setfilename gnus
-@settitle Semi-gnus 6.10.055 Manual
+@settitle Semi-gnus 6.10.056 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
\thispagestyle{empty}
-Copyright \copyright{} 1995,96,97,98 Free Software Foundation, Inc.
+Copyright \copyright{} 1995,96,97,98,99 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
This file documents gnus, the GNU Emacs newsreader.
-Copyright (C) 1995,96 Free Software Foundation, Inc.
+Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@tex
@titlepage
-@title Semi-gnus 6.10.055 Manual
+@title Semi-gnus 6.10.056 Manual
@author by Lars Magne Ingebrigtsen
@page
API. So Semi-gnus does not discriminate various language communities.
Oh, if you are a Klingon, please wait Unicode Next Generation.
-This manual corresponds to Semi-gnus 6.10.055.
+This manual corresponds to Semi-gnus 6.10.056.
@end ifinfo
This might take quite a while, especially if you subscribe to lots of
groups from different @sc{nntp} servers. Also @pxref{Group Levels};
@code{gnus-activate-level} also affects activation of foreign
-newsgroups.
+newsgroups.
@node Group Parameters
@item charset
Elements that look like @code{(charset . iso-8859-1)} will make
-@code{iso-8859-1} the default charset; that is, the charset that will be
+@code{iso-8859-1} the default charset; that is, the charset that will be
used for all articles that do not specify a charset.
@item @var{(variable form)}
like this in the group parameters:
@example
-(posting-style
- (name "Funky Name")
+(posting-style
+ (name "Funky Name")
(signature "Funky Signature"))
@end example
(@pxref{Process/Prefix}).
When given a symbolic prefix (@pxref{Symbolic Prefixes}), all these
-commands will sort in reverse order.
+commands will sort in reverse order.
You can also sort a subset of the groups:
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.
+topic.
This command uses the process/prefix convention
(@pxref{Process/Prefix}).
@kindex M-TAB (Topic)
@findex gnus-topic-unindent
``Un-indent'' the current topic so that it becomes a sub-topic of the
-parent of its current parent (@code{gnus-topic-unindent}).
+parent of its current parent (@code{gnus-topic-unindent}).
@item RET
@kindex RET (Topic)
@item R
This misleadingly named specifier is the @dfn{secondary mark}. This
mark will say whether the article has been replied to, has been cached,
-or has been saved.
+or has been saved.
@item i
Score as a number (@pxref{Scoring}).
It is likely that you do not want caching on all groups. For instance,
if your @code{nnml} mail is located under your home directory, it makes no
sense to cache it somewhere else under your home directory. Unless you
-feel that it's neat to use twice as much space.
+feel that it's neat to use twice as much space.
To limit the caching, you could set @code{gnus-cacheable-groups} to a
regexp of groups to cache, @samp{^nntp} for instance, or set the
@cindex highlighting
Not only do you want your article buffer to look like fruit salad, but
-you want it to look like technicolor fruit salad.
+you want it to look like technicolor fruit salad.
@table @kbd
@findex gnus-article-hide
Do quite a lot of hiding on the article buffer
(@kbd{gnus-article-hide}). In particular, this function will hide
-headers, PGP, cited text and the signature.
+headers, PGP, cited text and the signature.
@item W W h
@kindex W W h (Summary)
@findex gnus-summary-stop-page-breaking
Remove page breaks from the current article
(@code{gnus-summary-stop-page-breaking}). @xref{Misc Article} for page
-delimiters.
+delimiters.
@item W r
@kindex W r (Summary)
@item W m
@kindex W m (Summary)
@findex gnus-summary-toggle-mime
-Toggle whether to display the article as @sc{mime} message
+Toggle whether to run the article through @sc{mime} before displaying
(@code{gnus-summary-toggle-mime}).
@item W o
@item W w
@kindex W w (Summary)
@findex gnus-article-fill-cited-article
-Do word wrap (@code{gnus-article-fill-cited-article}).
+Do word wrap (@code{gnus-article-fill-cited-article}).
You can give the command a numerical prefix to specify the width to use
when filling.
+@item W q
+@kindex W q (Summary)
+@findex gnus-article-fill-long-lines
+Fill long lines (@code{gnus-article-fill-long-lines}).
+
@item W c
@kindex W c (Summary)
@findex gnus-article-remove-cr
@item W M v
@kindex W M v (Summary)
View all the @sc{mime} parts in the current article
-(@code{gnus-mime-view-all-parts}).
+(@code{gnus-mime-view-all-parts}).
@end table
@item gnus-article-mime-part-function
@vindex gnus-article-mime-part-function
-For each @sc{mime} part, this function will be called with the @sc{mime}
+For each @sc{mime} part, this function will be called with the @sc{mime}
handle as the parameter. The function is meant to be used to allow
users to gather information from the article (e. g., add Vcard info to
-the bbdb database) or to do actions based on parts (e. g., automatically
+the bbdb database) or to do actions based on parts (e. g., automatically
save all jpegs into some directory).
Here's an example function the does the latter:
Unpick the thread or article
(@code{gnus-pick-unmark-article-or-thread}). If the variable
@code{gnus-thread-hide-subtree} is true, then this key unpicks the
-thread if used at the first article of the thread. Otherwise it unpicks
+thread if used at the first article of the thread. Otherwise it unpicks
just the article. You can give this key a numerical prefix to unpick
the thread or article at that line.
@cindex article customization
A slew of functions for customizing how the articles are to look like
-exist. You can call these functions interactively, or you can have them
+exist. You can call these functions interactively, or you can have them
called automatically when you select the articles.
To have them called automatically, you should set the corresponding
-``treatment'' variable. For instance, to have headers hidden, you'd set
+``treatment'' variable. For instance, to have headers hidden, you'd set
@code{gnus-treat-hide-headers}. Below is a list of variables that can
be set, but first we discuss the values these variables can have.
than this number.
@item
-A sexp: Do this treatment on all body parts where the sexp evals to a
-non-@code{nil} value.
+A list:
+
+The list is evaluated recursively. The first element of the list is a
+predicate. The following predicates are recognized: @code{or},
+@code{and}, @code{not} and @code{typep}. Here's an example:
+
+@lisp
+(or last
+ (typep "text/x-vcard"))
+@end lisp
@end enumerate
considered to contain just a single part.
@vindex gnus-article-treat-types
-Are the treatments applied to all sorts of multipart parts? Yes, if you
+Are the treatments applied to all sorts of multipart parts? Yes, if you
want to, but by default, only @samp{text/plain} parts are given the
treatment. This is controlled by the @code{gnus-article-treat-types}
-variable, which is a list of regular expressions that are matched to the
-type of the part.
+variable, which is a list of regular expressions that are matched to the
+type of the part. This variable is ignored if the value of the
+controlling variable is a predicate list, as described above.
The following treatment options are available. The easiest way to
-customize this is to examine the @code{gnus-article-treat} customization
+customize this is to examine the @code{gnus-article-treat} customization
group.
@table @code
@item gnus-treat-strip-pem
@item gnus-treat-highlight-headers
@item gnus-treat-highlight-citation
-@item gnus-treat-highlight-signature
-@item gnus-treat-date-ut
-@item gnus-treat-date-local
-@item gnus-treat-date-lapsed
-@item gnus-treat-date-original
+@item gnus-treat-highlight-signature
+@item gnus-treat-date-ut
+@item gnus-treat-date-local
+@item gnus-treat-date-lapsed
+@item gnus-treat-date-original
@item gnus-treat-strip-trailing-blank-lines
@item gnus-treat-strip-leading-blank-lines
@item gnus-treat-strip-multiple-blank-lines
-@item gnus-treat-strip-blank-lines
-@item gnus-treat-overstrike
-@item gnus-treat-display-xface
-@item gnus-treat-display-smileys
+@item gnus-treat-strip-blank-lines
+@item gnus-treat-overstrike
+@item gnus-treat-display-xface
+@item gnus-treat-display-smileys
@item gnus-treat-display-picons
@end table
Finally, if you want to always post using the same select method as
you're reading from (which might be convenient if you're reading lots of
groups from different private servers), you can set this variable to
-@code{current}.
+@code{current}.
@node Mail and Post
@menu
* Getting Started Reading Mail:: A simple cookbook example.
* Splitting Mail:: How to create mail groups.
+* Mail Sources:: How to tell Gnus where to get mail from.
* Mail Backend Variables:: Variables for customizing mail handling.
* Fancy Mail Splitting:: Gnus can do hairy splitting of incoming mail.
-* Mail and Procmail:: Reading mail groups that procmail create.
* Incorporating Old Mail:: What about the old mail you have?
* Expiring Mail:: Getting rid of unwanted mail.
* Washing Mail:: Removing gruft from the mail you get.
@findex nnmail-split-header-length-limit
Header lines may be arbitrarily long. However, the longer a line is,
the longer it takes to match them. Very long lines may lead to Gnus
-taking forever to split the mail, so Gnus excludes lines that are longer
+taking forever to split the mail, so Gnus excludes lines that are longer
than @code{nnmail-split-header-length-limit} (which defaults to 1024).
@kindex M-x nnmail-split-history
month's rent money.
-@node Mail Backend Variables
-@subsection Mail Backend Variables
+@node Mail Sources
+@subsection Mail Sources
-These variables are (for the most part) pertinent to all the various
-mail backends.
+Mail can be gotten from many different sources---the mail spool, from a
+POP mail server, or from a procmail directory, for instance.
+
+@menu
+* Mail Source Specifiers:: How to specify what a mail source is.
+* Mail Source Customization:: Some variables that influence things.
+* Fetching Mail:: Using the mail source specifiers.
+@end menu
+
+
+@node Mail Source Specifiers
+@subsubsection Mail Source Specifiers
+@cindex POP
+@cindex mail server
+@cindex procmail
+@cindex mail spool
+@cindex mail source
+
+You tell Gnus how to fetch mail by creating a @dfn{mail source
+specifier}.
+
+Here's an example:
+
+@lisp
+(pop :server "pop3.mailserver.com" :user "myname")
+@end lisp
+
+As can be observed, a mail source specifier is a list where the first
+element is a @dfn{mail source type}, followed by an arbitrary number of
+@dfn{keywords}. Keywords that are not explicitly specified are given
+default values.
+
+The following mail source types are available:
@table @code
-@vindex nnmail-read-incoming-hook
-@item nnmail-read-incoming-hook
-The mail backends all call this hook after reading new mail. You can
-use this hook to notify any mail watch programs, if you want to.
+@item file
+Get mail from a single file; typically from the mail spool.
+
+Keywords:
+
+@table @code
+@item :path
+The path of the file. Defaults to the value of the @code{MAIL}
+environment variable or @file{/usr/mail/spool/user-name}.
+@end table
+
+An example file mail source:
+
+@lisp
+(file :path "/usr/spool/mail/user-name")
+@end lisp
+
+Or using the default path:
+
+@lisp
+(file)
+@end lisp
+
+@item directory
+Get mail from several files in a directory. This is typically used when
+you have procmail split the incoming mail into several files.
+
+Keywords:
+
+@table @code
+@item :path
+The path of the directory where the files are. There is no default
+value.
+
+@item :suffix
+Only files ending with this suffix are used. The default is
+@samp{.spool}.
+@end table
+
+An example directory mail source:
+
+@lisp
+(directory :path "/home/user-name/procmail-dir/"
+ :suffix ".prcml")
+@end lisp
+
+@item pop
+Get mail from a POP server.
+
+Keywords:
+
+@table @code
+@item :server
+The name of the POP server. The default is taken from the
+@code{MAILHOST} environment variable.
+
+@item :port
+The port number of the POP server. The default is @samp{pop3}.
+
+@item :user
+The user name to give to the POP server. The default is the login
+name.
+
+@item :password
+The password to give to the POP server. If not specified, the user is
+prompted.
+@end table
+
+@end table
+
+
+@node Mail Source Customization
+@subsubsection Mail Source Customization
+
+The following is a list of variables that influence how the mail is
+fetched. You would normally not need to set or change any of these
+variables.
+
+@table @code
+@item mail-source-movemail-program
+@vindex mail-source-movemail-program
+A command to be executed to move mail from the inbox. The default is
+@samp{movemail}.
+
+This can also be a function. In that case, the function will be
+called with two parameters -- the name of the INBOX file, and the file
+to be moved to.
+
+@item mail-source-movemail-args
+@vindex mail-source-movemail-args
+Extra arguments to give to the command described above.
+
+@item mail-source-crash-box
+@vindex mail-source-crash-box
+File where mail will be stored while processing it. The default is
+@file{~/.emacs-mail-crash-box}.
+
+@item mail-source-delete-incoming
+@vindex mail-source-delete-incoming
+If non-@code{nil}, delete incoming files after handling them.
+
+@item mail-source-directory
+@vindex mail-source-directory
+Directory where files (if any) will be stored. The default is
+@file{~/Mail/}. At present, the only thing this is used for is to say
+where the incoming files will be stored if the previous variable is
+@code{nil}.
+
+@item mail-source-default-file-modes
+@vindex mail-source-default-file-modes
+All new mail files will get this file mode. The default is 384.
+
+@end table
+
+
+@node Fetching Mail
+@subsubsection Fetching Mail
+
+The way to actually tell Gnus where to get new mail from is to set
+@code{nnmail-spool-file} to a list of mail source specifiers
+(@pxref{Mail Source Specifiers}).
+
+If this variable is @code{nil}, the mail backends will never attempt to
+fetch mail by themselves.
+
+If you want to fetch mail both from your local spool as well as a POP
+mail server, you'd say something like:
+
+@lisp
+(setq mail-spool-file
+ '((file)
+ (pop :server "pop3.mail.server"
+ :password "secret")))
+@end lisp
+
+Or, if you don't want to use any of the keyword defaults:
+
+@lisp
+(setq mail-spool-file
+ '((file :path "/var/spool/mail/user-name")
+ (pop :server "pop3.mail.server"
+ :user "user-name"
+ :port "pop3"
+ :password "secret")))
+@end lisp
-@vindex nnmail-spool-file
-@item nnmail-spool-file
-@cindex POP mail
-@cindex MAILHOST
-@cindex movemail
-@vindex nnmail-pop-password
-@vindex nnmail-pop-password-required
-The backends will look for new mail in this file. If this variable is
-@code{nil}, the mail backends will never attempt to fetch mail by
-themselves. If you are using a POP mail server and your name is
-@samp{larsi}, you should set this variable to @samp{po:larsi}. If
-your name is not @samp{larsi}, you should probably modify that
-slightly, but you may have guessed that already, you smart & handsome
-devil! You can also set this variable to @code{pop}, and Gnus will try
-to figure out the POP mail string by itself. In any case, Gnus will
-call @code{movemail} which will contact the POP server named in the
-@code{MAILHOST} environment variable. If the POP server needs a
-password, you can either set @code{nnmail-pop-password-required} to
-@code{t} and be prompted for the password, or set
-@code{nnmail-pop-password} to the password itself.
-
-@code{nnmail-spool-file} can also be a list of mailboxes.
-
-Your Emacs has to have been configured with @samp{--with-pop} before
-compilation. This is the default, but some installations have it
-switched off.
When you use a mail backend, Gnus will slurp all your mail from your
inbox and plonk it down in your home directory. Gnus doesn't move any
pentagram, lightened the candles, and sacrificed the goat, you really
shouldn't be too surprised when Gnus moves your mail.
-@vindex nnmail-use-procmail
-@vindex nnmail-procmail-suffix
-@item nnmail-use-procmail
-If non-@code{nil}, the mail backends will look in
-@code{nnmail-procmail-directory} for incoming mail. All the files in
-that directory that have names ending in @code{nnmail-procmail-suffix}
-will be considered incoming mailboxes, and will be searched for new
-mail.
-@vindex nnmail-crash-box
-@item nnmail-crash-box
-When a mail backend reads a spool file, mail is first moved to this
-file, which is @file{~/.gnus-crash-box} by default. If this file
-already exists, it will always be read (and incorporated) before any
-other spool files.
+
+@node Mail Backend Variables
+@subsection Mail Backend Variables
+
+These variables are (for the most part) pertinent to all the various
+mail backends.
+
+@table @code
+@vindex nnmail-read-incoming-hook
+@item nnmail-read-incoming-hook
+The mail backends all call this hook after reading new mail. You can
+use this hook to notify any mail watch programs, if you want to.
@vindex nnmail-split-hook
@item nnmail-split-hook
(lambda () (set-default-file-modes 551)))
@end lisp
-@item nnmail-tmp-directory
-@vindex nnmail-tmp-directory
-This variable says where to move incoming mail to -- while processing
-it. This is usually done in the same directory that the mail backend
-inhabits (e.g., @file{~/Mail/}), but if this variable is non-@code{nil},
-it will be used instead.
-
-@item nnmail-movemail-program
-@vindex nnmail-movemail-program
-This program is executed to move mail from the user's inbox to her home
-directory. The default is @samp{movemail}.
-
-This can also be a function. In that case, the function will be called
-with two parameters -- the name of the inbox, and the file to be moved
-to.
-
-@item nnmail-delete-incoming
-@vindex nnmail-delete-incoming
-@cindex incoming mail files
-@cindex deleting incoming files
-If non-@code{nil}, the mail backends will delete the temporary incoming
-file after splitting mail into the proper groups. This is @code{t} by
-default.
-
-@c This is @code{nil} by
-@c default for reasons of security.
-
-@c Since Red Gnus is an alpha release, it is to be expected to lose mail.
-(No Gnus release since (ding) Gnus 0.10 (or something like that) have
-lost mail, I think, but that's not the point. (Except certain versions
-of Red Gnus.)) By not deleting the Incoming* files, one can be sure not
-to lose mail -- if Gnus totally whacks out, one can always recover what
-was lost.
-
-You may delete the @file{Incoming*} files at will.
-
@item nnmail-use-long-file-names
@vindex nnmail-use-long-file-names
If non-@code{nil}, the mail backends will use long file and directory
@item
@samp{group}: If the split is a string, that will be taken as a group
name. Normal regexp match expansion will be done. See below for
-examples.
+examples.
@item
@var{(FIELD VALUE SPLIT)}: If the split is a list, the first element of
groupings 1 through 9.
-@node Mail and Procmail
-@subsection Mail and Procmail
-@cindex procmail
-
-@cindex slocal
-@cindex elm
-Many people use @code{procmail} (or some other mail filter program or
-external delivery agent---@code{slocal}, @code{elm}, etc) to split
-incoming mail into groups. If you do that, you should set
-@code{nnmail-spool-file} to @code{procmail} to ensure that the mail
-backends never ever try to fetch mail by themselves.
-
-If you have a combined @code{procmail}/POP/mailbox setup, you can do
-something like the following:
-
-@vindex nnmail-use-procmail
-@lisp
-(setq nnmail-use-procmail t)
-(setq nnmail-spool-file
- '("/usr/spool/mail/my-name" "po:my-name"))
-@end lisp
-
-This also means that you probably don't want to set
-@code{nnmail-split-methods} either, which has some, perhaps, unexpected
-side effects.
-
-When a mail backend is queried for what groups it carries, it replies
-with the contents of that variable, along with any groups it has figured
-out that it carries by other means. None of the backends, except
-@code{nnmh}, actually go out to the disk and check what groups actually
-exist. (It's not trivial to distinguish between what the user thinks is
-a basis for a newsgroup and what is just a plain old file or directory.)
-
-This means that you have to tell Gnus (and the backends) by hand what
-groups exist.
-
-Let's take the @code{nnmh} backend as an example:
-
-The folders are located in @code{nnmh-directory}, say, @file{~/Mail/}.
-There are three folders, @file{foo}, @file{bar} and @file{mail.baz}.
-
-Go to the group buffer and type @kbd{G m}. When prompted, answer
-@samp{foo} for the name and @samp{nnmh} for the method. Repeat
-twice for the two other groups, @samp{bar} and @samp{mail.baz}. Be sure
-to include all your mail groups.
-
-That's it. You are now set to read your mail. An active file for this
-method will be created automatically.
-
-@vindex nnmail-procmail-suffix
-@vindex nnmail-procmail-directory
-If you use @code{nnfolder} or any other backend that store more than a
-single article in each file, you should never have procmail add mails to
-the file that Gnus sees. Instead, procmail should put all incoming mail
-in @code{nnmail-procmail-directory}. To arrive at the file name to put
-the incoming mail in, append @code{nnmail-procmail-suffix} to the group
-name. The mail backends will read the mail from these files.
-
-@vindex nnmail-resplit-incoming
-When Gnus reads a file called @file{mail.misc.spool}, this mail will be
-put in the @code{mail.misc}, as one would expect. However, if you want
-Gnus to split the mail the normal way, you could set
-@code{nnmail-resplit-incoming} to @code{t}.
-
-@vindex nnmail-keep-last-article
-If you use @code{procmail} to split things directly into an @code{nnmh}
-directory (which you shouldn't do), you should set
-@code{nnmail-keep-last-article} to non-@code{nil} to prevent Gnus from
-ever expiring the final article (i.e., the article with the highest
-article number) in a mail newsgroup. This is quite, quite important.
-
-Here's an example setup: The incoming spools are located in
-@file{~/incoming/} and have @samp{""} as suffixes (i.e., the incoming
-spool files have the same names as the equivalent groups). The
-@code{nnfolder} backend is to be used as the mail interface, and the
-@code{nnfolder} directory is @file{~/fMail/}.
-
-@lisp
-(setq nnfolder-directory "~/fMail/")
-(setq nnmail-spool-file 'procmail)
-(setq nnmail-procmail-directory "~/incoming/")
-(setq gnus-secondary-select-methods '((nnfolder "")))
-(setq nnmail-procmail-suffix "")
-@end lisp
-
-
@node Incorporating Old Mail
@subsection Incorporating Old Mail
@vindex nnfolder-delete-mail-hook
Hook run in a buffer narrowed to the message that is to be deleted.
This function can be used to copy the message to somewhere else, or to
-extract some information from it before removing it.
+extract some information from it before removing it.
@end table
or you could append your predicate to the predefined
@code{gnus-category-predicate-alist} in your @file{~/.gnus.el} or
wherever. (Note: this would have to be at a point *after*
-@code{gnus-agent} has been loaded via @code{(gnus-agentize)})
+@code{gnus-agent} has been loaded via @code{(gnus-agentize)})
@lisp
(defvar gnus-category-predicate-alist
The above predicates apply to *all* the groups which belong to the
category. However, if you wish to have a specific predicate for an
individual group within a category, or you're just too lazy to set up a
-new category, you can enter a group's individual predicate in it's group
+new category, you can enter a group's individual predicate in it's group
parameters like so:
@lisp
The outer parenthesis required in the category specification are not
entered here as, not being in dotted pair notation, the value of the
-predicate is assumed to be a list.
-
+predicate is assumed to be a list.
+
Now, the syntax of the download score is the same as the syntax of
normal score files, except that all elements that require actually
three forms:
@enumerate
-@item
+@item
Score rule
This has the same syntax as a normal gnus score file except only a
example:
@itemize @bullet
-@item
+@item
Category specification
@lisp
-(("from"
+(("from"
("Lars Ingebrigtsen" 1000000 nil s))
("lines"
(500 -100 nil <)))
@end lisp
-@item
+@item
Group Parameter specification
@lisp
-(agent-score ("from"
+(agent-score ("from"
("Lars Ingebrigtsen" 1000000 nil s))
("lines"
(500 -100 nil <)))
Again, note the omission of the outermost parenthesis here.
@end itemize
-@item
+@item
Agent score file
These score files must *only* contain the permitted scoring keywords
example:
@itemize @bullet
-@item
+@item
Category specification
@lisp
("~/News/agent.SCORE" "~/News/agent.group.SCORE")
@end lisp
-@item
+@item
Group Parameter specification
@lisp
about parenthesis.
@end itemize
-@item
+@item
Use @code{normal} score files
If you dont want to maintain two sets of scoring rules for a group, and
relate to one of the permitted subset of scoring keywords.
@itemize @bullet
-@item
+@item
Category Specification
@lisp
file
@end lisp
-@item
+@item
Group Parameter specification
@lisp
@end lisp
@end itemize
@end enumerate
-
+
@node The Category Buffer
@subsubsection The Category Buffer
@kindex J s (Agent Group)
@findex gnus-agent-fetch-session
Fetch all eligible articles in all groups
-(@code{gnus-agent-fetch-session}).
+(@code{gnus-agent-fetch-session}).
@item J S
@kindex J S (Agent Group)
Remove the downloading mark from the article
(@code{gnus-agent-unmark-article}).
-@item @@
+@item @@
@kindex @@ (Agent Summary)
@findex gnus-agent-toggle-mark
Toggle whether to download the article (@code{gnus-agent-toggle-mark}).
@samp{%1<}, you'll get @code{gnus-balloon-face-1} and so on. The
@code{gnus-balloon-face-*} variables should be either strings or
symbols naming functions that return a string. Under @code{balloon-help-mode},
-when the mouse passes over text with this property set, a balloon window
+when the mouse passes over text with this property set, a balloon window
will appear and display the string. Please refer to the doc string of
@code{balloon-help-mode} for more information on this.
(group 1.0)))))
@end lisp
-One common desire for a multiple frame split is to have a separate frame
-for composing mail and news while leaving the original frame intact. To
+One common desire for a multiple frame split is to have a separate frame
+for composing mail and news while leaving the original frame intact. To
accomplish that, something like the following can be done:
@lisp
@item gnus-article-display-picons
@findex gnus-article-display-picons
Looks up and displays the picons for the author and the author's domain
-in the @code{gnus-picons-display-where} buffer.
+in the @code{gnus-picons-display-where} buffer.
@item gnus-picons-article-display-x-face
@findex gnus-article-display-picons
-Decodes and displays the X-Face header if present.
+Decodes and displays the X-Face header if present.
@end table
@table @emph
-@item MIME
-Gnus does not yet fully handle MIME, and this standard-to-be seems to
-think that MIME is the bees' knees, so we have major breakage here.
-
@item X-Newsreader
This is considered to be a ``vanity header'', while I consider it to be
consumer information. After seeing so many badly formatted articles
@end itemize
This Gnus version will absolutely not work on any Emacsen older than
-that. Not reliably, at least. Older versions of Gnus may work on older
+that. Not reliably, at least. Older versions of Gnus may work on older
Emacs versions.
There are some vague differences between Gnus on the various
@itemize @bullet
@item
-Native @sc{mime} support is something that should be done.
-
-@item
-Really do unbinhexing.
-
-@item
I would like the zombie-page to contain an URL to the source of the
latest version of gnus or some explanation on where to find it.
@item
warn user about `=' redirection of a group in the active file?
@item
- really unbinhex binhex files.
-@item
take over the XEmacs menubar and offer a toggle between the XEmacs
bar and the Gnus bar.
@item
@item
Group parameters and summary commands for un/subscribing to mailing
-lists.
+lists.
@item
Introduce nnmail-home-directory.
@end iftex
@c End:
-
\input texinfo @c -*-texinfo-*-
@setfilename message
-@settitle Message 6.10.055 Manual
+@settitle Message 6.10.056 Manual
@synindex fn cp
@synindex vr cp
@synindex pg cp
This file documents Message, the Emacs message composition mode.
-Copyright (C) 1996,97,98 Free Software Foundation, Inc.
+Copyright (C) 1996,97,98,99 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@tex
@titlepage
-@title Message 6.10.055 Manual
+@title Message 6.10.056 Manual
@author by Lars Magne Ingebrigtsen
@page
@vskip 0pt plus 1filll
-Copyright @copyright{} 1996 Free Software Foundation, Inc.
+Copyright @copyright{} 1996,97,98,99 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
* Key Index:: List of Message mode keys.
@end menu
-This manual corresponds to Message 6.10.055. Message is
+This manual corresponds to Message 6.10.056. Message is
distributed with the Gnus distribution bearing the same version number
as this manual.
@section New Mail Message
@findex message-mail
-The @code{message-mail} command pops up a new message buffer.
+The @code{message-mail} command pops up a new message buffer.
Two optional parameters are accepted: The first will be used as the
@code{To} header and the second as the @code{Subject} header. If these
@section New News Message
@findex message-news
-The @code{message-news} command pops up a new message buffer.
+The @code{message-news} command pops up a new message buffer.
This function accepts two optional parameters. The first will be used
as the @code{Newsgroups} header and the second as the @code{Subject}
(setq message-reply-to-function
(lambda ()
(cond ((equal (mail-fetch-field "from") "somebody")
- (mail-fetch-field "sender"))
- (t
+ (mail-fetch-field "sender"))
+ (t
nil))))
@end lisp
should be a cons, where the car should be the name of an header
(eg. @code{Cc}) and the cdr should be the header value
(eg. @samp{larsi@@ifi.uio.no}). All these headers will be inserted into
-the head of the outgoing mail.
+the head of the outgoing mail.
@node Wide Reply
Message uses the normal methods to determine where wide replies are to go,
but you can change the behavior to suit your needs by fiddling with the
@code{message-wide-reply-to-function}. It is used in the same way as
-@code{message-reply-to-function} (@pxref{Reply}).
+@code{message-reply-to-function} (@pxref{Reply}).
@findex rmail-dont-reply-to-names
Addresses that match the @code{rmail-dont-reply-to-names} regular
@item message-forward-start-separator
@vindex message-forward-start-separator
Delimiter inserted before forwarded messages. The default is@*
-@samp{------- Start of forwarded message -------\n}.
+@samp{------- Start of forwarded message -------\n}.
@vindex message-forward-end-separator
@item message-forward-end-separator
@vindex message-forward-end-separator
Delimiter inserted after forwarded messages. The default is@*
-@samp{------- End of forwarded message -------\n}.
+@samp{------- End of forwarded message -------\n}.
@item message-signature-before-forwarded-message
@vindex message-signature-before-forwarded-message
@item message-included-forward-headers
@vindex message-included-forward-headers
-Regexp matching header lines to be included in forwarded messages.
+Regexp matching header lines to be included in forwarded messages.
@item message-make-forward-subject-function
@vindex message-make-forward-subject-function
@item message-wash-forwarded-subjects
@vindex message-wash-forwarded-subjects
If this variable is @code{t}, the subjects of forwarded messages have
-the evidence of previous forwards (such as @samp{Fwd:}, @samp{Re:},
+the evidence of previous forwards (such as @samp{Fwd:}, @samp{Re:},
@samp{(fwd)}) removed before the new subject is
constructed. The default value is @code{nil}.
@vindex message-ignored-resent-headers
Headers that match the @code{message-ignored-resent-headers} regexp will
be removed before sending the message. The default is
-@samp{^Return-receipt}.
+@samp{^Return-receipt}.
@node Bouncing
bounced mail message, pop up a message buffer stripped of the bounce
information. A @dfn{bounced message} is typically a mail you've sent
out that has been returned by some @code{mailer-daemon} as
-undeliverable.
+undeliverable.
@vindex message-ignored-bounced-headers
Headers that match the @code{message-ignored-bounced-headers} regexp
* Header Commands:: Commands for moving to headers.
* Movement:: Moving around in message buffers.
* Insertion:: Inserting things into message buffers.
+* MIME:: @sc{mime} considerations.
* Various Commands:: Various things.
* Sending:: Actually sending the message.
* Mail Aliases:: How to use mail aliases.
Describe the message mode.
@item C-c C-f C-t
-@kindex C-c C-f C-t
+@kindex C-c C-f C-t
@findex message-goto-to
Go to the @code{To} header (@code{message-goto-to}).
@item C-c C-f C-b
-@kindex C-c C-f C-b
+@kindex C-c C-f C-b
@findex message-goto-bcc
Go to the @code{Bcc} header (@code{message-goto-bcc}).
@item C-c C-f C-f
-@kindex C-c C-f C-f
+@kindex C-c C-f C-f
@findex message-goto-fcc
Go to the @code{Fcc} header (@code{message-goto-fcc}).
@item C-c C-f C-c
-@kindex C-c C-f C-c
+@kindex C-c C-f C-c
@findex message-goto-cc
Go to the @code{Cc} header (@code{message-goto-cc}).
@item C-c C-f C-s
-@kindex C-c C-f C-s
+@kindex C-c C-f C-s
@findex message-goto-subject
Go to the @code{Subject} header (@code{message-goto-subject}).
@item C-c C-f C-r
-@kindex C-c C-f C-r
+@kindex C-c C-f C-r
@findex message-goto-reply-to
Go to the @code{Reply-To} header (@code{message-goto-reply-to}).
@item C-c C-f C-n
-@kindex C-c C-f C-n
+@kindex C-c C-f C-n
@findex message-goto-newsgroups
Go to the @code{Newsgroups} header (@code{message-goto-newsgroups}).
@item C-c C-f C-d
-@kindex C-c C-f C-d
+@kindex C-c C-f C-d
@findex message-goto-distribution
Go to the @code{Distribution} header (@code{message-goto-distribution}).
@item C-c C-f C-o
-@kindex C-c C-f C-o
+@kindex C-c C-f C-o
@findex message-goto-followup-to
Go to the @code{Followup-To} header (@code{message-goto-followup-to}).
@item C-c C-f C-k
-@kindex C-c C-f C-k
+@kindex C-c C-f C-k
@findex message-goto-keywords
Go to the @code{Keywords} header (@code{message-goto-keywords}).
@item C-c C-f C-u
-@kindex C-c C-f C-u
+@kindex C-c C-f C-u
@findex message-goto-summary
Go to the @code{Summary} header (@code{message-goto-summary}).
@table @kbd
@item C-c C-b
-@kindex C-c C-b
+@kindex C-c C-b
@findex message-goto-body
Move to the beginning of the body of the message
-(@code{message-goto-body}).
+(@code{message-goto-body}).
@item C-c C-i
-@kindex C-c C-i
+@kindex C-c C-i
@findex message-goto-signature
Move to the signature of the message (@code{message-goto-signature}).
@table @kbd
@item C-c C-y
-@kindex C-c C-y
+@kindex C-c C-y
@findex message-yank-original
Yank the message in the buffer @code{gnus-article-copy} into the message
buffer. Normally @code{gnus-article-copy} is what you are replying to
(@code{message-yank-original}).
@item C-c C-q
-@kindex C-c C-q
+@kindex C-c C-q
@findex message-fill-yanked-message
Fill the yanked message (@code{message-fill-yanked-message}). Warning:
Can severely mess up the yanked text if its quoting conventions are
all right.
@item C-c C-w
-@kindex C-c C-w
+@kindex C-c C-w
@findex message-insert-signature
Insert a signature at the end of the buffer
-(@code{message-insert-signature}).
+(@code{message-insert-signature}).
@item C-c M-h
@kindex C-c M-h
that you are silly and have nothing important to say.
+@node MIME
+@section MIME
+@cindex MML
+@cindex MIME
+@cindex multipart
+@cindex attachment
+
+Message is a @sc{mime}-compliant posting agent. The user generally
+doesn't have to do anything to make the @sc{mime} happen---Message will
+automatically add the @code{Content-Type} and
+@code{Content-Transfer-Encoding} headers.
+
+The most typical thing users want to use the multipart things in
+@sc{mime} for is to add ``attachments'' to mail they send out. This can
+be done with the @code{C-c C-a} command, which will prompt for a file
+name and a @sc{mime} type.
+
+You can also create arbitrarily complex multiparts using the MML
+language (@pxref{Composing, , Composing, emacs-mime, The Emacs MIME
+Manual}).
+
@node Various Commands
@section Various Commands
@table @kbd
@item C-c C-r
-@kindex C-c C-r
+@kindex C-c C-r
@findex message-caesar-buffer-body
Caesar rotate (aka. rot13) the current message
(@code{message-caesar-buffer-body}). If narrowing is in effect, just
> And here's more quoted text.
@end example
-@samp{*} says where point will be placed.
+@samp{*} says where point will be placed.
@item C-c C-t
-@kindex C-c C-t
+@kindex C-c C-t
@findex message-insert-to
Insert a @code{To} header that contains the @code{Reply-To} or
@code{From} header of the message you're following up
-(@code{message-insert-to}).
+(@code{message-insert-to}).
@item C-c C-n
-@kindex C-c C-n
+@kindex C-c C-n
@findex message-insert-newsgroups
Insert a @code{Newsgroups} header that reflects the @code{Followup-To}
or @code{Newsgroups} header of the article you're replying to
@table @kbd
@item C-c C-c
-@kindex C-c C-c
+@kindex C-c C-c
@findex message-send-and-exit
Send the message and bury the current buffer
-(@code{message-send-and-exit}).
+(@code{message-send-and-exit}).
@item C-c C-s
-@kindex C-c C-s
+@kindex C-c C-s
@findex message-send
-Send the message (@code{message-send}).
+Send the message (@code{message-send}).
@item C-c C-d
@kindex C-c C-d
@item message-generate-headers-first
@vindex message-generate-headers-first
If non-@code{nil}, generate all headers before starting to compose the
-message.
+message.
@item message-from-style
@vindex message-from-style
generated @code{Message-ID} is deleted, and a new one generated. If
this isn't done, the entire empire would probably crumble, anarchy would
prevail, and cats would start walking on two legs and rule the world.
-Allegedly.
+Allegedly.
@item message-default-headers
@vindex message-default-headers
@node Mail Variables
-@section Mail Variables
+@section Mail Variables
@table @code
@item message-send-mail-function
@item Subject
@cindex Subject
-This required header will be prompted for if not present already.
+This required header will be prompted for if not present already.
@item Newsgroups
@cindex Newsgroups
Valid checks are:
@table @code
-@item subject-cmsg
+@item subject-cmsg
Check the subject for commands.
@item sender
@cindex Sender
-Insert a new @code{Sender} header if the @code{From} header looks odd.
-@item multiple-headers
+Insert a new @code{Sender} header if the @code{From} header looks odd.
+@item multiple-headers
Check for the existence of multiple equal headers.
-@item sendsys
+@item sendsys
@cindex sendsys
Check for the existence of version and sendsys commands.
@item message-id
Check whether the @code{Message-ID} looks ok.
@item from
Check whether the @code{From} header seems nice.
-@item long-lines
+@item long-lines
@cindex long lines
Check for too long lines.
@item control-chars
@item empty-headers
Check whether any of the headers are empty.
@item existing-newsgroups
-Check whether the newsgroups mentioned in the @code{Newsgroups} and
+Check whether the newsgroups mentioned in the @code{Newsgroups} and
@code{Followup-To} headers exist.
@item valid-newsgroups
Check whether the @code{Newsgroups} and @code{Followup-to} headers
@item message-send-news-function
@vindex message-send-news-function
Function used to send the current buffer as news. The default is
-@code{message-send-news}.
+@code{message-send-news}.
@item message-post-method
@vindex message-post-method
@item message-signature-separator
@vindex message-signature-separator
Regexp matching the signature separator. It is @samp{^-- *$} by
-default.
+default.
@item mail-header-separator
@vindex mail-header-separator
@item message-directory
@vindex message-directory
-Directory used by many mailey things. The default is @file{~/Mail/}.
+Directory used by many mailey things. The default is @file{~/Mail/}.
@item message-signature-setup-hook
@vindex message-signature-setup-hook
Hook run when initializing the message buffer. It is run after the
-headers have been inserted but before the signature has been inserted.
+headers have been inserted but before the signature has been inserted.
@item message-setup-hook
@vindex message-setup-hook
@item message-header-setup-hook
@vindex message-header-setup-hook
-Hook called narrowed to the headers after initializing the headers.
+Hook called narrowed to the headers after initializing the headers.
For instance, if you're running Gnus and wish to insert a
@samp{Mail-Copies-To} header in all your news articles and all messages
(add-hook 'message-send-hook 'my-message-add-content)
(defun my-message-add-content ()
(message-add-header
- "Mime-Version: 1.0"
- "Content-Type: text/plain"
- "Content-Transfer-Encoding: 7bit"))
+ "X-In-No-Sense: Nonsense"
+ "X-Whatever: no"))
@end lisp
This function won't add the header if the header is already present.
@table @code
-@item message-fcc-handler-function
-@vindex message-fcc-handler-function
+@item message-fcc-handler-function
+@vindex message-fcc-handler-function
A function called to save outgoing articles. This function will be
called with the name of the file to store the article in. The default
function is @code{message-output} which saves in Unix mailbox format.
newsgroups the article has been posted to will be inserted there. If
this variable is @code{nil}, no such courtesy message will be added.
The default value is @samp{"The following message is a courtesy copy of
-an article\nthat has been posted to %s as well.\n\n"}.
+an article\nthat has been posted to %s as well.\n\n"}.
@end table
When Message is being used from a news/mail reader, the reader is likely
to want to perform some task after the message has been sent. Perhaps
return to the previous window configuration or mark an article as
-replied.
+replied.
@vindex message-kill-actions
@vindex message-postpone-actions
and @kbd{C-c C-k} which kills the message buffer. Each of these actions
have lists associated with them that contains actions to be executed:
@code{message-send-actions}, @code{message-exit-actions},
-@code{message-postpone-actions}, and @code{message-kill-actions}.
+@code{message-postpone-actions}, and @code{message-kill-actions}.
Message provides a function to interface with these lists:
@code{message-add-action}. The first parameter is the action to be