type of the part. This variable is ignored if the value of the
controlling variable is a predicate list, as described above.
+@ifinfo
+@c Avoid sort of redundant entries in the same section for the printed
+@c manual, but add them in info to allow `i gnus-treat-foo-bar RET' or
+@c `i foo-bar'.
+@vindex gnus-treat-buttonize
+@vindex gnus-treat-buttonize-head
+@vindex gnus-treat-capitalize-sentences
+@vindex gnus-treat-overstrike
+@vindex gnus-treat-strip-cr
+@vindex gnus-treat-strip-headers-in-body
+@vindex gnus-treat-strip-leading-blank-lines
+@vindex gnus-treat-strip-multiple-blank-lines
+@vindex gnus-treat-strip-pem
+@vindex gnus-treat-strip-trailing-blank-lines
+@vindex gnus-treat-unsplit-urls
+@vindex gnus-treat-wash-html
+@vindex gnus-treat-date-english
+@vindex gnus-treat-date-iso8601
+@vindex gnus-treat-date-lapsed
+@vindex gnus-treat-date-local
+@vindex gnus-treat-date-original
+@vindex gnus-treat-date-user-defined
+@vindex gnus-treat-date-ut
+@vindex gnus-treat-from-picon
+@vindex gnus-treat-mail-picon
+@vindex gnus-treat-newsgroups-picon
+@vindex gnus-treat-display-smileys
+@vindex gnus-treat-body-boundary
+@vindex gnus-treat-display-x-face
+@vindex gnus-treat-display-face
+@vindex gnus-treat-emphasize
+@vindex gnus-treat-fill-article
+@vindex gnus-treat-fill-long-lines
+@vindex gnus-treat-hide-boring-headers
+@vindex gnus-treat-hide-citation
+@vindex gnus-treat-hide-citation-maybe
+@vindex gnus-treat-hide-headers
+@vindex gnus-treat-hide-signature
+@vindex gnus-treat-strip-banner
+@vindex gnus-treat-strip-list-identifiers
+@vindex gnus-treat-highlight-citation
+@vindex gnus-treat-highlight-headers
+@vindex gnus-treat-highlight-signature
+@vindex gnus-treat-play-sounds
+@vindex gnus-treat-translate
+@vindex gnus-treat-x-pgp-sig
+@vindex gnus-treat-unfold-headers
+@vindex gnus-treat-fold-headers
+@vindex gnus-treat-fold-newsgroups
+@vindex gnus-treat-leading-whitespace
+@end ifinfo
+
The following treatment options are available. The easiest way to
customize this is to examine the @code{gnus-article-treat} customization
group. Values in parenthesis are suggested sensible values. Others are
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, first, 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
Using the @acronym{MML} language, Message is able to create digitally
signed and digitally encrypted messages. Message (or rather
@acronym{MML}) currently support @acronym{PGP} (RFC 1991),
-@acronym{PGP/MIME} (RFC 2015/3156) and @acronym{S/MIME}. Instructing
-@acronym{MML} to perform security operations on a @acronym{MIME} part is
-done using the @kbd{C-c C-m s} key map for signing and the @kbd{C-c C-m
-c} key map for encryption, as follows.
+@acronym{PGP/MIME} (RFC 2015/3156) and @acronym{S/MIME}.
+@menu
+* Signing and encryption:: Signing and encrypting commands.
+* Using S/MIME:: Using S/MIME
+* Using PGP/MIME:: Using PGP/MIME
+* PGP Compatibility:: Compatibility with older implementations
+@end menu
+
+@node Signing and encryption
+@subsection Signing and encrypting commands
+
+Instructing @acronym{MML} to perform security operations on a
+@acronym{MIME} part is done using the @kbd{C-c C-m s} key map for
+signing and the @kbd{C-c C-m c} key map for encryption, as follows.
@table @kbd
@item C-c C-m s s
other properly. Thus, we now describe what external libraries or
programs are required to make things work, and some small general hints.
+@node Using S/MIME
@subsection Using S/MIME
@emph{Note!} This section assume you have a basic familiarity with
you are on a secure single user machine) simply press @code{RET} at
the passphrase prompt.
+@node Using PGP/MIME
@subsection Using PGP/MIME
@acronym{PGP/MIME} requires an external OpenPGP implementation, such
implementations such as PGP 2.x and PGP 5.x are also supported. One
Emacs interface to the PGP implementations, PGG (@pxref{Top, ,PGG,
pgg, PGG Manual}), is included, but Mailcrypt and Florian Weimer's
-@code{gpg.el} are also supported.
+@code{gpg.el} are also supported. @xref{PGP Compatibility}.
+
+@cindex gpg-agent
+Message internally calls GnuPG (the @command{gpg} command) to perform
+data encryption, and in certain cases (decrypting or signing for
+example), @command{gpg} requires user's passphrase. Currently the
+recommended way to supply your passphrase to @command{gpg} is to use the
+@command{gpg-agent} program.
+
+To use @command{gpg-agent} in Emacs, you need to run the following
+command from the shell before starting Emacs.
+
+@example
+eval `gpg-agent --daemon`
+@end example
+
+This will invoke @command{gpg-agent} and set the environment variable
+@code{GPG_AGENT_INFO} to allow @command{gpg} to communicate with it.
+It might be good idea to put this command in your @file{.xsession} or
+@file{.bash_profile}. @xref{Invoking GPG-AGENT, , , gnupg, Using the
+GNU Privacy Guard}.
+
+Once your @command{gpg-agent} is set up, it will ask you for a
+passphrase as needed for @command{gpg}. Under the X Window System,
+you will see a new passphrase input dialog appear. The dialog is
+provided by PIN Entry (the @command{pinentry} command), and as of
+version 0.7.2, @command{pinentry} cannot cooperate with Emacs on a
+single tty. So, if you are using a text console, you may need to put
+a passphrase into gpg-agent's cache beforehand. The following command
+does the trick.
+
+@example
+gpg --use-agent --sign < /dev/null > /dev/null
+@end example
+
+The Lisp variable @code{pgg-gpg-use-agent} controls whether to use
+@command{gpg-agent}. See also @xref{Caching passphrase, , , pgg, The
+PGG Manual}.
+
+
+@node PGP Compatibility
+@subsection Compatibility with older implementations
@vindex gpg-temp-directory
Note, if you are using the @code{gpg.el} you must make sure that the