-<!doctype linuxdoc system>
-
-<article>
-
-<title>The Mutt-ng E-Mail Client
-<author>by Michael Elkins <htmlurl url="mailto:me@cs.hmc.edu" name="<me@cs.hmc.edu>"> and others.
-<date>version @VERSION@
-<abstract>
-``All mail clients suck. This one just sucks less.'' -me, circa 1995
-</abstract>
-
-<toc>
-
-<sect>Introduction
-<p>
-<bf/Mutt-ng/ is a small but very powerful text-based MIME mail client. Mutt-ng is
-highly configurable, and is well suited to the mail power user with advanced
-features like key bindings, keyboard macros, mail threading, regular
-expression searches and a powerful pattern matching language for selecting
-groups of messages.
-
-<p>This documentation additionally contains documentation to <bf/Mutt-NG/, a
-fork from Mutt with the goal to fix all the little annoyances of Mutt, to
-integrate all the Mutt patches that are floating around in the web, and to
-add other new features. Features specific to Mutt-ng will be discussed in
-an extra section. Don't be confused when most of the documentation talk about
-Mutt and not Mutt-ng, Mutt-ng contains all Mutt features, plus many more.
-
-
-<sect1>Mutt-ng Home Page
-<p>
-<htmlurl url="http://www.muttng.org/"
-name="http://www.muttng.org">
-
-<sect1>Mailing Lists
-<p>
-
-<itemize>
-<item><htmlurl url="https://lists.berlios.de/mailman/listinfo/mutt-ng-users"
-name="mutt-ng-users@lists.berlios.de"> -- This is where the mutt-ng user support happens.
-<item><htmlurl url="https://lists.berlios.de/mailman/listinfo/mutt-ng-devel" name="mutt-ng-devel@lists.berlios.de"> -- The development mailing list for mutt-ng
-</itemize>
-
-<sect1>Software Distribution Sites
-<p>
-So far, there are no official releases of Mutt-ng, but you can download
-daily snapshots from <htmlurl url="http://mutt-ng.berlios.de/snapshots/" name="http://mutt-ng.berlios.de/snapshots/">
-<!--
-<itemize>
-<item><htmlurl url="ftp://ftp.mutt.org/mutt/"
-name="ftp://ftp.mutt.org/mutt/">
-</itemize>
-<p>
-For a list of mirror sites, please refer to <htmlurl
-url="http://www.mutt.org/download.html"
-name="http://www.mutt.org/download.html">.
--->
-
-
-<sect1>IRC
-<p>
-Visit channel <em/#muttng/ on <htmlurl
-url="http://www.freenode.net/" name="irc.freenode.net
-(www.freenode.net)"> to chat with other people interested in Mutt-ng.
-
-
-<sect1>Weblog
-<p>
-If you want to read fresh news about the latest development in Mutt-ng, and get informed
-about stuff like interesting, Mutt-ng-related articles and packages for your favorite
-distribution, you can read and/or subscribe to our
-<htmlurl url="http://mutt-ng.supersized.org/" name="Mutt-ng development weblog">.
-
-<sect1>Copyright
-<p>
-Mutt is Copyright (C) 1996-2000 Michael R. Elkins
-<me@cs.hmc.edu> and others
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
-
-<sect>Getting Started
-<p>
-
-This section is intended as a brief overview of how to use Mutt-ng. There are
-many other features which are described elsewhere in the manual.
-<--
-There
-is even more information available in the Mutt FAQ and various web
-pages. See the <htmlurl url="http://www.mutt.org/mutt/"
-name="Mutt Page"> for more details.
--->
-
-The key bindings described in this section are the defaults as distributed.
-Your local system administrator may have altered the defaults for your site.
-You can always type ``?'' in any menu to display the current bindings.
-
-The first thing you need to do is invoke mutt-ng simply by typing muttng
-at the command line. There are various command-line options, see
-either the muttng man page or the <ref id="commandline" name="reference">.
-
-If you have used mutt in the past the easiest thing to have a proper
-configuration file is to source ~/.muttrc in ~/.muttngrc.
-
-<sect1>Moving Around in Menus
-<p>
-
-Information is presented in menus, very similar to ELM. Here is a table
-showing the common keys used to navigate menus in Mutt-ng.
-
-<tscreen><verb>
-j or Down next-entry move to the next entry
-k or Up previous-entry move to the previous entry
-z or PageDn page-down go to the next page
-Z or PageUp page-up go to the previous page
-= or Home first-entry jump to the first entry
-* or End last-entry jump to the last entry
-q quit exit the current menu
-? help list all key bindings for the current menu
-</verb></tscreen>
-
-<sect1>Editing Input Fields<label id="editing">
-<p>
-Mutt-ng has a builtin line editor which is used as the primary way to input
-textual data such as email addresses or filenames. The keys used to move
-around while editing are very similar to those of Emacs.
-
-<tscreen><verb>
-^A or <Home> bol move to the start of the line
-^B or <Left> backward-char move back one char
-Esc B backward-word move back one word
-^D or <Delete> delete-char delete the char under the cursor
-^E or <End> eol move to the end of the line
-^F or <Right> forward-char move forward one char
-Esc F forward-word move forward one word
-<Tab> complete complete filename or alias
-^T complete-query complete address with query
-^K kill-eol delete to the end of the line
-ESC d kill-eow delete to the end of the word
-^W kill-word kill the word in front of the cursor
-^U kill-line delete entire line
-^V quote-char quote the next typed key
-<Up> history-up recall previous string from history
-<Down> history-down recall next string from history
-<BackSpace> backspace kill the char in front of the cursor
-Esc u upcase-word convert word to upper case
-Esc l downcase-word convert word to lower case
-Esc c capitalize-word capitalize the word
-^G n/a abort
-<Return> n/a finish editing
-</verb></tscreen>
-
-You can remap the <em/editor/ functions using the <ref id="bind" name="bind">
-command. For example, to make the <em/Delete/ key delete the character in
-front of the cursor rather than under, you could use
-
-<tt/bind editor <delete> backspace/
-
-<sect1>Reading Mail - The Index and Pager
-<p>
-
-Similar to many other mail clients, there are two modes in which mail is
-read in Mutt-ng. The first is the index of messages in the mailbox, which is
-called the ``index'' in Mutt-ng. The second mode is the display of the
-message contents. This is called the ``pager.''
-
-The next few sections describe the functions provided in each of these
-modes.
-
-<sect2>The Message Index
-<p>
-
-<tscreen><verb>
-c change to a different mailbox
-ESC c change to a folder in read-only mode
-C copy the current message to another mailbox
-ESC C decode a message and copy it to a folder
-ESC s decode a message and save it to a folder
-D delete messages matching a pattern
-d delete the current message
-F mark as important
-l show messages matching a pattern
-N mark message as new
-o change the current sort method
-O reverse sort the mailbox
-q save changes and exit
-s save-message
-T tag messages matching a pattern
-t toggle the tag on a message
-ESC t toggle tag on entire message thread
-U undelete messages matching a pattern
-u undelete-message
-v view-attachments
-x abort changes and exit
-<Return> display-message
-<Tab> jump to the next new message
-@ show the author's full e-mail address
-$ save changes to mailbox
-/ search
-ESC / search-reverse
-^L clear and redraw the screen
-^T untag messages matching a pattern
-</verb></tscreen>
-
-<sect3>Status Flags
-<p>
-
-In addition to who sent the message and the subject, a short summary of
-the disposition of each message is printed beside the message number.
-Zero or more of the following ``flags'' may appear, which mean:
-
-<p>
-<descrip>
-<tag/D/ message is deleted (is marked for deletion)
-<tag/d/ message have attachments marked for deletion
-<tag/K/ contains a PGP public key
-<tag/N/ message is new
-<tag/O/ message is old
-<tag/P/ message is PGP encrypted
-<tag/r/ message has been replied to
-<tag/S/ message is signed, and the signature is succesfully verified
-<tag/s/ message is signed
-<tag/!/ message is flagged
-<tag/*/ message is tagged
-</descrip>
-
-Some of the status flags can be turned on or off using
-<itemize>
-<item><bf/set-flag/ (default: w)
-<item><bf/clear-flag/ (default: W)
-</itemize>
-
-<p>
-Furthermore, the following flags reflect who the message is addressed
-to. They can be customized with the
-<ref id="to_chars" name="$to_chars"> variable.
-
-<p>
-<descrip>
-<tag/+/ message is to you and you only
-<tag/T/ message is to you, but also to or cc'ed to others
-<tag/C/ message is cc'ed to you
-<tag/F/ message is from you
-<tag/L/ message is sent to a subscribed mailing list
-</descrip>
-
-<sect2>The Pager
-<p>
-
-By default, Mutt-ng uses its builtin pager to display the body of messages.
-The pager is very similar to the Unix program <em/less/ though not nearly as
-featureful.
-
-<tscreen><verb>
-<Return> go down one line
-<Space> display the next page (or next message if at the end of a message)
-- go back to the previous page
-n search for next match
-S skip beyond quoted text
-T toggle display of quoted text
-? show key bindings
-/ search for a regular expression (pattern)
-ESC / search backwards for a regular expression
-\ toggle search pattern coloring
-^ jump to the top of the message
-</verb></tscreen>
-
-In addition, many of the functions from the <em/index/ are available in
-the pager, such as <em/delete-message/ or <em/copy-message/ (this is one
-advantage over using an external pager to view messages).
-
-Also, the internal pager supports a couple other advanced features. For
-one, it will accept and translate the ``standard'' nroff sequences for
-bold and underline. These sequences are a series of either the letter,
-backspace (^H), the letter again for bold or the letter, backspace,
-``_'' for denoting underline. Mutt-ng will attempt to display these
-in bold and underline respectively if your terminal supports them. If
-not, you can use the bold and underline <ref id="color" name="color">
-objects to specify a color or mono attribute for them.
-
-Additionally, the internal pager supports the ANSI escape sequences for
-character attributes. Mutt-ng translates them into the correct color and
-character settings. The sequences Mutt-ng supports are:
-
-<p>
-<tscreen><verb>
-ESC [ Ps;Ps;Ps;...;Ps m
-where Ps =
-0 All Attributes Off
-1 Bold on
-4 Underline on
-5 Blink on
-7 Reverse video on
-3x Foreground color is x
-4x Background color is x
-
-Colors are
-0 black
-1 red
-2 green
-3 yellow
-4 blue
-5 magenta
-6 cyan
-7 white
-</verb></tscreen>
-
-Mutt-ng uses these attributes for handling text/enriched messages, and they
-can also be used by an external <ref id="auto_view" name="autoview">
-script for highlighting purposes. <bf/Note:/ If you change the colors for your
-display, for example by changing the color associated with color2 for
-your xterm, then that color will be used instead of green.
-
-<sect2>Threaded Mode<label id="threads">
-<p>
-When the mailbox is <ref id="sort" name="sorted"> by <em/threads/, there are
-a few additional functions available in the <em/index/ and <em/pager/ modes.
-
-<tscreen><verb>
-^D delete-thread delete all messages in the current thread
-^U undelete-thread undelete all messages in the current thread
-^N next-thread jump to the start of the next thread
-^P previous-thread jump to the start of the previous thread
-^R read-thread mark the current thread as read
-ESC d delete-subthread delete all messages in the current subthread
-ESC u undelete-subthread undelete all messages in the current subthread
-ESC n next-subthread jump to the start of the next subthread
-ESC p previous-subthread jump to the start of the previous subthread
-ESC r read-subthread mark the current subthread as read
-ESC t tag-thread toggle the tag on the current thread
-ESC v collapse-thread toggle collapse for the current thread
-ESC V collapse-all toggle collapse for all threads
-P parent-message jump to parent message in thread
-</verb></tscreen>
-
-<bf/Note:/ Collapsing a thread displays only the first message
-in the thread and hides the others. This is useful when threads
-contain so many messages that you can only see a handful of threads on
-the screen. See %M in <ref id="index_format"name="$index_format">.
-For example, you could use "%?M?(#%03M)&(%4l)?" in <ref
-id="index_format"name="$index_format"> to optionally
-display the number of hidden messages if the thread is collapsed.
-
-See also: <ref id="strict_threads" name="$strict_threads">.
-
-<sect2>Miscellaneous Functions
-<p><bf/create-alias/<label id="create-alias"> (default: a)<newline>
-
-Creates a new alias based upon the current message (or prompts for a
-new one). Once editing is complete, an <ref id="alias" name="alias">
-command is added to the file specified by the <ref id="alias_file"
-name="$alias_file"> variable for future use. <bf/Note:/
-Specifying an <ref id="alias_file" name="$alias_file">
-does not add the aliases specified there-in, you must also <ref
-id="source" name="source"> the file.
-
-<p><bf/check-traditional-pgp/<label id="check-traditional-pgp"> (default: ESC P)<newline>
-
-This function will search the current message for content signed or
-encrypted with PGP the "traditional" way, that is, without proper
-MIME tagging. Technically, this function will temporarily change
-the MIME content types of the body parts containing PGP data; this
-is similar to the <ref id="edit-type" name="edit-type"> function's
-effect.
-
-
-<p><bf/display-toggle-weed/<label id="display-toggle-weed"> (default: h)<newline>
-
-Toggles the weeding of message header fields specified by <ref id="ignore"
-name="ignore"> commands.
-
-<p><bf/edit/<label id="edit"> (default: e)<newline>
-
-This command (available in the ``index'' and ``pager'') allows you to
-edit the raw current message as it's present in the mail folder.
-After you have finished editing, the changed message will be
-appended to the current folder, and the original message will be
-marked for deletion.
-
-<p><bf/edit-type/<label id="edit-type"><newline>
-(default: ^E on the attachment menu, and in the pager and index menus; ^T on the
-compose menu)
-
-This command is used to temporarily edit an attachment's content
-type to fix, for instance, bogus character set parameters. When
-invoked from the index or from the pager, you'll have the
-opportunity to edit the top-level attachment's content type. On the
-<ref id="attach_menu" name="attachment menu">, you can change any
-attachment's content type. These changes are not persistent, and get
-lost upon changing folders.
-
-Note that this command is also available on the <ref
-id="compose_menu" name="compose menu">. There, it's used to
-fine-tune the properties of attachments you are going to send.
-
-<p><bf/enter-command/<label id="enter-command"> (default: ``:'')<newline>
-
-This command is used to execute any command you would normally put in a
-configuration file. A common use is to check the settings of variables, or
-in conjunction with <ref id="macro" name="macros"> to change settings on the
-fly.
-
-<p><bf/extract-keys/<label id="extract-keys"> (default: ^K)<newline>
-
-This command extracts PGP public keys from the current or tagged
-message(s) and adds them to your PGP public key ring.
-
-<p><bf/forget-passphrase/<label id="forget-passphrase"> (default:
-^F)<newline>
-
-This command wipes the passphrase(s) from memory. It is useful, if
-you misspelled the passphrase.
-
-<p><bf/list-reply/<label id="list-reply"> (default: L)<newline>
-
-Reply to the current or tagged message(s) by extracting any addresses which
-match the regular expressions given by the <ref id="lists" name="lists or subscribe">
-commands, but also honor any <tt/Mail-Followup-To/ header(s) if the
-<ref id="honor_followup_to" name="$honor_followup_to">
-configuration variable is set. Using this when replying to messages posted
-to mailing lists helps avoid duplicate copies being sent to the author of
-the message you are replying to.
-
-<bf/pipe-message/<label id="pipe-message"> (default: |)<newline>
-
-Asks for an external Unix command and pipes the current or
-tagged message(s) to it. The variables <ref id="pipe_decode"
-name="$pipe_decode">, <ref id="pipe_split"
-name="$pipe_split">, <ref id="pipe_sep"
-name="$pipe_sep"> and <ref id="wait_key"
-name="$wait_key"> control the exact behavior of this
-function.
-
-<bf/resend-message/<label id="resend-message"> (default: ESC e)<newline>
-
-With resend-message, mutt takes the current message as a template for a
-new message. This function is best described as "recall from arbitrary
-folders". It can conveniently be used to forward MIME messages while
-preserving the original mail structure. Note that the amount of headers
-included here depends on the value of the <ref id="weed" name="$weed">
-variable.
-
-This function is also available from the attachment menu. You can use this
-to easily resend a message which was included with a bounce message
-as a message/rfc822 body part.
-
-<bf/shell-escape/<label id="shell-escape"> (default: !)<newline>
-
-Asks for an external Unix command and executes it. The <ref
-id="wait_key" name="$wait_key"> can be used to control
-whether Mutt-ng will wait for a key to be pressed when the command returns
-(presumably to let the user read the output of the command), based on
-the return status of the named command.
-
-<bf/toggle-quoted/<label id="toggle-quoted"> (default: T)<newline>
-
-The <em/pager/ uses the <ref id="quote_regexp"
-name="$quote_regexp"> variable to detect quoted text when
-displaying the body of the message. This function toggles the display
-of the quoted material in the message. It is particularly useful when
-are interested in just the response and there is a large amount of
-quoted text in the way.
-
-<bf/skip-quoted/<label id="skip-quoted"> (default: S)<newline>
-
-This function will go to the next line of non-quoted text which come
-after a line of quoted text in the internal pager.
-
-<sect1>Sending Mail
-<p>
-
-The following bindings are available in the <em/index/ for sending
-messages.
-
-<tscreen><verb>
-m compose compose a new message
-r reply reply to sender
-g group-reply reply to all recipients
-L list-reply reply to mailing list address
-f forward forward message
-b bounce bounce (remail) message
-ESC k mail-key mail a PGP public key to someone
-</verb></tscreen>
-
-Bouncing a message sends the message as is to the recipient you
-specify. Forwarding a message allows you to add comments or
-modify the message you are forwarding. These items are discussed
-in greater detail in the next chapter <ref id="forwarding_mail"
-name="``Forwarding and Bouncing Mail''">.
-
-Mutt-ng will then enter the <em/compose/ menu and prompt you for the
-recipients to place on the ``To:'' header field. Next, it will ask
-you for the ``Subject:'' field for the message, providing a default if
-you are replying to or forwarding a message. See also <ref id="askcc"
-name="$askcc">, <ref id="askbcc" name="$askbcc">, <ref
-id="autoedit" name="$autoedit">, <ref id="bounce"
-name="$bounce">, and <ref id="fast_reply"
-name="$fast_reply"> for changing how Mutt-ng asks these
-questions.
-
-Mutt-ng will then automatically start your <ref id="editor"
-name="$editor"> on the message body. If the <ref id="edit_headers"
-name="$edit_headers"> variable is set, the headers will be at
-the top of the message in your editor. Any messages you are replying
-to will be added in sort order to the message, with appropriate <ref
-id="attribution" name="$attribution">, <ref id="indent_string"
-name="$indent_string"> and <ref id="post_indent_string"
-name="$post_indent_string">. When forwarding a
-message, if the <ref id="mime_forward" name="$mime_forward">
-variable is unset, a copy of the forwarded message will be included. If
-you have specified a <ref id="signature" name="$signature">, it
-will be appended to the message.
-
-Once you have finished editing the body of your mail message, you are
-returned to the <em/compose/ menu. The following options are available:
-
-<tscreen><verb>
-a attach-file attach a file
-A attach-message attach message(s) to the message
-ESC k attach-key attach a PGP public key
-d edit-description edit description on attachment
-D detach-file detach a file
-t edit-to edit the To field
-ESC f edit-from edit the From field
-r edit-reply-to edit the Reply-To field
-c edit-cc edit the Cc field
-b edit-bcc edit the Bcc field
-y send-message send the message
-s edit-subject edit the Subject
-S smime-menu select S/MIME options
-f edit-fcc specify an ``Fcc'' mailbox
-p pgp-menu select PGP options
-P postpone-message postpone this message until later
-q quit quit (abort) sending the message
-w write-fcc write the message to a folder
-i ispell check spelling (if available on your system)
-^F forget-passphrase wipe passphrase(s) from memory
-</verb></tscreen>
-
-<bf/Note:/ The attach-message function will prompt you for a folder to
-attach messages from. You can now tag messages in that folder and they
-will be attached to the message you are sending. Note that certain
-operations like composing a new mail, replying, forwarding, etc. are
-not permitted when you are in that folder. The %r in <ref
-id="status_format" name="$status_format"> will change to
-a 'A' to indicate that you are in attach-message mode.
-
-<sect2>Editing the message header
-<p>
-When editing the header of your outgoing message, there are a couple of
-special features available.
-
-If you specify<newline>
-<tt/Fcc:/ <em/filename/<newline>
-Mutt-ng will pick up <em/filename/
-just as if you had used the <em/edit-fcc/ function in the <em/compose/ menu.
-
-You can also attach files to your message by specifying<newline>
-<tt/Attach:/ <em/filename/ [ <em/description/ ]<newline>
-where <em/filename/ is the file to attach and <em/description/ is an
-optional string to use as the description of the attached file.
-
-When replying to messages, if you remove the <em/In-Reply-To:/ field from
-the header field, Mutt-ng will not generate a <em/References:/ field, which
-allows you to create a new message thread.
-
-Also see <ref id="edit_headers" name="edit_headers">.
-
-<sect2>Using Mutt-ng with PGP
-
-<p>
-If you want to use PGP, you can specify
-
-<tt/Pgp:/ [ <tt/E/ | <tt/S/ | <tt/S/<em/<id>/ ] <newline>
-
-``E'' encrypts, ``S'' signs and
-``S<id>'' signs with the given key, setting <ref
-id="pgp_sign_as" name="$pgp_sign_as"> permanently.
-
-If you have told mutt to PGP encrypt a message, it will guide you
-through a key selection process when you try to send the message.
-Mutt-ng will not ask you any questions about keys which have a
-certified user ID matching one of the message recipients' mail
-addresses. However, there may be situations in which there are
-several keys, weakly certified user ID fields, or where no matching
-keys can be found.
-
-In these cases, you are dropped into a menu with a list of keys from
-which you can select one. When you quit this menu, or mutt can't
-find any matching keys, you are prompted for a user ID. You can, as
-usually, abort this prompt using <tt/^G/. When you do so, mutt will
-return to the compose screen.
-
-Once you have successfully finished the key selection, the message
-will be encrypted using the selected public keys, and sent out.
-
-Most fields of the entries in the key selection menu (see also <ref
-id="pgp_entry_format" name="$pgp_entry_format">)
-have obvious meanings. But some explanations on the capabilities, flags,
-and validity fields are in order.
-
-The flags sequence (%f) will expand to one of the following flags:
-<tscreen><verb>
-R The key has been revoked and can't be used.
-X The key is expired and can't be used.
-d You have marked the key as disabled.
-c There are unknown critical self-signature
- packets.
-</verb></tscreen>
-
-The capabilities field (%c) expands to a two-character sequence
-representing a key's capabilities. The first character gives
-the key's encryption capabilities: A minus sign (<bf/-/) means
-that the key cannot be used for encryption. A dot (<bf/./) means that
-it's marked as a signature key in one of the user IDs, but may
-also be used for encryption. The letter <bf/e/ indicates that
-this key can be used for encryption.
-
-The second character indicates the key's signing capabilities. Once
-again, a ``<bf/-/'' implies ``not for signing'', ``<bf/./'' implies
-that the key is marked as an encryption key in one of the user-ids, and
-``<bf/s/'' denotes a key which can be used for signing.
-
-Finally, the validity field (%t) indicates how well-certified a user-id
-is. A question mark (<bf/?/) indicates undefined validity, a minus
-character (<bf/-/) marks an untrusted association, a space character
-means a partially trusted association, and a plus character (<bf/+/)
-indicates complete validity.
-
-<sect2>Sending anonymous messages via mixmaster.
-
-<p>
-You may also have configured mutt to co-operate with Mixmaster, an
-anonymous remailer. Mixmaster permits you to send your messages
-anonymously using a chain of remailers. Mixmaster support in mutt is for
-mixmaster version 2.04 (beta 45 appears to be the latest) and 2.03.
-It does not support earlier versions or the later so-called version 3 betas,
-of which the latest appears to be called 2.9b23.
-
-To use it, you'll have to obey certain restrictions. Most
-important, you cannot use the <tt/Cc/ and <tt/Bcc/ headers. To tell
-Mutt-ng to use mixmaster, you have to select a remailer chain, using
-the mix function on the compose menu.
-
-The chain selection screen is divided into two parts. In the
-(larger) upper part, you get a list of remailers you may use. In
-the lower part, you see the currently selected chain of remailers.
-
-You can navigate in the chain using the <tt/chain-prev/ and
-<tt/chain-next/ functions, which are by default bound to the left
-and right arrows and to the <tt/h/ and <tt/l/ keys (think vi
-keyboard bindings). To insert a remailer at the current chain
-position, use the <tt/insert/ function. To append a remailer behind
-the current chain position, use <tt/select-entry/ or <tt/append/.
-You can also delete entries from the chain, using the corresponding
-function. Finally, to abandon your changes, leave the menu, or
-<tt/accept/ them pressing (by default) the <tt/Return/ key.
-
-Note that different remailers do have different capabilities,
-indicated in the %c entry of the remailer menu lines (see
-<ref id="mix_entry_format"
-name="$mix_entry_format">). Most important is
-the ``middleman'' capability, indicated by a capital ``M'': This
-means that the remailer in question cannot be used as the final
-element of a chain, but will only forward messages to other
-mixmaster remailers. For details on the other capabilities, please
-have a look at the mixmaster documentation.
-
-<sect1>Forwarding and Bouncing Mail<label id="forwarding_mail">
-<p>
-
-Bouncing and forwarding let you send an existing message to recipients
-that you specify. Bouncing a message uses the <ref id="sendmail"
-name="sendmail"> command to send a copy to alternative addresses as if
-they were the message's original recipients. Forwarding a message, on
-the other hand, allows you to modify the message before it is resent
-(for example, by adding your own comments).
-
-The following keys are bound by default:
-
-<tscreen><verb>
-f forward forward message
-b bounce bounce (remail) message
-</verb></tscreen>
-
-Forwarding can be done by including the original message in the new
-message's body (surrounded by indicating lines) or including it as a MIME
-attachment, depending on the value of the <ref id="mime_forward"
-name="$mime_forward"> variable. Decoding of attachments,
-like in the pager, can be controlled by the <ref id="forward_decode"
-name="$forward_decode"> and <ref id="mime_forward_decode"
-name="$mime_forward_decode"> variables,
-respectively. The desired forwarding format may depend on the content,
-therefore <em/$mime_forward/ is a quadoption which, for
-example, can be set to ``ask-no''.
-
-The inclusion of headers is controlled by the current setting of the
-<ref id="weed" name="$weed"> variable, unless <ref
-id="mime_forward" name="mime_forward"> is set.
-
-Editing the message to forward follows the same procedure as sending or
-replying to a message does.
-
-<sect1>Postponing Mail<label id="postponing_mail">
-<p>
-
-At times it is desirable to delay sending a message that you have
-already begun to compose. When the <em/postpone-message/ function is
-used in the <em/compose/ menu, the body of your message and attachments
-are stored in the mailbox specified by the <ref id="postponed"
-name="$postponed"> variable. This means that you can recall the
-message even if you exit Mutt-ng and then restart it at a later time.
-
-Once a message is postponed, there are several ways to resume it. From the
-command line you can use the ``-p'' option, or if you <em/compose/ a new
-message from the <em/index/ or <em/pager/ you will be prompted if postponed
-messages exist. If multiple messages are currently postponed, the
-<em/postponed/ menu will pop up and you can select which message you would
-like to resume.
-
-<bf/Note:/ If you postpone a reply to a message, the reply setting of
-the message is only updated when you actually finish the message and
-send it. Also, you must be in the same folder with the message you
-replied to for the status of the message to be updated.
-
-See also the <ref id="postpone" name="$postpone"> quad-option.
-
-<sect1>Reading news via NNTP<label id="reading_news">
-<p>
-
-If compiled with ``--enable-nntp'' option, Mutt-ng can read news from
-newsserver via NNTP. You can open a newsgroup with function
-``change-newsgroup'' (default: i). Default newsserver can be obtained
-from <em/NNTPSERVER/ environment variable. Like other news readers,
-info about subscribed newsgroups is saved in file by <ref
-id="nntp_newsrc" name="$nntp_newsrc"> variable. Article
-headers are cached and can be loaded from file when
-newsgroup entered instead loading from newsserver.
-
-<sect>Configuration
-<p>
-
-While the default configuration (or ``preferences'') make Mutt-ng usable right out
-of the box, it is often desirable to tailor Mutt-ng to suit your own tastes. When
-Mutt-ng is first invoked, it will attempt to read the ``system'' configuration
-file (defaults set by your local system administrator), unless the ``-n'' <ref
-id="commandline" name="command line"> option is specified. This file is
-typically <tt>/usr/local/share/muttng/Muttngrc</tt> or <tt>/etc/Muttngrc</tt>,
-Mutt-ng users will find this file in <tt>/usr/local/share/muttng/Muttrc</tt> or
-<tt>/etc/Muttngrc</tt>. Mutt will next look for a file named <tt>.muttrc</tt>
-in your home directory, Mutt-ng will look for <tt>.muttngrc</tt>. If this file
-does not exist and your home directory has a subdirectory named <tt/.mutt/,
-mutt try to load a file named <tt>.muttng/muttngrc</tt>.
-
-<tt>.muttrc</tt> (or <tt>.muttngrc</tt> for Mutt-ng) is the file where you will
-usually place your <ref id="commands" name="commands"> to configure Mutt-ng.
-
-In addition, mutt supports version specific configuration files that are
-parsed instead of the default files as explained above. For instance, if
-your system has a <tt/Muttrc-0.88/ file in the system configuration
-directory, and you are running version 0.88 of mutt, this file will be
-sourced instead of the <tt/Muttngrc/ file. The same is true of the user
-configuration file, if you have a file <tt/.muttrc-0.88.6/ in your home
-directory, when you run mutt version 0.88.6, it will source this file
-instead of the default <tt/.muttrc/ file. The version number is the
-same which is visible using the ``-v'' <ref id="commandline"
-name="command line"> switch or using the <tt/show-version/ key (default:
-V) from the index menu.
-
-<sect1>Syntax of Initialization Files<label id="muttrc-syntax">
-<p>
-
-An initialization file consists of a series of <ref id="commands"
-name="commands">. Each line of the file may contain one or more commands.
-When multiple commands are used, they must be separated by a semicolon (;).
-<tscreen><verb>
-set realname='Mutt-ng user' ; ignore x-
-</verb></tscreen>
-The hash mark, or pound sign
-(``#''), is used as a ``comment'' character. You can use it to
-annotate your initialization file. All text after the comment character
-to the end of the line is ignored. For example,
-
-<tscreen><verb>
-my_hdr X-Disclaimer: Why are you listening to me? # This is a comment
-</verb></tscreen>
-
-Single quotes (') and double quotes (&dquot;) can be used to quote strings
-which contain spaces or other special characters. The difference between
-the two types of quotes is similar to that of many popular shell programs,
-namely that a single quote is used to specify a literal string (one that is
-not interpreted for shell variables or quoting with a backslash [see
-next paragraph]), while double quotes indicate a string for which
-should be evaluated. For example, backtics are evaluated inside of double
-quotes, but <bf/not/ for single quotes.
-
-\ quotes the next character, just as in shells such as bash and zsh.
-For example, if want to put quotes ``&dquot;'' inside of a string, you can use
-``\'' to force the next character to be a literal instead of interpreted
-character.
-<tscreen><verb>
-set realname="Michael \"MuttDude\" Elkins"
-</verb></tscreen>
-
-``\\'' means to insert a literal ``\'' into the line.
-``\n'' and ``\r'' have their usual C meanings of linefeed and
-carriage-return, respectively.
-
-A \ at the end of a line can be used to split commands over
-multiple lines, provided that the split points don't appear in the
-middle of command names.
-
-Please note that, unlike the various shells, mutt-ng interprets a ``\''
-at the end of a line also in comments. This allows you to disable a command
-split over multiple lines with only one ``#''.
-
-<tscreen><verb>
-# folder-hook . \
- set realname="Michael \"MuttDude\" Elkins"
-</verb></tscreen>
-
-When testing your config files, beware the following caveat. The backslash
-at the end of the commented line extends the current line with the next line
-- then referred to as a ``continuation line''. As the first line is
-commented with a hash (#) all following continuation lines are also
-part of a comment and therefore are ignored, too. So take care of comments
-when continuation lines are involved within your setup files!
-
-Abstract example:
-
-<tscreen><verb>
-line1\
-line2a # line2b\
-line3\
-line4
-line5
-</verb></tscreen>
-
-line1 ``continues'' until line4. however, the part after the # is a
-comment which includes line3 and line4. line5 is a new line of its own and
-thus is interpreted again.
-
-It is also possible to substitute the output of a Unix command in an
-initialization file. This is accomplished by enclosing the command in
-backquotes (``). For example,
-<tscreen><verb>
-my_hdr X-Operating-System: `uname -a`
-</verb></tscreen>
-The output of the Unix command ``uname -a'' will be substituted before the
-line is parsed. Note that since initialization files are line oriented, only
-the first line of output from the Unix command will be substituted.
-
-UNIX environments can be accessed like the way it is done in shells like
-sh and bash: Prepend the name of the environment by a ``$''. For
-example,
-<tscreen><verb>
-set record=+sent_on_$HOSTNAME
-</verb></tscreen>
-
-The commands understood by mutt are explained in the next paragraphs.
-For a complete list, see the <ref id="commands" name="command reference">.
-
-<sect1>Defining/Using aliases<label id="alias">
-<p>
-
-Usage: <tt/alias/ <em/key/ <em/address/ [ , <em/address/, ... ]
-
-It's usually very cumbersome to remember or type out the address of someone
-you are communicating with. Mutt-ng allows you to create ``aliases'' which map
-a short string to a full address.
-
-<bf/Note:/ if you want to create an alias for a group (by specifying more than
-one address), you <bf/must/ separate the addresses with a comma (``,'').
-
-To remove an alias or aliases (``*'' means all aliases):
-
-<tt/unalias/ [ * | <em/key/ <em/.../ ]
-
-<tscreen><verb>
-alias muttdude me@cs.hmc.edu (Michael Elkins)
-alias theguys manny, moe, jack
-</verb></tscreen>
-
-Unlike other mailers, Mutt-ng doesn't require aliases to be defined
-in a special file. The <tt/alias/ command can appear anywhere in
-a configuration file, as long as this file is <ref id="source"
-name="sourced">. Consequently, you can have multiple alias files, or
-you can have all aliases defined in your muttrc.
-
-On the other hand, the <ref id="create-alias" name="create-alias">
-function can use only one file, the one pointed to by the <ref
-id="alias_file" name="$alias_file"> variable (which is
-<tt>˜/.muttrc</tt> by default). This file is not special either,
-in the sense that Mutt-ng will happily append aliases to any file, but in
-order for the new aliases to take effect you need to explicitly <ref
-id="source" name="source"> this file too.
-
-For example:
-
-<tscreen><verb>
-source /usr/local/share/Mutt-ng.aliases
-source ~/.mail_aliases
-set alias_file=~/.mail_aliases
-</verb></tscreen>
-
-To use aliases, you merely use the alias at any place in mutt where mutt
-prompts for addresses, such as the <em/To:/ or <em/Cc:/ prompt. You can
-also enter aliases in your editor at the appropriate headers if you have the
-<ref id="edit_headers" name="$edit_headers"> variable set.
-
-In addition, at the various address prompts, you can use the tab character
-to expand a partial alias to the full alias. If there are multiple matches,
-mutt will bring up a menu with the matching aliases. In order to be
-presented with the full list of aliases, you must hit tab with out a partial
-alias, such as at the beginning of the prompt or after a comma denoting
-multiple addresses.
-
-In the alias menu, you can select as many aliases as you want with the
-<em/select-entry/ key (default: RET), and use the <em/exit/ key
-(default: q) to return to the address prompt.
-
-<sect1>Changing the default key bindings<label id="bind">
-<p>
-Usage: <tt/bind/ <em/map/ <em/key/ <em/function/
-
-This command allows you to change the default key bindings (operation
-invoked when pressing a key).
-
-<em/map/ specifies in which menu the binding belongs. Multiple maps may
-be specified by separating them with commas (no additional whitespace is
-allowed). The currently defined maps are:
-
-<label id="maps">
-<descrip>
-<tag/generic/
-This is not a real menu, but is used as a fallback for all of the other
-menus except for the pager and editor modes. If a key is not defined in
-another menu, Mutt-ng will look for a binding to use in this menu. This allows
-you to bind a key to a certain function in multiple menus instead of having
-multiple bind statements to accomplish the same task.
-<tag/alias/
-The alias menu is the list of your personal aliases as defined in your
-muttrc. It is the mapping from a short alias name to the full email
-address(es) of the recipient(s).
-<tag/attach/
-The attachment menu is used to access the attachments on received messages.
-<tag/browser/
-The browser is used for both browsing the local directory structure, and for
-listing all of your incoming mailboxes.
-<tag/editor/
-The editor is the line-based editor the user enters text data.
-<tag/index/
-The index is the list of messages contained in a mailbox.
-<tag/compose/
-The compose menu is the screen used when sending a new message.
-<tag/pager/
-The pager is the mode used to display message/attachment data, and help
-listings.
-<tag/pgp/
-The pgp menu is used to select the OpenPGP keys used for encrypting outgoing
-messages.
-<tag/postpone/
-The postpone menu is similar to the index menu, except is used when
-recalling a message the user was composing, but saved until later.
-</descrip>
-
-<em/key/ is the key (or key sequence) you wish to bind. To specify a
-control character, use the sequence <em/\Cx/, where <em/x/ is the
-letter of the control character (for example, to specify control-A use
-``\Ca''). Note that the case of <em/x/ as well as <em/\C/ is
-ignored, so that <em/\CA/, <em/\Ca/, <em/\cA/ and <em/\ca/ are all
-equivalent. An alternative form is to specify the key as a three digit
-octal number prefixed with a ``\'' (for example <em/\177/ is
-equivalent to <em/\c?/).
-
-In addition, <em/key/ may consist of:
-
-<tscreen><verb>
-\t tab
-<tab> tab
-\r carriage return
-\n newline
-\e escape
-<esc> escape
-<up> up arrow
-<down> down arrow
-<left> left arrow
-<right> right arrow
-<pageup> Page Up
-<pagedown> Page Down
-<backspace> Backspace
-<delete> Delete
-<insert> Insert
-<enter> Enter
-<return> Return
-<home> Home
-<end> End
-<space> Space bar
-<f1> function key 1
-<f10> function key 10
-</verb></tscreen>
-
-<em/key/ does not need to be enclosed in quotes unless it contains a
-space (`` '').
-
-<em/function/ specifies which action to take when <em/key/ is pressed.
-For a complete list of functions, see the <ref id="functions"
-name="reference">. The special function <tt/noop/ unbinds the specified key
-sequence.
-
-<sect1>Defining aliases for character sets <label id="charset-hook">
-<p>
-Usage: <tt/charset-hook/ <em/alias/ <em/charset/<newline>
-Usage: <tt/iconv-hook/ <em/charset/ <em/local-charset/
-
-The <tt/charset-hook/ command defines an alias for a character set.
-This is useful to properly display messages which are tagged with a
-character set name not known to mutt.
-
-The <tt/iconv-hook/ command defines a system-specific name for a
-character set. This is helpful when your systems character
-conversion library insists on using strange, system-specific names
-for character sets.
-
-
-<sect1>Setting variables based upon mailbox<label id="folder-hook">
-<p>
-Usage: <tt/folder-hook/ [!]<em/regexp/ <em/command/
-
-It is often desirable to change settings based on which mailbox you are
-reading. The folder-hook command provides a method by which you can execute
-any configuration command. <em/regexp/ is a regular expression specifying
-in which mailboxes to execute <em/command/ before loading. If a mailbox
-matches multiple folder-hook's, they are executed in the order given in the
-muttrc.
-
-<bf/Note:/ if you use the ``!'' shortcut for <ref id="spoolfile"
-name="$spoolfile"> at the beginning of the pattern, you must place it
-inside of double or single quotes in order to distinguish it from the
-logical <em/not/ operator for the expression.
-
-Note that the settings are <em/not/ restored when you leave the mailbox.
-For example, a command action to perform is to change the sorting method
-based upon the mailbox being read:
-
-<tscreen><verb>
-folder-hook mutt set sort=threads
-</verb></tscreen>
-
-However, the sorting method is not restored to its previous value when
-reading a different mailbox. To specify a <em/default/ command, use the
-pattern ``.'':
-
-<p>
-<tscreen><verb>
-folder-hook . set sort=date-sent
-</verb></tscreen>
-
-<sect1>Keyboard macros<label id="macro">
-<p>
-Usage: <tt/macro/ <em/menu/ <em/key/ <em/sequence/ [ <em/description/ ]
-
-Macros are useful when you would like a single key to perform a series of
-actions. When you press <em/key/ in menu <em/menu/, Mutt-ng will behave as if
-you had typed <em/sequence/. So if you have a common sequence of commands
-you type, you can create a macro to execute those commands with a single
-key.
-
-<em/menu/ is the <ref id="maps" name="map"> which the macro will be bound.
-Multiple maps may be specified by separating multiple menu arguments by
-commas. Whitespace may not be used in between the menu arguments and the
-commas separating them.
-
-<em/key/ and <em/sequence/ are expanded by the same rules as the <ref
-id="bind" name="key bindings">. There are some additions however. The
-first is that control characters in <em/sequence/ can also be specified
-as <em/ˆx/. In order to get a caret (`ˆ'') you need to use
-<em/ˆˆ/. Secondly, to specify a certain key such as <em/up/
-or to invoke a function directly, you can use the format
-<em/<key name>/ and <em/<function name>/. For a listing of key
-names see the section on <ref id="bind" name="key bindings">. Functions
-are listed in the <ref id="functions" name="function reference">.
-
-The advantage with using function names directly is that the macros will
-work regardless of the current key bindings, so they are not dependent on
-the user having particular key definitions. This makes them more robust
-and portable, and also facilitates defining of macros in files used by more
-than one user (eg. the system Muttngrc).
-
-Optionally you can specify a descriptive text after <em/sequence/,
-which is shown in the help screens.
-
-<bf/Note:/ Macro definitions (if any) listed in the help screen(s), are
-silently truncated at the screen width, and are not wrapped.
-
-<sect1>Using color and mono video attributes<label id="color">
-<p>
-Usage: <tt/color/ <em/object/ <em/foreground/ <em/background/ [ <em/regexp/ ]<newline>
-Usage: <tt/color/ index <em/foreground/ <em/background/ <em/pattern/<newline>
-Usage: <tt/uncolor/ index <em/pattern/ [ <em/pattern/ ... ]<newline>
-
-If your terminal supports color, you can spice up Mutt-ng by creating your own
-color scheme. To define the color of an object (type of information), you
-must specify both a foreground color <bf/and/ a background color (it is not
-possible to only specify one or the other).
-
-<em/object/ can be one of:
-
-<itemize>
-<item>attachment
-<item>body (match <em/regexp/ in the body of messages)
-<item>bold (highlighting bold patterns in the body of messages)
-<item>error (error messages printed by Mutt-ng)
-<item>header (match <em/regexp/ in the message header)
-<item>hdrdefault (default color of the message header in the pager)
-<item>index (match <em/pattern/ in the message index)
-<item>indicator (arrow or bar used to indicate the current item in a menu)
-<item>markers (the ``+'' markers at the beginning of wrapped lines in the pager)
-<item>message (informational messages)
-<item>normal
-<item>quoted (text matching <ref id="quote_regexp"
-name="$quote_regexp"> in the body of a message)
-<item>quoted1, quoted2, ..., quoted<bf/N/ (higher levels of quoting)
-<item>search (highlighting of words in the pager)
-<item>signature
-<item>status (mode lines used to display info about the mailbox or message)
-<item>tilde (the ``˜'' used to pad blank lines in the pager)
-<item>tree (thread tree drawn in the message index and attachment menu)
-<item>underline (highlighting underlined patterns in the body of messages)
-</itemize>
-
-<em/foreground/ and <em/background/ can be one of the following:
-
-<itemize>
-<item>white
-<item>black
-<item>green
-<item>magenta
-<item>blue
-<item>cyan
-<item>yellow
-<item>red
-<item>default
-<item>color<em/x/
-</itemize>
-
-<em/foreground/ can optionally be prefixed with the keyword <tt/bright/ to make
-the foreground color boldfaced (e.g., <tt/brightred/).
-
-If your terminal supports it, the special keyword <em/default/ can be
-used as a transparent color. The value <em/brightdefault/ is also valid.
-If Mutt-ng is linked against the <em/S-Lang/ library, you also need to set
-the <em/COLORFGBG/ environment variable to the default colors of your
-terminal for this to work; for example (for Bourne-like shells):
-
-<tscreen><verb>
-set COLORFGBG="green;black"
-export COLORFGBG
-</verb></tscreen>
-
-<bf/Note:/ The <em/S-Lang/ library requires you to use the <em/lightgray/
-and <em/brown/ keywords instead of <em/white/ and <em/yellow/ when
-setting this variable.
-
-<bf/Note:/ The uncolor command can be applied to the index object only. It
-removes entries from the list. You <bf/must/ specify the same pattern
-specified in the color command for it to be removed. The pattern ``*'' is
-a special token which means to clear the color index list of all entries.
-
-Mutt-ng also recognizes the keywords <em/color0/, <em/color1/, …,
-<em/color/<bf/N-1/ (<bf/N/ being the number of colors supported
-by your terminal). This is useful when you remap the colors for your
-display (for example by changing the color associated with <em/color2/
-for your xterm), since color names may then lose their normal meaning.
-
-If your terminal does not support color, it is still possible change the video
-attributes through the use of the ``mono'' command:
-
-Usage: <tt/mono/ <em/<object> <attribute>/ [ <em/regexp/ ]<newline>
-Usage: <tt/mono/ index <em/attribute/ <em/pattern/<newline>
-Usage: <tt/unmono/ index <em/pattern/ [ <em/pattern/ ... ]<newline>
-
-where <em/attribute/ is one of the following:
-
-<itemize>
-<item>none
-<item>bold
-<item>underline
-<item>reverse
-<item>standout
-</itemize>
-
-<sect1>Ignoring (weeding) unwanted message headers<label id="ignore">
-<p>
-Usage: <tt/[un]ignore/ <em/pattern/ [ <em/pattern/ ... ]
-
-Messages often have many header fields added by automatic processing systems,
-or which may not seem useful to display on the screen. This command allows
-you to specify header fields which you don't normally want to see.
-
-You do not need to specify the full header field name. For example,
-``ignore content-'' will ignore all header fields that begin with the pattern
-``content-''. ``ignore *'' will ignore all headers.
-
-To remove a previously added token from the list, use the ``unignore'' command.
-The ``unignore'' command will make Mutt-ng display headers with the given pattern.
-For example, if you do ``ignore x-'' it is possible to ``unignore x-mailer''.
-
-``unignore *'' will remove all tokens from the ignore list.
-
-For example:
-<tscreen><verb>
-# Sven's draconian header weeding
-ignore *
-unignore from date subject to cc
-unignore organization organisation x-mailer: x-newsreader: x-mailing-list:
-unignore posted-to:
-</verb></tscreen>
-
-<sect1>Alternative addresses<label id="alternates">
-<p>
-Usage: <tt/[un]alternates/ <em/regexp/ [ <em/regexp/ ... ]<newline>
-
-With various functions, mutt will treat messages differently,
-depending on whether you sent them or whether you received them from
-someone else. For instance, when replying to a message that you
-sent to a different party, mutt will automatically suggest to send
-the response to the original message's recipients -- responding to
-yourself won't make much sense in many cases. (See <ref
-id="reply_to" name="$reply_to">.)
-
-Many users receive e-mail under a number of different addresses. To
-fully use mutt's features here, the program must be able to
-recognize what e-mail addresses you receive mail under. That's the
-purpose of the <tt/alternates/ command: It takes a list of regular
-expressions, each of which can identify an address under which you
-receive e-mail.
-
-The <tt/unalternates/ command can be used to write exceptions to
-<tt/alternates/ patterns. If an address matches something in an
-<tt/alternates/ command, but you nonetheless do not think it is
-from you, you can list a more precise pattern under an <tt/unalternates/
-command.
-
-To remove a regular expression from the <tt/alternates/ list, use the
-<tt/unalternates/ command with exactly the same <em/regexp/.
-Likewise, if the <em/regexp/ for a <tt/alternates/ command matches
-an entry on the <tt/unalternates/ list, that <tt/unalternates/
-entry will be removed. If the <em/regexp/ for <tt/unalternates/
-is ``*'', <em/all entries/ on <tt/alternates/ will be removed.
-
-<sect1>Mailing lists<label id="lists">
-<p>
-Usage: <tt/[un]lists/ <em/regexp/ [ <em/regexp/ ... ]<newline>
-Usage: <tt/[un]subscribe/ <em/regexp/ [ <em/regexp/ ... ]
-
-Mutt-ng has a few nice features for <ref id="using_lists" name="handling
-mailing lists">. In order to take advantage of them, you must
-specify which addresses belong to mailing lists, and which mailing
-lists you are subscribed to. Once you have done this, the <ref
-id="list-reply" name="list-reply"> function will work for all known lists.
-Additionally, when you send a message to a subscribed list, mutt will
-add a Mail-Followup-To header to tell other users' mail user agents
-not to send copies of replies to your personal address. Note that
-the Mail-Followup-To header is a non-standard extension which is not
-supported by all mail user agents. Adding it is not bullet-proof against
-receiving personal CCs of list messages. Also note that the generation
-of the Mail-Followup-To header is controlled by the <ref id="followup_to"
-name="$followup_to"> configuration variable.
-
-More precisely, Mutt-ng maintains lists of patterns for the addresses
-of known and subscribed mailing lists. Every subscribed mailing
-list is known. To mark a mailing list as known, use the ``lists''
-command. To mark it as subscribed, use ``subscribe''.
-
-You can use regular expressions with both commands. To mark all
-messages sent to a specific bug report's address on mutt's bug
-tracking system as list mail, for instance, you could say
-``subscribe [0-9]*@bugs.guug.de''. Often, it's sufficient to just
-give a portion of the list's e-mail address.
-
-Specify as much of the address as you need to to remove ambiguity. For
-example, if you've subscribed to the Mutt-ng mailing list, you will receive mail
-addressed to <em/mutt-users@mutt.org/. So, to tell Mutt-ng that this is a
-mailing list, you could add ``lists mutt-users'' to your
-initialization file. To tell mutt that you are subscribed to it,
-add ``subscribe mutt-users'' to your initialization file instead.
-If you also happen to get mail from someone whose address is
-<em/mutt-users@example.com/, you could use ``lists mutt-users@mutt\\.org''
-or ``subscribe mutt-users@mutt\\.org'' to
-match only mail from the actual list.
-
-The ``unlists'' command is used to remove a token from the list of
-known and subscribed mailing-lists. Use ``unlists *'' to remove all
-tokens.
-
-To remove a mailing list from the list of subscribed mailing lists,
-but keep it on the list of known mailing lists, use ``unsubscribe''.
-
-<sect1>Using Multiple spool mailboxes<label id="mbox-hook">
-<p>
-Usage: <tt/mbox-hook/ [!]<em/pattern/ <em/mailbox/
-
-This command is used to move read messages from a specified mailbox to a
-different mailbox automatically when you quit or change folders.
-<em/pattern/ is a regular expression specifying the mailbox to treat as a
-``spool'' mailbox and <em/mailbox/ specifies where mail should be saved when
-read.
-
-Unlike some of the other <em/hook/ commands, only the <em/first/ matching
-pattern is used (it is not possible to save read mail in more than a single
-mailbox).
-
-<sect1>Defining mailboxes which receive mail<label id="mailboxes">
-<p>
-Usage: <tt/[un]mailboxes/ [!]<em/filename/ [ <em/filename/ ... ]
-
-This command specifies folders which can receive mail and
-which will be checked for new messages. By default, the
-main menu status bar displays how many of these folders have
-new messages.
-<p>
-When changing folders, pressing <em/space/ will cycle
-through folders with new mail.
-<p>
-Pressing TAB in the directory browser will bring up a menu showing the files
-specified by the <tt/mailboxes/ command, and indicate which contain new
-messages. Mutt-ng will automatically enter this mode when invoked from the
-command line with the <tt/-y/ option.
-
-The ``unmailboxes'' command is used to remove a token from the list
-of folders which receive mail. Use ``unmailboxes *'' to remove all
-tokens.
-
-<p>
-<bf/Note:/ new mail is detected by comparing the last modification time to
-the last access time. Utilities like <tt/biff/ or <tt/frm/ or any other
-program which accesses the mailbox might cause Mutt-ng to never detect new mail
-for that mailbox if they do not properly reset the access time. Backup
-tools are another common reason for updated access times.
-<p>
-
-<bf/Note:/ the filenames in the <tt/mailboxes/ command are resolved when
-the command is executed, so if these names contain <ref id="shortcuts"
-name="shortcut characters"> (such as ``='' and ``!''), any variable
-definition that affect these characters (like <ref id="folder"
-name="$folder"> and <ref id="spoolfile" name="$spoolfile">)
-should be executed before the <tt/mailboxes/ command.
-
-<sect1>User defined headers<label id="my_hdr">
-<p>
-Usage:<newline>
-<tt/my_hdr/ <em/string/<newline>
-<tt/unmy_hdr/ <em/field/ [ <em/field/ ... ]
-
-The ``my_hdr'' command allows you to create your own header
-fields which will be added to every message you send.
-
-For example, if you would like to add an ``Organization:'' header field to
-all of your outgoing messages, you can put the command
-
-<quote>
-my_hdr Organization: A Really Big Company, Anytown, USA
-</quote>
-
-in your <tt/.muttrc/.
-
-<bf/Note:/ space characters are <em/not/ allowed between the keyword and
-the colon (``:''). The standard for electronic mail (RFC822) says that
-space is illegal there, so Mutt-ng enforces the rule.
-
-If you would like to add a header field to a single message, you should
-either set the <ref id="edit_headers" name="edit_headers"> variable,
-or use the <em/edit-headers/ function (default: ``E'') in the send-menu so
-that you can edit the header of your message along with the body.
-
-To remove user defined header fields, use the ``unmy_hdr''
-command. You may specify an asterisk (``*'') to remove all header
-fields, or the fields to remove. For example, to remove all ``To'' and
-``Cc'' header fields, you could use:
-
-<quote>
-unmy_hdr to cc
-</quote>
-
-<sect1>Defining the order of headers when viewing messages<label id="hdr_order">
-<p>
-Usage: <tt/hdr_order/ <em/header1/ <em/header2/ <em/header3/
-
-With this command, you can specify an order in which mutt will attempt
-to present headers to you when viewing messages.
-
-``unhdr_order *'' will clear all previous headers from the order list,
-thus removing the header order effects set by the system-wide startup
-file.
-
-<tscreen><verb>
-hdr_order From Date: From: To: Cc: Subject:
-</verb></tscreen>
-
-<sect1>Specify default save filename<label id="save-hook">
-<p>
-Usage: <tt/save-hook/ [!]<em/pattern/ <em/filename/
-
-This command is used to override the default filename used when saving
-messages. <em/filename/ will be used as the default filename if the message is
-<em/From:/ an address matching <em/regexp/ or if you are the author and the
-message is addressed <em/to:/ something matching <em/regexp/.
-
-See <ref id="pattern_hook" name="Message Matching in Hooks"> for information on the exact format of <em/pattern/.
-
-Examples:
-
-<tscreen><verb>
-save-hook me@(turing\\.)?cs\\.hmc\\.edu$ +elkins
-save-hook aol\\.com$ +spam
-</verb></tscreen>
-
-Also see the <ref id="fcc-save-hook" name="fcc-save-hook"> command.
-
-<sect1>Specify default Fcc: mailbox when composing<label id="fcc-hook">
-<p>
-Usage: <tt/fcc-hook/ [!]<em/pattern/ <em/mailbox/
-
-This command is used to save outgoing mail in a mailbox other than
-<ref id="record" name="$record">. Mutt-ng searches the initial list of
-message recipients for the first matching <em/regexp/ and uses <em/mailbox/
-as the default Fcc: mailbox. If no match is found the message will be saved
-to <ref id="record" name="$record"> mailbox.
-
-See <ref id="pattern_hook" name="Message Matching in Hooks"> for information on the exact format of <em/pattern/.
-
-Example: <tt/fcc-hook [@.]aol\\.com$ +spammers/
-
-The above will save a copy of all messages going to the aol.com domain to
-the `+spammers' mailbox by default. Also see the <ref id="fcc-save-hook"
-name="fcc-save-hook"> command.
-
-<sect1>Specify default save filename and default Fcc: mailbox at once<label
-id="fcc-save-hook">
-<p>
-Usage: <tt/fcc-save-hook/ [!]<em/pattern/ <em/mailbox/
-
-This command is a shortcut, equivalent to doing both a <ref id="fcc-hook" name="fcc-hook">
-and a <ref id="save-hook" name="save-hook"> with its arguments.
-
-<sect1>Change settings based upon message recipients<label id="send-hook"><label id="reply-hook"><label id="send2-hook">
-<p>
-Usage: <tt/reply-hook/ [!]<em/pattern/ <em/command/<newline>
-Usage: <tt/send-hook/ [!]<em/pattern/ <em/command/<newline>
-Usage: <tt/send2-hook/ [!]<em/pattern/ <em/command/
-
-These commands can be used to execute arbitrary configuration commands based
-upon recipients of the message. <em/pattern/ is a regular expression
-matching the desired address. <em/command/ is executed when <em/regexp/
-matches recipients of the message.
-
-<tt/reply-hook/ is matched against the message you are <em/replying/
-<bf/to/, instead of the message you are <em/sending/. <tt/send-hook/ is
-matched against all messages, both <em/new/ and <em/replies/. <bf/Note:/
-<tt/reply-hook/s are matched <bf/before/ the <tt/send-hook/, <bf/regardless/
-of the order specified in the users's configuration file.
-
-<tt/send2-hook/ is matched every time a message is changed, either
-by editing it, or by using the compose menu to change its recipients
-or subject. <tt/send2-hook/ is executed after <tt/send-hook/, and
-can, e.g., be used to set parameters such as the <ref id="sendmail"
-name="$sendmail"> variable depending on the message's sender
-address.
-
-For each type of <tt/send-hook/ or <tt/reply-hook/, when multiple matches
-occur, commands are executed in the order they are specified in the muttrc
-(for that type of hook).
-
-See <ref id="pattern_hook" name="Message Matching in Hooks"> for information on the exact format of <em/pattern/.
-
-Example: <tt/send-hook mutt &dquot;set mime_forward signature=''&dquot;/
-
-Another typical use for this command is to change the values of the
-<ref id="attribution" name="$attribution">, <ref id="signature"
-name="$signature"> and <ref id="locale" name="$locale">
-variables in order to change the language of the attributions and
-signatures based upon the recipients.
-
-<bf/Note:/ the send-hook's are only executed ONCE after getting the initial
-list of recipients. Adding a recipient after replying or editing the
-message will NOT cause any send-hook to be executed. Also note that
-my_hdr commands which modify recipient headers, or the message's
-subject, don't have any effect on the current message when executed
-from a send-hook.
-
-<sect1>Change settings before formatting a message<label id="message-hook">
-<p>
-Usage: <tt/message-hook/ [!]<em/pattern/ <em/command/
-
-This command can be used to execute arbitrary configuration commands
-before viewing or formatting a message based upon information about the message.
-<em/command/ is executed if the <em/pattern/ matches the message to be
-displayed. When multiple matches occur, commands are executed in the order
-they are specified in the muttrc.
-
-See <ref id="pattern_hook" name="Message Matching in Hooks"> for
-information on the exact format of <em/pattern/.
-
-Example:
-<tscreen><verb>
-message-hook ~A 'set pager=builtin'
-message-hook '~f freshmeat-news' 'set pager="less \"+/^ subject: .*\""'
-</verb></tscreen>
-
-<sect1>Choosing the cryptographic key of the recipient<label id="crypt-hook">
-<p>
-Usage: <tt/crypt-hook/ <em/pattern/ <em/keyid/
-
-When encrypting messages with PGP or OpenSSL, you may want to associate a certain
-key with a given e-mail address automatically, either because the
-recipient's public key can't be deduced from the destination address,
-or because, for some reasons, you need to override the key Mutt-ng would
-normally use. The crypt-hook command provides a method by which you can
-specify the ID of the public key to be used when encrypting messages to
-a certain recipient.
-
-The meaning of "key id" is to be taken broadly in this context: You
-can either put a numerical key ID here, an e-mail address, or even
-just a real name.
-
-<sect1>Adding key sequences to the keyboard buffer<label id="push">
-<p>
-Usage: <tt/push/ <em/string/
-
-This command adds the named string to the keyboard buffer. The string may
-contain control characters, key names and function names like the sequence
-string in the <ref id="macro" name="macro"> command. You may use it to
-automatically run a sequence of commands at startup, or when entering
-certain folders.
-
-<sect1>Executing functions<label id="exec">
-<p>
-Usage: <tt/exec/ <em/function/ [ <em/function/ ... ]
-
-This command can be used to execute any function. Functions are
-listed in the <ref id="functions" name="function reference">.
-``exec function'' is equivalent to ``push <function>''.
-
-<sect1>Message Scoring<label id="score-command">
-<p>
-Usage: <tt/score/ <em/pattern/ <em/value/<newline>
-Usage: <tt/unscore/ <em/pattern/ [ <em/pattern/ ... ]
-
-The <tt/score/ commands adds <em/value/ to a message's score if <em/pattern/
-matches it. <em/pattern/ is a string in the format described in the <ref
-id="patterns" name="patterns"> section (note: For efficiency reasons, patterns
-which scan information not available in the index, such as <tt>˜b</tt>,
-<tt>˜B</tt> or <tt>˜h</tt>, may not be used). <em/value/ is a
-positive or negative integer. A message's final score is the sum total of all
-matching <tt/score/ entries. However, you may optionally prefix <em/value/ with
-an equal sign (=) to cause evaluation to stop at a particular entry if there is
-a match. Negative final scores are rounded up to 0.
-
-The <tt/unscore/ command removes score entries from the list. You <bf/must/
-specify the same pattern specified in the <tt/score/ command for it to be
-removed. The pattern ``*'' is a special token which means to clear the list
-of all score entries.
-
-<sect1>Spam detection<label id="spam">
-<p>
-Usage: <tt/spam/ <em/pattern/ <em/format/<newline>
-Usage: <tt/nospam/ <em/pattern/
-
-Mutt-ng has generalized support for external spam-scoring filters.
-By defining your spam patterns with the <tt/spam/ and <tt/nospam/
-commands, you can <em/limit/, <em/search/, and <em/sort/ your
-mail based on its spam attributes, as determined by the external
-filter. You also can display the spam attributes in your index
-display using the <tt/%H/ selector in the <ref id="index_format"
-name="$index_format"> variable. (Tip: try <tt/%?H?[%H] ?/
-to display spam tags only when they are defined for a given message.)
-
-Your first step is to define your external filter's spam patterns using
-the <tt/spam/ command. <em/pattern/ should be a regular expression
-that matches a header in a mail message. If any message in the mailbox
-matches this regular expression, it will receive a ``spam tag'' or
-``spam attribute'' (unless it also matches a <tt/nospam/ pattern -- see
-below.) The appearance of this attribute is entirely up to you, and is
-governed by the <em/format/ parameter. <em/format/ can be any static
-text, but it also can include back-references from the <em/pattern/
-expression. (A regular expression ``back-reference'' refers to a
-sub-expression contained within parentheses.) <tt/%1/ is replaced with
-the first back-reference in the regex, <tt/%2/ with the second, etc.
-
-If you're using multiple spam filters, a message can have more than
-one spam-related header. You can define <tt/spam/ patterns for each
-filter you use. If a message matches two or more of these patterns, and
-the $spam_separator variable is set to a string, then the
-message's spam tag will consist of all the <em/format/ strings joined
-together, with the value of $spam_separator separating
-them.
-
-For example, suppose I use DCC, SpamAssassin, and PureMessage. I might
-define these spam settings:
-<tscreen><verb>
-spam "X-DCC-.*-Metrics:.*(....)=many" "90+/DCC-%1"
-spam "X-Spam-Status: Yes" "90+/SA"
-spam "X-PerlMX-Spam: .*Probability=([0-9]+)%" "%1/PM"
-set spam_separator=", "
-</verb></tscreen>
-
-If I then received a message that DCC registered with ``many'' hits
-under the ``Fuz2'' checksum, and that PureMessage registered with a
-97% probability of being spam, that message's spam tag would read
-<tt>90+/DCC-Fuz2, 97/PM</tt>. (The four characters before ``=many'' in a
-DCC report indicate the checksum used -- in this case, ``Fuz2''.)
-
-If the $spam_separator variable is unset, then each
-spam pattern match supersedes the previous one. Instead of getting
-joined <em/format/ strings, you'll get only the last one to match.
-
-The spam tag is what will be displayed in the index when you use
-<tt/%H/ in the <tt/$index_format/ variable. It's also the
-string that the <tt/~H/ pattern-matching expression matches against for
-<em/search/ and <em/limit/ functions. And it's what sorting by spam
-attribute will use as a sort key.
-
-That's a pretty complicated example, and most people's actual
-environments will have only one spam filter. The simpler your
-configuration, the more effective mutt can be, especially when it comes
-to sorting.
-
-Generally, when you sort by spam tag, mutt will sort <em/lexically/ --
-that is, by ordering strings alphnumerically. However, if a spam tag
-begins with a number, mutt will sort numerically first, and lexically
-only when two numbers are equal in value. (This is like UNIX's
-<tt/sort -n/.) A message with no spam attributes at all -- that is, one
-that didn't match <em/any/ of your <tt/spam/ patterns -- is sorted at
-lowest priority. Numbers are sorted next, beginning with 0 and ranging
-upward. Finally, non-numeric strings are sorted, with ``a'' taking lower
-priority than ``z''. Clearly, in general, sorting by spam tags is most
-effective when you can coerce your filter to give you a raw number. But
-in case you can't, mutt can still do something useful.
-
-The <tt/nospam/ command can be used to write exceptions to <tt/spam/
-patterns. If a header pattern matches something in a <tt/spam/ command,
-but you nonetheless do not want it to receive a spam tag, you can list a
-more precise pattern under a <tt/nospam/ command.
-
-If the <em/pattern/ given to <tt/nospam/ is exactly the same as the
-<em/pattern/ on an existing <tt/spam/ list entry, the effect will be to
-remove the entry from the spam list, instead of adding an exception.
-Likewise, if the <em/pattern/ for a <tt/spam/ command matches an entry
-on the <tt/nospam/ list, that <tt/nospam/ entry will be removed. If the
-<em/pattern/ for <tt/nospam/ is ``*'', <em/all entries on both lists/
-will be removed. This might be the default action if you use <tt/spam/
-and <tt/nospam/ in conjunction with a <tt/folder-hook/.
-
-You can have as many <tt/spam/ or <tt/nospam/ commands as you like.
-You can even do your own primitive spam detection within mutt -- for
-example, if you consider all mail from <tt/MAILER-DAEMON/ to be spam,
-you can use a <tt/spam/ command like this:
-
-<tscreen><verb>
-spam "^From: .*MAILER-DAEMON" "999"
-</verb></tscreen>
-
-
-<sect1>Setting variables<label id="set">
-<p>
-Usage: <tt/set/ [no|inv]<em/variable/[=<em/value/] [ <em/variable/ ... ]<newline>
-Usage: <tt/toggle/ <em/variable/ [<em/variable/ ... ]<newline>
-Usage: <tt/unset/ <em/variable/ [<em/variable/ ... ]<newline>
-Usage: <tt/reset/ <em/variable/ [<em/variable/ ... ]
-
-This command is used to set (and unset) <ref id="variables"
-name="configuration variables">. There are four basic types of variables:
-boolean, number, string and quadoption. <em/boolean/ variables can be
-<em/set/ (true) or <em/unset/ (false). <em/number/ variables can be
-assigned a positive integer value.
-
-<em/string/ variables consist of any number of printable characters.
-<em/strings/ must be enclosed in quotes if they contain spaces or tabs. You
-may also use the ``C'' escape sequences <bf/\n/ and <bf/\t/ for
-newline and tab, respectively.
-
-<em/quadoption/ variables are used to control whether or not to be prompted
-for certain actions, or to specify a default action. A value of <em/yes/
-will cause the action to be carried out automatically as if you had answered
-yes to the question. Similarly, a value of <em/no/ will cause the the
-action to be carried out as if you had answered ``no.'' A value of
-<em/ask-yes/ will cause a prompt with a default answer of ``yes'' and
-<em/ask-no/ will provide a default answer of ``no.''
-
-Prefixing a variable with ``no'' will unset it. Example: <tt/set noaskbcc/.
-
-For <em/boolean/ variables, you may optionally prefix the variable name with
-<tt/inv/ to toggle the value (on or off). This is useful when writing
-macros. Example: <tt/set invsmart_wrap/.
-
-The <tt/toggle/ command automatically prepends the <tt/inv/ prefix to all
-specified variables.
-
-The <tt/unset/ command automatically prepends the <tt/no/ prefix to all
-specified variables.
-
-Using the enter-command function in the <em/index/ menu, you can query the
-value of a variable by prefixing the name of the variable with a question
-mark:
-
-<tscreen><verb>
-set ?allow_8bit
-</verb></tscreen>
-
-The question mark is actually only required for boolean and quadoption
-variables.
-
-The <tt/reset/ command resets all given variables to the compile time
-defaults (hopefully mentioned in this manual). If you use the command
-<tt/set/ and prefix the variable with ``&'' this has the same
-behavior as the reset command.
-
-With the <tt/reset/ command there exists the special variable ``all'',
-which allows you to reset all variables to their system defaults.
-
-<sect1>Reading initialization commands from another file<label id="source">
-<p>
-Usage: <tt/source/ <em/filename/ [ <em/filename/ ... ]
-
-This command allows the inclusion of initialization commands
-from other files. For example, I place all of my aliases in
-<tt>˜/.mail_aliases</tt> so that I can make my
-<tt>˜/.muttrc</tt> readable and keep my aliases private.
-
-If the filename begins with a tilde (``˜''), it will be expanded to the
-path of your home directory.
-
-If the filename ends with a vertical bar (|), then <em/filename/ is
-considered to be an executable program from which to read input (eg.
-<tt>source ~/bin/myscript|</tt>).
-
-<sect1>Configuring features conditionally<label id="ifdef">
-<p>
-Usage: <tt/ifdef/ <em/item/ <em/command/<newline>
-Usage: <tt/ifndef/ <em/item/ <em/command/
-
-<p>
-These commands allow testing for a variable, function or certain feature
-being available or not respectively, before actually executing the
-command given.
-
-<p>
-<tt/ifdef/ (short for ``if defined'') only executes the command upon
-availability while <tt/ifndef/ (short for ``if not defined'') does if
-not. The <em/command/ may be any valid fraction of a configuration file.
-
-<p>
-All names of variables, functions and menus may be tested. Additionally, the
-following compile-features may be tested when prefixed with
-'<tt/feature_/':
-<tt/ncurses/, <tt/slang/, <tt/iconv/, <tt/idn/, <tt/dotlock/,
-<tt/standalone/, <tt/pop/, <tt/nntp/, <tt/imap/, <tt/ssl/, <tt/gnutls/,
-<tt/sasl/, <tt/sasl2/, <tt/libesmtp/, <tt/compressed/, <tt/color/,
-<tt/classic_pgp/, <tt/classic_smime/, <tt/gpgme/, <tt/header_cache/,
-<tt/gdbm/, <tt/qdbm/ and <tt/db4/.
-
-<p>
-Examples follow.
-
-<p>
-To only source a file with IMAP related settings if IMAP support is
-compiled in, use:
-<tscreen><verb>
-ifdef feature_imap 'source ~/.mutt-ng/imap_setup'
-# or
-# ifdef imap_user 'source ~/.mutt-ng/imap_setup'
-# or
-# ...
-</verb></tscreen>
-
-<p>
-To exit mutt-ng directly if no NNTP support is compiled in:
-<tscreen><verb>
-ifndef feature_nntp 'push q'
-# or
-# ifndef newsrc 'push q'
-# or
-# ...
-</verb></tscreen>
-
-<p>
-To only set the <ref id="imap_mail_check"
-name="$imap_mail_check"> variable if
-the system's mutt-ng is aware of it, use:
-<tscreen><verb>
-ifdef imap_mail_check 'set imap_mail_check=500'
-</verb></tscreen>
-
-<sect1>Removing hooks<label id="unhook">
-<p>
-Usage: <tt/unhook/ [ * | <em/hook-type/ ]
-
-This command permits you to flush hooks you have previously defined.
-You can either remove all hooks by giving the ``*'' character as an
-argument, or you can remove all hooks of a specific type by saying
-something like <tt/unhook send-hook/.
-
-<sect>Advanced Usage
-
-<sect1>Regular Expressions<label id="regexp">
-<p>
-All string patterns in Mutt-ng including those in more complex
-<ref id="patterns" name="patterns"> must be specified
-using regular expressions (regexp) in the ``POSIX extended'' syntax (which
-is more or less the syntax used by egrep and GNU awk). For your
-convenience, we have included below a brief description of this syntax.
-
-The search is case sensitive if the pattern contains at least one upper
-case letter, and case insensitive otherwise. Note that ``\''
-must be quoted if used for a regular expression in an initialization
-command: ``\\''.
-
-A regular expression is a pattern that describes a set of strings.
-Regular expressions are constructed analogously to arithmetic
-expressions, by using various operators to combine smaller expressions.
-
-Note that the regular expression can be enclosed/delimited by either &dquot;
-or ' which is useful if the regular expression includes a white-space
-character. See <ref id="muttrc-syntax" name="Syntax of Initialization Files">
-for more information on &dquot; and ' delimiter processing. To match a
-literal &dquot; or ' you must preface it with \ (backslash).
-
-The fundamental building blocks are the regular expressions that match
-a single character. Most characters, including all letters and digits,
-are regular expressions that match themselves. Any metacharacter with
-special meaning may be quoted by preceding it with a backslash.
-
-The period ``.'' matches any single character. The caret ``ˆ'' and
-the dollar sign ``&dollar'' are metacharacters that respectively match
-the empty string at the beginning and end of a line.
-
-A list of characters enclosed by ``['' and ``]'' matches any
-single character in that list; if the first character of the list
-is a caret ``ˆ'' then it matches any character <bf/not/ in the
-list. For example, the regular expression <bf/[0123456789]/
-matches any single digit. A range of ASCII characters may be specified
-by giving the first and last characters, separated by a hyphen
-``-''. Most metacharacters lose their special meaning inside
-lists. To include a literal ``]'' place it first in the list.
-Similarly, to include a literal ``ˆ'' place it anywhere but first.
-Finally, to include a literal hyphen ``-'' place it last.
-
-Certain named classes of characters are predefined. Character classes
-consist of ``[:'', a keyword denoting the class, and ``:]''.
-The following classes are defined by the POSIX standard:
-
-<descrip>
-<tag/[:alnum:]/
-Alphanumeric characters.
-<tag/[:alpha:]/
-Alphabetic characters.
-<tag/[:blank:]/
-Space or tab characters.
-<tag/[:cntrl:]/
-Control characters.
-<tag/[:digit:]/
-Numeric characters.
-<tag/[:graph:]/
-Characters that are both printable and visible. (A space is printable,
-but not visible, while an ``a'' is both.)
-<tag/[:lower:]/
-Lower-case alphabetic characters.
-<tag/[:print:]/
-Printable characters (characters that are not control characters.)
-<tag/[:punct:]/
-Punctuation characters (characters that are not letter, digits, control
-characters, or space characters).
-<tag/[:space:]/
-Space characters (such as space, tab and formfeed, to name a few).
-<tag/[:upper:]/
-Upper-case alphabetic characters.
-<tag/[:xdigit:]/
-Characters that are hexadecimal digits.
-</descrip>
-
-A character class is only valid in a regular expression inside the
-brackets of a character list. Note that the brackets in these
-class names are part of the symbolic names, and must be included
-in addition to the brackets delimiting the bracket list. For
-example, <bf/[[:digit:]]/ is equivalent to
-<bf/[0-9]/.
-
-Two additional special sequences can appear in character lists. These
-apply to non-ASCII character sets, which can have single symbols (called
-collating elements) that are represented with more than one character,
-as well as several characters that are equivalent for collating or
-sorting purposes:
-
-<descrip>
-<tag/Collating Symbols/
-A collating symbol is a multi-character collating element enclosed in
-``[.'' and ``.]''. For example, if ``ch'' is a collating
-element, then <bf/[[.ch.]]/ is a regexp that matches
-this collating element, while <bf/[ch]/ is a regexp that
-matches either ``c'' or ``h''.
-<tag/Equivalence Classes/
-An equivalence class is a locale-specific name for a list of
-characters that are equivalent. The name is enclosed in ``[=''
-and ``=]''. For example, the name ``e'' might be used to
-represent all of ``è'' ``é'' and ``e''. In this case,
-<bf/[[=e=]]/ is a regexp that matches any of
-``è'', ``é'' and ``e''.
-</descrip>
-
-A regular expression matching a single character may be followed by one
-of several repetition operators:
-
-<descrip>
-<tag/?/
-The preceding item is optional and matched at most once.
-<tag/*/
-The preceding item will be matched zero or more times.
-<tag/+/
-The preceding item will be matched one or more times.
-<tag/{n}/
-The preceding item is matched exactly <em/n/ times.
-<tag/{n,}/
-The preceding item is matched <em/n/ or more times.
-<tag/{,m}/
-The preceding item is matched at most <em/m/ times.
-<tag/{n,m}/
-The preceding item is matched at least <em/n/ times, but no more than
-<em/m/ times.
-</descrip>
-
-Two regular expressions may be concatenated; the resulting regular
-expression matches any string formed by concatenating two substrings
-that respectively match the concatenated subexpressions.
-
-Two regular expressions may be joined by the infix operator ``|'';
-the resulting regular expression matches any string matching either
-subexpression.
-
-Repetition takes precedence over concatenation, which in turn takes
-precedence over alternation. A whole subexpression may be enclosed in
-parentheses to override these precedence rules.
-
-<bf/Note:/ If you compile Mutt-ng with the GNU <em/rx/ package, the
-following operators may also be used in regular expressions:
-
-<descrip>
-<tag/\\y/
-Matches the empty string at either the beginning or the end of a word.
-<tag/\\B/
-Matches the empty string within a word.
-<tag/\\</
-Matches the empty string at the beginning of a word.
-<tag/\\>/
-Matches the empty string at the end of a word.
-<tag/\\w/
-Matches any word-constituent character (letter, digit, or underscore).
-<tag/\\W/
-Matches any character that is not word-constituent.
-<tag/\\`/
-Matches the empty string at the beginning of a buffer (string).
-<tag/\\'/
-Matches the empty string at the end of a buffer.
-</descrip>
-
-Please note however that these operators are not defined by POSIX, so
-they may or may not be available in stock libraries on various systems.
-
-<sect1>Patterns<label id="patterns">
-<p>
-Many of Mutt-ng's commands allow you to specify a pattern to match
-(limit, tag-pattern, delete-pattern, etc.). There are several ways to select
-messages:
-
-<tscreen><verb>
-~A all messages
-~b EXPR messages which contain EXPR in the message body
-~B EXPR messages which contain EXPR in the whole message
-~c USER messages carbon-copied to USER
-~C EXPR message is either to: or cc: EXPR
-~D deleted messages
-~d [MIN]-[MAX] messages with ``date-sent'' in a Date range
-~E expired messages
-~e EXPR message which contains EXPR in the ``Sender'' field
-~F flagged messages
-~f USER messages originating from USER
-~g cryptographically signed messages
-~G cryptographically encrypted messages
-~H EXPR messages with a spam attribute matching EXPR
-~h EXPR messages which contain EXPR in the message header
-~k message contains PGP key material
-~i ID message which match ID in the ``Message-ID'' field
-~L EXPR message is either originated or received by EXPR
-~l message is addressed to a known mailing list
-~m [MIN]-[MAX] message in the range MIN to MAX *)
-~n [MIN]-[MAX] messages with a score in the range MIN to MAX *)
-~N new messages
-~O old messages
-~p message is addressed to you (consults alternates)
-~P message is from you (consults alternates)
-~Q messages which have been replied to
-~R read messages
-~r [MIN]-[MAX] messages with ``date-received'' in a Date range
-~S superseded messages
-~s SUBJECT messages having SUBJECT in the ``Subject'' field.
-~T tagged messages
-~t USER messages addressed to USER
-~U unread messages
-~v message is part of a collapsed thread.
-~V cryptographically verified messages
-~w EXPR messages which contain EXPR in the `Newsgroups' field
- (if compiled with NNTP support)
-~x EXPR messages which contain EXPR in the `References' field
-~y EXPR messages which contain EXPR in the `X-Label' field
-~z [MIN]-[MAX] messages with a size in the range MIN to MAX *)
-~= duplicated messages (see $duplicate_threads)
-~$ unreferenced messages (requires threaded view)
-~* ``From'' contains realname and (syntactically) valid
- address (excluded are addresses matching against
- alternates or any alias)
-</verb></tscreen>
-
-Where EXPR, USER, ID, and SUBJECT are
-<ref id="regexp" name="regular expressions">. Special attention has to be
-made when using regular expressions inside of patterns. Specifically,
-Mutt-ng's parser for these patterns will strip one level of backslash (\),
-which is normally used for quoting. If it is your intention to use a
-backslash in the regular expression, you will need to use two backslashes
-instead (\\).
-
-*) The forms <tt/<[MAX]/, <tt/>[MIN]/,
-<tt/[MIN]-/ and <tt/-[MAX]/
-are allowed, too.
-
-<sect2>Pattern Modifier
-<p>
-
-Note that patterns matching 'lists' of addresses (notably c,C,p,P and t)
-match if there is at least one match in the whole list. If you want to
-make sure that all elements of that list match, you need to prefix your
-pattern with ^.
-This example matches all mails which only has recipients from Germany.
-
-<tscreen><verb>
-^~C \.de$
-</verb></tscreen>
-
-<sect2>Complex Patterns
-<p>
-
-Logical AND is performed by specifying more than one criterion. For
-example:
-
-<tscreen><verb>
-~t mutt ~f elkins
-</verb></tscreen>
-
-would select messages which contain the word ``mutt'' in the list of
-recipients <bf/and/ that have the word ``elkins'' in the ``From'' header
-field.
-
-Mutt-ng also recognizes the following operators to create more complex search
-patterns:
-
-<itemize>
-<item>! -- logical NOT operator
-<item>| -- logical OR operator
-<item>() -- logical grouping operator
-</itemize>
-
-Here is an example illustrating a complex search pattern. This pattern will
-select all messages which do not contain ``mutt'' in the ``To'' or ``Cc''
-field and which are from ``elkins''.
-
-<tscreen><verb>
-!(~t mutt|~c mutt) ~f elkins
-</verb></tscreen>
-
-Here is an example using white space in the regular expression (note
-the ' and &dquot; delimiters). For this to match, the mail's subject must
-match the ``^Junk +From +Me$'' and it must be from either ``Jim +Somebody''
-or ``Ed +SomeoneElse'':
-
-<tscreen><verb>
- '~s "^Junk +From +Me$" ~f ("Jim +Somebody"|"Ed +SomeoneElse")'
-</verb></tscreen>
-
-Note that if a regular expression contains parenthesis, or a vertical bar
-("|"), you <bf/must/ enclose the expression in double or single quotes since
-those characters are also used to separate different parts of Mutt-ng's
-pattern language. For example,
-
-<tscreen><verb>
-~f "me@(mutt\.org|cs\.hmc\.edu)"
-</verb></tscreen>
-
-Without the quotes, the parenthesis wouldn't end.
-This would be separated to two OR'd patterns: <em/˜f me@(mutt\.org/
-and <em/cs\.hmc\.edu)/. They are never what you want.
-
-<sect2>Searching by Date
-<p>
-Mutt-ng supports two types of dates, <em/absolute/ and <em/relative/.
-
-<bf/Absolute/. Dates <bf/must/ be in DD/MM/YY format (month and year are
-optional, defaulting to the current month and year). An example of a valid
-range of dates is:
-
-<tscreen><verb>
-Limit to messages matching: ~d 20/1/95-31/10
-</verb></tscreen>
-
-If you omit the minimum (first) date, and just specify ``-DD/MM/YY'', all
-messages <em/before/ the given date will be selected. If you omit the maximum
-(second) date, and specify ``DD/MM/YY-'', all messages <em/after/ the given
-date will be selected. If you specify a single date with no dash (``-''),
-only messages sent on the given date will be selected.
-
-<bf/Error Margins/. You can add error margins to absolute dates.
-An error margin is a sign (+ or -), followed by a digit, followed by
-one of the following units:
-<verb>
-y years
-m months
-w weeks
-d days
-</verb>
-As a special case, you can replace the sign by a ``*'' character,
-which is equivalent to giving identical plus and minus error margins.
-
-Example: To select any messages two weeks around January 15, 2001,
-you'd use the following pattern:
-<tscreen><verb>
-Limit to messages matching: ~d 15/1/2001*2w
-</verb></tscreen>
-
-
-<bf/Relative/. This type of date is relative to the current date, and may
-be specified as:
-<itemize>
-<item>><em/offset/ (messages older than <em/offset/ units)
-<item><<em/offset/ (messages newer than <em/offset/ units)
-<item>=<em/offset/ (messages exactly <em/offset/ units old)
-</itemize>
-
-<em/offset/ is specified as a positive number with one of the following
-units:
-<verb>
-y years
-m months
-w weeks
-d days
-</verb>
-
-Example: to select messages less than 1 month old, you would use
-<tscreen><verb>
-Limit to messages matching: ~d <1m
-</verb></tscreen>
-
-
-
-<bf/Note:/ all dates used when searching are relative to the
-<bf/local/ time zone, so unless you change the setting of your <ref
-id="index_format" name="$index_format"> to include a
-<tt/%[...]/ format, these are <bf/not/ the dates shown
-in the main index.
-
-<sect1>Using Tags
-<p>
-
-Sometimes it is desirable to perform an operation on a group of
-messages all at once rather than one at a time. An example might be
-to save messages to a mailing list to a separate folder, or to
-delete all messages with a given subject. To tag all messages
-matching a pattern, use the tag-pattern function, which is bound to
-``shift-T'' by default. Or you can select individual messages by
-hand using the ``tag-message'' function, which is bound to ``t'' by
-default. See <ref id="patterns" name="patterns"> for Mutt-ng's pattern
-matching syntax.
-
-Once you have tagged the desired messages, you can use the
-``tag-prefix'' operator, which is the ``;'' (semicolon) key by default.
-When the ``tag-prefix'' operator is used, the <bf/next/ operation will
-be applied to all tagged messages if that operation can be used in that
-manner. If the <ref id="auto_tag" name="$auto_tag">
-variable is set, the next operation applies to the tagged messages
-automatically, without requiring the ``tag-prefix''.
-
-In <ref id="macro" name="macros"> or <ref id="push" name="push"> commands,
-you can use the ``tag-prefix-cond'' operator. If there are no tagged
-messages, mutt will "eat" the rest of the macro to abort it's execution.
-Mutt-ng will stop "eating" the macro when it encounters the ``end-cond''
-operator; after this operator the rest of the macro will be executed as
-normal.
-
-<sect1>Using Hooks<label id="hooks">
-<p>
-A <em/hook/ is a concept borrowed from the EMACS editor which allows you to
-execute arbitrary commands before performing some operation. For example,
-you may wish to tailor your configuration based upon which mailbox you are
-reading, or to whom you are sending mail. In the Mutt-ng world, a <em/hook/
-consists of a <ref id="regexp" name="regular expression"> or
-<ref id="patterns" name="pattern"> along with a
-configuration option/command. See
-<itemize>
-<item><ref id="folder-hook" name="folder-hook">
-<item><ref id="send-hook" name="send-hook">
-<item><ref id="message-hook" name="message-hook">
-<item><ref id="save-hook" name="save-hook">
-<item><ref id="mbox-hook" name="mbox-hook">
-<item><ref id="fcc-hook" name="fcc-hook">
-<item><ref id="fcc-save-hook" name="fcc-save-hook">
-</itemize>
-for specific details on each type of <em/hook/ available.
-
-<bf/Note:/ if a hook changes configuration settings, these changes remain
-effective until the end of the current mutt session. As this is generally
-not desired, a default hook needs to be added before all other hooks to
-restore configuration defaults. Here is an example with send-hook and the
-my_hdr directive:
-
-<tscreen><verb>
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+
+<book>
+
+<bookinfo>
+ <title>The Mutt Next Generation E-Mail Client</title>
+ <author>
+ <firstname>Andreas</firstname><surname>Krennmair</surname>
+ <email>ak@synflood.at</email>
+ </author>
+ <author>
+ <firstname>Michael</firstname><surname>Elkins</surname>
+ <email>me@cs.hmc.edu</email>
+ </author>
+ <pubdate>version devel-r473</pubdate>
+ <abstract>
+ <para>
+ Michael Elinks on mutt, circa 1995:
+ ``All mail clients suck. This one just sucks less.''
+ </para>
+ <para>
+ Sven Guckes on mutt, ca. 2003: ``But it still sucks!''
+ </para>
+ </abstract>
+</bookinfo>
+
+<chapter> <!--{{{-->
+ <title>Introduction </title>
+
+ <sect1>
+ <title>Overview </title>
+
+ <para>
+ <emphasis role="bold">Mutt-ng</emphasis> is a small but very
+ powerful text-based MIME mail client. Mutt-ng is highly
+ configurable, and is well suited to the mail power user with
+ advanced features like key bindings, keyboard macros, mail
+ threading, regular expression searches and a powerful pattern
+ matching language for selecting groups of messages.
+ </para>
+
+ <para>
+ This documentation additionally contains documentation to
+ <emphasis role="bold"> Mutt-NG </emphasis> ,a fork from Mutt
+ with the goal to fix all the little annoyances of Mutt, to
+ integrate all the Mutt patches that are floating around in the
+ web, and to add other new features. Features specific to Mutt-ng
+ will be discussed in an extra section. Don't be confused when
+ most of the documentation talk about Mutt and not Mutt-ng,
+ Mutt-ng contains all Mutt features, plus many more.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Mutt-ng Home Page </title>
+
+ <para>
+ <ulink url="http://www.muttng.org/">http://www.muttng.org</ulink>
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Mailing Lists </title>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ <email>mutt-ng-users@lists.berlios.de</email>: This is
+ where the mutt-ng user support happens.
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <email>mutt-ng-devel@lists.berlios.de</email>: The
+ development mailing list for mutt-ng
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Software Distribution Sites </title>
+
+ <para>
+ So far, there are no official releases of Mutt-ng, but you can
+ download daily snapshots from <ulink
+ url="http://mutt-ng.berlios.de/snapshots/"
+ >http://mutt-ng.berlios.de/snapshots/</ulink>
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>IRC </title>
+
+ <para>
+ Visit channel <emphasis>#muttng</emphasis> on <ulink
+ url="http://www.freenode.net/">irc.freenode.net
+ (www.freenode.net) </ulink> to chat with other people
+ interested in Mutt-ng.
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Weblog </title>
+
+ <para>
+ If you want to read fresh news about the latest development in
+ Mutt-ng, and get informed about stuff like interesting,
+ Mutt-ng-related articles and packages for your favorite
+ distribution, you can read and/or subscribe to our <ulink
+ url="http://mutt-ng.supersized.org/">Mutt-ng development
+ weblog</ulink>.
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Copyright </title>
+
+ <para>
+ Mutt is Copyright (C) 1996-2000 Michael R. Elkins
+ <me@cs.hmc.edu> and others
+ </para>
+
+ <para>
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+ </para>
+
+ <para>
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ </para>
+
+ <para>
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
+ </para>
+
+ </sect1>
+
+</chapter>
+ <!--}}}-->
+
+<chapter>
+ <title>Getting Started </title>
+
+ <sect1> <!--{{{-->
+ <title>Basic Concepts </title>
+
+ <sect2> <!--{{{-->
+ <title>Screens and Menus </title>
+
+ <para>
+ mutt-ng offers different screens of which every has its special
+ purpose:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ The <emphasis>index</emphasis> displays the contents of the
+ currently opened
+ mailbox.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ The <emphasis>pager</emphasis> is responsible for displaying
+ messages, that
+ is, the header, the body and all attached parts.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ The <emphasis>file browser</emphasis> offers operations on and
+ displays
+ information of all folders mutt-ng should watch for mail.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ The <emphasis>sidebar</emphasis> offers a permanent view of
+ which mailboxes
+ contain how many total, new and/or flagged mails.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ The <emphasis>help screen</emphasis> lists for all currently
+ available
+ commands how to invoke them as well as a short description.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ The <emphasis>compose</emphasis> menu is a comfortable
+ interface take last
+ actions before sending mail: change subjects, attach files,
+ remove
+ attachements, etc.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ The <emphasis>attachement</emphasis> menu gives a summary and
+ the tree
+ structure of the attachements of the current message.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ The <emphasis>alias</emphasis> menu lists all or a fraction of
+ the aliases
+ a user has defined.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ The <emphasis>key</emphasis> menu used in connection with
+ encryption lets
+ users choose the right key to encrypt with.
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ When mutt-ng is started without any further options, it'll open
+ the users default mailbox and display the index.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+ <!--}}}-->
+
+ <sect2> <!--{{{-->
+ <title>Configuration </title>
+
+ <para>
+ Mutt-ng does <emphasis>not</emphasis> feature an internal
+ configuration
+ interface or menu due to the simple fact that this would be too
+ complex to handle (currently there are several <emphasis>hundred</emphasis>
+ variables which fine-tune the behaviour.)
+ </para>
+
+ <para>
+ Mutt-ng is configured using configuration files which allow
+ users to add comments or manage them via version control systems
+ to ease maintenance.
+ </para>
+
+ <para>
+ Also, mutt-ng comes with a shell script named <literal>grml-muttng</literal>
+ kindly contributed by users which really helps and eases the
+ creation of a user's configuration file. When downloading the
+ source code via a snapshot or via subversion, it can be found in
+ the <literal>contrib</literal> directory.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+ <!--}}}-->
+
+ <sect2> <!--{{{-->
+ <title>Functions </title>
+
+ <para>
+ Mutt-ng offers great flexibility due to the use of functions:
+ internally, every action a user can make mutt-ng perform is named
+ ``function.'' Those functions are assigned to keys (or even key
+ sequences) and may be completely adjusted to user's needs. The
+ basic idea is that the impatient users get a very intuitive
+ interface to start off with and advanced users virtually get no
+ limits to adjustments.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+ <!--}}}-->
+
+ <sect2> <!--{{{-->
+ <title>Interaction </title>
+
+ <para>
+ Mutt-ng has two basic concepts of user interaction:
+ </para>
+
+ <para>
+
+ <orderedlist>
+ <listitem>
+
+ <para>
+ There is one dedicated line on the screen used to query
+ the user for input, issue any command, query variables and
+ display error and informational messages. As for every type of
+ user input, this requires manual action leading to the need of
+ input.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ The automatized interface for interaction are the so
+ called <emphasis>hooks</emphasis>. Hooks specify actions the
+ user wants to be
+ performed at well-defined situations: what to do when entering
+ which folder, what to do when displaying or replying to what
+ kind of message, etc. These are optional, i.e. a user doesn't
+ need to specify them but can do so.
+
+ </para>
+ </listitem>
+
+ </orderedlist>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+ <!--}}}-->
+
+ <sect2> <!--{{{-->
+ <title>Modularization </title>
+
+ <para>
+ Although mutt-ng has many functionality built-in, many
+ features can be delegated to external tools to increase
+ flexibility: users can define programs to filter a message through
+ before displaying, users can use any program they want for
+ displaying a message, message types (such as PDF or PostScript)
+ for which mutt-ng doesn't have a built-in filter can be rendered
+ by arbitrary tools and so forth. Although mutt-ng has an alias
+ mechanism built-in, it features using external tools to query for
+ nearly every type of addresses from sources like LDAP, databases
+ or just the list of locally known users.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+ <!--}}}-->
+
+ <sect2> <!--{{{-->
+ <title>Patterns </title>
+
+ <para>
+ Mutt-ng has a built-in pattern matching ``language'' which is
+ as widely used as possible to present a consistent interface to
+ users. The same ``pattern terms'' can be used for searching,
+ scoring, message selection and much more.
+ </para>
+
+ <para>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+ <!--}}}-->
+
+ </sect1>
+
+ <!--}}}-->
+
+ <sect1> <!--{{{-->
+ <title>Screens and Menus </title>
+
+ <sect2>
+ <title>Index </title>
+
+ <para>
+ The index is the screen that you usually see first when you
+ start mutt-ng. It gives an overview over your emails in the
+ currently opened mailbox. By default, this is your system mailbox.
+ The information you see in the index is a list of emails, each with
+ its number on the left, its flags (new email, important email,
+ email that has been forwarded or replied to, tagged email, ...),
+ the date when email was sent, its sender, the email size, and the
+ subject. Additionally, the index also shows thread hierarchies:
+ when you reply to an email, and the other person replies back, you
+ can see the other's person email in a "sub-tree" below. This is
+ especially useful for personal email between a group of people or
+ when you've subscribed to mailing lists.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Pager </title>
+
+ <para>
+ The pager is responsible for showing the email content. On the
+ top of the pager you have an overview over the most important email
+ headers like the sender, the recipient, the subject, and much more
+ information. How much information you actually see depends on your
+ configuration, which we'll describe below.
+ </para>
+
+ <para>
+ Below the headers, you see the email body which usually contains
+ the message. If the email contains any attachments, you will see
+ more information about them below the email body, or, if the
+ attachments are text files, you can view them directly in the
+ pager.
+ </para>
+
+ <para>
+ To give the user a good overview, it is possible to configure
+ mutt-ng to show different things in the pager with different
+ colors. Virtually everything that can be described with a regular
+ expression can be colored, e.g. URLs, email addresses or smileys.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>File Browser </title>
+
+ <para>
+ The file browser is the interface to the local or remote
+ file system. When selecting a mailbox to open, the browser allows
+ custom sorting of items, limiting the items shown by a regular
+ expression and a freely adjustable format of what to display in
+ which way. It also allows for easy navigation through the
+ file system when selecting file(s) to attach to a message, select
+ multiple files to attach and many more.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Sidebar </title>
+
+ <para>
+ The sidebar comes in handy to manage mails which are spread
+ over different folders. All folders users setup mutt-ng to watch
+ for new mail will be listed. The listing includes not only the
+ name but also the number of total messages, the number of new and
+ flagged messages. Items with new mail may be colored different
+ from those with flagged mail, items may be shortened or compress
+ if they're they to long to be printed in full form so that by
+ abbreviated names, user still now what the name stands for.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Help </title>
+
+ <para>
+ The help screen is meant to offer a quick help to the user. It
+ lists the current configuration of key bindings and their
+ associated commands including a short description, and currently
+ unbound functions that still need to be associated with a key
+ binding (or alternatively, they can be called via the mutt-ng
+ command prompt).
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Compose Menu </title>
+
+ <para>
+ The compose menu features a split screen containing the
+ information which really matter before actually sending a
+ message by mail or posting an article to a newsgroup: who gets
+ the message as what (recipient, newsgroup, who gets what kind of
+ copy). Additionally, users may set security options like
+ deciding whether to sign, encrypt or sign and encrypt a message
+ with/for what keys.
+ </para>
+
+ <para>
+ Also, it's used to attach messages, news articles or files to
+ a message, to re-edit any attachment including the message
+ itself.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Alias Menu </title>
+
+ <para>
+ The alias menu is used to help users finding the recipients
+ of messages. For users who need to contact many people, there's
+ no need to remember addresses or names completely because it
+ allows for searching, too. The alias mechanism and thus the
+ alias menu also features grouping several addresses by a shorter
+ nickname, the actual alias, so that users don't have to select
+ each single recipient manually.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Attachment Menu </title>
+
+ <para>
+ As will be later discussed in detail, mutt-ng features a good
+ and stable MIME implementation, that is, is greatly supports
+ sending and receiving messages of arbitrary type. The
+ attachment menu displays a message's structure in detail: what
+ content parts are attached to which parent part (which gives a
+ true tree structure), which type is of what type and what size.
+ Single parts may saved, deleted or modified to offer great and
+ easy access to message's internals.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Key Menu </title>
+
+ <para>
+ <literal>FIXME</literal>
+ </para>
+
+ <para>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+ <!--}}}-->
+
+ <sect1> <!--{{{-->
+ <title>Moving Around in Menus </title>
+
+ <para>
+ Information is presented in menus, very similar to ELM. Here is a
+ tableshowing the common keys used to navigate menus in Mutt-ng.
+ </para>
+
+ <para>
+
+ <table>
+ <title>Default Menu Movement Keys</title>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Key</entry>
+ <entry>Function</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><code>j</code> or <code>Down</code></entry>
+ <entry><code>next-entry</code></entry>
+ <entry>move to the next entry</entry>
+ </row>
+ <row>
+ <entry><code>k</code> or <code>Up</code></entry>
+ <entry><code>previous-entry</code></entry>
+ <entry>move to the previous entry</entry>
+ </row>
+ <row>
+ <entry><code>z</code> or <code>PageDn</code></entry>
+ <entry><code>page-down</code></entry>
+ <entry>go to the next page</entry>
+ </row>
+ <row>
+ <entry><code>Z</code> or <code>PageUp</code></entry>
+ <entry><code>page-up</code></entry>
+ <entry>go to the previous page</entry>
+ </row>
+ <row>
+ <entry><code>=</code> or <code>Home</code></entry>
+ <entry><code>first-entry</code></entry>
+ <entry>jump to the first entry</entry>
+ </row>
+ <row>
+ <entry><code>*</code> or <code>End</code></entry>
+ <entry><code>last-entry</code></entry>
+ <entry>jump to the last entry</entry>
+ </row>
+ <row>
+ <entry><code>q</code></entry>
+ <entry><code>quit</code></entry>
+ <entry>exit the current menu</entry>
+ </row>
+ <row>
+ <entry><code>?</code></entry>
+ <entry><code>help</code></entry>
+ <entry>list all key bindings for the current menu</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+ <!--}}}-->
+
+ <sect1 id="editing"> <!--{{{-->
+ <title>Editing Input Fields </title>
+
+ <para>
+ Mutt-ng has a builtin line editor which is used as the primary way to
+ input
+ textual data such as email addresses or filenames. The keys used to
+ move
+ around while editing are very similar to those of Emacs.
+ </para>
+
+ <para>
+
+ <table>
+ <title>Built-In Editor Functions</title>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Key</entry>
+ <entry>Function</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><code>^A or <Home> </code></entry>
+ <entry><code>bol </code></entry>
+ <entry>move to the start of the line</entry>
+ </row>
+ <row>
+ <entry><code>^B or <Left> </code></entry>
+ <entry><code>backward-char </code>
+ </entry><entry>move back one char</entry>
+ </row>
+ <row>
+ <entry><code>Esc B </code></entry>
+ <entry><code>backward-word </code></entry>
+ <entry>move back one word</entry>
+ </row>
+ <row>
+ <entry><code>^D or <Delete> </code></entry>
+ <entry><code>delete-char </code></entry>
+ <entry>delete the char under the cursor</entry>
+ </row>
+ <row>
+ <entry><code>^E or <End> </code></entry>
+ <entry><code>eol </code></entry>
+ <entry>move to the end of the line</entry>
+ </row>
+ <row>
+ <entry><code>^F or <Right> </code></entry>
+ <entry><code>forward-char </code></entry>
+ <entry>move forward one char</entry>
+ </row>
+ <row>
+ <entry><code>Esc F </code></entry>
+ <entry><code>forward-word </code></entry>
+ <entry>move forward one word</entry>
+ </row>
+ <row>
+ <entry><code><Tab> </code></entry>
+ <entry><code>complete </code></entry>
+ <entry>complete filename or alias</entry>
+ </row>
+ <row>
+ <entry><code>^T </code></entry>
+ <entry><code>complete-query </code></entry>
+ <entry>complete address with query</entry>
+ </row>
+ <row>
+ <entry><code>^K </code></entry>
+ <entry><code>kill-eol </code></entry>
+ <entry>delete to the end of the line</entry>
+ </row>
+ <row>
+ <entry><code>ESC d </code></entry>
+ <entry><code>kill-eow </code></entry>
+ <entry>delete to the end of the word</entry>
+ </row>
+ <row>
+ <entry><code>^W </code></entry>
+ <entry><code>kill-word </code></entry>
+ <entry>kill the word in front of the cursor</entry>
+ </row>
+ <row>
+ <entry><code>^U </code></entry>
+ <entry><code>kill-line </code></entry>
+ <entry>delete entire line</entry>
+ </row>
+ <row>
+ <entry><code>^V </code></entry>
+ <entry><code>quote-char </code></entry>
+ <entry>quote the next typed key</entry>
+ </row>
+ <row>
+ <entry><code><Up> </code></entry>
+ <entry><code>history-up </code></entry>
+ <entry>recall previous string from history</entry>
+ </row>
+ <row>
+ <entry><code><Down> </code></entry>
+ <entry><code>history-down </code></entry>
+ <entry>recall next string from history</entry>
+ </row>
+ <row>
+ <entry><code><BackSpace> </code></entry>
+ <entry><code>backspace </code></entry>
+ <entry>kill the char in front of the cursor</entry>
+ </row>
+ <row>
+ <entry><code>Esc u </code></entry>
+ <entry><code>upcase-word </code></entry>
+ <entry>convert word to upper case</entry>
+ </row>
+ <row>
+ <entry><code>Esc l </code></entry>
+ <entry><code>downcase-word </code></entry>
+ <entry>convert word to lower case</entry>
+ </row>
+ <row>
+ <entry><code>Esc c </code></entry>
+ <entry><code>capitalize-word </code></entry>
+ <entry>capitalize the word</entry>
+ </row>
+ <row>
+ <entry><code>^G </code></entry>
+ <entry><code>n/a </code></entry>
+ <entry>abort</entry>
+ </row>
+ <row>
+ <entry><code><Return> </code></entry>
+ <entry><code>n/a </code></entry>
+ <entry>finish editing</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </para>
+
+ <para>
+ You can remap the <emphasis>editor</emphasis> functions using the <link linkend="bind">
+ bind
+ </link>
+ command. For example, to make the <emphasis>Delete</emphasis> key
+ delete the character in
+ front of the cursor rather than under, you could use
+ </para>
+
+ <para>
+ <literal>bind editor <delete> backspace</literal>
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+ <!--}}}-->
+
+ <sect1>
+ <title>Reading Mail - The Index and Pager </title> <!--{{{-->
+
+ <para>
+ Similar to many other mail clients, there are two modes in which mail
+ isread in Mutt-ng. The first is the index of messages in the mailbox,
+ which is
+ called the ``index'' in Mutt-ng. The second mode is the display of the
+ message contents. This is called the ``pager.''
+ </para>
+
+ <para>
+ The next few sections describe the functions provided in each of these
+ modes.
+ </para>
+
+ <sect2>
+ <title>The Message Index</title> <!--{{{-->
+
+ <para>
+
+ <table>
+ <title>Default Index Menu Bindings</title>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Key</entry>
+ <entry>Function</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code>c </code></entry><entry><code></code></entry><entry>change to a different mailbox</entry></row>
+ <row><entry><code>ESC c </code></entry><entry><code></code></entry><entry>change to a folder in read-only mode</entry></row>
+ <row><entry><code>C </code></entry><entry><code></code></entry><entry>copy the current message to another mailbox</entry></row>
+ <row><entry><code>ESC C </code></entry><entry><code></code></entry><entry>decode a message and copy it to a folder</entry></row>
+ <row><entry><code>ESC s </code></entry><entry><code></code></entry><entry>decode a message and save it to a folder</entry></row>
+ <row><entry><code>D </code></entry><entry><code></code></entry><entry>delete messages matching a pattern</entry></row>
+ <row><entry><code>d </code></entry><entry><code></code></entry><entry>delete the current message</entry></row>
+ <row><entry><code>F </code></entry><entry><code></code></entry><entry>mark as important</entry></row>
+ <row><entry><code>l </code></entry><entry><code></code></entry><entry>show messages matching a pattern</entry></row>
+ <row><entry><code>N </code></entry><entry><code></code></entry><entry>mark message as new</entry></row>
+ <row><entry><code>o </code></entry><entry><code></code></entry><entry>change the current sort method</entry></row>
+ <row><entry><code>O </code></entry><entry><code></code></entry><entry>reverse sort the mailbox</entry></row>
+ <row><entry><code>q </code></entry><entry><code></code></entry><entry>save changes and exit</entry></row>
+ <row><entry><code>s </code></entry><entry><code></code></entry><entry>save-message</entry></row>
+ <row><entry><code>T </code></entry><entry><code></code></entry><entry>tag messages matching a pattern</entry></row>
+ <row><entry><code>t </code></entry><entry><code></code></entry><entry>toggle the tag on a message</entry></row>
+ <row><entry><code>ESC t </code></entry><entry><code></code></entry><entry>toggle tag on entire message thread</entry></row>
+ <row><entry><code>U </code></entry><entry><code></code></entry><entry>undelete messages matching a pattern</entry></row>
+ <row><entry><code>u </code></entry><entry><code></code></entry><entry>undelete-message</entry></row>
+ <row><entry><code>v </code></entry><entry><code></code></entry><entry>view-attachments</entry></row>
+ <row><entry><code>x </code></entry><entry><code></code></entry><entry>abort changes and exit</entry></row>
+ <row><entry><code><Return> </code></entry><entry><code></code></entry><entry>display-message</entry></row>
+ <row><entry><code><Tab> </code></entry><entry><code></code></entry><entry>jump to the next new message</entry></row>
+ <row><entry><code>@ </code></entry><entry><code></code></entry><entry>show the author's full e-mail address</entry></row>
+ <row><entry><code>$ </code></entry><entry><code></code></entry><entry>save changes to mailbox</entry></row>
+ <row><entry><code>/ </code></entry><entry><code></code></entry><entry>search</entry></row>
+ <row><entry><code>ESC / </code></entry><entry><code></code></entry><entry>search-reverse</entry></row>
+ <row><entry><code>^L </code></entry><entry><code></code></entry><entry>clear and redraw the screen</entry></row>
+ <row><entry><code>^T </code></entry><entry><code></code></entry><entry>untag messages matching a pattern</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </para>
+
+ <sect3>
+ <title>Status Flags</title> <!--{{{-->
+
+ <para>
+ In addition to who sent the message and the subject, a short
+ summary of
+ the disposition of each message is printed beside the message
+ number.
+ Zero or more of the following ``flags'' may appear, which mean:
+ </para>
+
+ <para>
+
+ <variablelist>
+
+ <varlistentry>
+ <term>D</term>
+ <listitem>
+ <para>
+ message is deleted (is marked for deletion)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>d</term>
+ <listitem>
+ <para>
+ message have attachments marked for deletion
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>K</term>
+ <listitem>
+ <para>
+ contains a PGP public key
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>N</term>
+ <listitem>
+ <para>
+ message is new
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>O</term>
+ <listitem>
+ <para>
+ message is old
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>P</term>
+ <listitem>
+ <para>
+ message is PGP encrypted
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>r</term>
+ <listitem>
+ <para>
+ message has been replied to
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>S</term>
+ <listitem>
+ <para>
+ message is signed, and the signature is succesfully
+ verified
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>s</term>
+ <listitem>
+ <para>
+ message is signed
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>!</term>
+ <listitem>
+ <para>
+ message is flagged
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>*</term>
+ <listitem>
+ <para>
+ message is tagged
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ Some of the status flags can be turned on or off using
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ <emphasis role="bold">set-flag</emphasis> (default: w)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <emphasis role="bold">clear-flag</emphasis> (default: W)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ Furthermore, the following flags reflect who the message is
+ addressed
+ to. They can be customized with the
+ <link linkend="to-chars">$to_chars</link> variable.
+ </para>
+
+ <para>
+ <variablelist>
+
+ <varlistentry>
+ <term>+</term>
+ <listitem>
+ <para>
+ message is to you and you only
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>T</term>
+ <listitem>
+ <para>
+ message is to you, but also to or cc'ed to others
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>C</term>
+ <listitem>
+ <para>
+ message is cc'ed to you
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>F</term>
+ <listitem>
+ <para>
+ message is from you
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>L</term>
+ <listitem>
+ <para>
+ message is sent to a subscribed mailing list
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <!--}}}-->
+ </sect3>
+
+ <!--}}}-->
+ </sect2>
+
+ <sect2>
+ <title>The Pager</title> <!--{{{-->
+
+ <para>
+ By default, Mutt-ng uses its builtin pager to display the body of
+ messages.
+ The pager is very similar to the Unix program <emphasis>less</emphasis> though not nearly as
+ featureful.
+ </para>
+
+ <para>
+
+ <table>
+ <title>Default Pager Menu Bindings</title>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Key</entry>
+ <entry>Function</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code><Return> </code></entry><entry><code></code></entry><entry>go down one line</entry></row>
+ <row><entry><code><Space> </code></entry><entry><code></code></entry><entry>display the next page (or next message if at the end of a message)</entry></row>
+ <row><entry><code>- </code></entry><entry><code></code></entry><entry>go back to the previous page</entry></row>
+ <row><entry><code>n </code></entry><entry><code></code></entry><entry>search for next match</entry></row>
+ <row><entry><code>S </code></entry><entry><code></code></entry><entry>skip beyond quoted text</entry></row>
+ <row><entry><code>T </code></entry><entry><code></code></entry><entry>toggle display of quoted text</entry></row>
+ <row><entry><code>? </code></entry><entry><code></code></entry><entry>show key bindings</entry></row>
+ <row><entry><code>/ </code></entry><entry><code></code></entry><entry>search for a regular expression (pattern)</entry></row>
+ <row><entry><code>ESC / </code></entry><entry><code></code></entry><entry>search backwards for a regular expression</entry></row>
+ <row><entry><code>\ </code></entry><entry><code></code></entry><entry>toggle search pattern coloring</entry></row>
+ <row><entry><code>^ </code></entry><entry><code></code></entry><entry>jump to the top of the message</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+
+ </para>
+
+ <para>
+ In addition, many of the functions from the <emphasis>index</emphasis> are available in
+ the pager, such as <emphasis>delete-message</emphasis> or <emphasis>
+ copy-message
+ </emphasis>
+ (this is one
+ advantage over using an external pager to view messages).
+ </para>
+
+ <para>
+ Also, the internal pager supports a couple other advanced features.
+ For
+ one, it will accept and translate the ``standard'' nroff sequences
+ forbold and underline. These sequences are a series of either the
+ letter,
+ backspace (ˆH), the letter again for bold or the letter,
+ backspace,
+ ``_'' for denoting underline. Mutt-ng will attempt to display
+ these
+ in bold and underline respectively if your terminal supports them. If
+ not, you can use the bold and underline <link
+linkend="color">color</link>
+ objects to specify a color or mono attribute for them.
+ </para>
+
+ <para>
+ Additionally, the internal pager supports the ANSI escape
+ sequences for character attributes. Mutt-ng translates them
+ into the correct color and character settings. The sequences
+ Mutt-ng supports are: <literal>ESC [ Ps;Ps;Ps;...;Ps
+ m</literal> (see table below for possible values for
+ <code>Ps</code>).
+ </para>
+
+ <para>
+
+ <table>
+ <title>ANSI Escape Sequences</title>
+ <tgroup cols="2" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Value</entry>
+ <entry>Attribute</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code>0 </code></entry><entry>All Attributes Off</entry></row>
+ <row><entry><code>1 </code></entry><entry>Bold on</entry></row>
+ <row><entry><code>4 </code></entry><entry>Underline on</entry></row>
+ <row><entry><code>5 </code></entry><entry>Blink on</entry></row>
+ <row><entry><code>7 </code></entry><entry>Reverse video on</entry></row>
+ <row><entry><code>3x </code></entry><entry>Foreground color is x (see table below)</entry></row>
+ <row><entry><code>4x </code></entry><entry>Background color is x (see table below)</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+
+ <table>
+ <title>ANSI Colors</title>
+ <tgroup cols="2" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Number</entry>
+ <entry>Color</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code>0 </code></entry><entry>black</entry></row>
+ <row><entry><code>1 </code></entry><entry>red</entry></row>
+ <row><entry><code>2 </code></entry><entry>green</entry></row>
+ <row><entry><code>3 </code></entry><entry>yellow</entry></row>
+ <row><entry><code>4 </code></entry><entry>blue</entry></row>
+ <row><entry><code>5 </code></entry><entry>magenta</entry></row>
+ <row><entry><code>6 </code></entry><entry>cyan</entry></row>
+ <row><entry><code>7 </code></entry><entry>white</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+
+ </para>
+
+ <para>
+ Mutt-ng uses these attributes for handling text/enriched messages,
+ and they
+ can also be used by an external <link
+ linkend="auto-view">autoview</link>
+ script for highlighting purposes. <emphasis role="bold">Note:</emphasis> If you change the colors for your
+ display, for example by changing the color associated with color2 for
+ your xterm, then that color will be used instead of green.
+ </para>
+
+ <!--}}}-->
+ </sect2>
+
+ <sect2 id="threads">
+ <title>Threaded Mode</title> <!--{{{-->
+
+ <para>
+ When the mailbox is <link linkend="sort">sorted</link> by <emphasis>
+ threads
+ </emphasis>
+ ,there are
+ a few additional functions available in the <emphasis>index</emphasis> and <emphasis>
+ pager
+ </emphasis>
+ modes.
+ </para>
+
+ <para>
+
+ <table>
+ <title>Default Thread Function Bindings</title>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Key</entry>
+ <entry>Function</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code>^D </code></entry><entry><code>delete-thread </code></entry><entry>delete all messages in the current thread</entry></row>
+ <row><entry><code>^U </code></entry><entry><code>undelete-thread </code></entry><entry>undelete all messages in the current thread</entry></row>
+ <row><entry><code>^N </code></entry><entry><code>next-thread </code></entry><entry>jump to the start of the next thread</entry></row>
+ <row><entry><code>^P </code></entry><entry><code>previous-thread </code></entry><entry>jump to the start of the previous thread</entry></row>
+ <row><entry><code>^R </code></entry><entry><code>read-thread </code></entry><entry>mark the current thread as read</entry></row>
+ <row><entry><code>ESC d </code></entry><entry><code>delete-subthread </code></entry><entry>delete all messages in the current subthread</entry></row>
+ <row><entry><code>ESC u </code></entry><entry><code>undelete-subthread </code></entry><entry>undelete all messages in the current subthread</entry></row>
+ <row><entry><code>ESC n </code></entry><entry><code>next-subthread </code></entry><entry>jump to the start of the next subthread</entry></row>
+ <row><entry><code>ESC p </code></entry><entry><code>previous-subthread </code></entry><entry>jump to the start of the previous subthread</entry></row>
+ <row><entry><code>ESC r </code></entry><entry><code>read-subthread </code></entry><entry>mark the current subthread as read </entry></row>
+ <row><entry><code>ESC t </code></entry><entry><code>tag-thread </code></entry><entry>toggle the tag on the current thread</entry></row>
+ <row><entry><code>ESC v </code></entry><entry><code>collapse-thread </code></entry><entry>toggle collapse for the current thread</entry></row>
+ <row><entry><code>ESC V </code></entry><entry><code>collapse-all </code></entry><entry>toggle collapse for all threads</entry></row>
+ <row><entry><code>P </code></entry><entry><code>parent-message </code></entry><entry>jump to parent message in thread</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> Collapsing a thread displays
+ only the first message
+ in the thread and hides the others. This is useful when threads
+ contain so many messages that you can only see a handful of threads
+ onthe screen. See %M in <link
+ linkend="index-format">
+ index-format
+ </link>
+ .
+ For example, you could use
+ "%?M?(#%03M)&(%4l)?" in <link linkend="index-format">
+ index-format
+ </link>
+ to optionally
+ display the number of hidden messages if the thread is collapsed.
+ </para>
+
+ <para>
+ See also: <link linkend="strict-threads">strict-threads</link>.
+ </para>
+
+ <!--}}}-->
+ </sect2>
+
+ <sect2>
+ <title>Miscellaneous Functions</title> <!--{{{-->
+
+ <para>
+ <emphasis role="bold">create-alias</emphasis><anchor id="create-alias"/>
+ (default: a)
+
+ </para>
+
+ <para>
+ Creates a new alias based upon the current message (or prompts for a
+ new one). Once editing is complete, an <link linkend="alias">alias</link>
+ command is added to the file specified by the <link linkend="alias-file">
+ alias-file
+ </link>
+ variable for future use. <emphasis role="bold">Note:</emphasis>
+ Specifying an <link linkend="alias-file">alias-file</link>
+ does not add the aliases specified there-in, you must also <link linkend="source">
+ source
+ </link>
+ the file.
+ </para>
+
+ <para>
+ <emphasis role="bold">check-traditional-pgp</emphasis><anchor id="check-traditional-pgp"/>
+ (default: ESC P)
+
+ </para>
+
+ <para>
+ This function will search the current message for content signed or
+ encrypted with PGP the "traditional" way, that is, without proper
+ MIME tagging. Technically, this function will temporarily change
+ the MIME content types of the body parts containing PGP data; this
+ is similar to the <link linkend="edit-type">edit-type</link>
+ function's
+ effect.
+ </para>
+
+ <para>
+ <emphasis role="bold">display-toggle-weed</emphasis><anchor id="display-toggle-weed"/>
+ (default: h)
+
+ </para>
+
+ <para>
+ Toggles the weeding of message header fields specified by <link linkend="ignore">
+ ignore
+ </link>
+ commands.
+ </para>
+
+ <para>
+ <emphasis role="bold">edit</emphasis><anchor id="edit"/>
+ (default: e)
+
+ </para>
+
+ <para>
+ This command (available in the ``index'' and ``pager'') allows you to
+ edit the raw current message as it's present in the mail folder.
+ After you have finished editing, the changed message will be
+ appended to the current folder, and the original message will be
+ marked for deletion.
+ </para>
+
+ <para>
+ <emphasis role="bold">edit-type</emphasis><anchor id="edit-type"/>
+
+ (default: ˆE on the attachment menu, and in the pager and index
+ menus; ˆT on the
+ compose menu)
+ </para>
+
+ <para>
+ This command is used to temporarily edit an attachment's content
+ type to fix, for instance, bogus character set parameters. When
+ invoked from the index or from the pager, you'll have the
+ opportunity to edit the top-level attachment's content type. On the
+ <link linkend="attach-menu">attach-menu</link>, you can change any
+ attachment's content type. These changes are not persistent, and get
+ lost upon changing folders.
+ </para>
+
+ <para>
+ Note that this command is also available on the <link linkend="compose-menu">
+ compose-menu
+ </link>
+ .There, it's used to
+ fine-tune the properties of attachments you are going to send.
+ </para>
+
+ <para>
+ <emphasis role="bold">enter-command</emphasis><anchor id="enter-command"/>
+ (default: ``:'')
+
+ </para>
+
+ <para>
+ This command is used to execute any command you would normally put in
+ a
+ configuration file. A common use is to check the settings of
+ variables, or
+ in conjunction with <link linkend="macro">macro</link> to change
+ settings on the
+ fly.
+ </para>
+
+ <para>
+ <emphasis role="bold">extract-keys</emphasis><anchor id="extract-keys"/>
+ (default: ˆK)
+
+ </para>
+
+ <para>
+ This command extracts PGP public keys from the current or tagged
+ message(s) and adds them to your PGP public key ring.
+ </para>
+
+ <para>
+ <emphasis role="bold">forget-passphrase</emphasis><anchor id="forget-passphrase"/>
+ (default:
+ ˆF)
+
+ </para>
+
+ <para>
+ This command wipes the passphrase(s) from memory. It is useful, if
+ you misspelled the passphrase.
+ </para>
+
+ <para>
+ <emphasis role="bold">list-reply</emphasis><anchor id="func-list-reply"/>
+ (default: L)
+
+ </para>
+
+ <para>
+ Reply to the current or tagged message(s) by extracting any addresses
+ which
+ match the regular expressions given by the <link linkend="lists">
+ lists
+ </link>
+ commands, but also honor any <literal>Mail-Followup-To</literal>
+ header(s) if the
+ <link linkend="honor-followup-to">honor-followup-to</link>
+ configuration variable is set. Using this when replying to messages
+ posted
+ to mailing lists helps avoid duplicate copies being sent to the
+ author of
+ the message you are replying to.
+ </para>
+
+ <para>
+ <emphasis role="bold">pipe-message</emphasis><anchor id="pipe-message"/>
+ (default: |)
+
+ </para>
+
+ <para>
+ Asks for an external Unix command and pipes the current or
+ tagged message(s) to it. The variables <link linkend="pipe-decode">
+ pipe-decode
+ </link>
+ ,<link linkend="pipe-split">pipe-split</link>, <link linkend="pipe-sep">
+ pipe-sep
+ </link>
+ and <link linkend="wait-key">wait-key</link> control the exact
+ behavior of this
+ function.
+ </para>
+
+ <para>
+ <emphasis role="bold">resend-message</emphasis><anchor id="resend-message"/>
+ (default: ESC e)
+
+ </para>
+
+ <para>
+ With resend-message, mutt takes the current message as a template for
+ a
+ new message. This function is best described as "recall from
+ arbitrary
+ folders". It can conveniently be used to forward MIME messages while
+ preserving the original mail structure. Note that the amount of
+ headers
+ included here depends on the value of the <link linkend="weed">weed</link>
+ variable.
+ </para>
+
+ <para>
+ This function is also available from the attachment menu. You can use
+ this
+ to easily resend a message which was included with a bounce message
+ as a message/rfc822 body part.
+ </para>
+
+ <para>
+ <emphasis role="bold">shell-escape</emphasis><anchor id="shell-escape"/>
+ (default: !)
+
+ </para>
+
+ <para>
+ Asks for an external Unix command and executes it. The <link linkend="wait-key">
+ wait-key
+ </link>
+ can be used to control
+ whether Mutt-ng will wait for a key to be pressed when the command
+ returns
+ (presumably to let the user read the output of the command), based on
+ the return status of the named command.
+ </para>
+
+ <para>
+ <emphasis role="bold">toggle-quoted</emphasis><anchor id="toggle-quoted"/>
+ (default: T)
+
+ </para>
+
+ <para>
+ The <emphasis>pager</emphasis> uses the <link linkend="quote-regexp">
+ quote-regexp
+ </link>
+ variable to detect quoted text when
+ displaying the body of the message. This function toggles the
+ displayof the quoted material in the message. It is particularly
+ useful when
+ are interested in just the response and there is a large amount of
+ quoted text in the way.
+ </para>
+
+ <para>
+ <emphasis role="bold">skip-quoted</emphasis><anchor id="skip-quoted"/>
+ (default: S)
+
+ </para>
+
+ <para>
+ This function will go to the next line of non-quoted text which come
+ after a line of quoted text in the internal pager.
+ </para>
+
+ <para>
+
+ </para>
+
+ <!--}}}-->
+ </sect2>
+
+ <!--}}}-->
+ </sect1>
+
+ <sect1>
+ <title>Sending Mail </title> <!--{{{-->
+
+ <para>
+ The following bindings are available in the <emphasis>index</emphasis>
+ for sending
+ messages.
+ </para>
+
+ <para>
+
+ <table>
+ <title>Default Mail Composition Bindings</title>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Key</entry>
+ <entry>Function</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code>m </code></entry><entry><code>compose </code></entry><entry>compose a new message</entry></row>
+ <row><entry><code>r </code></entry><entry><code>reply </code></entry><entry>reply to sender</entry></row>
+ <row><entry><code>g </code></entry><entry><code>group-reply </code></entry><entry>reply to all recipients</entry></row>
+ <row><entry><code>L </code></entry><entry><code>list-reply </code></entry><entry>reply to mailing list address</entry></row>
+ <row><entry><code>f </code></entry><entry><code>forward </code></entry><entry>forward message</entry></row>
+ <row><entry><code>b </code></entry><entry><code>bounce </code></entry><entry>bounce (remail) message</entry></row>
+ <row><entry><code>ESC k </code></entry><entry><code>mail-key </code></entry><entry>mail a PGP public key to someone</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </para>
+
+ <para>
+ Bouncing a message sends the message as is to the recipient you
+ specify. Forwarding a message allows you to add comments or
+ modify the message you are forwarding. These items are discussed
+ in greater detail in the next chapter <link linkend="forwarding-mail">
+ forwarding-mail
+ </link>
+ .
+ </para>
+
+ <sect2>
+ <title>Composing new messages </title> <!--{{{-->
+
+ <para>
+ When you want to send an email using mutt-ng, simply press <literal>m</literal> on
+ your keyboard. Then, mutt-ng asks for the recipient via a prompt in
+ the last line:
+ </para>
+
+ <para>
+
+ <screen>
+To:</screen>
+
+ </para>
+
+ <para>
+ After you've finished entering the recipient(s), press return. If you
+ want to send an email to more than one recipient, separate the email
+ addresses using the comma "<literal>,</literal>". Mutt-ng then asks
+ you for the email
+ subject. Again, press return after you've entered it. After that,
+ mutt-ng
+ got the most important information from you, and starts up an editor
+ where you can then enter your email.
+ </para>
+
+ <para>
+ The editor that is called is selected in the following way: you
+ can e.g. set it in the mutt-ng configuration:
+ </para>
+
+ <para>
+
+ <screen>
+set editor = "vim +/^$/ -c ':set tw=72'"
+set editor = "nano"
+set editor = "emacs"</screen>
+
+ </para>
+
+ <para>
+ If you don't set your preferred editor in your configuration, mutt-ng
+ first looks whether the environment variable <literal>$VISUAL</literal> is set, and if
+ so, it takes its value as editor command. Otherwise, it has a look
+ at <literal>$EDITOR</literal> and takes its value if it is set. If no
+ editor command
+ can be found, mutt-ng simply assumes <literal>vi</literal> to be the
+ default editor,
+ since it's the most widespread editor in the Unix world and it's
+ pretty
+ safe to assume that it is installed and available.
+ </para>
+
+ <para>
+ When you've finished entering your message, save it and quit your
+ editor. Mutt-ng will then present you with a summary screen, the
+ compose menu.
+ On the top, you see a summary of the most important available key
+ commands.
+ Below that, you see the sender, the recipient(s), Cc and/or Bcc
+ recipient(s), the subject, the reply-to address, and optionally
+ information where the sent email will be stored and whether it should
+ be digitally signed and/or encrypted.
+ </para>
+
+ <para>
+ Below that, you see a list of "attachments". The mail you've just
+ entered before is also an attachment, but due to its special type
+ (it's plain text), it will be displayed as the normal message on
+ the receiver's side.
+ </para>
+
+ <para>
+ At this point, you can add more attachments, pressing <literal>a</literal>, you
+ can edit the recipient addresses, pressing <literal>t</literal> for
+ the "To:" field,
+ <literal>c</literal> for the "Cc:" field, and <literal>b</literal>
+ for the "Bcc: field. You can
+ also edit the subject the subject by simply pressing <literal>s</literal> or the
+ email message that you've entered before by pressing <literal>e</literal>. You will
+ then again return to the editor. You can even edit the sender, by
+ pressing
+ <literal><esc>f</literal>, but this shall only be used with
+ caution.
+ </para>
+
+ <para>
+ Alternatively, you can configure mutt-ng in a way that most of the
+ above settings can be edited using the editor. Therefore, you only
+ need to add the following to your configuration:
+ </para>
+
+ <para>
+
+ <screen>
+set edit_headers</screen>
+
+ </para>
+
+ <para>
+ Once you have finished editing the body of your mail message, you are
+ returned to the <emphasis>compose</emphasis> menu. The following
+ options are available:
+ </para>
+
+ <para>
+
+ <table>
+ <title>Default Compose Menu Bindings</title>
+ <tgroup cols="3" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Key</entry>
+ <entry>Function</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code>a </code></entry><entry><code>attach-file </code></entry><entry>attach a file</entry></row>
+ <row><entry><code>A </code></entry><entry><code>attach-message </code></entry><entry>attach message(s) to the message</entry></row>
+ <row><entry><code>ESC k </code></entry><entry><code>attach-key </code></entry><entry>attach a PGP public key</entry></row>
+ <row><entry><code>d </code></entry><entry><code>edit-description </code></entry><entry>edit description on attachment</entry></row>
+ <row><entry><code>D </code></entry><entry><code>detach-file </code></entry><entry>detach a file</entry></row>
+ <row><entry><code>t </code></entry><entry><code>edit-to </code></entry><entry>edit the To field</entry></row>
+ <row><entry><code>ESC f </code></entry><entry><code>edit-from </code></entry><entry>edit the From field</entry></row>
+ <row><entry><code>r </code></entry><entry><code>edit-reply-to </code></entry><entry>edit the Reply-To field</entry></row>
+ <row><entry><code>c </code></entry><entry><code>edit-cc </code></entry><entry>edit the Cc field</entry></row>
+ <row><entry><code>b </code></entry><entry><code>edit-bcc </code></entry><entry>edit the Bcc field</entry></row>
+ <row><entry><code>y </code></entry><entry><code>send-message </code></entry><entry>send the message</entry></row>
+ <row><entry><code>s </code></entry><entry><code>edit-subject </code></entry><entry>edit the Subject</entry></row>
+ <row><entry><code>S </code></entry><entry><code>smime-menu </code></entry><entry>select S/MIME options</entry></row>
+ <row><entry><code>f </code></entry><entry><code>edit-fcc </code></entry><entry>specify an ``Fcc'' mailbox</entry></row>
+ <row><entry><code>p </code></entry><entry><code>pgp-menu </code></entry><entry>select PGP options</entry></row>
+ <row><entry><code>P </code></entry><entry><code>postpone-message </code></entry><entry>postpone this message until later</entry></row>
+ <row><entry><code>q </code></entry><entry><code>quit </code></entry><entry>quit (abort) sending the message</entry></row>
+ <row><entry><code>w </code></entry><entry><code>write-fcc </code></entry><entry>write the message to a folder</entry></row>
+ <row><entry><code>i </code></entry><entry><code>ispell </code></entry><entry>check spelling (if available on your system)</entry></row>
+ <row><entry><code>^F </code></entry><entry><code>forget-passphrase </code></entry><entry>wipe passphrase(s) from memory</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> The attach-message function
+ will prompt you for a folder to
+ attach messages from. You can now tag messages in that folder and
+ theywill be attached to the message you are sending. Note that
+ certainoperations like composing a new mail, replying, forwarding,
+ etc. are
+ not permitted when you are in that folder. The %r in <link linkend="status-format">
+ status-format
+ </link>
+ will change to
+ a 'A' to indicate that you are in attach-message mode.
+ </para>
+
+ <para>
+
+ </para>
+
+ <!--}}}-->
+ </sect2>
+
+ <sect2>
+ <title>Replying </title> <!--{{{-->
+
+ <sect3>
+ <title>Simple Replies </title> <!--{{{-->
+
+ <para>
+ When you want to reply to an email message, select it in the index
+ menu and then press <literal>r</literal>. Mutt-ng's behaviour is
+ then similar to the
+ behaviour when you compose a message: first, you will be asked for
+ the recipient, then for the subject, and then, mutt-ng will start
+ the editor with the quote attribution and the quoted message. This
+ can e.g. look like the example below.
+ </para>
+
+ <para>
+
+ <screen>
+On Mon, Mar 07, 2005 at 05:02:12PM +0100, Michael Svensson wrote:
+> Bill, can you please send last month's progress report to Mr.
+> Morgan? We also urgently need the cost estimation for the new
+> production server that we want to set up before our customer's
+> project will go live.</screen>
+
+ </para>
+
+ <para>
+ You can start editing the email message. It is strongly
+ recommended to put your answer <emphasis>below</emphasis> the
+ quoted text and to
+ only quote what is really necessary and that you refer to. Putting
+ your answer on top of the quoted message, is, although very
+ widespread, very often not considered to be a polite way to answer
+ emails.
+ </para>
+
+ <para>
+ The quote attribution is configurable, by default it is set to
+
+ <screen>
+set attribution = "On %d, %n wrote:"</screen>
+
+ </para>
+
+ <para>
+ It can also be set to something more compact, e.g.
+
+ <screen>
+set attribution = "attribution="* %n <%a> [%(%y-%m-%d %H:%M)]:"</screen>
+
+ </para>
+
+ <para>
+ The example above results in the following attribution:
+
+ <screen>
+* Michael Svensson <svensson@foobar.com> [05-03-06 17:02]:
+> Bill, can you please send last month's progress report to Mr.
+> Morgan? We also urgently need the cost estimation for the new
+> production server that we want to set up before our customer's
+> project will go live.</screen>
+
+ </para>
+
+ <para>
+ Generally, try to keep your attribution short yet
+ information-rich. It is <emphasis>not</emphasis> the right place
+ for witty quotes,
+ long "attribution" novels or anything like that: the right place
+ for such things is - if at all - the email signature at the very
+ bottom of the message.
+ </para>
+
+ <para>
+ When you're done with writing your message, save and quit the
+ editor. As before, you will return to the compose menu, which is
+ used in the same way as before.
+ </para>
+
+ <para>
+
+ </para>
+
+ <!--}}}-->
+ </sect3>
+
+ <sect3>
+ <title>Group Replies </title> <!--{{{-->
+
+ <para>
+ In the situation where a group of people uses email as a
+ discussion, most of the emails will have one or more recipients,
+ and probably several "Cc:" recipients. The group reply
+ functionalityensures that when you press <literal>g</literal>
+ instead of <literal>r</literal> to do a reply,
+ each and every recipient that is contained in the original message
+ will receive a copy of the message, either as normal recipient or
+ as "Cc:" recipient.
+ </para>
+
+ <para>
+
+ </para>
+
+ <!--}}}-->
+ </sect3>
+
+ <sect3>
+ <title>List Replies </title> <!--{{{-->
+
+ <para>
+ When you use mailing lists, it's generally better to send your
+ reply to a message only to the list instead of the list and the
+ original author. To make this easy to use, mutt-ng features list
+ replies.
+ </para>
+
+ <para>
+ To do a list reply, simply press <literal>L</literal>. If the email
+ contains
+ a <literal>Mail-Followup-To:</literal> header, its value will be
+ used as reply
+ address. Otherwise, mutt-ng searches through all mail addresses in
+ the original message and tries to match them a list of regular
+ expressions which can be specified using the <literal>lists</literal> command.
+ If any of the regular expression matches, a mailing
+ list address has been found, and it will be used as reply address.
+ </para>
+
+ <para>
+
+ <screen>
+lists linuxevent@luga\.at vuln-dev@ mutt-ng-users@</screen>
+
+ </para>
+
+ <para>
+ Nowadays, most mailing list software like GNU Mailman adds a
+ <literal>Mail-Followup-To:</literal> header to their emails anyway,
+ so setting
+ <literal>lists</literal> is hardly ever necessary in practice.
+ </para>
+
+ <para>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ <!--}}}-->
+ </sect3>
+
+ <!--}}}-->
+ </sect2>
+
+ <sect2>
+ <title>Editing the message header </title>
+
+ <para>
+ When editing the header of your outgoing message, there are a couple
+ of
+ special features available.
+ </para>
+
+ <para>
+ If you specify
+
+ <literal>Fcc:</literal> <emphasis>filename</emphasis>
+
+ Mutt-ng will pick up <emphasis>filename</emphasis>
+ just as if you had used the <emphasis>edit-fcc</emphasis> function in
+ the <emphasis>compose</emphasis> menu.
+ </para>
+
+ <para>
+ You can also attach files to your message by specifying
+
+ <literal>Attach:</literal> <emphasis>filename</emphasis> [ <emphasis>
+ description
+ </emphasis>
+ ]
+
+ where <emphasis>filename</emphasis> is the file to attach and <emphasis>
+ description
+ </emphasis>
+ is an
+ optional string to use as the description of the attached file.
+ </para>
+
+ <para>
+ When replying to messages, if you remove the <emphasis>In-Reply-To:</emphasis> field from
+ the header field, Mutt-ng will not generate a <emphasis>References:</emphasis> field, which
+ allows you to create a new message thread.
+ </para>
+
+ <para>
+ Also see <link linkend="edit-headers">edit-headers</link>.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Using Mutt-ng with PGP </title>
+
+ <para>
+ If you want to use PGP, you can specify
+ </para>
+
+ <para>
+ <literal>Pgp:</literal> [ <literal>E</literal> | <literal>
+ S
+ </literal>
+ | <literal>S</literal><emphasis><id></emphasis> ]
+
+ </para>
+
+ <para>
+ ``E'' encrypts, ``S'' signs and
+ ``S<id>'' signs with the given key, setting <link linkend="pgp-sign-as">
+ pgp-sign-as
+ </link>
+ permanently.
+ </para>
+
+ <para>
+ If you have told mutt to PGP encrypt a message, it will guide you
+ through a key selection process when you try to send the message.
+ Mutt-ng will not ask you any questions about keys which have a
+ certified user ID matching one of the message recipients' mail
+ addresses. However, there may be situations in which there are
+ several keys, weakly certified user ID fields, or where no matching
+ keys can be found.
+ </para>
+
+ <para>
+ In these cases, you are dropped into a menu with a list of keys from
+ which you can select one. When you quit this menu, or mutt can't
+ find any matching keys, you are prompted for a user ID. You can, as
+ usually, abort this prompt using <literal>ˆG</literal>. When
+ you do so, mutt will
+ return to the compose screen.
+ </para>
+
+ <para>
+ Once you have successfully finished the key selection, the message
+ will be encrypted using the selected public keys, and sent out.
+ </para>
+
+ <para>
+ Most fields of the entries in the key selection menu (see also <link linkend="pgp-entry-format">
+ pgp-entry-format
+ </link>
+ )
+ have obvious meanings. But some explanations on the capabilities,
+ flags,
+ and validity fields are in order.
+ </para>
+
+ <para>
+ The flags sequence (%f) will expand to one of the following
+ flags:
+
+
+ <table>
+ <title>PGP Key Menu Flags</title>
+ <tgroup cols="2" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Flag</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code>R </code></entry><entry>The key has been revoked and can't be used.</entry></row>
+ <row><entry><code>X </code></entry><entry>The key is expired and can't be used.</entry></row>
+ <row><entry><code>d </code></entry><entry>You have marked the key as disabled.</entry></row>
+ <row><entry><code>c </code></entry><entry>There are unknown critical self-signature packets.</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </para>
+
+ <para>
+ The capabilities field (%c) expands to a two-character
+ sequencerepresenting a key's capabilities. The first character gives
+ the key's encryption capabilities: A minus sign (<emphasis role="bold">
+ -
+ </emphasis>
+ )means
+ that the key cannot be used for encryption. A dot (<emphasis role="bold">
+ .
+ </emphasis>
+ )means that
+ it's marked as a signature key in one of the user IDs, but may
+ also be used for encryption. The letter <emphasis role="bold">e</emphasis> indicates that
+ this key can be used for encryption.
+ </para>
+
+ <para>
+ The second character indicates the key's signing capabilities. Once
+ again, a ``<emphasis role="bold">-</emphasis>'' implies ``not for
+ signing'', ``<emphasis role="bold">.</emphasis>'' implies
+ that the key is marked as an encryption key in one of the user-ids,
+ and
+ ``<emphasis role="bold">s</emphasis>'' denotes a key which can be
+ used for signing.
+ </para>
+
+ <para>
+ Finally, the validity field (%t) indicates how well-certified
+ a user-id
+ is. A question mark (<emphasis role="bold">?</emphasis>) indicates
+ undefined validity, a minus
+ character (<emphasis role="bold">-</emphasis>) marks an untrusted
+ association, a space character
+ means a partially trusted association, and a plus character (<emphasis role="bold">
+ +
+ </emphasis>
+ )
+ indicates complete validity.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Sending anonymous messages via mixmaster </title>
+
+ <para>
+ You may also have configured mutt to co-operate with Mixmaster, an
+ anonymous remailer. Mixmaster permits you to send your messages
+ anonymously using a chain of remailers. Mixmaster support in mutt is
+ for
+ mixmaster version 2.04 (beta 45 appears to be the latest) and 2.03.
+ It does not support earlier versions or the later so-called version 3
+ betas,
+ of which the latest appears to be called 2.9b23.
+ </para>
+
+ <para>
+ To use it, you'll have to obey certain restrictions. Most
+ important, you cannot use the <literal>Cc</literal> and <literal>Bcc</literal> headers. To tell
+ Mutt-ng to use mixmaster, you have to select a remailer chain, using
+ the mix function on the compose menu.
+ </para>
+
+ <para>
+ The chain selection screen is divided into two parts. In the
+ (larger) upper part, you get a list of remailers you may use. In
+ the lower part, you see the currently selected chain of remailers.
+ </para>
+
+ <para>
+ You can navigate in the chain using the <literal>chain-prev</literal>
+ and
+ <literal>chain-next</literal> functions, which are by default bound
+ to the left
+ and right arrows and to the <literal>h</literal> and <literal>l</literal> keys (think vi
+ keyboard bindings). To insert a remailer at the current chain
+ position, use the <literal>insert</literal> function. To append a
+ remailer behind
+ the current chain position, use <literal>select-entry</literal> or <literal>
+ append
+ </literal>
+ .
+ You can also delete entries from the chain, using the corresponding
+ function. Finally, to abandon your changes, leave the menu, or
+ <literal>accept</literal> them pressing (by default) the <literal>
+ Return
+ </literal>
+ key.
+ </para>
+
+ <para>
+ Note that different remailers do have different capabilities,
+ indicated in the %c entry of the remailer menu lines (see
+ <link linkend="mix-entry-format">mix-entry-format</link>). Most
+ important is
+ the ``middleman'' capability, indicated by a capital ``M'': This
+ means that the remailer in question cannot be used as the final
+ element of a chain, but will only forward messages to other
+ mixmaster remailers. For details on the other capabilities, please
+ have a look at the mixmaster documentation.
+ </para>
+
+ <para>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="forwarding-mail">
+ <title>Forwarding and Bouncing Mail </title>
+
+ <para>
+ Often, it is necessary to forward mails to other people.
+ Therefore, mutt-ng supports forwarding messages in two different
+ ways.
+ </para>
+
+ <para>
+ The first one is regular forwarding, as you probably know it from
+ other mail clients. You simply press <literal>f</literal>, enter the
+ recipient
+ email address, the subject of the forwarded email, and then you can
+ edit the message to be forwarded in the editor. The forwarded
+ message is separated from the rest of the message via the two
+ following markers:
+ </para>
+
+ <para>
+
+ <screen>
+----- Forwarded message from Lucas User <luser@example.com> -----
+
+From: Lucas User <luser@example.com>
+Date: Thu, 02 Dec 2004 03:08:34 +0100
+To: Michael Random <mrandom@example.com>
+Subject: Re: blackmail
+
+Pay me EUR 50,000.- cash or your favorite stuffed animal will die
+a horrible death.
+
+----- End forwarded message -----</screen>
+
+ </para>
+
+ <para>
+ When you're done with editing the mail, save and quit the editor,
+ and you will return to the compose menu, the same menu you also
+ encounter when composing or replying to mails.
+ </para>
+
+ <para>
+ The second mode of forwarding emails with mutt-ng is the
+ so-called <emphasis>bouncing</emphasis>: when you bounce an email to
+ another
+ address, it will be sent in practically the same format you send it
+ (except for headers that are created during transporting the
+ message). To bounce a message, press <literal>b</literal> and enter the
+ recipient
+ email address. By default, you are then asked whether you really
+ want to bounce the message to the specified recipient. If you answer
+ with yes, the message will then be bounced.
+ </para>
+
+ <para>
+ To the recipient, the bounced email will look as if he got it
+ like a regular email where he was <literal>Bcc:</literal> recipient.
+ The only
+ possibility to find out whether it was a bounced email is to
+ carefully study the email headers and to find out which host really
+ sent the email.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="postponing-mail">
+ <title>Postponing Mail </title>
+
+ <para>
+ At times it is desirable to delay sending a message that you have
+ already begun to compose. When the <emphasis>postpone-message</emphasis> function is
+ used in the <emphasis>compose</emphasis> menu, the body of your message
+ and attachments
+ are stored in the mailbox specified by the <link linkend="postponed">
+ postponed
+ </link>
+ variable. This means that you can recall the
+ message even if you exit Mutt-ng and then restart it at a later time.
+ </para>
+
+ <para>
+ Once a message is postponed, there are several ways to resume it. From
+ the
+ command line you can use the ``-p'' option, or if you <emphasis>compose</emphasis> a new
+ message from the <emphasis>index</emphasis> or <emphasis>pager</emphasis> you will be prompted if postponed
+ messages exist. If multiple messages are currently postponed, the
+ <emphasis>postponed</emphasis> menu will pop up and you can select
+ which message you would
+ like to resume.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> If you postpone a reply to a
+ message, the reply setting of
+ the message is only updated when you actually finish the message and
+ send it. Also, you must be in the same folder with the message you
+ replied to for the status of the message to be updated.
+ </para>
+
+ <para>
+ See also the <link linkend="postpone">postpone</link> quad-option.
+ </para>
+
+ <para>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ </chapter>
+
+ <chapter>
+ <title>Configuration </title>
+
+ <sect1>
+ <title>Locations of Configuration Files </title>
+
+ <para>
+ While the default configuration (or ``preferences'') make Mutt-ng
+ usable right out
+ of the box, it is often desirable to tailor Mutt-ng to suit your own
+ tastes. When
+ Mutt-ng is first invoked, it will attempt to read the ``system''
+ configuration
+ file (defaults set by your local system administrator), unless the
+ ``-n'' <link linkend="commandline">commandline</link> option is
+ specified. This file is
+ typically <literal>/usr/local/share/muttng/Muttngrc</literal> or <literal>
+ /etc/Muttngrc
+ </literal>
+ ,
+ Mutt-ng users will find this file in <literal>
+ /usr/local/share/muttng/Muttrc
+ </literal>
+ or
+ <literal>/etc/Muttngrc</literal>. Mutt will next look for a file named <literal>
+ .muttrc
+ </literal>
+ in your home directory, Mutt-ng will look for <literal>.muttngrc</literal>. If this file
+ does not exist and your home directory has a subdirectory named <literal>
+ .mutt
+ </literal>
+ ,
+ mutt try to load a file named <literal>.muttng/muttngrc</literal>.
+ </para>
+
+ <para>
+ <literal>.muttrc</literal> (or <literal>.muttngrc</literal> for
+ Mutt-ng) is the file where you will
+ usually place your <link linkend="commands">commands</link> to
+ configure Mutt-ng.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="muttrc-syntax">
+ <title>Basic Syntax of Initialization Files </title>
+
+ <para>
+ An initialization file consists of a series of <link linkend="commands">
+ commands
+ </link>
+ .Each line of the file may contain one or more commands.
+ When multiple commands are used, they must be separated by a semicolon
+ (;).
+
+ <screen>
+set realname='Mutt-ng user' ; ignore x-</screen>
+
+ The hash mark, or pound sign
+ (``#''), is used as a ``comment'' character. You can use it to
+ annotate your initialization file. All text after the comment character
+ to the end of the line is ignored. For example,
+ </para>
+
+ <para>
+
+ <screen>
+my_hdr X-Disclaimer: Why are you listening to me? # This is a comment</screen>
+
+ </para>
+
+ <para>
+ Single quotes (') and double quotes (") can be used to quote
+ strings
+ which contain spaces or other special characters. The difference
+ between
+ the two types of quotes is similar to that of many popular shell
+ programs,
+ namely that a single quote is used to specify a literal string (one
+ that is
+ not interpreted for shell variables or quoting with a backslash
+ [see
+ next paragraph]), while double quotes indicate a string for which
+ should be evaluated. For example, backtics are evaluated inside of
+ double
+ quotes, but <emphasis role="bold">not</emphasis> for single quotes.
+ </para>
+
+ <para>
+ \ quotes the next character, just as in shells such as bash and
+ zsh.
+ For example, if want to put quotes ``"'' inside of a string, you
+ can use
+ ``\'' to force the next character to be a literal instead of
+ interpreted
+ character.
+
+ <screen>
+set realname="Michael \"MuttDude\" Elkins"</screen>
+
+ </para>
+
+ <para>
+ ``\\'' means to insert a literal ``\'' into the line.
+ ``\n'' and ``\r'' have their usual C meanings of linefeed and
+ carriage-return, respectively.
+ </para>
+
+ <para>
+ A \ at the end of a line can be used to split commands over
+ multiple lines, provided that the split points don't appear in the
+ middle of command names.
+ </para>
+
+ <para>
+ Please note that, unlike the various shells, mutt-ng interprets a
+ ``\''
+ at the end of a line also in comments. This allows you to disable a
+ command
+ split over multiple lines with only one ``#''.
+ </para>
+
+ <para>
+
+ <screen>
+# folder-hook . \
+set realname="Michael \"MuttDude\" Elkins"</screen>
+
+ </para>
+
+ <para>
+ When testing your config files, beware the following caveat. The
+ backslash
+ at the end of the commented line extends the current line with the next
+ line
+ - then referred to as a ``continuation line''. As the first line is
+ commented with a hash (#) all following continuation lines are also
+ part of a comment and therefore are ignored, too. So take care of
+ comments
+ when continuation lines are involved within your setup files!
+ </para>
+
+ <para>
+ Abstract example:
+ </para>
+
+ <para>
+
+ <screen>
+line1\
+line2a # line2b\
+line3\
+line4
+line5</screen>
+
+ </para>
+
+ <para>
+ line1 ``continues'' until line4. however, the part after the # is a
+ comment which includes line3 and line4. line5 is a new line of its own
+ and
+ thus is interpreted again.
+ </para>
+
+ <para>
+ The commands understood by mutt are explained in the next paragraphs.
+ For a complete list, see the <link linkend="commands">commands</link>.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Expansion within variables </title>
+
+ <para>
+ Besides just assign static content to variables, there's plenty of
+ ways of adding external and more or less dynamic content.
+ </para>
+
+ <sect2>
+ <title>Commands' Output </title>
+
+ <para>
+ It is possible to substitute the output of a Unix command in an
+ initialization file. This is accomplished by enclosing the command
+ in backquotes (``) as in, for example:
+ </para>
+
+ <para>
+
+ <screen>
+my_hdr X-Operating-System: `uname -a`</screen>
+
+ </para>
+
+ <para>
+ The output of the Unix command ``uname -a'' will be substituted
+ before the line is parsed. Note that since initialization files are
+ line oriented, only the first line of output from the Unix command
+ will be substituted.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Environment Variables </title>
+
+ <para>
+ UNIX environments can be accessed like the way it is done in
+ shells like sh and bash: Prepend the name of the environment by a
+ ``$'' sign. For example,
+ </para>
+
+ <para>
+
+ <screen>
+set record=+sent_on_$HOSTNAME</screen>
+
+ </para>
+
+ <para>
+ sets the <link linkend="record">record</link> variable to the
+ string <emphasis>+sent_on_</emphasis> and appends the
+ value of the evironment
+ variable <literal>$HOSTNAME</literal>.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> There will be no warning if an
+ environment variable
+ is not defined. The result will of the expansion will then be empty.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Configuration Variables </title>
+
+ <para>
+ As for environment variables, the values of all configuration
+ variables as string can be used in the same way, too. For example,
+ </para>
+
+ <para>
+
+ <screen>
+set imap_home_namespace = $folder</screen>
+
+ </para>
+
+ <para>
+ would set the value of <link linkend="imap-home-namespace">
+ imap-home-namespace
+ </link>
+ to the value to
+ which <link linkend="folder">folder</link> is <emphasis>currently</emphasis> set
+ to.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> There're no logical links
+ established in such cases so
+ that the the value for <link linkend="imap-home-namespace">
+ imap-home-namespace
+ </link>
+ won't change even
+ if <link linkend="folder">folder</link> gets changed.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> There will be no warning if a
+ configuration variable
+ is not defined or is empty. The result will of the expansion will
+ then be empty.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Self-Defined Variables </title>
+
+ <para>
+ Mutt-ng flexibly allows users to define their own variables. To
+ avoid conflicts with the standard set and to prevent misleading
+ error messages, there's a reserved namespace for them: all
+ user-defined variables must be prefixed with <literal>user_</literal> and can be
+ used just like any ordinary configuration or environment
+ variable.
+ </para>
+
+ <para>
+ For example, to view the manual, users can either define two
+ macros like the following
+ </para>
+
+ <para>
+
+ <screen>
+macro generic <F1> "!less -r /path/to/manual" "Show manual"
+macro pager <F1> "!less -r /path/to/manual" "Show manual"</screen>
+
+ </para>
+
+ <para>
+ for <literal>generic</literal>, <literal>pager</literal> and <literal>
+ index
+ </literal>
+ .The alternative is to
+ define a custom variable like so:
+ </para>
+
+ <para>
+
+ <screen>
+set user_manualcmd = "!less -r /path/to_manual"
+macro generic <F1> "$user_manualcmd<enter>" "Show manual"
+macro pager <F1> "$user_manualcmd<enter>" "Show manual"
+macro index <F1> "$user_manualcmd<enter>" "Show manual"</screen>
+
+ </para>
+
+ <para>
+ to re-use the command sequence as in:
+ </para>
+
+ <para>
+
+ <screen>
+macro index <F2> "$user_manualcmd | grep '\^[ ]\\+~. '" "Show Patterns"</screen>
+
+ </para>
+
+ <para>
+ Using this feature, arbitrary sequences can be defined once and
+ recalled and reused where necessary. More advanced scenarios could
+ include to save a variable's value at the beginning of macro
+ sequence and restore it at end.
+ </para>
+
+ <para>
+ When the variable is first defined, the first value it gets
+ assigned is also the initial value to which it can be reset using
+ the <literal>reset</literal> command.
+ </para>
+
+ <para>
+ The complete removal is done via the <literal>unset</literal>
+ keyword.
+ </para>
+
+ <para>
+ After the following sequence:
+ </para>
+
+ <para>
+
+ <screen>
+set user_foo = 42
+set user_foo = 666</screen>
+
+ </para>
+
+ <para>
+ the variable <literal>$user_foo</literal> has a current value
+ of 666 and an
+ initial of 42. The query
+ </para>
+
+ <para>
+
+ <screen>
+set ?user_foo</screen>
+
+ </para>
+
+ <para>
+ will show 666. After doing the reset via
+ </para>
+
+ <para>
+
+ <screen>
+reset user_foo</screen>
+
+ </para>
+
+ <para>
+ a following query will give 42 as the result. After unsetting it
+ via
+ </para>
+
+ <para>
+
+ <screen>
+unset user_foo</screen>
+
+ </para>
+
+ <para>
+ any query or operation (except the noted expansion within other
+ statements) will lead to an error message.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Pre-Defined Variables </title>
+
+ <para>
+ In order to allow users to share one setup over a number of
+ different machines without having to change its contents, there's a
+ number of pre-defined variables. These are prefixed with
+ <literal>muttng_</literal> and are read-only, i.e. they cannot
+ be set, unset or
+ reset. The reference chapter lists all available variables.
+ </para>
+
+ <para>
+ <emphasis> Please consult the local copy of your manual for their
+ values as they may differ from different manual sources.
+ </emphasis>
+ Where
+ the manual is installed in can be queried (already using such a
+ variable) by running:
+ </para>
+
+ <para>
+
+ <screen>
+muttng -Q muttng_docdir</screen>
+
+ </para>
+
+ <para>
+ To extend the example for viewing the manual via self-defined
+ variables, it can be made more readable and more portable by
+ changing the real path in:
+ </para>
+
+ <para>
+
+ <screen>
+set user_manualcmd = '!less -r /path/to_manual'</screen>
+
+ </para>
+
+ <para>
+ to:
+ </para>
+
+ <para>
+
+ <screen>
+set user_manualcmd = "!less -r $muttng_docdir/manual.txt"</screen>
+
+ </para>
+
+ <para>
+ which works everywhere if a manual is installed.
+ </para>
+
+ <para>
+ Please note that by the type of quoting, muttng determines when
+ to expand these values: when it finds double quotes, the value will
+ be expanded during reading the setup files but when it finds single
+ quotes, it'll expand it at runtime as needed.
+ </para>
+
+ <para>
+ For example, the statement
+ </para>
+
+ <para>
+
+ <screen>
+folder-hook . "set user_current_folder = $muttng_folder_name"</screen>
+
+ </para>
+
+ <para>
+ will be already be translated to the following when reading the
+ startup files:
+ </para>
+
+ <para>
+
+ <screen>
+folder-hook . "set user_current_folder = some_folder"</screen>
+
+ </para>
+
+ <para>
+ with <literal>some_folder</literal> being the name of the
+ first folder muttng
+ opens. On the contrary,
+ </para>
+
+ <para>
+
+ <screen>
+folder-hook . 'set user_current_folder = $muttng_folder_name'</screen>
+
+ </para>
+
+ <para>
+ will be executed at runtime because of the single quotes so that
+ <literal>user_current_folder</literal> will always have
+ the value of the currently
+ opened folder.
+ </para>
+
+ <para>
+ A more practical example is:
+ </para>
+
+ <para>
+
+ <screen>
+folder-hook . 'source ~/.mutt/score-$muttng_folder_name'</screen>
+
+ </para>
+
+ <para>
+ which can be used to source files containing score commands
+ depending on the folder the user enters.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Type Conversions </title>
+
+ <para>
+ A note about variable's types during conversion: internally
+ values are stored in internal types but for any dump/query or set
+ operation they're converted to and from string. That means that
+ there's no need to worry about types when referencing any variable.
+ As an example, the following can be used without harm (besides
+ makeing muttng very likely behave strange):
+ </para>
+
+ <para>
+
+ <screen>
+set read_inc = 100
+set folder = $read_inc
+set read_inc = $folder
+set user_magic_number = 42
+set folder = $user_magic_number</screen>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="alias">
+ <title>Defining/Using aliases </title>
+
+ <para>
+ Usage: <literal>alias</literal> <emphasis>key</emphasis> <emphasis>
+ address
+ </emphasis>
+ [ , <emphasis>address</emphasis>, ... ]
+ </para>
+
+ <para>
+ It's usually very cumbersome to remember or type out the address of
+ someone
+ you are communicating with. Mutt-ng allows you to create ``aliases''
+ which map
+ a short string to a full address.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> if you want to create an alias
+ for a group (by specifying more than
+ one address), you <emphasis role="bold">must</emphasis> separate the
+ addresses with a comma (``,'').
+ </para>
+
+ <para>
+ To remove an alias or aliases (``*'' means all aliases):
+ </para>
+
+ <para>
+ <literal>unalias</literal> [ * | <emphasis>key</emphasis> <emphasis>
+ ...
+ </emphasis>
+ ]
+ </para>
+
+ <para>
+
+ <screen>
+alias muttdude me@cs.hmc.edu (Michael Elkins)
+alias theguys manny, moe, jack</screen>
+
+ </para>
+
+ <para>
+ Unlike other mailers, Mutt-ng doesn't require aliases to be defined
+ in a special file. The <literal>alias</literal> command can appear
+ anywhere in
+ a configuration file, as long as this file is <link linkend="source">
+ source
+ </link>
+ .Consequently, you can have multiple alias files, or
+ you can have all aliases defined in your muttrc.
+ </para>
+
+ <para>
+ On the other hand, the <link linkend="create-alias">create-alias</link>
+ function can use only one file, the one pointed to by the <link linkend="alias-file">
+ alias-file
+ </link>
+ variable (which is
+ <literal>˜/.muttrc</literal> by default). This file is not
+ special either,
+ in the sense that Mutt-ng will happily append aliases to any file, but
+ in
+ order for the new aliases to take effect you need to explicitly <link linkend="source">
+ source
+ </link>
+ this file too.
+ </para>
+
+ <para>
+ For example:
+ </para>
+
+ <para>
+
+ <screen>
+source /usr/local/share/Mutt-ng.aliases
+source ~/.mail_aliases
+set alias_file=~/.mail_aliases</screen>
+
+ </para>
+
+ <para>
+ To use aliases, you merely use the alias at any place in mutt where
+ muttprompts for addresses, such as the <emphasis>To:</emphasis> or <emphasis>
+ Cc:
+ </emphasis>
+ prompt. You can
+ also enter aliases in your editor at the appropriate headers if you
+ have the
+ <link linkend="edit-headers">edit-headers</link> variable set.
+ </para>
+
+ <para>
+ In addition, at the various address prompts, you can use the tab
+ character
+ to expand a partial alias to the full alias. If there are multiple
+ matches,
+ mutt will bring up a menu with the matching aliases. In order to be
+ presented with the full list of aliases, you must hit tab with out a
+ partial
+ alias, such as at the beginning of the prompt or after a comma denoting
+ multiple addresses.
+ </para>
+
+ <para>
+ In the alias menu, you can select as many aliases as you want with the
+ <emphasis>select-entry</emphasis> key (default: RET), and use the <emphasis>
+ exit
+ </emphasis>
+ key
+ (default: q) to return to the address prompt.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="bind">
+ <title>Changing the default key bindings </title>
+
+ <para>
+ Usage: <literal>bind</literal> <emphasis>map</emphasis> <emphasis>key</emphasis> <emphasis>
+ function
+ </emphasis>
+ </para>
+
+ <para>
+ This command allows you to change the default key bindings (operation
+ invoked when pressing a key).
+ </para>
+
+ <para>
+ <emphasis>map</emphasis> specifies in which menu the binding belongs.
+ Multiple maps may
+ be specified by separating them with commas (no additional whitespace
+ isallowed). The currently defined maps are:
+ </para>
+
+ <para>
+ <anchor id="maps"/>
+ <variablelist>
+
+ <varlistentry>
+ <term>generic</term>
+ <listitem>
+ <para>
+ This is not a real menu, but is used as a fallback for all of
+ the other
+ menus except for the pager and editor modes. If a key is not
+ defined in
+ another menu, Mutt-ng will look for a binding to use in this
+ menu. This allows
+ you to bind a key to a certain function in multiple menus
+ instead of having
+ multiple bind statements to accomplish the same task.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>alias</term>
+ <listitem>
+ <para>
+ The alias menu is the list of your personal aliases as defined
+ in your
+ muttrc. It is the mapping from a short alias name to the full
+ email
+ address(es) of the recipient(s).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>attach</term>
+ <listitem>
+ <para>
+ The attachment menu is used to access the attachments on
+ received messages.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>browser</term>
+ <listitem>
+ <para>
+ The browser is used for both browsing the local directory
+ structure, and for
+ listing all of your incoming mailboxes.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>editor</term>
+ <listitem>
+ <para>
+ The editor is the line-based editor the user enters text data.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>index</term>
+ <listitem>
+ <para>
+ The index is the list of messages contained in a mailbox.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>compose</term>
+ <listitem>
+ <para>
+ The compose menu is the screen used when sending a new message.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>pager</term>
+ <listitem>
+ <para>
+ The pager is the mode used to display message/attachment data,
+ and help
+ listings.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>pgp</term>
+ <listitem>
+ <para>
+ The pgp menu is used to select the OpenPGP keys used for
+ encrypting outgoing
+ messages.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>postpone</term>
+ <listitem>
+ <para>
+ The postpone menu is similar to the index menu, except is used
+ when
+ recalling a message the user was composing, but saved until
+ later.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ <emphasis>key</emphasis> is the key (or key sequence) you wish to bind.
+ To specify a
+ control character, use the sequence <emphasis>\Cx</emphasis>,
+ where <emphasis>x</emphasis> is the
+ letter of the control character (for example, to specify control-A use
+ ``\Ca''). Note that the case of <emphasis>x</emphasis> as well as
+ <emphasis>\C</emphasis> is
+ ignored, so that <emphasis>\CA</emphasis>, <emphasis>\Ca</emphasis>, <emphasis>
+ \cA
+ </emphasis>
+ and <emphasis>\ca</emphasis> are all
+ equivalent. An alternative form is to specify the key as a three digit
+ octal number prefixed with a ``\'' (for example <emphasis>
+ \177
+ </emphasis>
+ is
+ equivalent to <emphasis>\c?</emphasis>).
+ </para>
+
+ <para>
+ In addition, <emphasis>key</emphasis> may consist of:
+ </para>
+
+ <para>
+
+ <table>
+ <title>Alternative Key Names</title>
+ <tgroup cols="2" align="left" colsep="1" rowsep="1">
+ <thead>
+ <row>
+ <entry>Sequence</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row><entry><code>\t </code></entry><entry>tab</entry></row>
+ <row><entry><code><tab> </code></entry><entry>tab</entry></row>
+ <row><entry><code><backtab> </code></entry><entry>backtab / shift-tab</entry></row>
+ <row><entry><code>\r </code></entry><entry>carriage return</entry></row>
+ <row><entry><code>\n </code></entry><entry>newline</entry></row>
+ <row><entry><code>\e </code></entry><entry>escape</entry></row>
+ <row><entry><code><esc> </code></entry><entry>escape</entry></row>
+ <row><entry><code><up> </code></entry><entry>up arrow</entry></row>
+ <row><entry><code><down> </code></entry><entry>down arrow</entry></row>
+ <row><entry><code><left> </code></entry><entry>left arrow</entry></row>
+ <row><entry><code><right> </code></entry><entry>right arrow</entry></row>
+ <row><entry><code><pageup> </code></entry><entry>Page Up</entry></row>
+ <row><entry><code><pagedown> </code></entry><entry>Page Down</entry></row>
+ <row><entry><code><backspace> </code></entry><entry>Backspace</entry></row>
+ <row><entry><code><delete> </code></entry><entry>Delete</entry></row>
+ <row><entry><code><insert> </code></entry><entry>Insert</entry></row>
+ <row><entry><code><enter> </code></entry><entry>Enter</entry></row>
+ <row><entry><code><return> </code></entry><entry>Return</entry></row>
+ <row><entry><code><home> </code></entry><entry>Home</entry></row>
+ <row><entry><code><end> </code></entry><entry>End</entry></row>
+ <row><entry><code><space> </code></entry><entry>Space bar</entry></row>
+ <row><entry><code><f1> </code></entry><entry>function key 1</entry></row>
+ <row><entry><code><f10> </code></entry><entry>function key 10</entry></row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </para>
+
+ <para>
+ <emphasis>key</emphasis> does not need to be enclosed in quotes unless
+ it contains a
+ space (`` '').
+ </para>
+
+ <para>
+ <emphasis>function</emphasis> specifies which action to take when <emphasis>
+ key
+ </emphasis>
+ is pressed.
+ For a complete list of functions, see the <link linkend="functions">
+ functions
+ </link>
+ .The special function <literal>noop</literal> unbinds the specified key
+ sequence.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="charset-hook">
+ <title>Defining aliases for character sets </title>
+
+ <para>
+ Usage: <literal>charset-hook</literal> <emphasis>alias</emphasis> <emphasis>
+ charset
+ </emphasis>
+
+ Usage: <literal>iconv-hook</literal> <emphasis>charset</emphasis> <emphasis>
+ local-charset
+ </emphasis>
+ </para>
+
+ <para>
+ The <literal>charset-hook</literal> command defines an alias for a
+ character set.
+ This is useful to properly display messages which are tagged with a
+ character set name not known to mutt.
+ </para>
+
+ <para>
+ The <literal>iconv-hook</literal> command defines a system-specific
+ name for a
+ character set. This is helpful when your systems character
+ conversion library insists on using strange, system-specific names
+ for character sets.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="folder-hook">
+ <title>Setting variables based upon mailbox </title>
+
+ <para>
+ Usage: <literal>folder-hook</literal> [!]<emphasis>regexp</emphasis> <emphasis>
+ command
+ </emphasis>
+ </para>
+
+ <para>
+ It is often desirable to change settings based on which mailbox you are
+ reading. The folder-hook command provides a method by which you can
+ execute
+ any configuration command. <emphasis>regexp</emphasis> is a regular
+ expression specifying
+ in which mailboxes to execute <emphasis>command</emphasis> before
+ loading. If a mailbox
+ matches multiple folder-hook's, they are executed in the order given in
+ the
+ muttrc.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> if you use the ``!'' shortcut
+ for <link linkend="spoolfile">spoolfile</link> at the beginning of the
+ pattern, you must place it
+ inside of double or single quotes in order to distinguish it from the
+ logical <emphasis>not</emphasis> operator for the expression.
+ </para>
+
+ <para>
+ Note that the settings are <emphasis>not</emphasis> restored when you
+ leave the mailbox.
+ For example, a command action to perform is to change the sorting
+ methodbased upon the mailbox being read:
+ </para>
+
+ <para>
+
+ <screen>
+folder-hook mutt set sort=threads</screen>
+
+ </para>
+
+ <para>
+ However, the sorting method is not restored to its previous value when
+ reading a different mailbox. To specify a <emphasis>default</emphasis>
+ command, use the
+ pattern ``.'':
+ </para>
+
+ <para>
+
+ <screen>
+folder-hook . set sort=date-sent</screen>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="macro">
+ <title>Keyboard macros </title>
+
+ <para>
+ Usage: <literal>macro</literal> <emphasis>menu</emphasis> <emphasis>key</emphasis> <emphasis>
+ sequence
+ </emphasis>
+ [ <emphasis>description</emphasis> ]
+ </para>
+
+ <para>
+ Macros are useful when you would like a single key to perform a series
+ of
+ actions. When you press <emphasis>key</emphasis> in menu <emphasis>
+ menu
+ </emphasis>
+ ,Mutt-ng will behave as if
+ you had typed <emphasis>sequence</emphasis>. So if you have a common
+ sequence of commands
+ you type, you can create a macro to execute those commands with a
+ singlekey.
+ </para>
+
+ <para>
+ <emphasis>menu</emphasis> is the <link linkend="maps">maps</link> which
+ the macro will be bound.
+ Multiple maps may be specified by separating multiple menu arguments by
+ commas. Whitespace may not be used in between the menu arguments and
+ thecommas separating them.
+ </para>
+
+ <para>
+ <emphasis>key</emphasis> and <emphasis>sequence</emphasis> are expanded
+ by the same rules as the <link linkend="bind">bind</link>. There are
+ some additions however. The
+ first is that control characters in <emphasis>sequence</emphasis> can
+ also be specified
+ as <emphasis>ˆx</emphasis>. In order to get a caret (`ˆ'')
+ you need to use
+ <emphasis>ˆˆ</emphasis>. Secondly, to specify a certain key
+ such as <emphasis>up</emphasis>
+ or to invoke a function directly, you can use the format
+ <emphasis><key name></emphasis> and <emphasis><function
+ name>
+ </emphasis>
+ .For a listing of key
+ names see the section on <link linkend="bind">bind</link>. Functions
+ are listed in the <link linkend="functions">functions</link>.
+ </para>
+
+ <para>
+ The advantage with using function names directly is that the macros
+ willwork regardless of the current key bindings, so they are not
+ dependent on
+ the user having particular key definitions. This makes them more
+ robustand portable, and also facilitates defining of macros in files
+ used by more
+ than one user (eg. the system Muttngrc).
+ </para>
+
+ <para>
+ Optionally you can specify a descriptive text after <emphasis>sequence</emphasis>,
+ which is shown in the help screens.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> Macro definitions (if any)
+ listed in the help screen(s), are
+ silently truncated at the screen width, and are not wrapped.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="color">
+ <title>Using color and mono video attributes </title>
+
+ <para>
+ Usage: <literal>color</literal> <emphasis>object</emphasis> <emphasis>
+ foreground
+ </emphasis>
+ <emphasis>background</emphasis> [ <emphasis>regexp</emphasis>
+ ]
+
+ Usage: <literal>color</literal> index <emphasis>foreground</emphasis> <emphasis>
+ background
+ </emphasis>
+ <emphasis>pattern</emphasis>
+
+ Usage: <literal>uncolor</literal> index <emphasis>pattern</emphasis>
+ [ <emphasis>pattern</emphasis> ... ]
+
+ </para>
+
+ <para>
+ If your terminal supports color, you can spice up Mutt-ng by creating
+ your own
+ color scheme. To define the color of an object (type of information),
+ you
+ must specify both a foreground color <emphasis role="bold">and</emphasis> a background color (it is not
+ possible to only specify one or the other).
+ </para>
+
+ <para>
+ <emphasis>object</emphasis> can be one of:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ attachment
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ body (match <emphasis>regexp</emphasis> in the body of messages)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ bold (highlighting bold patterns in the body of messages)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ error (error messages printed by Mutt-ng)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ header (match <emphasis>regexp</emphasis> in the message header)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ hdrdefault (default color of the message header in the pager)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ index (match <emphasis>pattern</emphasis> in the message index)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ indicator (arrow or bar used to indicate the current item in a
+ menu)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ markers (the ``+'' markers at the beginning of wrapped lines in
+ the pager)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ message (informational messages)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ normal
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ quoted (text matching <link linkend="quote-regexp">quote-regexp</link> in the body of a message)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ quoted1, quoted2, ..., quoted<emphasis role="bold">N</emphasis>
+ (higher levels of quoting)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ search (highlighting of words in the pager)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ signature
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ status (mode lines used to display info about the mailbox or
+ message)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ tilde (the ``˜'' used to pad blank lines in the pager)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ tree (thread tree drawn in the message index and attachment menu)
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ underline (highlighting underlined patterns in the body of
+ messages)
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ <emphasis>foreground</emphasis> and <emphasis>background</emphasis> can
+ be one of the following:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ white
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ black
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ green
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ magenta
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ blue
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ cyan
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ yellow
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ red
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ default
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ color<emphasis>x</emphasis>
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ <emphasis>foreground</emphasis> can optionally be prefixed with the
+ keyword <literal>bright</literal> to make
+ the foreground color boldfaced (e.g., <literal>brightred</literal>).
+ </para>
+
+ <para>
+ If your terminal supports it, the special keyword <emphasis>default</emphasis> can be
+ used as a transparent color. The value <emphasis>brightdefault</emphasis> is also valid.
+ If Mutt-ng is linked against the <emphasis>S-Lang</emphasis> library,
+ you also need to set
+ the <emphasis>COLORFGBG</emphasis> environment variable to the default
+ colors of your
+ terminal for this to work; for example (for Bourne-like shells):
+ </para>
+
+ <para>
+
+ <screen>
+set COLORFGBG="green;black"
+export COLORFGBG</screen>
+
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> The <emphasis>S-Lang</emphasis>
+ library requires you to use the <emphasis>lightgray</emphasis>
+ and <emphasis>brown</emphasis> keywords instead of <emphasis>white</emphasis> and <emphasis>
+ yellow
+ </emphasis>
+ when
+ setting this variable.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> The uncolor command can be
+ applied to the index object only. It
+ removes entries from the list. You <emphasis role="bold">must</emphasis> specify the same pattern
+ specified in the color command for it to be removed. The pattern ``*''
+ is
+ a special token which means to clear the color index list of all
+ entries.
+ </para>
+
+ <para>
+ Mutt-ng also recognizes the keywords <emphasis>color0</emphasis>, <emphasis>
+ color1
+ </emphasis>
+ ,…,
+ <emphasis>color</emphasis><emphasis role="bold">N-1</emphasis> (<emphasis role="bold">
+ N
+ </emphasis>
+ being the number of colors supported
+ by your terminal). This is useful when you remap the colors for your
+ display (for example by changing the color associated with <emphasis>
+ color2
+ </emphasis>
+ for your xterm), since color names may then lose their normal meaning.
+ </para>
+
+ <para>
+ If your terminal does not support color, it is still possible change
+ the video
+ attributes through the use of the ``mono'' command:
+ </para>
+
+ <para>
+ Usage: <literal>mono</literal> <emphasis><object>
+ <attribute>
+ </emphasis>
+ [ <emphasis>regexp</emphasis> ]
+
+ Usage: <literal>mono</literal> index <emphasis>attribute</emphasis> <emphasis>
+ pattern
+ </emphasis>
+
+ Usage: <literal>unmono</literal> index <emphasis>pattern</emphasis>
+ [ <emphasis>pattern</emphasis> ... ]
+
+ </para>
+
+ <para>
+ where <emphasis>attribute</emphasis> is one of the following:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ none
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ bold
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ underline
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ reverse
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ standout
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="ignore">
+ <title>Ignoring (weeding) unwanted message headers </title>
+
+ <para>
+ Usage: <literal>[un]ignore</literal> <emphasis>pattern</emphasis> [ <emphasis>
+ pattern
+ </emphasis>
+ ... ]
+ </para>
+
+ <para>
+ Messages often have many header fields added by automatic processing
+ systems,
+ or which may not seem useful to display on the screen. This command
+ allows
+ you to specify header fields which you don't normally want to see.
+ </para>
+
+ <para>
+ You do not need to specify the full header field name. For example,
+ ``ignore content-'' will ignore all header fields that begin with the
+ pattern
+ ``content-''. ``ignore *'' will ignore all headers.
+ </para>
+
+ <para>
+ To remove a previously added token from the list, use the ``unignore''
+ command.
+ The ``unignore'' command will make Mutt-ng display headers with the
+ given pattern.
+ For example, if you do ``ignore x-'' it is possible to ``unignore
+ x-mailer''.
+ </para>
+
+ <para>
+ ``unignore *'' will remove all tokens from the ignore list.
+ </para>
+
+ <para>
+ For example:
+
+ <screen>
+# Sven's draconian header weeding
+ignore *
+unignore from date subject to cc
+unignore organization organisation x-mailer: x-newsreader: x-mailing-list:
+unignore posted-to:</screen>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="alternates">
+ <title>Alternative addresses </title>
+
+ <para>
+ Usage: <literal>[un]alternates</literal> <emphasis>regexp</emphasis> [ <emphasis>
+ regexp
+ </emphasis>
+ ... ]
+
+ </para>
+
+ <para>
+ With various functions, mutt will treat messages differently,
+ depending on whether you sent them or whether you received them from
+ someone else. For instance, when replying to a message that you
+ sent to a different party, mutt will automatically suggest to send
+ the response to the original message's recipients -- responding to
+ yourself won't make much sense in many cases. (See <link linkend="reply-to">
+ reply-to
+ </link>
+ .)
+ </para>
+
+ <para>
+ Many users receive e-mail under a number of different addresses. To
+ fully use mutt's features here, the program must be able to
+ recognize what e-mail addresses you receive mail under. That's the
+ purpose of the <literal>alternates</literal> command: It takes a list
+ of regular
+ expressions, each of which can identify an address under which you
+ receive e-mail.
+ </para>
+
+ <para>
+ The <literal>unalternates</literal> command can be used to write
+ exceptions to
+ <literal>alternates</literal> patterns. If an address matches something
+ in an
+ <literal>alternates</literal> command, but you nonetheless do not think
+ it is
+ from you, you can list a more precise pattern under an <literal>
+ unalternates
+ </literal>
+ command.
+ </para>
+
+ <para>
+ To remove a regular expression from the <literal>alternates</literal>
+ list, use the
+ <literal>unalternates</literal> command with exactly the same <emphasis>
+ regexp
+ </emphasis>
+ .
+ Likewise, if the <emphasis>regexp</emphasis> for a <literal>alternates</literal> command matches
+ an entry on the <literal>unalternates</literal> list, that <literal>
+ unalternates
+ </literal>
+ entry will be removed. If the <emphasis>regexp</emphasis> for <literal>
+ unalternates
+ </literal>
+ is ``*'', <emphasis>all entries</emphasis> on <literal>alternates</literal> will be removed.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Format = Flowed </title>
+
+ <sect2>
+ <title>Introduction </title>
+
+ <para>
+ Mutt-ng contains support for so-called <literal>format=flowed</literal> messages.
+ In the beginning of email, each message had a fixed line width, and
+ it was enough for displaying them on fixed-size terminals. But times
+ changed, and nowadays hardly anybody still uses fixed-size terminals:
+ more people nowaydays use graphical user interfaces, with dynamically
+ resizable windows. This led to the demand of a new email format that
+ makes it possible for the email client to make the email look nice
+ in a resizable window without breaking quoting levels and creating
+ an incompatible email format that can also be displayed nicely on
+ old fixed-size terminals.
+ </para>
+
+ <para>
+ For introductory information on <literal>format=flowed</literal>
+ messages, see
+ <ulink URL="http://www.joeclark.org/ffaq.html"><http://www.joeclark.org/ffaq.html></ulink>.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Receiving: Display Setup </title>
+
+ <para>
+ When you receive emails that are marked as <literal>format=flowed</literal>
+ messages, and is formatted correctly, mutt-ng will try to reformat
+ the message to optimally fit on your terminal. If you want a fixed
+ margin on the right side of your terminal, you can set the
+ following:
+ </para>
+
+ <para>
+
+ <screen>
+set wrapmargin = 10</screen>
+
+ </para>
+
+ <para>
+ The code above makes the line break 10 columns before the right
+ side of the terminal.
+ </para>
+
+ <para>
+ If your terminal is so wide that the lines are embarrassingly long,
+ you can also set a maximum line length:
+ </para>
+
+ <para>
+
+ <screen>
+set max_line_length = 120</screen>
+
+ </para>
+
+ <para>
+ The example above will give you lines not longer than 120
+ characters.
+ </para>
+
+ <para>
+ When you view at <literal>format=flowed</literal> messages, you will
+ often see
+ the quoting hierarchy like in the following example:
+ </para>
+
+ <para>
+
+ <screen>
+>Bill, can you please send last month's progress report to Mr.
+>Morgan? We also urgently need the cost estimation for the new
+>production server that we want to set up before our customer's
+>project will go live.</screen>
+
+ </para>
+
+ <para>
+ This obviously doesn't look very nice, and it makes it very
+ hard to differentiate between text and quoting character. The
+ solution is to configure mutt-ng to "stuff" the quoting:
+ </para>
+
+ <para>
+
+ <screen>
+set stuff_quoted</screen>
+
+ </para>
+
+ <para>
+ This will lead to a nicer result that is easier to read:
+ </para>
+
+ <para>
+
+ <screen>
+> Bill, can you please send last month's progress report to Mr.
+> Morgan? We also urgently need the cost estimation for the new
+> production server that we want to set up before our customer's
+> project will go live.</screen>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Sending </title>
+
+ <para>
+ If you want mutt-ng to send emails with <literal>format=flowed</literal> set, you
+ need to explicitly set it:
+ </para>
+
+ <para>
+
+ <screen>
+set text_flowed</screen>
+
+ </para>
+
+ <para>
+ Additionally, you have to use an editor which supports writing
+ <literal>format=flowed</literal>-conforming emails. For vim, this is
+ done by
+ adding <literal>w</literal> to the formatoptions (see <literal>:h
+ formatoptions
+ </literal>
+ and
+ <literal>:h fo-table</literal>) when writing emails.
+ </para>
+
+ <para>
+ Also note that <emphasis>format=flowed</emphasis> knows about
+ ``space-stuffing'',
+ that is, when sending messages, some kinds of lines have to be
+ indented with a single space on the sending side. On the receiving
+ side, the first space (if any) is removed. As a consequence and in
+ addition to the above simple setting, please keep this in mind when
+ making manual formattings within the editor. Also note that mutt-ng
+ currently violates the standard (RfC 3676) as it does not
+ space-stuff lines starting with:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ <literal>></literal> This is <emphasis>not</emphasis> the
+ quote character but a right
+ angle used for other reasons
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <literal>From</literal> with a trailing space.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ just a space for formatting reasons
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ Please make sure that you manually prepend a space to each of them.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Additional Notes</title>
+
+ <para>
+ For completeness, the <link linkend="delete-space">delete-space</link> variable provides the mechanism
+ to generate a <literal>DelSp=yes</literal> parameter on <emphasis>
+ outgoing
+ </emphasis>
+ messages.
+ According to the standard, clients receiving a <literal>format=flowed</literal>
+ messages should delete the last space of a flowed line but still
+ interpret the line as flowed. Because flowed lines usually contain
+ only one space at the end, this parameter would make the receiving
+ client concatenate the last word of the previous with the first of
+ the current line <emphasis>without</emphasis> a space. This makes
+ ordinary text
+ unreadable and is intended for languages rarely using spaces. So
+ please use this setting only if you're sure what you're doing.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1 id="lists">
+ <title>Mailing lists </title>
+
+ <para>
+ Usage: <literal>[un]lists</literal> <emphasis>regexp</emphasis> [ <emphasis>
+ regexp
+ </emphasis>
+ ... ]
+
+ Usage: <literal>[un]subscribe</literal> <emphasis>regexp</emphasis> [ <emphasis>
+ regexp
+ </emphasis>
+ ... ]
+ </para>
+
+ <para>
+ Mutt-ng has a few nice features for <link linkend="using-lists">
+ using-lists
+ </link>
+ .In order to take advantage of them, you must
+ specify which addresses belong to mailing lists, and which mailing
+ lists you are subscribed to. Once you have done this, the <link linkend="func-list-reply">
+ list-reply
+ </link>
+ function will work for all known lists.
+ Additionally, when you send a message to a subscribed list, mutt will
+ add a Mail-Followup-To header to tell other users' mail user agents
+ not to send copies of replies to your personal address. Note that
+ the Mail-Followup-To header is a non-standard extension which is not
+ supported by all mail user agents. Adding it is not bullet-proof
+ against
+ receiving personal CCs of list messages. Also note that the generation
+ of the Mail-Followup-To header is controlled by the <link linkend="followup-to">
+ followup-to
+ </link>
+ configuration variable.
+ </para>
+
+ <para>
+ More precisely, Mutt-ng maintains lists of patterns for the addresses
+ of known and subscribed mailing lists. Every subscribed mailing
+ list is known. To mark a mailing list as known, use the ``lists''
+ command. To mark it as subscribed, use ``subscribe''.
+ </para>
+
+ <para>
+ You can use regular expressions with both commands. To mark all
+ messages sent to a specific bug report's address on mutt's bug
+ tracking system as list mail, for instance, you could say
+ ``subscribe [0-9]*@bugs.guug.de''. Often, it's sufficient to just
+ give a portion of the list's e-mail address.
+ </para>
+
+ <para>
+ Specify as much of the address as you need to to remove ambiguity. For
+ example, if you've subscribed to the Mutt-ng mailing list, you will
+ receive mail
+ addressed to <emphasis>mutt-users@mutt.org</emphasis>. So, to tell
+ Mutt-ng that this is a
+ mailing list, you could add ``lists mutt-users'' to your
+ initialization file. To tell mutt that you are subscribed to it,
+ add ``subscribe mutt-users'' to your initialization file instead.
+ If you also happen to get mail from someone whose address is
+ <emphasis>mutt-users@example.com</emphasis>, you could use ``lists
+ mutt-users@mutt\\.org''
+ or ``subscribe mutt-users@mutt\\.org'' to
+ match only mail from the actual list.
+ </para>
+
+ <para>
+ The ``unlists'' command is used to remove a token from the list of
+ known and subscribed mailing-lists. Use ``unlists *'' to remove all
+ tokens.
+ </para>
+
+ <para>
+ To remove a mailing list from the list of subscribed mailing lists,
+ but keep it on the list of known mailing lists, use ``unsubscribe''.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="mbox-hook">
+ <title>Using Multiple spool mailboxes </title>
+
+ <para>
+ Usage: <literal>mbox-hook</literal> [!]<emphasis>pattern</emphasis> <emphasis>
+ mailbox
+ </emphasis>
+ </para>
+
+ <para>
+ This command is used to move read messages from a specified mailbox to
+ adifferent mailbox automatically when you quit or change folders.
+ <emphasis>pattern</emphasis> is a regular expression specifying the
+ mailbox to treat as a
+ ``spool'' mailbox and <emphasis>mailbox</emphasis> specifies where mail
+ should be saved when
+ read.
+ </para>
+
+ <para>
+ Unlike some of the other <emphasis>hook</emphasis> commands, only the <emphasis>
+ first
+ </emphasis>
+ matching
+ pattern is used (it is not possible to save read mail in more than a
+ single
+ mailbox).
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="mailboxes">
+ <title>Defining mailboxes which receive mail </title>
+
+ <para>
+ Usage: <literal>[un]mailboxes</literal> [!]<emphasis>
+ filename
+ </emphasis>
+ [ <emphasis>filename</emphasis> ... ]
+ </para>
+
+ <para>
+ This command specifies folders which can receive mail and
+ which will be checked for new messages. By default, the
+ main menu status bar displays how many of these folders have
+ new messages.
+ </para>
+
+ <para>
+ When changing folders, pressing <emphasis>space</emphasis> will cycle
+ through folders with new mail.
+ </para>
+
+ <para>
+ Pressing TAB in the directory browser will bring up a menu showing the
+ files
+ specified by the <literal>mailboxes</literal> command, and indicate
+ which contain new
+ messages. Mutt-ng will automatically enter this mode when invoked from
+ the
+ command line with the <literal>-y</literal> option.
+ </para>
+
+ <para>
+ The ``unmailboxes'' command is used to remove a token from the list
+ of folders which receive mail. Use ``unmailboxes *'' to remove all
+ tokens.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> new mail is detected by
+ comparing the last modification time to
+ the last access time. Utilities like <literal>biff</literal> or <literal>
+ frm
+ </literal>
+ or any other
+ program which accesses the mailbox might cause Mutt-ng to never detect
+ new mail
+ for that mailbox if they do not properly reset the access time. Backup
+ tools are another common reason for updated access times.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> the filenames in the <literal>
+ mailboxes
+ </literal>
+ command are resolved when
+ the command is executed, so if these names contain <link linkend="shortcuts">
+ shortcuts
+ </link>
+ (such as ``='' and ``!''), any variable
+ definition that affect these characters (like <link linkend="folder">
+ folder
+ </link>
+ and <link linkend="spoolfile">spoolfile</link>)
+ should be executed before the <literal>mailboxes</literal> command.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="my-hdr">
+ <title>User defined headers </title>
+
+ <para>
+ Usage:
+
+ <literal>my_hdr</literal> <emphasis>string</emphasis>
+
+ <literal>unmy_hdr</literal> <emphasis>field</emphasis> [ <emphasis>
+ field
+ </emphasis>
+ ... ]
+ </para>
+
+ <para>
+ The ``my_hdr'' command allows you to create your own header
+ fields which will be added to every message you send.
+ </para>
+
+ <para>
+ For example, if you would like to add an ``Organization:'' header field
+ to
+ all of your outgoing messages, you can put the command
+ </para>
+
+ <para>
+ <screen>
+my_hdr Organization: A Really Big Company, Anytown, USA</screen>
+ </para>
+
+ <para>
+ in your <literal>.muttrc</literal>.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> space characters are <emphasis>
+ not
+ </emphasis>
+ allowed between the keyword and
+ the colon (``:''). The standard for electronic mail (RFC822) says that
+ space is illegal there, so Mutt-ng enforces the rule.
+ </para>
+
+ <para>
+ If you would like to add a header field to a single message, you should
+ either set the <link linkend="edit-headers">edit-headers</link>
+ variable,
+ or use the <emphasis>edit-headers</emphasis> function (default: ``E'')
+ in the send-menu so
+ that you can edit the header of your message along with the body.
+ </para>
+
+ <para>
+ To remove user defined header fields, use the ``unmy_hdr''
+ command. You may specify an asterisk (``*'') to remove all header
+ fields, or the fields to remove. For example, to remove all ``To'' and
+ ``Cc'' header fields, you could use:
+ </para>
+
+ <para>
+ <screen>
+unmy_hdr to cc</screen>
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="hdr-order">
+ <title>Defining the order of headers when viewing messages </title>
+
+ <para>
+ Usage: <literal>hdr_order</literal> <emphasis>header1</emphasis>
+ <emphasis>header2</emphasis> <emphasis>header3</emphasis>
+ </para>
+
+ <para>
+ With this command, you can specify an order in which mutt will attempt
+ to present headers to you when viewing messages.
+ </para>
+
+ <para>
+ ``unhdr_order *'' will clear all previous headers from the order
+ list,
+ thus removing the header order effects set by the system-wide startup
+ file.
+ </para>
+
+ <para>
+
+ <screen>
+hdr_order From Date: From: To: Cc: Subject:</screen>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="save-hook">
+ <title>Specify default save filename </title>
+
+ <para>
+ Usage: <literal>save-hook</literal> [!]<emphasis>pattern</emphasis> <emphasis>
+ filename
+ </emphasis>
+ </para>
+
+ <para>
+ This command is used to override the default filename used when saving
+ messages. <emphasis>filename</emphasis> will be used as the default
+ filename if the message is
+ <emphasis>From:</emphasis> an address matching <emphasis>regexp</emphasis> or if you are the author and the
+ message is addressed <emphasis>to:</emphasis> something matching <emphasis>
+ regexp
+ </emphasis>
+ .
+ </para>
+
+ <para>
+ See <link linkend="pattern-hook">pattern-hook</link> for information on
+ the exact format of <emphasis>pattern</emphasis>.
+ </para>
+
+ <para>
+ Examples:
+ </para>
+
+ <para>
+
+ <screen>
+save-hook me@(turing\\.)?cs\\.hmc\\.edu$ +elkins
+save-hook aol\\.com$ +spam</screen>
+
+ </para>
+
+ <para>
+ Also see the <link linkend="fcc-save-hook">fcc-save-hook</link>
+ command.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="fcc-hook">
+ <title>Specify default Fcc: mailbox when composing </title>
+
+ <para>
+ Usage: <literal>fcc-hook</literal> [!]<emphasis>pattern</emphasis> <emphasis>
+ mailbox
+ </emphasis>
+ </para>
+
+ <para>
+ This command is used to save outgoing mail in a mailbox other than
+ <link linkend="record">record</link>. Mutt-ng searches the initial
+ list of
+ message recipients for the first matching <emphasis>regexp</emphasis>
+ and uses <emphasis>mailbox</emphasis>
+ as the default Fcc: mailbox. If no match is found the message will be
+ saved
+ to <link linkend="record">record</link> mailbox.
+ </para>
+
+ <para>
+ See <link linkend="pattern-hook">pattern-hook</link> for information on
+ the exact format of <emphasis>pattern</emphasis>.
+ </para>
+
+ <para>
+ Example: <literal>fcc-hook [@.]aol\\.com$
+ +spammers
+ </literal>
+ </para>
+
+ <para>
+ The above will save a copy of all messages going to the aol.com domain
+ to
+ the `+spammers' mailbox by default. Also see the <link linkend="fcc-save-hook">
+ fcc-save-hook
+ </link>
+ command.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="fcc-save-hook">
+ <title>Specify default save filename and default Fcc: mailbox at once </title>
+
+ <para>
+ Usage: <literal>fcc-save-hook</literal> [!]<emphasis>pattern</emphasis> <emphasis>
+ mailbox
+ </emphasis>
+ </para>
+
+ <para>
+ This command is a shortcut, equivalent to doing both a <link linkend="fcc-hook">
+ fcc-hook
+ </link>
+ and a <link linkend="save-hook">save-hook</link> with its arguments.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="send-hook">
+ <title>Change settings based upon message recipients </title>
+
+ <para>
+ Usage: <literal>reply-hook</literal> [!]<emphasis>pattern</emphasis> <emphasis>
+ command
+ </emphasis>
+
+ Usage: <literal>send-hook</literal> [!]<emphasis>pattern</emphasis> <emphasis>
+ command
+ </emphasis>
+
+ Usage: <literal>send2-hook</literal> [!]<emphasis>pattern</emphasis> <emphasis>
+ command
+ </emphasis>
+ </para>
+
+ <para>
+ These commands can be used to execute arbitrary configuration commands
+ based
+ upon recipients of the message. <emphasis>pattern</emphasis> is a
+ regular expression
+ matching the desired address. <emphasis>command</emphasis> is executed
+ when <emphasis>regexp</emphasis>
+ matches recipients of the message.
+ </para>
+
+ <para>
+ <literal>reply-hook</literal> is matched against the message you are <emphasis>
+ replying
+ </emphasis>
+ <emphasis role="bold">to</emphasis>, instead of the message you are <emphasis>
+ sending
+ </emphasis>
+ .<literal>send-hook</literal> is
+ matched against all messages, both <emphasis>new</emphasis> and <emphasis>
+ replies
+ </emphasis>
+ .<emphasis role="bold">Note:</emphasis>
+ <literal>reply-hook</literal>s are matched <emphasis role="bold">before</emphasis> the <literal>
+ send-hook
+ </literal>
+ ,<emphasis role="bold">regardless</emphasis>
+ of the order specified in the users's configuration file.
+ </para>
+
+ <para>
+ <literal>send2-hook</literal> is matched every time a message is
+ changed, either
+ by editing it, or by using the compose menu to change its recipients
+ or subject. <literal>send2-hook</literal> is executed after <literal>
+ send-hook
+ </literal>
+ ,and
+ can, e.g., be used to set parameters such as the <link linkend="sendmail">
+ sendmail
+ </link>
+ variable depending on the message's sender
+ address.
+ </para>
+
+ <para>
+ For each type of <literal>send-hook</literal> or <literal>reply-hook</literal>, when multiple matches
+ occur, commands are executed in the order they are specified in the
+ muttrc
+ (for that type of hook).
+ </para>
+
+ <para>
+ See <link linkend="pattern-hook">pattern-hook</link> for information on
+ the exact format of <emphasis>pattern</emphasis>.
+ </para>
+
+ <para>
+ Example: <literal>send-hook mutt "set mime_forward
+ signature=''"
+ </literal>
+ </para>
+
+ <para>
+ Another typical use for this command is to change the values of the
+ <link linkend="attribution">attribution</link>, <link linkend="signature">
+ signature
+ </link>
+ and <link linkend="locale">locale</link>
+ variables in order to change the language of the attributions and
+ signatures based upon the recipients.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> the send-hook's are only
+ executed ONCE after getting the initial
+ list of recipients. Adding a recipient after replying or editing the
+ message will NOT cause any send-hook to be executed. Also note that
+ my_hdr commands which modify recipient headers, or the message's
+ subject, don't have any effect on the current message when executed
+ from a send-hook.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="message-hook">
+ <title>Change settings before formatting a message </title>
+
+ <para>
+ Usage: <literal>message-hook</literal> [!]<emphasis>pattern</emphasis> <emphasis>
+ command
+ </emphasis>
+ </para>
+
+ <para>
+ This command can be used to execute arbitrary configuration commands
+ before viewing or formatting a message based upon information about the
+ message.
+ <emphasis>command</emphasis> is executed if the <emphasis>pattern</emphasis> matches the message to be
+ displayed. When multiple matches occur, commands are executed in the
+ order
+ they are specified in the muttrc.
+ </para>
+
+ <para>
+ See <link linkend="pattern-hook">pattern-hook</link> for
+ information on the exact format of <emphasis>pattern</emphasis>.
+ </para>
+
+ <para>
+ Example:
+
+ <screen>
+message-hook ~A 'set pager=builtin'
+message-hook '~f freshmeat-news' 'set pager="less \"+/^ subject:.*\""'</screen>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="crypt-hook">
+ <title>Choosing the cryptographic key of the recipient </title>
+
+ <para>
+ Usage: <literal>crypt-hook</literal> <emphasis>pattern</emphasis> <emphasis>
+ keyid
+ </emphasis>
+ </para>
+
+ <para>
+ When encrypting messages with PGP or OpenSSL, you may want to associate
+ a certain
+ key with a given e-mail address automatically, either because the
+ recipient's public key can't be deduced from the destination address,
+ or because, for some reasons, you need to override the key Mutt-ng
+ wouldnormally use. The crypt-hook command provides a method by which
+ you can
+ specify the ID of the public key to be used when encrypting messages to
+ a certain recipient.
+ </para>
+
+ <para>
+ The meaning of "key id" is to be taken broadly in this context: You
+ can either put a numerical key ID here, an e-mail address, or even
+ just a real name.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="push">
+ <title>Adding key sequences to the keyboard buffer </title>
+
+ <para>
+ Usage: <literal>push</literal> <emphasis>string</emphasis>
+ </para>
+
+ <para>
+ This command adds the named string to the keyboard buffer. The string
+ may
+ contain control characters, key names and function names like the
+ sequence
+ string in the <link linkend="macro">macro</link> command. You may use
+ it to
+ automatically run a sequence of commands at startup, or when entering
+ certain folders.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="exec">
+ <title>Executing functions </title>
+
+ <para>
+ Usage: <literal>exec</literal> <emphasis>function</emphasis> [ <emphasis>
+ function
+ </emphasis>
+ ... ]
+ </para>
+
+ <para>
+ This command can be used to execute any function. Functions are
+ listed in the <link linkend="functions">functions</link>.
+ ``exec function'' is equivalent to ``push <function>''.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="score-command">
+ <title>Message Scoring </title>
+
+ <para>
+ Usage: <literal>score</literal> <emphasis>pattern</emphasis> <emphasis>
+ value
+ </emphasis>
+
+ Usage: <literal>unscore</literal> <emphasis>pattern</emphasis> [ <emphasis>
+ pattern
+ </emphasis>
+ ... ]
+ </para>
+
+ <para>
+ In situations where you have to cope with a lot of emails, e.g.
+ when you read many different mailing lists, and take part in
+ discussions, it is always useful to have the important messages
+ marked and the annoying messages or the ones that you aren't
+ interested in deleted. For this purpose, mutt-ng features a
+ mechanism called ``scoring''.
+ </para>
+
+ <para>
+ When you use scoring, every message has a base score of 0. You
+ can then use the <literal>score</literal> command to define patterns
+ and a
+ positive or negative value associated with it. When a pattern
+ matches a message, the message's score will be raised or lowered by
+ the amount of the value associated with the pattern.
+ </para>
+
+ <para>
+
+ <screen>
+score "~f nion@muttng\.org" 50
+score "~f @sco\.com" -100</screen>
+
+ </para>
+
+ <para>
+ If the pattern matches, it is also possible to set the score
+ value of the current message to a certain value and then stop
+ evaluation:
+ </para>
+
+ <para>
+
+ <screen>
+score "~f santaclaus@northpole\.int" =666</screen>
+
+ </para>
+
+ <para>
+ What is important to note is that negative score values will be
+ rounded up to 0.
+ </para>
+
+ <para>
+ To make scoring actually useful, the score must be applied in
+ some way. That's what the <emphasis>score thresholds</emphasis> are
+ for. Currently,
+ there are three score thresholds:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ flag threshold: when a message has a score value equal or higher
+ than the flag threshold, it will be flagged.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ read threshold: when a message has a score value equal or lower
+ than the read threshold, it will be marked as read.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ delete threshold: when a message has a score value equal or
+ lower than the delete threshold, it will be marked as deleted.
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ These three thresholds can be set via the variables <link linkend="score-threshold-flag">
+ score-threshold-flag
+ </link>
+ ,<link linkend="score-threshold-read">score-threshold-read</link>, <link linkend="score-threshold-delete">
+ score-threshold-delete
+ </link>
+ and. By
+ default, <link linkend="score-threshold-read">score-threshold-read</link> and <link linkend="score-threshold-delete">
+ score-threshold-delete
+ </link>
+ are set to
+ <literal>-1</literal>, which means that in the default threshold
+ configuration no
+ message will ever get marked as read or deleted.
+ </para>
+
+ <para>
+ Scoring gets especially interesting when combined with the <literal>
+ color
+ </literal>
+ command
+ and the <literal>˜n</literal> pattern:
+ </para>
+
+ <para>
+
+ <screen>
+color index black yellow "~n 10-"
+color index red yellow "~n 100-"</screen>
+
+ </para>
+
+ <para>
+ The rules above mark all messages with a score between 10 and 99
+ with black and yellow, and messages with a score greater or equal
+ 100 with red and yellow. This might be unusual to you if you're used
+ to e.g. slrn's scoring mechanism, but it is more flexible, as it
+ visually marks different scores.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="spam">
+ <title>Spam detection </title>
+
+ <para>
+ Usage: <literal>spam</literal> <emphasis>pattern</emphasis> <emphasis>
+ format
+ </emphasis>
+
+ Usage: <literal>nospam</literal> <emphasis>pattern</emphasis>
+ </para>
+
+ <para>
+ Mutt-ng has generalized support for external spam-scoring filters.
+ By defining your spam patterns with the <literal>spam</literal> and <literal>
+ nospam
+ </literal>
+ commands, you can <emphasis>limit</emphasis>, <emphasis>search</emphasis>, and <emphasis>
+ sort
+ </emphasis>
+ your
+ mail based on its spam attributes, as determined by the external
+ filter. You also can display the spam attributes in your index
+ display using the <literal>%H</literal> selector in the <link linkend="index-format">
+ index-format
+ </link>
+ variable. (Tip: try <literal>%?H?[%H] ?</literal>
+ to display spam tags only when they are defined for a given message.)
+ </para>
+
+ <para>
+ Your first step is to define your external filter's spam patterns using
+ the <literal>spam</literal> command. <emphasis>pattern</emphasis>
+ should be a regular expression
+ that matches a header in a mail message. If any message in the mailbox
+ matches this regular expression, it will receive a ``spam tag'' or
+ ``spam attribute'' (unless it also matches a <literal>nospam</literal>
+ pattern -- see
+ below.) The appearance of this attribute is entirely up to you, and is
+ governed by the <emphasis>format</emphasis> parameter. <emphasis>format</emphasis> can be any static
+ text, but it also can include back-references from the <emphasis>
+ pattern
+ </emphasis>
+ expression. (A regular expression ``back-reference'' refers to a
+ sub-expression contained within parentheses.) <literal>%1</literal> is replaced with
+ the first back-reference in the regex, <literal>%2</literal>
+ with the second, etc.
+ </para>
+
+ <para>
+ If you're using multiple spam filters, a message can have more than
+ one spam-related header. You can define <literal>spam</literal>
+ patterns for each
+ filter you use. If a message matches two or more of these patterns, and
+ the $spam_separator variable is set to a string, then the
+ message's spam tag will consist of all the <emphasis>format</emphasis>
+ strings joined
+ together, with the value of $spam_separator separating
+ them.
+ </para>
+
+ <para>
+ For example, suppose I use DCC, SpamAssassin, and PureMessage. I might
+ define these spam settings:
+
+ <screen>
+spam "X-DCC-.*-Metrics:.*(....)=many" "90+/DCC-%1"
+spam "X-Spam-Status: Yes" "90+/SA"
+spam "X-PerlMX-Spam: .*Probability=([0-9]+)%" "%1/PM"
+set spam_separator=", "</screen>
+
+ </para>
+
+ <para>
+ If I then received a message that DCC registered with ``many'' hits
+ under the ``Fuz2'' checksum, and that PureMessage registered with a
+ 97% probability of being spam, that message's spam tag would
+ read<literal>90+/DCC-Fuz2, 97/PM</literal>. (The four characters before
+ ``=many'' in a
+ DCC report indicate the checksum used -- in this case, ``Fuz2''.)
+ </para>
+
+ <para>
+ If the $spam_separator variable is unset, then each
+ spam pattern match supersedes the previous one. Instead of getting
+ joined <emphasis>format</emphasis> strings, you'll get only the last
+ one to match.
+ </para>
+
+ <para>
+ The spam tag is what will be displayed in the index when you use
+ <literal>%H</literal> in the <literal>
+ $index_format
+ </literal>
+ variable. It's also the
+ string that the <literal>˜H</literal> pattern-matching expression
+ matches against for
+ <emphasis>search</emphasis> and <emphasis>limit</emphasis> functions.
+ And it's what sorting by spam
+ attribute will use as a sort key.
+ </para>
+
+ <para>
+ That's a pretty complicated example, and most people's actual
+ environments will have only one spam filter. The simpler your
+ configuration, the more effective mutt can be, especially when it comes
+ to sorting.
+ </para>
+
+ <para>
+ Generally, when you sort by spam tag, mutt will sort <emphasis>
+ lexically
+ </emphasis>
+ --
+ that is, by ordering strings alphnumerically. However, if a spam tag
+ begins with a number, mutt will sort numerically first, and lexically
+ only when two numbers are equal in value. (This is like UNIX's
+ <literal>sort -n</literal>.) A message with no spam attributes at all
+ -- that is, one
+ that didn't match <emphasis>any</emphasis> of your <literal>spam</literal> patterns -- is sorted at
+ lowest priority. Numbers are sorted next, beginning with 0 and ranging
+ upward. Finally, non-numeric strings are sorted, with ``a'' taking
+ lowerpriority than ``z''. Clearly, in general, sorting by spam tags is
+ most
+ effective when you can coerce your filter to give you a raw number. But
+ in case you can't, mutt can still do something useful.
+ </para>
+
+ <para>
+ The <literal>nospam</literal> command can be used to write exceptions
+ to <literal>spam</literal>
+ patterns. If a header pattern matches something in a <literal>spam</literal> command,
+ but you nonetheless do not want it to receive a spam tag, you can list
+ amore precise pattern under a <literal>nospam</literal> command.
+ </para>
+
+ <para>
+ If the <emphasis>pattern</emphasis> given to <literal>nospam</literal>
+ is exactly the same as the
+ <emphasis>pattern</emphasis> on an existing <literal>spam</literal>
+ list entry, the effect will be to
+ remove the entry from the spam list, instead of adding an exception.
+ Likewise, if the <emphasis>pattern</emphasis> for a <literal>spam</literal> command matches an entry
+ on the <literal>nospam</literal> list, that <literal>nospam</literal>
+ entry will be removed. If the
+ <emphasis>pattern</emphasis> for <literal>nospam</literal> is ``*'', <emphasis>
+ all entries on both lists
+ </emphasis>
+ will be removed. This might be the default action if you use <literal>
+ spam
+ </literal>
+ and <literal>nospam</literal> in conjunction with a <literal>
+ folder-hook
+ </literal>
+ .
+ </para>
+
+ <para>
+ You can have as many <literal>spam</literal> or <literal>nospam</literal> commands as you like.
+ You can even do your own primitive spam detection within mutt -- for
+ example, if you consider all mail from <literal>MAILER-DAEMON</literal>
+ to be spam,
+ you can use a <literal>spam</literal> command like this:
+ </para>
+
+ <para>
+
+ <screen>
+spam "^From: .*MAILER-DAEMON" "999"</screen>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="set">
+ <title>Setting variables </title>
+
+ <para>
+ Usage: <literal>set</literal> [no|inv]<emphasis>
+ variable
+ </emphasis>
+ [=<emphasis>value</emphasis>] [ <emphasis>variable</emphasis> ... ]
+
+ Usage: <literal>toggle</literal> <emphasis>variable</emphasis> [<emphasis>
+ variable
+ </emphasis>
+ ... ]
+
+ Usage: <literal>unset</literal> <emphasis>variable</emphasis> [<emphasis>
+ variable
+ </emphasis>
+ ... ]
+
+ Usage: <literal>reset</literal> <emphasis>variable</emphasis> [<emphasis>
+ variable
+ </emphasis>
+ ... ]
+ </para>
+
+ <para>
+ This command is used to set (and unset) <link linkend="variables">
+ variables
+ </link>
+ .There are four basic types of variables:
+ boolean, number, string and quadoption. <emphasis>boolean</emphasis>
+ variables can be
+ <emphasis>set</emphasis> (true) or <emphasis>unset</emphasis> (false).
+ <emphasis>number</emphasis> variables can be
+ assigned a positive integer value.
+ </para>
+
+ <para>
+ <emphasis>string</emphasis> variables consist of any number of
+ printable characters.
+ <emphasis>strings</emphasis> must be enclosed in quotes if they contain
+ spaces or tabs. You
+ may also use the ``C'' escape sequences <emphasis role="bold">\n</emphasis> and <emphasis role="bold">
+ \t
+ </emphasis>
+ for
+ newline and tab, respectively.
+ </para>
+
+ <para>
+ <emphasis>quadoption</emphasis> variables are used to control whether
+ or not to be prompted
+ for certain actions, or to specify a default action. A value of <emphasis>
+ yes
+ </emphasis>
+ will cause the action to be carried out automatically as if you had
+ answered
+ yes to the question. Similarly, a value of <emphasis>no</emphasis>
+ will cause the the
+ action to be carried out as if you had answered ``no.'' A value of
+ <emphasis>ask-yes</emphasis> will cause a prompt with a default answer
+ of ``yes'' and
+ <emphasis>ask-no</emphasis> will provide a default answer of ``no.''
+ </para>
+
+ <para>
+ Prefixing a variable with ``no'' will unset it. Example: <literal>set
+ noaskbcc
+ </literal>
+ .
+ </para>
+
+ <para>
+ For <emphasis>boolean</emphasis> variables, you may optionally prefix
+ the variable name with
+ <literal>inv</literal> to toggle the value (on or off). This is useful
+ when writing
+ macros. Example: <literal>set invsmart_wrap</literal>.
+ </para>
+
+ <para>
+ The <literal>toggle</literal> command automatically prepends the <literal>
+ inv
+ </literal>
+ prefix to all
+ specified variables.
+ </para>
+
+ <para>
+ The <literal>unset</literal> command automatically prepends the <literal>
+ no
+ </literal>
+ prefix to all
+ specified variables.
+ </para>
+
+ <para>
+ Using the enter-command function in the <emphasis>index</emphasis>
+ menu, you can query the
+ value of a variable by prefixing the name of the variable with a
+ question
+ mark:
+ </para>
+
+ <para>
+
+ <screen>
+set ?allow_8bit</screen>
+
+ </para>
+
+ <para>
+ The question mark is actually only required for boolean and quadoption
+ variables.
+ </para>
+
+ <para>
+ The <literal>reset</literal> command resets all given variables to the
+ compile time
+ defaults (hopefully mentioned in this manual). If you use the command
+ <literal>set</literal> and prefix the variable with ``&'' this has
+ the same
+ behavior as the reset command.
+ </para>
+
+ <para>
+ With the <literal>reset</literal> command there exists the special
+ variable ``all'',
+ which allows you to reset all variables to their system defaults.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="source">
+ <title>Reading initialization commands from another file </title>
+
+ <para>
+ Usage: <literal>source</literal> <emphasis>filename</emphasis> [ <emphasis>
+ filename
+ </emphasis>
+ ... ]
+ </para>
+
+ <para>
+ This command allows the inclusion of initialization commands
+ from other files. For example, I place all of my aliases in
+ <literal>˜/.mail_aliases</literal> so that I can make my
+ <literal>˜/.muttrc</literal> readable and keep my aliases
+ private.
+ </para>
+
+ <para>
+ If the filename begins with a tilde (``˜''), it will be expanded
+ to the
+ path of your home directory.
+ </para>
+
+ <para>
+ If the filename ends with a vertical bar (|), then <emphasis>
+ filename
+ </emphasis>
+ is
+ considered to be an executable program from which to read input (eg.
+ <literal>source ˜/bin/myscript|</literal>).
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="unhook">
+ <title>Removing hooks </title>
+
+ <para>
+ Usage: <literal>unhook</literal> [ * | <emphasis>hook-type</emphasis> ]
+ </para>
+
+ <para>
+ This command permits you to flush hooks you have previously defined.
+ You can either remove all hooks by giving the ``*'' character as an
+ argument, or you can remove all hooks of a specific type by saying
+ something like <literal>unhook send-hook</literal>.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="sect:sharingsetups">
+ <title>Sharing Setups </title>
+
+ <sect2>
+ <title>Character Sets </title>
+
+ <para>
+ As users may run mutt-ng on different systems, the configuration
+ must be maintained because it's likely that people want to use the
+ setup everywhere they use mutt-ng. And mutt-ng tries to help where it
+ can.
+ </para>
+
+ <para>
+ To not produce conflicts with different character sets, mutt-ng
+ allows users to specify in which character set their configuration
+ files are encoded. Please note that while reading the configuration
+ files, this is only respected after the corresponding declaration
+ appears. It's advised to put the following at the very beginning of a
+ users muttngrc:
+ </para>
+
+ <para>
+
+ <screen>
+set config_charset = "..."</screen>
+
+ </para>
+
+ <para>
+ and replacing the dots with the actual character set. To avoid
+ problems while maintaining the setup, vim user's may want to use
+ modelines as show in:
+ </para>
+
+ <para>
+
+ <screen>
+# vim:fileencoding=...:</screen>
+
+ </para>
+
+ <para>
+ while, again, replacing the dots with the appropriate name. This
+ tells vim as which character set to read and save the file.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Modularization </title>
+
+ <para>
+ ``Modularization'' means to divide the setup into several files
+ while sorting the options or commands by topic. Especially for
+ longer setups (e.g. with many hooks), this helps maintaining it
+ and solving trouble.
+ </para>
+
+ <para>
+ When using separation, setups may be, as a whole or in
+ fractions, shared over different systems.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Conditional parts </title>
+
+ <para>
+ When using a configuration on different systems, the user may not
+ always have influence on how mutt-ng is installed and which features
+ it includes.
+ </para>
+
+ <para>
+ To solve this, mutt-ng contain a feature based on the ``ifdef''
+ patch written for mutt. Its basic syntax is:
+ </para>
+
+ <para>
+
+ <screen>
+ifdef <item> <command>
+ifndef <item> <command></screen>
+
+ </para>
+
+ <para>
+ ...whereby <literal><item></literal> can be one of:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ a function name
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ a variable name
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ a menu name
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ a feature name
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ All available functions, variables and menus are documented
+ elsewhere in this manual but ``features'' is specific to these
+ two commands. To test for one, prefix one of the following
+ keywords with <literal>feature_</literal>: ncurses,
+ slang, iconv, idn, dotlock, standalone, pop, nntp, imap, ssl,
+ gnutls, sasl, sasl2, libesmtp, compressed, color, classic_pgp,
+ classic_smime, gpgme, header_cache
+ </para>
+
+ <para>
+ As an example, one can use the following in
+ <literal>˜/.muttngrc</literal>:
+ </para>
+
+ <para>
+
+ <screen>
+ifdef feature_imap 'source ~/.mutt-ng/setup-imap'
+ifdef feature_pop 'source ~/.mutt-ng/setup-pop'
+ifdef feature_nntp 'source ~/.mutt-ng/setup-nntp'</screen>
+
+ </para>
+
+ <para>
+ ...to only source <literal>˜/.mutt-ng/setup-imap</literal> if
+ IMAP
+ support is built in, only source <literal>˜/.mutt-ng/setup-pop</literal>
+ if POP support is built in and only source
+ <literal>˜/.mutt-ng/setup-nntp</literal> if NNTP support is
+ built in.
+ </para>
+
+ <para>
+ An example for testing for variable names can be used if users
+ use different revisions of mutt-ng whereby the older one may not
+ have a certain variable. To test for the availability of <link linkend="imap-mail-check">
+ imap-mail-check
+ </link>
+ ,
+ use:
+ </para>
+
+ <para>
+
+ <screen>
+ifdef imap_mail_check 'set imap_mail_check = 300'</screen>
+
+ </para>
+
+ <para>
+ Provided for completeness is the test for menu names. To set <link linkend="pager-index-lines">
+ pager-index-lines
+ </link>
+ only if the pager
+ menu is available, use:
+ </para>
+
+ <para>
+
+ <screen>
+ifdef pager 'set pager_index_lines = 10'</screen>
+
+ </para>
+
+ <para>
+ For completeness, too, the opposite of <literal>ifdef</literal> is
+ provided:
+ <literal>ifndef</literal> which only executes the command if the test
+ fails. For
+ example, the following two examples are equivalent:
+ </para>
+
+ <para>
+
+ <screen>
+ifdef feature_ncurses 'source ~/.mutt-ng/setup-ncurses'
+ifndef feature_ncurses 'source ~/.mutt-ng/setup-slang'</screen>
+
+ </para>
+
+ <para>
+ ...and...
+ </para>
+
+ <para>
+
+ <screen>
+ifdef feature_slang 'source ~/.mutt-ng/setup-slang'
+ifndef feature_slang 'source ~/.mutt-ng/setup-ncurses'</screen>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1>
+ <title>Obsolete Variables </title>
+
+ <para>
+ In the process of ensuring and creating more consistency, many
+ variables have been renamed and some of the old names were already
+ removed. Please see <link linkend="sect-obsolete">sect-obsolete</link>
+ for a complete list.
+ </para>
+
+ <para>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ </chapter>
+
+ <chapter>
+ <title>Advanced Usage </title>
+
+ <sect1 id="regexp">
+ <title>Regular Expressions </title>
+
+ <para>
+ All string patterns in Mutt-ng including those in more complex
+ <link linkend="patterns">patterns</link> must be specified
+ using regular expressions (regexp) in the ``POSIX extended'' syntax
+ (which
+ is more or less the syntax used by egrep and GNU awk). For your
+ convenience, we have included below a brief description of this syntax.
+ </para>
+
+ <para>
+ The search is case sensitive if the pattern contains at least one upper
+ case letter, and case insensitive otherwise. Note that ``\''
+ must be quoted if used for a regular expression in an initialization
+ command: ``\\''.
+ </para>
+
+ <para>
+ A regular expression is a pattern that describes a set of strings.
+ Regular expressions are constructed analogously to arithmetic
+ expressions, by using various operators to combine smaller expressions.
+ </para>
+
+ <para>
+ Note that the regular expression can be enclosed/delimited by either
+ "
+ or ' which is useful if the regular expression includes a white-space
+ character. See <link linkend="muttrc-syntax">muttrc-syntax</link>
+ for more information on " and ' delimiter processing. To match a
+ literal " or ' you must preface it with \ (backslash).
+ </para>
+
+ <para>
+ The fundamental building blocks are the regular expressions that match
+ a single character. Most characters, including all letters and digits,
+ are regular expressions that match themselves. Any metacharacter with
+ special meaning may be quoted by preceding it with a backslash.
+ </para>
+
+ <para>
+ The period ``.'' matches any single character. The caret ``ˆ''
+ andthe dollar sign ``$'' are metacharacters that respectively
+ match
+ the empty string at the beginning and end of a line.
+ </para>
+
+ <para>
+ A list of characters enclosed by ``['' and ``]'' matches any
+ single character in that list; if the first character of the list
+ is a caret ``ˆ'' then it matches any character <emphasis role="bold">
+ not
+ </emphasis>
+ in the
+ list. For example, the regular expression <emphasis role="bold">
+ [0123456789]
+ </emphasis>
+ matches any single digit. A range of ASCII characters may be specified
+ by giving the first and last characters, separated by a hyphen
+ ``-''. Most metacharacters lose their special meaning inside
+ lists. To include a literal ``]'' place it first in the list.
+ Similarly, to include a literal ``ˆ'' place it anywhere but first.
+ Finally, to include a literal hyphen ``-'' place it last.
+ </para>
+
+ <para>
+ Certain named classes of characters are predefined. Character classes
+ consist of ``[:'', a keyword denoting the class, and ``:]''.
+ The following classes are defined by the POSIX standard:
+ </para>
+
+ <para>
+ <variablelist>
+
+ <varlistentry>
+ <term>[:alnum:]</term>
+ <listitem>
+ <para>
+ Alphanumeric characters.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:alpha:]</term>
+ <listitem>
+ <para>
+ Alphabetic characters.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:blank:]</term>
+ <listitem>
+ <para>
+ Space or tab characters.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:cntrl:]</term>
+ <listitem>
+ <para>
+ Control characters.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:digit:]</term>
+ <listitem>
+ <para>
+ Numeric characters.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:graph:]</term>
+ <listitem>
+ <para>
+ Characters that are both printable and visible. (A space is
+ printable,
+ but not visible, while an ``a'' is both.)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:lower:]</term>
+ <listitem>
+ <para>
+ Lower-case alphabetic characters.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:print:]</term>
+ <listitem>
+ <para>
+ Printable characters (characters that are not control
+ characters.)
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:punct:]</term>
+ <listitem>
+ <para>
+ Punctuation characters (characters that are not letter, digits,
+ control
+ characters, or space characters).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:space:]</term>
+ <listitem>
+ <para>
+ Space characters (such as space, tab and formfeed, to name a
+ few).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:upper:]</term>
+ <listitem>
+ <para>
+ Upper-case alphabetic characters.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>[:xdigit:]</term>
+ <listitem>
+ <para>
+ Characters that are hexadecimal digits.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ A character class is only valid in a regular expression inside the
+ brackets of a character list. Note that the brackets in these
+ class names are part of the symbolic names, and must be included
+ in addition to the brackets delimiting the bracket list. For
+ example, <emphasis role="bold">[[:digit:]]</emphasis> is equivalent to
+ <emphasis role="bold">[0-9]</emphasis>.
+ </para>
+
+ <para>
+ Two additional special sequences can appear in character lists. These
+ apply to non-ASCII character sets, which can have single symbols
+ (calledcollating elements) that are represented with more than one
+ character,
+ as well as several characters that are equivalent for collating or
+ sorting purposes:
+ </para>
+
+ <para>
+ <variablelist>
+
+ <varlistentry>
+ <term>Collating Symbols</term>
+ <listitem>
+ <para>
+ A collating symbol is a multi-character collating element
+ enclosed in
+ ``[.'' and ``.]''. For example, if ``ch'' is a
+ collating
+ element, then <emphasis role="bold">
+ [[.ch.]]
+ </emphasis>
+ is a regexp that matches
+ this collating element, while <emphasis role="bold">
+ [ch]
+ </emphasis>
+ is a regexp that
+ matches either ``c'' or ``h''.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Equivalence Classes</term>
+ <listitem>
+ <para>
+ An equivalence class is a locale-specific name for a list of
+ characters that are equivalent. The name is enclosed in
+ ``[=''
+ and ``=]''. For example, the name ``e'' might be used to
+ represent all of ``è'' ``é'' and ``e''. In this
+ case,
+ <emphasis role="bold">[[=e=]]</emphasis> is
+ a regexp that matches any of
+ ``è'', ``é'' and ``e''.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ A regular expression matching a single character may be followed by one
+ of several repetition operators:
+ </para>
+
+ <para>
+ <variablelist>
+
+ <varlistentry>
+ <term>?</term>
+ <listitem>
+ <para>
+ The preceding item is optional and matched at most once.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>*</term>
+ <listitem>
+ <para>
+ The preceding item will be matched zero or more times.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>+</term>
+ <listitem>
+ <para>
+ The preceding item will be matched one or more times.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>{n}</term>
+ <listitem>
+ <para>
+ The preceding item is matched exactly <emphasis>n</emphasis>
+ times.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>{n,}</term>
+ <listitem>
+ <para>
+ The preceding item is matched <emphasis>n</emphasis> or more
+ times.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>{,m}</term>
+ <listitem>
+ <para>
+ The preceding item is matched at most <emphasis>m</emphasis>
+ times.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>{n,m}</term>
+ <listitem>
+ <para>
+ The preceding item is matched at least <emphasis>n</emphasis>
+ times, but no more than
+ <emphasis>m</emphasis> times.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ Two regular expressions may be concatenated; the resulting regular
+ expression matches any string formed by concatenating two substrings
+ that respectively match the concatenated subexpressions.
+ </para>
+
+ <para>
+ Two regular expressions may be joined by the infix operator
+ ``|'';
+ the resulting regular expression matches any string matching either
+ subexpression.
+ </para>
+
+ <para>
+ Repetition takes precedence over concatenation, which in turn takes
+ precedence over alternation. A whole subexpression may be enclosed in
+ parentheses to override these precedence rules.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> If you compile Mutt-ng with the
+ GNU <emphasis>rx</emphasis> package, the
+ following operators may also be used in regular expressions:
+ </para>
+
+ <para>
+ <variablelist>
+
+ <varlistentry>
+ <term>\\y</term>
+ <listitem>
+ <para>
+ Matches the empty string at either the beginning or the end of
+ a word.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>\\B</term>
+ <listitem>
+ <para>
+ Matches the empty string within a word.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>\\<</term>
+ <listitem>
+ <para>
+ Matches the empty string at the beginning of a word.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>\\></term>
+ <listitem>
+ <para>
+ Matches the empty string at the end of a word.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>\\w</term>
+ <listitem>
+ <para>
+ Matches any word-constituent character (letter, digit, or
+ underscore).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>\\W</term>
+ <listitem>
+ <para>
+ Matches any character that is not word-constituent.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>\\`</term>
+ <listitem>
+ <para>
+ Matches the empty string at the beginning of a buffer (string).
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>\\'</term>
+ <listitem>
+ <para>
+ Matches the empty string at the end of a buffer.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ Please note however that these operators are not defined by POSIX, so
+ they may or may not be available in stock libraries on various systems.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1>
+ <title>Patterns </title>
+
+ <para>
+ Mutt-ng's pattern language provides a simple yet effective way to
+ set up rules to match messages, e.g. for operations like tagging and
+ scoring. A pattern consists of one or more sub-pattern, which can be
+ logically grouped, ORed, and negated. For a complete listing of
+ these patterns, please refer to table <link linkend="patterns">patterns</link> in the Reference chapter.
+ </para>
+
+ <para>
+ It must be noted that in this table, <literal>EXPR</literal> is
+ a regular expression. For ranges, the forms
+ <literal><[MAX]</literal>, <literal>>>[MIN]</literal>,
+ <literal> [MIN]- </literal> and <literal>-[MAX]</literal> are
+ also possible.
+ </para>
+
+ <sect2>
+ <title>Complex Patterns </title>
+
+ <para>
+ It is possible to combine several sub-patterns to a more complex
+ pattern. The most simple possibility is to logically AND several
+ patterns by stringing them together:
+ </para>
+
+ <para>
+
+ <screen>
+~s 'SPAM' ~U</screen>
+
+ </para>
+
+ <para>
+ The pattern above matches all messages that contain ``SPAM'' in
+ the subject and are unread.
+ </para>
+
+ <para>
+ To logical OR patterns, simply use the <literal>|</literal>
+ operator. This one
+ especially useful when using local groups:
+ </para>
+
+ <para>
+
+ <screen>
+~f ("nion@muttng\.org"|"ak@muttng\.org"|"pdmef@muttng\.org")
+(~b mutt-ng|~s Mutt-ng)
+!~x '@synflood\.at'</screen>
+
+ </para>
+
+ <para>
+ The first pattern matches all messages that were sent by one of
+ the mutt-ng maintainers, while the seconds pattern matches all
+ messages that contain ``mutt-ng'' in the message body or ``Mutt-ng''
+ in the subject. The third pattern matches all messages that do not
+ contain ``@synflood\.at'' in the <literal>References:</literal>
+ header, i.e.
+ messages that are not an (indirect) reply to one of my messages. A
+ pattern can be logicall negated using the <literal>!</literal>
+ operator.
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Patterns and Dates </title>
+
+ <para>
+ When using dates in patterns, the dates must be specified in a
+ special format, i.e. <literal>DD/MM/YYYY</literal>. If you don't
+ specify
+ month or year, they default to the current month or year. When using
+ date ranges, and you specify only the minimum or the maximum, the
+ specified date will be excluded, e.g. <literal>01/06/2005-</literal>
+ matches
+ against all messages <emphasis>after</emphasis> Juni 1st, 2005.
+ </para>
+
+ <para>
+ It is also possible to use so-called ``error margins'' when
+ specifying date ranges. You simply specify a date, and then the
+ error margin. This margin needs to contain the information whether
+ it goes ``forth'' or ``back'' in time, by using <literal>+</literal>
+ and <literal>-</literal>.
+ Then follows a number and a unit, i.e. <literal>y</literal> for
+ years, <literal>m</literal> for
+ months, <literal>w</literal> for weeks and <literal>d</literal> for
+ days. If you use the special
+ <literal>*</literal> sign, it means that the error margin goes to
+ both``directions'' in time.
+ </para>
+
+ <para>
+
+ <screen>
+~d 01/01/2005+1y
+~d 18/10/2004-2w
+~d 28/12/2004*1d</screen>
+
+ </para>
+
+ <para>
+ The first pattern matches all dates between January 1st, 2005 and
+ January 1st 2006. The second pattern matches all dates between
+ October 18th, 2004 and October 4th 2004 (2 weeks before 18/10/2004),
+ while the third pattern matches all dates 1 day around December
+ 28th, 2004 (i.e. Dec 27th, 28th and 29th).
+ </para>
+
+ <para>
+ Relative dates are also very important, as they make it possible
+ to specify date ranges between a fixed number of units and the
+ current date. How this works can be seen in the following example:
+ </para>
+
+ <para>
+
+ <screen>
+~d >2w # messages older than two weeks
+~d <3d # messages newer than 3 days
+~d =1m # messages that are exactly one month old</screen>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1>
+ <title>Format Strings </title>
+
+ <sect2>
+ <title>Introduction </title>
+
+ <para>
+ The so called <emphasis>Format Strings</emphasis> offer great
+ flexibility when
+ configuring mutt-ng. In short, they describe what items to print
+ out how in menus and status messages.
+ </para>
+
+ <para>
+ Basically, they work as this: for different menus and bars,
+ there's a variable specifying the layout. For every item
+ available, there is a so called <emphasis>expando</emphasis>.
+ </para>
+
+ <para>
+ For example, when running mutt-ng on different machines or
+ different versions for testing purposes, it may be interesting to
+ have the following information always printed on screen when one
+ is in the index:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ the current hostname
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ the current mutt-ng version number
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ The setting for the status bar of the index is controlled via the
+ <link linkend="status-format">status-format</link>
+ variable. For the hostname and version string, there's an expando
+ for <literal>$status_format</literal>: <literal>
+ %h
+ </literal>
+ expands to the
+ hostname and <literal>%v</literal> to the version string. When
+ just configuring:
+ </para>
+
+ <para>
+
+ <screen>
+set status_format = "%v on %h: ..."</screen>
+
+ </para>
+
+ <para>
+ mutt-ng will replace the sequence <literal>%v</literal> with
+ the version string
+ and <literal>%h</literal> with the host's name. When you are,
+ for example, running
+ mutt-ng version <literal>1.5.9i</literal> on host <literal>mailhost</literal>, you'll see the
+ following when you're in the index:
+ </para>
+
+ <para>
+
+ <screen>
+Mutt-ng 1.5.9i on mailhost: ...</screen>
+
+ </para>
+
+ <para>
+ In the index, there're more useful information one could want to
+ see:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ which mailbox is open
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ how man new, flagged or postponed messages
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ ...
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ To include the mailbox' name is as easy as:
+ </para>
+
+ <para>
+
+ <screen>
+set status_format = "%v on %h: %B: ...</screen>
+
+ </para>
+
+ <para>
+ When the currently opened mailbox is <literal>Inbox</literal>, this
+ will be expanded
+ to:
+ </para>
+
+ <para>
+
+ <screen>
+Mutt-ng 1.5.9i on mailhost: Inbox: ...</screen>
+
+ </para>
+
+ <para>
+ For the number of certain types of messages, one more feature of the
+ format
+ strings is extremely useful. If there aren't messages of a certain
+ type, it
+ may not be desired to print just that there aren't any but instead
+ only
+ print something if there are any.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Conditional Expansion </title>
+
+ <para>
+ To only print the number of messages if there are new messages in
+ the current mailbox, further extend
+ <literal>$status_format</literal> to:
+ </para>
+
+ <para>
+
+ <screen>
+set status_format = "%v on %h: %B %?n?%n new? ...</screen>
+
+ </para>
+
+ <para>
+ This feature is called <emphasis>nonzero-printing</emphasis> and
+ works as this:
+ some expandos may be optionally printed nonzero, i.e. a portion
+ of the format string is only evaluated if the value of the expando
+ is different from zero. The basic syntax is:
+ </para>
+
+ <para>
+
+ <screen>
+%?<item>?<string if nonzero>?</screen>
+
+ </para>
+
+ <para>
+ which tells mutt-ng to only look at <literal><string if
+ nonzero>
+ </literal>
+ if the value of the <literal>%<item%gt;</literal>
+ expando is different from zero. In our example, we used <literal>n</literal> as
+ the expando to check for and <literal>%n new</literal> as the
+ optional nonzero
+ string.
+ </para>
+
+ <para>
+ But this is not all: this feature only offers one alternative:
+ ``print something if not zero.'' Mutt-ng does, as you might guess,
+ also provide a logically complete version: ``if zero, print
+ something and else print something else.'' This is achieved by the
+ following syntax for those expandos which may be printed nonzero:
+ </para>
+
+ <para>
+
+ <screen>
+%?<item>?<string if nonzero>&<string if zero>?</screen>
+
+ </para>
+
+ <para>
+ Using this we can make mutt-ng to do the following:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ make it print ``<emphasis>n</emphasis> new messages'' whereby <emphasis>
+ n
+ </emphasis>
+ is the
+ count but only if there new ones
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ and make it print ``no new messages'' if there aren't any
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ The corresponding configuration is:
+ </para>
+
+ <para>
+
+ <screen>
+set status_format = "%v on %h: %B: %?n?%n new messages&no new messages? ...</screen>
+
+ </para>
+
+ <para>
+ This doubles the use of the ``new messages'' string because it'll get
+ always printed. Thus, it can be shortened to:
+ </para>
+
+ <para>
+
+ <screen>
+set status_format = "%v on %h: %B: %?n?%n&no? new messages ...</screen>
+
+ </para>
+
+ <para>
+ As you might see from this rather simple example, one can create
+ very complex but fancy status messages. Please see the reference
+ chapter for expandos and those which may be printed nonzero.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ <sect2>
+ <title>Modifications and Padding </title>
+
+ <para>
+ Besides the information given so far, there're even more features of
+ format strings:
+ </para>
+
+ <para>
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ When specifying <literal>%_<item></literal>
+ instead of
+ just <literal>%<item></literal>, mutt-ng will
+ convert all
+ characters in the expansion of <literal><item></literal>
+ to
+ lowercase.
+
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ When specifying <literal>%:<item></literal>
+ instead of just
+ <literal>%<item></literal>, mutt-ng will convert
+ all dots in the
+ expansion of <literal><item></literal> to underscores
+ (<literal>_</literal>).
+
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ </para>
+
+ <para>
+ Also, there's a feature called <emphasis>Padding</emphasis> supplied
+ by the
+ following two expandos: <literal>%|X</literal> and <literal>
+ %>X
+ </literal>
+ .
+ </para>
+
+ <para>
+ <variablelist>
+
+ <varlistentry>
+ <term>
+ <literal>%|X</literal>
+ </term>
+ <listitem>
+ <para>
+ When this occurs, mutt-ng will fill the
+ rest of the line with the character <literal>X</literal>. In
+ our example,
+ filling the rest of the line with dashes is done by setting:
+ </para>
+
+ <para>
+
+ <screen>
+set status_format = "%v on %h: %B: %?n?%n&no? new messages %|-"</screen>
+
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <literal>%>X</literal>
+ </term>
+ <listitem>
+ <para>
+ Since the previous expando stops at
+ the end of line, there must be a way to fill the gap between
+ two items via the <literal>%>X</literal> expando:
+ it puts as many
+ characters <literal>X</literal> in between two items so that
+ the rest of
+ the line will be right-justified. For example, to not put the
+ version string and hostname of our example on the left but on
+ the right and fill the gap with spaces, one might use (note
+ the space after <literal>%></literal>):
+ </para>
+
+ <para>
+
+ <screen>
+set status_format = "%B: %?n?%n&no? new messages %> (%v on %h)"</screen>
+
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect2>
+
+ </sect1>
+
+ <sect1>
+ <title>Using Tags </title>
+
+ <para>
+ Sometimes it is desirable to perform an operation on a group of
+ messages all at once rather than one at a time. An example might be
+ to save messages to a mailing list to a separate folder, or to
+ delete all messages with a given subject. To tag all messages
+ matching a pattern, use the tag-pattern function, which is bound to
+ ``shift-T'' by default. Or you can select individual messages by
+ hand using the ``tag-message'' function, which is bound to ``t'' by
+ default. See <link linkend="patterns">patterns</link> for Mutt-ng's
+ pattern
+ matching syntax.
+ </para>
+
+ <para>
+ Once you have tagged the desired messages, you can use the
+ ``tag-prefix'' operator, which is the ``;'' (semicolon) key by default.
+ When the ``tag-prefix'' operator is used, the <emphasis role="bold">
+ next
+ </emphasis>
+ operation will
+ be applied to all tagged messages if that operation can be used in that
+ manner. If the <link linkend="auto-tag">auto-tag</link>
+ variable is set, the next operation applies to the tagged messages
+ automatically, without requiring the ``tag-prefix''.
+ </para>
+
+ <para>
+ In <link linkend="macro">macro</link> or <link linkend="push">push</link> commands,
+ you can use the ``tag-prefix-cond'' operator. If there are no tagged
+ messages, mutt will "eat" the rest of the macro to abort it's
+ execution.Mutt-ng will stop "eating" the macro when it encounters the
+ ``end-cond''
+ operator; after this operator the rest of the macro will be executed
+ asnormal.
+ </para>
+
+ <para>
+
+ </para>
+
+ </sect1>
+
+ <sect1 id="hooks">
+ <title>Using Hooks </title>
+
+ <para>
+ A <emphasis>hook</emphasis> is a concept borrowed from the EMACS editor
+ which allows you to
+ execute arbitrary commands before performing some operation. For
+ example,
+ you may wish to tailor your configuration based upon which mailbox you
+ are
+ reading, or to whom you are sending mail. In the Mutt-ng world, a <emphasis>
+ hook
+ </emphasis>
+ consists of a <link linkend="regexp">regexp</link> or
+ <link linkend="patterns">patterns</link> along with a
+ configuration option/command. See
+
+ <itemizedlist>
+ <listitem>
+
+ <para>
+ <link linkend="folder-hook">folder-hook</link>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <link linkend="send-hook">send-hook</link>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <link linkend="message-hook">message-hook</link>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <link linkend="save-hook">save-hook</link>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <link linkend="mbox-hook">mbox-hook</link>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <link linkend="fcc-hook">fcc-hook</link>
+ </para>
+ </listitem>
+ <listitem>
+
+ <para>
+ <link linkend="fcc-save-hook">fcc-save-hook</link>
+ </para>
+ </listitem>
+
+ </itemizedlist>
+
+ for specific details on each type of <emphasis>hook</emphasis>
+ available.
+ </para>
+
+ <para>
+ <emphasis role="bold">Note:</emphasis> if a hook changes configuration
+ settings, these changes remain
+ effective until the end of the current mutt session. As this is
+ generally
+ not desired, a default hook needs to be added before all other hooks to
+ restore configuration defaults. Here is an example with send-hook and
+ the
+ my_hdr directive:
+ </para>
+
+ <para>
+
+ <screen>