9.1 Editing the Message

Because the header is part of the message, you can edit the header fields as you wish. However, several convenience commands exist to help you create and edit them. For example, the command C-c C-f C-t (mh-to-field; alternatively, C-c C-f t) moves the cursor to the ‘To:’ header field, creating it if necessary. The commands for moving to the ‘Cc:’, ‘Subject:’, ‘From:’, ‘Reply-To:’, ‘Mail-Reply-To:’, ‘Mail-Followup-To’, ‘Bcc:’, and ‘Dcc:’ header fields are similar.

One command behaves differently from the others, namely, C-c C-f C-f (mh-to-fcc; alternatively, C-c C-f f). This command will prompt you for the folder name in which to file a copy of the draft. See Folder Selection.

Within the header of the message, the command
TAB (mh-letter-next-header-field-or-indent) moves between fields that are highlighted with the face mh-letter-header-field, skipping those fields listed in mh-compose-skipped-header-fields. After the last field, this command then moves point to the message body before cycling back to the first field. If point is already past the first line of the message body, then this command indents by calling indent-relative with the given prefix argument. The command S-TAB (mh-letter-previous-header-field) moves backwards between the fields and cycles to the body of the message after the first field. Unlike the command TAB, it will always take point to the last field from anywhere in the body.

If the field contains addresses (for example, ‘To:’ or ‘Cc:’) or folders (for example, ‘Fcc:’) then the command M-TAB (mh-letter-complete) will provide alias completion (see Aliases). In the body of the message, M-TAB runs mh-letter-complete-function instead, which is set to ‘'ispell-complete-word’ by default. The command M-TAB (mh-letter-complete) takes a prefix argument that is passed to the mh-letter-complete-function. In addition, turn on the option mh-compose-space-does-completion-flag to use the command SPC (mh-letter-complete-or-space) to perform completion in the header as well; use a prefix argument to specify more than one space. Addresses are separated by a comma; when you press the comma, the command mh-letter-confirm-address flashes the alias expansion in the minibuffer if mh-alias-flash-on-comma is turned on.

Use the command C-c C-t mh-letter-toggle-header-field-display to display truncated header fields. This command is a toggle so entering it again will hide the field. This command takes a prefix argument: if negative then the field is hidden, if positive then the field is displayed (for example, C-u C-c C-t).

Be sure to leave a row of dashes or a blank line between the header and the body of the message.

The body of the message is edited as you would edit any Emacs buffer although there are a few commands and options to assist you. You can change the fill column in MH-Letter mode with the option mh-letter-fill-column. By default, this option is 72 to allow others to quote your message without line wrapping.

You’ll often include messages that were sent from user agents that haven’t yet realized that paragraphs consist of more than a single line. This makes for long lines that wrap in an ugly fashion. You’ll find that M-q (fill-paragraph) works well even on these quoted messages, even if they are nested, just as long as all of the quotes match the value of mh-ins-buf-prefix (see Inserting Letter to Which You’re Replying). For example, let’s assume you have the following in your draft:

> Hopefully this gives you an idea of what I'm currently doing. I'm \
not sure yet whether I'm completely satisfied with my setup, but    \
it's worked okay for me so far.

Running M-q on this paragraph produces:

> Hopefully this gives you an idea of what I'm currently doing. I'm not
> sure yet whether I'm completely satisfied with my setup, but it's
> worked okay for me so far.

The command C-c C-o (mh-open-line) is similar to the command C-o (open-line) in that it inserts a newline after point. It differs in that it also inserts the right number of quoting characters and spaces so that the next line begins in the same column as it was. This is useful when breaking up paragraphs in replies. For example, if this command was used when point was after the first period in the paragraph above, the result would be this:

> Hopefully this gives you an idea of what I'm currently doing.

>                                                               I'm not
> sure yet whether I'm completely satisfied with my setup, but it's
> worked okay for me so far.