home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-06-08 | 48.0 KB | 1,156 lines |
- Info file ../info/emacs, produced by Makeinfo, -*- Text -*- from input
- file lemacs.tex.
-
- This file documents the GNU Emacs editor.
-
- Copyright (C) 1985, 1986, 1988 Richard M. Stallman. Copyright (C)
- 1991, 1992 Lucid, Inc.
-
- Permission is granted to make and distribute verbatim copies of
- this manual provided the copyright notice and this permission notice
- are preserved on all copies.
-
- Permission is granted to copy and distribute modified versions of
- this manual under the conditions for verbatim copying, provided also
- that the sections entitled "The GNU Manifesto", "Distribution" and "GNU
- General Public License" are included exactly as in the original, and
- provided that the entire resulting derived work is distributed under
- the terms of a permission notice identical to this one.
-
- Permission is granted to copy and distribute translations of this
- manual into another language, under the above conditions for modified
- versions, except that the sections entitled "The GNU Manifesto",
- "Distribution" and "GNU General Public License" may be included in a
- translation approved by the author instead of in the original English.
-
- File: emacs, Node: Mail Headers, Next: Mail Mode, Prev: Mail Format, Up: Sending Mail
-
- Mail Header Fields
- ==================
-
- There are several header fields you can use in the `*mail*' buffer.
- Each header field starts with a field name at the beginning of a line,
- terminated by a colon. It does not matter whether you use upper or
- lower case in the field name. After the colon and optional whitespace
- comes the contents of the field.
-
- `To'
- This field contains the mailing addresses of the message.
-
- `Subject'
- The contents of the `Subject' field should be a piece of text that
- says what the message is about. Subject fields are useful
- because most mail-reading programs can provide a summary of
- messages, listing the subject of each message but not its text.
-
- `CC'
- This field contains additional mailing addresses to send the
- message to, but whose readers should not regard the message as
- addressed to them.
-
- `BCC'
- This field contains additional mailing addresses to send the
- message to, but which should not appear in the header of the
- message actually sent.
-
- `FCC'
- This field contains the name of one file (in Unix mail file
- format) to which a copy of the message should be appended when
- the message is sent.
-
- `From'
- Use the `From' field to say who you are, when the account you are
- using to send the mail is not your own. The contents of the
- `From' field should be a valid mailing address, since replies
- will normally go there.
-
- `Reply-To'
- Use the `Reply-to' field to direct replies to a different
- address, not your own. `From' and `Reply-to' have the same effect
- on where replies go, but they convey a different meaning to the
- person who reads the message.
-
- `In-Reply-To'
- This field contains a piece of text describing a message you are
- replying to. Some mail systems can use the information to
- correlate related pieces of mail. Normally this field is filled
- in by Rmail when you are replying to a message in Rmail, and you
- never need to think about it (*note Rmail::.).
-
- The `To', `CC', `BCC' and `FCC' fields can appear any number of times,
- to specify many places to send the message.
-
- The `To', `CC', and `BCC' fields can have continuation lines. All the
- lines starting with whitespace, following the line on which the field
- starts, are considered part of the field. For example,
-
- To: foo@here, this@there,
- me@gnu.cambridge.mass.usa.earth.spiral3281
-
- If you have a `~/.mailrc' file, Emacs scans it for mail aliases the
- first time you try to send mail in an Emacs session. Emacs expands
- aliases found in the `To', `CC', and `BCC' fields where appropriate.
- You can set the variable `mail-abbrev-mailrc-file' to the name of the
- file with mail aliases. If `nil', `~/.mailrc' is used.
-
- Your `.mailrc' file ensures that word-abbrevs are defined for each
- of your mail aliases when point is in a `To', `CC', `BCC', or `From'
- field. The aliases are defined in your `.mailrc' file or in a file
- specified by the `MAILRC' environment variable if it exists. Your
- mail aliases expand any time you type a word-delimiter at the end of
- an abbreviation.
-
- In this version of Emacs, what you see is what you get: in contrast
- to some other versions, no abbreviations are expanded after you have
- sent the mail. This means you don't suffer the annoyance of having
- the system do things behind your back -- if the system rewrites an
- address you typed, you know it immediately, instead of after the mail
- has been sent and it's too late to do anything about it. For example,
- you will never again be in trouble because you forgot to delete an old
- alias from your `.mailrc' and a new local user is given a userid which
- conflicts with one of your aliases.
-
- Your mail alias abbrevs are in effect only when point is in an
- appropriate header field. The mail aliases will not expand in the body
- of the message, or in other header fields. The default mode-specific
- abbrev table `mail-mode-abbrev-table' is used instead if defined.
- That means if you have been using mail-mode specific abbrevs, this code
- will not adversely affect you. You can control which header fields the
- abbrevs are used in by changing the variable `mail-abbrev-mode-regexp'.
-
- If auto-fill mode is on, abbrevs wrap at commas instead of at word
- boundaries and header continuation lines will be properly indented.
-
- You can also insert a mail alias with
- `mail-interactive-insert-alias'. This function, which is bound to
- `C-c C-a', prompts you for an alias (with completion) and inserts its
- expansion at point.
-
- In this version of Emacs, it is possible to have lines like the
- following in your `.mailrc' file:
-
- alias someone "John Doe <doe@quux.com>"
-
- That is, if you want an address to have embedded spaces, simply
- surround it with double-quotes. The quotes are necessary because the
- format of the `.mailrc' file uses spaces as address delimiters.
-
- Aliases in the mailrc file may be nested. For example, assume you
- define aliases like:
-
- alias group1 fred ethel
- alias group2 larry curly moe
- alias everybody group1 group2
-
- When you now type `everybody' on the `To' line, it will expand to
-
- fred, ethyl, larry, curly, moe
-
- Aliases may contain forward references; the alias of `everybody' in
- the example above can preceed the aliases of `group1' and `group2'.
-
- In this version of Emacs, you can use the `source' .mailrc command
- for reading aliases from some other file as well.
-
- Aliases may contain hyphens, as in `"alias foo-bar foo@bar"' even
- though word-abbrevs normally cannot contain hyphens.
-
- To read in the contents of another .mailrc-type file from Emacs,
- use the command `M-x merge-mail-aliases'. The `rebuild-mail-aliases'
- command is similar, but deletes existing aliases first.
-
- If you would like your aliases to be expanded when you type `M->' or
- `C-n' to move from the mail-header into the message body, instead of
- having to type SPC at the end of the abbrev before moving away, use
- the following code:
-
- (setq mail-setup-hook
- '(lambda ()
- (define-key mail-mode-map "\C-n"
- 'abbrev-hacking-next-line)
- (define-key mail-mode-map "\M->"
- 'abbrev-hacking-end-of-buffer)))
-
- If you want multiple addresses seperated by a string other than ",
- " then you set the variable `mail-alias-seperator-string' to it. This
- has to be a comma bracketed by whitespace if you want any kind of
- reasonable behavior.
-
- If the variable `mail-archive-file-name' is non-`nil', it should be
- a string naming a file. Each time you start to edit a message to
- send, an `FCC' field is entered for that file. Unless you remove the
- `FCC' field, every message is written into that file when it is sent.
-
- File: emacs, Node: Mail Mode, Prev: Mail Headers, Up: Sending Mail
-
- Mail Mode
- =========
-
- The major mode used in the `*mail*' buffer is Mail mode. Mail mode
- is similar to Text mode, but several commands are provided on the
- `C-c' prefix. These commands all deal specifically with editing or
- sending the message.
-
- `C-c C-s'
- Send the message, and leave the `*mail*' buffer selected
- (`mail-send').
-
- `C-c C-c'
- Send the message, and select some other buffer
- (`mail-send-and-exit').
-
- `C-c C-f C-t'
- Move to the `To' header field, creating one if there is none
- (`mail-to').
-
- `C-c C-f C-s'
- Move to the `Subject' header field, creating one if there is none
- (`mail-subject').
-
- `C-c C-f C-c'
- Move to the `CC' header field, creating one if there is none
- (`mail-cc').
-
- `C-c C-w'
- Insert the file `~/.signature' at the end of the message text
- (`mail-signature').
-
- `C-c C-y'
- Yank the selected message from Rmail (`mail-yank-original').
- This command does nothing unless your command to start sending a
- message was issued with Rmail.
-
- `C-c C-q'
- Fill all paragraphs of yanked old messages, each individually
- (`mail-fill-yanked-message').
-
- `button3'
- Pops up a menu of useful mail-mode commands.
-
- There are two ways to send a message. `C-c C-c'
- (`mail-send-and-exit') is the usual way to send the message. It sends
- the message and then deletes the window (if there is another window)
- or switches to another buffer. It puts the `*mail*' buffer at the
- lowest priority for automatic reselection, since you are finished with
- using it. `C-c C-s' (`mail-send') sends the message and marks the
- `*mail*' buffer unmodified, but leaves that buffer selected so that
- you can modify the message (perhaps with new recipients) and send it
- again.
-
- Mail mode provides some other special commands that are useful for
- editing the headers and text of the message before you send it. There
- are three commands defined to move point to particular header fields,
- all based on the prefix `C-c C-f' (`C-f' is for "field"). They are
- `C-c C-f C-t' (`mail-to') to move to the `To' field, `C-c C-f C-s'
- (`mail-subject') for the `Subject' field, and `C-c C-f C-c'
- (`mail-cc') for the `CC' field. These fields have special motion
- commands because they are edited most frequently.
-
- `C-c C-w' (`mail-signature') adds a standard piece of text at the
- end of the message to say more about who you are. The text comes from
- the file `.signature' in your home directory.
-
- When you use an Rmail command to send mail from the Rmail mail
- reader, you can use `C-c C-y' inside the `*mail*' buffer to insert the
- text of the message you are replying to. Normally Rmail indents each
- line of that message four spaces and eliminates most header fields. A
- numeric argument specifies the number of spaces to indent. An argument
- of just `C-u' says not to indent at all and not to eliminate anything.
- `C-c C-y' always uses the current message from the `RMAIL' buffer, so
- you can insert several old messages by selecting one in `RMAIL',
- switching to `*mail*' and yanking it, then switching back to `RMAIL'
- to select another.
-
- After using `C-c C-y', you can use the command `C-c C-q'
- (`mail-fill-yanked-message') to fill the paragraphs of the yanked old
- message or messages. One use of `C-c C-q' fills all such paragraphs,
- each one separately.
-
- Clicking the right mouse button in a mail buffer pops up a menu of
- the above commands, for easy access.
-
- Turning on Mail mode (which `C-x m' does automatically) calls the
- value of `text-mode-hook', if it is not void or `nil', and then calls
- the value of `mail-mode-hook' if that is not void or `nil'.
-
- File: emacs, Node: Rmail, Next: Recursive Edit, Prev: Sending Mail, Up: Top
-
- Reading Mail with Rmail
- ***********************
-
- Rmail is an Emacs subsystem for reading and disposing of mail that
- you receive. Rmail stores mail messages in files called Rmail files.
- You read the messages in an Rmail file in a special major mode, Rmail
- mode, which redefines most letters to run commands for managing mail.
- To enter Rmail, type `M-x rmail'. This reads your primary mail file,
- merges new mail in from your inboxes, displays the first new message,
- and lets you begin reading.
-
- Using Rmail in the simplest fashion, you have one Rmail file
- `~/RMAIL' in which all of your mail is saved. It is called your
- "primary mail file". You can also copy messages into other Rmail
- files and then edit those files with Rmail.
-
- Rmail displays only one message at a time. It is called the
- "current message". Rmail mode's special commands can move to another
- message, delete the message, copy the message into another file, or
- send a reply.
-
- Within the Rmail file, messages are arranged sequentially in order
- of receipt. They are also assigned consecutive integers as their
- "message numbers". The number of the current message is displayed in
- Rmail's mode line, followed by the total number of messages in the
- file. You can move to a message by specifying its message number
- using the `j' key (*note Rmail Motion::.).
-
- Following the usual conventions of Emacs, changes in an Rmail file
- become permanent only when the file is saved. You can do this with `s'
- (`rmail-save'), which also expunges deleted messages from the file
- first (*note Rmail Deletion::.). To save the file without expunging,
- use `C-x C-s'. Rmail saves the Rmail file automatically when moving
- new mail from an inbox file (*note Rmail Inbox::.).
-
- You can exit Rmail with `q' (`rmail-quit'); this expunges and saves
- the Rmail file and then switches to another buffer. But there is no
- need to `exit' formally. If you switch from Rmail to editing in other
- buffers, and never happen to switch back, you have exited. Just make
- sure to save the Rmail file eventually (like any other file you have
- changed). `C-x s' is a good enough way to do this (*note Saving::.).
-
- * Menu:
-
- * Scroll: Rmail Scrolling. Scrolling through a message.
- * Motion: Rmail Motion. Moving to another message.
- * Deletion: Rmail Deletion. Deleting and expunging messages.
- * Inbox: Rmail Inbox. How mail gets into the Rmail file.
- * Files: Rmail Files. Using multiple Rmail files.
- * Output: Rmail Output. Copying message out to files.
- * Labels: Rmail Labels. Classifying messages by labeling them.
- * Summary: Rmail Summary. Summaries show brief info on many messages.
- * Reply: Rmail Reply. Sending replies to messages you are viewing.
- * Editing: Rmail Editing. Editing message text and headers in Rmail.
- * Digest: Rmail Digest. Extracting the messages from a digest message.
-
- File: emacs, Node: Rmail Scrolling, Next: Rmail Motion, Prev: Rmail, Up: Rmail
-
- Scrolling Within a Message
- ==========================
-
- When Rmail displays a message that does not fit on the screen, you
- have to scroll through it. You could use `C-v', `M-v' and `M-<', but
- scrolling is so frequent in Rmail that it deserves to be easier to
- type.
-
- `SPC'
- Scroll forward (`scroll-up').
-
- `DEL'
- Scroll backward (`scroll-down').
-
- `.'
- Scroll to start of message (`rmail-beginning-of-message').
-
- Since the most common thing to do while reading a message is to
- scroll through it by screenfuls, Rmail makes SPC and DEL synonyms of
- `C-v' (`scroll-up') and `M-v' (`scroll-down')
-
- The command `.' (`rmail-beginning-of-message') scrolls back to the
- beginning of a selected message. This is not quite the same as `M-<':
- first, it does not set the mark; secondly, it resets the buffer
- boundaries to the current message if you have changed them.
-
- File: emacs, Node: Rmail Motion, Next: Rmail Deletion, Prev: Rmail Scrolling, Up: Rmail
-
- Moving Among Messages
- =====================
-
- The most basic thing to do with a message is to read it. The way to
- do this in Rmail is to make the message current. You can make any
- message current given its message number using the `j' command, but
- people most often move sequentially through the file, since this is the
- order of receipt of messages. When you enter Rmail, you are positioned
- at the first new message (new messages are those received after you
- last used Rmail), or at the last message if there are no new messages
- this time. Move forward to see other new messages if there are any;
- move backward to re-examine old messages.
-
- `n'
- Move to the next non-deleted message, skipping any intervening
- deleted
- messages (`rmail-next-undeleted-message').
-
- `p'
- Move to the previous non-deleted message
- (`rmail-previous-undeleted-message').
-
- `M-n'
- Move to the next message, including deleted messages
- (`rmail-next-message').
-
- `M-p'
- Move to the previous message, including deleted messages
- (`rmail-previous-message').
-
- `j'
- Move to the first message. With argument N, move to message
- number N (`rmail-show-message').
-
- `>'
- Move to the last message (`rmail-last-message').
-
- `M-s REGEXP RET'
- Move to the next message containing a match for REGEXP
- (`rmail-search'). If REGEXP is empty, the last regexp used is
- used again.
-
- `- M-s REGEXP RET'
- Move to the previous message containing a match for REGEXP. If
- REGEXP is empty, the last regexp used is used again.
-
- To move among messages in Rmail, you can use `n' and `p'. These
- keys move through the messages sequentially, but skip over deleted
- messages, which is usually what you want to do. Their command
- definitions are named `rmail-next-undeleted-message' and
- `rmail-previous-undeleted-message'. If you do not want to skip
- deleted messages--for example, if you want to move to a message to
- undelete it--use the variants `M-n' (`rmail-next-message' and `M-p'
- `rmail-previous-message'). A numeric argument to any of these
- commands serves as a repeat count.
-
- In Rmail, you can specify a numeric argument by just typing the
- digits. It is not necessary to type `C-u' first.
-
- The `M-s' (`rmail-search') command is Rmail's version of search.
- The usual incremental search command `C-s' works in Rmail, but
- searches only within the current message. The purpose of `M-s' is to
- search for another message. It reads a regular expression (*note
- Regexps::.) non-incrementally, then searches starting at the beginning
- of the following message for a match. The message containing the
- match is selected.
-
- To search backward in the file for another message, give `M-s' a
- negative argument. In Rmail you can do this with `- M-s'.
-
- It is also possible to search for a message based on labels. *Note
- Rmail Labels::.
-
- To move to a message specified by absolute message number, use `j'
- (`rmail-show-message') with the message number as argument. With no
- argument, `j' selects the first message. `>' (`rmail-last-message')
- selects the last message.
-
- File: emacs, Node: Rmail Deletion, Next: Rmail Inbox, Prev: Rmail Motion, Up: Rmail
-
- Deleting Messages
- =================
-
- When you no longer need to keep a message, you can "delete" it.
- This flags it as ignorable, and some Rmail commands will pretend it is
- no longer present; but it still has its place in the Rmail file, and
- still has its message number.
-
- "Expunging" the Rmail file actually removes the deleted messages.
- The remaining messages are renumbered consecutively. Expunging is the
- only action that changes the message number of any message, except for
- undigestifying (*note Rmail Digest::.).
-
- `d'
- Delete the current message, and move to the next non-deleted
- message (`rmail-delete-forward').
-
- `C-d'
- Delete the current message, and move to the previous non-deleted
- message (`rmail-delete-backward').
-
- `u'
- Undelete the current message, or move back to a deleted message
- and undelete it (`rmail-undelete-previous-message').
-
- `x'
- `e'
- Expunge the Rmail file (`rmail-expunge'). These two commands are
- synonyms.
-
- There are two Rmail commands for deleting messages. Both delete the
- current message and select another message. `d'
- (`rmail-delete-forward') moves to the following message, skipping
- messages already deleted, while `C-d' (`rmail-delete-backward') moves
- to the previous non-deleted message. If there is no non-deleted
- message to move to in the specified direction, the message that was
- just deleted remains current.
-
- To make all deleted messages disappear from the Rmail file, type
- `e' (`rmail-expunge'). Until you do this, you can still "undelete"
- the deleted messages.
-
- To undelete, type `u' (`rmail-undelete-previous-message'), which
- cancels the effect of a `d' command (usually). It undeletes the
- current message if the current message is deleted. Otherwise it moves
- backward to previous messages until a deleted message is found, and
- undeletes that message.
-
- You can usually undo a `d' with a `u' because the `u' moves back to
- and undeletes the message that the `d' deleted. This does not work
- when the `d' skips a few already-deleted messages that follow the
- message being deleted; in that case the `u' command undeletes the last
- of the messages that were skipped. There is no clean way to avoid
- this problem. However, by repeating the `u' command, you can
- eventually get back to the message you intended to undelete. You can
- also reach that message with `M-p' commands and then type `u'.
-
- A deleted message has the `deleted' attribute, and as a result
- `deleted' appears in the mode line when the current message is
- deleted. In fact, deleting or undeleting a message is nothing more
- than adding or removing this attribute. *Note Rmail Labels::.
-
- File: emacs, Node: Rmail Inbox, Next: Rmail Files, Prev: Rmail Deletion, Up: Rmail
-
- Rmail Files and Inboxes
- =======================
-
- Unix places your incoming mail in a file called your "inbox". When
- you start up Rmail, it copies the new messages from your inbox into
- your primary mail file, an Rmail file which also contains other
- messages saved from previous Rmail sessions. In this file, you
- actually read the mail with Rmail. The operation is called "getting
- new mail". You can repeat it at any time using the `g' key in Rmail.
- The inbox file name is `/usr/spool/mail/USERNAME' in Berkeley Unix,
- `/usr/mail/USERNAME' in system V.
-
- There are two reason for having separate Rmail files and inboxes.
-
- 1. The format in which Unix delivers the mail in the inbox is not
- adequate for Rmail mail storage. It has no way to record
- attributes (such as `deleted') or user-specified labels; it has
- no way to record old headers and reformatted headers; it has no
- way to record cached summary line information.
-
- 2. It is very cumbersome to access an inbox file without danger of
- losing mail, because it is necessary to interlock with mail
- delivery. Moreover, different Unix systems use different
- interlocking techniques. The strategy of moving mail out of the
- inbox once and for all into a separate Rmail file avoids the need
- for interlocking in all the rest of Rmail, since only Rmail
- operates on the Rmail file.
-
- When getting new mail, Rmail first copies the new mail from the
- inbox file to the Rmail file and saves the Rmail file. It then
- deletes the inbox file. This way, a system crash may cause
- duplication of mail between the inbox and the Rmail file, but cannot
- lose mail.
-
- Copying mail from an inbox in the system's mailer directory
- actually puts it in an intermediate file `~/.newmail'. This is
- because the interlocking is done by a C program that copies to another
- file. `~/.newmail' is deleted after mail merging is successful. If
- there is a crash at the wrong time, this file will continue to exist
- and will be used as an inbox the next time you get new mail.
-
- File: emacs, Node: Rmail Files, Next: Rmail Output, Prev: Rmail Inbox, Up: Rmail
-
- Multiple Mail Files
- ===================
-
- Rmail operates by default on your "primary mail file", which is
- named `~/RMAIL' and receives your incoming mail from your system inbox
- file. But you can also have other mail files and edit them with
- Rmail. These files can receive mail through their own inboxes, or you
- can move messages into them by explicit command in Rmail (*note Rmail
- Output::.).
-
- `i FILE RET'
- Read FILE into Emacs and run Rmail on it (`rmail-input').
-
- `M-x set-rmail-inbox-list RET FILES RET'
- Specify inbox file names for current Rmail file to get mail from.
-
- `g'
- Merge new mail from current Rmail file's inboxes
- (`rmail-get-new-mail').
-
- `C-u g FILE'
- Merge new mail from inbox file FILE.
-
- To run Rmail on a file other than your primary mail file, you may
- use the `i' (`rmail-input') command in Rmail. This visits the file,
- puts it in Rmail mode, and then gets new mail from the file's inboxes
- if any. You can also use `M-x rmail-input' even when not in Rmail.
-
- The file you read with `i' does not have to be in Rmail file format.
- It could also be Unix mail format, or mmdf format; or it could be a
- mixture of all three, as long as each message has one of the three
- formats. Rmail recognizes all three and converts all the messages to
- proper Rmail format before showing you the file.
-
- Each Rmail file can contain a list of inbox file names; you can
- specify this list with `M-x set-rmail-inbox-list RET FILES RET'. The
- argument can contain any number of file names, separated by commas.
- It can also be empty, which specifies that this file should have no
- inboxes. Once a list of inboxes is specified, the Rmail file
- remembers it permanently until it is explicitly changed.
-
- If an Rmail file has inboxes, new mail is merged in from the inboxes
- when you bring the Rmail file into Rmail, and when you use the `g'
- (`rmail-get-new-mail') command. If the Rmail file specifies no
- inboxes, then no new mail is merged in at these times. A special
- exception is made for your primary mail file: Rmail uses the standard
- system inbox for it if it does not specify an inbox.
-
- To merge mail from a file that is not the usual inbox, give the `g'
- key a numeric argument, as in `C-u g'. Rmail prompts you for a file
- name and merges mail from the file you specify. The inbox file is not
- deleted or changed in any way when you use `g' with an argument. This
- is, therefore, a general way of merging one file of messages into
- another.
-
- File: emacs, Node: Rmail Output, Next: Rmail Labels, Prev: Rmail Files, Up: Rmail
-
- Copying Messages Out to Files
- =============================
-
- `o FILE RET'
- Append a copy of the current message to the file FILE, writing it
- in Rmail file format (`rmail-output-to-rmail-file').
-
- `C-o FILE RET'
- Append a copy of the current message to the file FILE, writing it
- in Unix mail file format (`rmail-output').
-
- If an Rmail file has no inboxes, use explicit `o' commands to write
- Rmail files.
-
- `o' (`rmail-output-to-rmail-file') appends the current message in
- Rmail format to the end of a specified file. This is the best command
- to use to move messages between Rmail files. If you are currently
- visiting the other Rmail file, copying is done into the other file's
- Emacs buffer instead. You should eventually save the buffer on disk.
-
- The `C-o' (`rmail-output') command in Rmail appends a copy of the
- current message to a specified file, in Unix mail file format. This
- is useful for moving messages into files to be read by other mail
- processors that do not understand Rmail format.
-
- Copying a message with `o' or `C-o' gives the original copy of the
- message the `filed' attribute, `filed' appears in the mode line when
- such a message is current.
-
- Normally you should use only `o' to output messages to other Rmail
- files, never `C-o'. But it is also safe if you always use `C-o',
- never `o'. When a file is visited in Rmail, the last message is
- checked, and if it is in Unix format, the entire file is scanned and
- all Unix-format messages are converted to Rmail format. (The reason
- for checking the last message is that scanning the file is slow and
- most Rmail files have only Rmail format messages.) If you use `C-o'
- consistently, the last message is guaranteed to be in Unix format, so
- Rmail will convert all messages properly.
-
- When you and other users want to append mail to the same file, you
- probably always want to use `C-o' instead of `o'. Other mail
- processors may not know Rmail format but will know Unix format.
-
- In any case, always use `o' to add to an Rmail file that is being
- visited in Rmail. Adding messages with `C-o' to the actual disk file
- will trigger a "simultaneous editing" warning when you ask to save the
- Emacs buffer, and the messages will be lost if you do save.
-
- File: emacs, Node: Rmail Labels, Next: Rmail Summary, Prev: Rmail Output, Up: Rmail
-
- Labels
- ======
-
- Each message can have various "labels" assigned to it as a means of
- classification. A label has a name; different names mean different
- labels. Any given label is either present or absent on a particular
- message. A few label names have standard meanings and are given to
- messages automatically by Rmail when appropriate; these special labels
- are called "attributes". All other labels are assigned by the user.
-
- `a LABEL RET'
- Assign the label LABEL to the current message (`rmail-add-label').
-
- `k LABEL RET'
- Remove the label LABEL from the current message
- (`rmail-kill-label').
-
- `C-M-n LABELS RET'
- Move to the next message that has one of the labels LABELS
- (`rmail-next-labeled-message').
-
- `C-M-p LABELS RET'
- Move to the previous message that has one of the labels LABELS
- (`rmail-previous-labeled-message').
-
- `C-M-l LABELS RET'
- Make a summary of all messages containing any of the labels LABELS
- (`rmail-summary-by-labels').
-
- Specifying an empty string for one these commands means to use the last
- label specified for any of these commands.
-
- The `a' (`rmail-add-label') and `k' (`rmail-kill-label') commands
- allow you to assign or remove any label on the current message. If
- the LABEL argument is empty, it means to assign or remove the label
- most recently assigned or removed.
-
- Once you have given messages labels to classify them as you wish,
- there are two ways to use the labels: in moving and in summaries.
-
- The command `C-M-n LABELS RET' (`rmail-next-labeled-message') moves
- to the next message that has one of the labels LABELS. LABELS is one
- or more label names, separated by commas. `C-M-p'
- (`rmail-previous-labeled-message') is similar, but moves backwards to
- previous messages. A preceding numeric argument to either one serves
- as a repeat count.
-
- The command `C-M-l LABELS RET' (`rmail-summary-by-labels') displays
- a summary containing only the messages that have at least one of a
- specified set of messages. The argument LABELS is one or more label
- names, separated by commas. *Note Rmail Summary::, for information on
- summaries.
-
- If the LABELS argument to `C-M-n', `C-M-p' or `C-M-l' is empty, it
- means to use the last set of labels specified for any of these
- commands.
-
- Some labels such as `deleted' and `filed' have built-in meanings
- and are assigned to or removed from messages automatically at
- appropriate times; these labels are called "attributes". Here is a
- list of Rmail attributes:
-
- `unseen'
- Means the message has never been current. Assigned to messages
- when they come from an inbox file, and removed when a message is
- made current.
-
- `deleted'
- Means the message is deleted. Assigned by deletion commands and
- removed by undeletion commands (*note Rmail Deletion::.).
-
- `filed'
- Means the message has been copied to some other file. Assigned
- by the file output commands (*note Rmail Files::.).
-
- `answered'
- Means you have mailed an answer to the message. Assigned by the
- `r' command (`rmail-reply'). *Note Rmail Reply::.
-
- `forwarded'
- Means you have forwarded the message to other users. Assigned by
- the `f' command (`rmail-forward'). *Note Rmail Reply::.
-
- `edited'
- Means you have edited the text of the message within Rmail.
- *Note Rmail Editing::.
-
- All other labels are assigned or removed only by the user, and it
- is up to the user to decide what they mean.
-
- File: emacs, Node: Rmail Summary, Next: Rmail Reply, Prev: Rmail Labels, Up: Rmail
-
- Summaries
- =========
-
- A "summary" is a buffer Rmail creates and displays to give you an
- overview of the mail in an Rmail file. It contains one line per
- message; each line shows the message number, the sender, the labels,
- and the subject. When you select the summary buffer, you can use a
- number of commands to select messages by moving in the summary buffer,
- or to delete or undelete messages.
-
- A summary buffer applies to a single Rmail file only; if you are
- editing multiple Rmail files, they have separate summary buffers. The
- summary buffer name is generated by appending `-summary' to the Rmail
- buffer's name. Only one summary buffer is displayed at a time unless
- you make several windows and select the summary buffers by hand.
-
- * Menu:
-
- * Rmail Make Summary:: Making various sorts of summaries.
- * Rmail Summary Edit:: Manipulating messages from the summary.
-
- File: emacs, Node: Rmail Make Summary, Next: Rmail Summary Edit, Prev: Rmail Summary, Up: Rmail Summary
-
- Making Summaries
- ----------------
-
- Here are the commands to create a summary for the current Rmail
- file. Summaries do not update automatically; to make an updated
- summary, you must use one of the commands again.
-
- `h'
- `C-M-h'
- Summarize all messages (`rmail-summary').
-
- `l LABELS RET'
- `C-M-l LABELS RET'
- Summarize message that have one or more of the specified labels
- (`rmail-summary-by-labels').
-
- `C-M-r RCPTS RET'
- Summarize messages that have one or more of the specified
- recipients (`rmail-summary-by-recipients')
-
- The `h' or `C-M-h' (`rmail-summary') command fills the summary
- buffer for the current Rmail file with a summary of all the messages
- in the file. It then displays and selects the summary buffer in
- another window.
-
- `C-M-l LABELS RET' (`rmail-summary-by-labels') makes a partial
- summary mentioning only the messages that have one or more of the
- labels LABELS. LABELS should contain label names separated by commas.
-
- `C-M-r RCPTS RET' (`rmail-summary-by-recipients') makes a partial
- summary mentioning only the messages that have one or more of the
- recipients RCPTS. RCPTS should contain mailing addresses separated by
- commas.
-
- Note that there is only one summary buffer for any Rmail file;
- making one kind of summary discards any previously made summary.
-
- File: emacs, Node: Rmail Summary Edit, Prev: Rmail Make Summary, Up: Rmail Summary
-
- Editing in Summaries
- --------------------
-
- Summary buffers are given the major mode Rmail Summary mode, which
- provides the following special commands:
-
- `j'
- Select the message described by the line that point is on
- (`rmail-summary-goto-msg').
-
- `C-n'
- Move to next line and select its message in Rmail
- (`rmail-summary-next-all').
-
- `C-p'
- Move to previous line and select its message (`rmail-summary-
- previous-all').
-
- `n'
- Move to next line, skipping lines saying `deleted', and select its
- message (`rmail-summary-next-msg').
-
- `p'
- Move to previous line, skipping lines saying `deleted', and select
- its message (`rmail-summary-previous-msg').
-
- `d'
- Delete the current line's message, then do like `n'
- (`rmail-summary-delete-forward').
-
- `u'
- Undelete and select this message or the previous deleted message
- in the summary (`rmail-summary-undelete').
-
- `SPC'
- Scroll the other window (presumably Rmail) forward
- (`rmail-summary-scroll-msg-up').
-
- `DEL'
- Scroll the other window backward
- (`rmail-summary-scroll-msg-down').
-
- `x'
- Kill the summary window (`rmail-summary-exit').
-
- `q'
- Exit Rmail (`rmail-summary-quit').
-
- The keys `C-n' and `C-p' are modified in Rmail Summary mode. In
- addition to moving point in the summary buffer they also cause the
- line's message to become current in the associated Rmail buffer. That
- buffer is also made visible in another window if it is not currently
- visible.
-
- `n' and `p' are similar to `C-n' and `C-p', but skip lines that say
- `message deleted'. They are like the `n' and `p' keys of Rmail
- itself. Note, however, that in a partial summary these commands move
- only among the message listed in the summary.
-
- The other Emacs cursor motion commands are not changed in Rmail
- Summary mode, so it is easy to get the point on a line whose message is
- not selected in Rmail. This can also happen if you switch to the Rmail
- window and switch messages there. To get the Rmail buffer back in sync
- with the summary, use the `j' (`rmail-summary-goto-msg') command,
- which selects the message of the current summary line in Rmail.
-
- Deletion and undeletion can also be done from the summary buffer.
- They always work based on where point is located in the summary buffer,
- ignoring which message is selected in Rmail. `d'
- (`rmail-summary-delete-forward') deletes the current line's message,
- then moves to the next line whose message is not deleted and selects
- that message. The inverse is `u' (`rmail-summary-undelete'), which
- moves back (if necessary) to a line whose message is deleted,
- undeletes that message, and selects it in Rmail.
-
- When moving through messages with the summary buffer, it is
- convenient to be able to scroll the message while remaining in the
- summary window. The commands SPC (`rmail-summary-scroll-msg-up') and
- DEL (`rmail-summary-scroll-msg-down') do this. They scroll the
- message just as they do when the Rmail buffer is selected.
-
- When you are finished using the summary, type `x'
- (`rmail-summary-exit') to kill the summary buffer's window.
-
- You can also exit Rmail while in the summary. `q'
- (`rmail-summary-quit') kills the summary window, then saves the Rmail
- file and switches to another buffer.
-
- File: emacs, Node: Rmail Reply, Next: Rmail Editing, Prev: Rmail Summary, Up: Rmail
-
- Sending Replies
- ===============
-
- Rmail has several commands that use Mail mode to send mail. *Note
- Sending Mail::, for information on using Mail mode. Only the special
- commands of Rmail for entering Mail mode are documented here. Note
- that the usual keys for sending mail, `C-x m' and `C-x 4 m', are
- available in Rmail mode and work just as they usually do.
-
- `m'
- Send a message (`rmail-mail').
-
- `c'
- Continue editing already started outgoing message
- (`rmail-continue').
-
- `r'
- Send a reply to the current Rmail message (`rmail-reply').
-
- `f'
- Forward current message to other users (`rmail-forward').
-
- To reply to a the message you are reading in Rmail, type `r'
- (`rmail-reply'). This displays the `*mail*' buffer in another window,
- much like `C-x 4 m', but pre-initializes the `Subject', `To', `CC' and
- `In-reply-to' header fields based on the message you reply to. The
- `To' field is given the sender of that message, and the `CC' gets all
- the recipients of that message. Recipients that match elements of the
- list `rmail-dont-reply-to' are omitted; by default, this list contains
- your own mailing address.
-
- Once you have initialized the `*mail*' buffer this way, sending the
- mail goes as usual (*note Sending Mail::.). You can edit the
- presupplied header fields if they are not what you want.
-
- One additional Mail mode command is available when you invoke mail
- from Rmail: `C-c C-y' (`mail-yank-original') inserts into the outgoing
- message a copy of the current Rmail message. Normally this is the
- message you are replying to, but you can also switch to the Rmail
- buffer, select a different message, switch back, and yank the new
- current message. Normally the yanked message is indented four spaces
- and has most header fields deleted from it; an argument to `C-c C-y'
- specifies the amount to indent, and `C-u C-c C-y' does not indent at
- all and does not delete any header fields.
-
- Another frequent reason to send mail in Rmail is to forward the
- current message to other users. `f' (`rmail-forward') makes this easy
- by preinitializing the `*mail*' buffer with the current message as the
- text, and a subject designating a forwarded message. All you have to
- do is fill in the recipients and send.
-
- You can use the `m' (`rmail-mail') command to start editing an
- outgoing message that is not a reply. It leaves the header fields
- empty. Its only difference from `C-x 4 m' is that it makes the Rmail
- buffer accessible for `C-c y', just as `r' does. Thus, `m' can be
- used to reply to or forward a message; it can do anything `r' or `f'
- can do.
-
- The `c' (`rmail-continue') command resumes editing the `*mail*'
- buffer, to finish editing an outgoing message you were already
- composing, or to alter a message you have sent.
-
- File: emacs, Node: Rmail Editing, Next: Rmail Digest, Prev: Rmail Reply, Up: Rmail
-
- Editing Within a Message
- ========================
-
- Rmail mode provides a few special commands for moving within and
- editing the current message. In addition, the usual Emacs commands are
- available (except for a few, such as `C-M-n' and `C-M-h', that are
- redefined by Rmail for other purposes). However, the Rmail buffer is
- normally read-only, and to alter it you must use the Rmail command `w'
- described below.
-
- `t'
- Toggle display of original headers (`rmail-toggle-headers').
-
- `w'
- Edit current message (`rmail-edit-current-message').
-
- Rmail reformats the header of each message before displaying it.
- Normally this involves deleting most header fields, on the grounds that
- they are not interesting. The variable `rmail-ignored-headers' should
- contain a regexp that matches the header fields to discard in this
- way. The original headers are saved permanently; to see what they
- look like, use the `t' (`rmail-toggle-headers') command. This
- discards the reformatted headers of the current message and displays it
- with the original headers. Repeating `t' reformats the message again.
- Selecting the message again also reformats.
-
- The Rmail buffer is normally read only, and most of the characters
- you would type to modify it (including most letters) are redefined as
- Rmail commands. This is usually not a problem since people rarely
- want to change the text of a message. When you do want to do this,
- type `w' (`rmail-edit-current-message'), which changes from Rmail mode
- to Rmail Edit mode, another major mode which is nearly the same as Text
- mode. The mode line indicates this change.
-
- In Rmail Edit mode, letters insert themselves as usual and the Rmail
- commands are not available. When you are finished editing the message
- and are ready to go back to Rmail, type `C-c C-c', which switches back
- to Rmail mode. To return to Rmail mode but cancel all the editing you
- have done, type `C-c C-]'.
-
- Entering Rmail Edit mode calls the value of the variable
- `text-mode-hook' with no arguments, if that value exists and is not
- `nil'. It then does the same with the variable `rmail-edit-mode-hook'
- and finally adds the attribute `edited' to the message.
-
- File: emacs, Node: Rmail Digest, Prev: Rmail Editing, Up: Rmail
-
- Digest Messages
- ===============
-
- A "digest message" is a message which exists to contain and carry
- several other messages. Digests are used on moderated mailing lists.
- All messages that arrive for the list during a period of time, such as
- one day, are put inside a single digest which is then sent to the
- subscribers. Transmitting the single digest uses much less computer
- time than transmitting the individual messages even though the total
- size is the same, because the per-message overhead in network mail
- transmission is considerable.
-
- When you receive a digest message, the most convenient way to read
- it is to "undigestify" it: to turn it back into many individual
- messages. You can then read and delete the individual messages as it
- suits you.
-
- To undigestify a message, select it and then type `M-x
- undigestify-rmail-message'. This copies each submessage as a separate
- Rmail message and inserts them all following the digest. The digest
- message itself is flagged as deleted.
-
- File: emacs, Node: Recursive Edit, Next: Narrowing, Prev: Rmail, Up: Top
-
- Recursive Editing Levels
- ========================
-
- A "recursive edit" is a situation in which you are using Emacs
- commands to perform arbitrary editing while in the middle of another
- Emacs command. For example, when you type `C-r' inside a
- `query-replace', you enter a recursive edit in which you can change
- the current buffer. When you exit from the recursive edit, you go
- back to the `query-replace'.
-
- "Exiting" a recursive edit means returning to the unfinished
- command, which continues execution. For example, exiting the recursive
- edit requested by `C-r' in `query-replace' causes query replacing to
- resume. Exiting is done with `C-M-c' (`exit-recursive-edit').
-
- You can also "abort" a recursive edit. This is like exiting, but
- also quits the unfinished command immediately. Use the command `C-]'
- (`abort-recursive-edit') for this. *Note Quitting::.
-
- The mode line shows you when you are in a recursive edit by
- displaying square brackets around the parentheses that always surround
- the major and minor mode names. Every window's mode line shows the
- square brackets, since Emacs as a whole, rather than any particular
- buffer, is in a recursive edit.
-
- It is possible to be in recursive edits within recursive edits. For
- example, after typing `C-r' in a `query-replace', you might type a
- command that entered the debugger. In such circumstances, two or more
- sets of square brackets appear in the mode line(s). Exiting the inner
- recursive edit (for example, with the debugger `c' command) resumes
- the query-replace command where it called the debugger. After the end
- of the query-replace command, you would be able to exit the first
- recursive edit. Aborting exits only one level of recursive edit; it
- returns to the command level of the previous recursive edit. You can
- then abort that one as well.
-
- The command `M-x top-level' aborts all levels of recursive edits,
- returning immediately to the top level command reader.
-
- The text you edit inside the recursive edit need not be the same
- text that you were editing at top level. It depends on what the
- recursive edit is for. If the command that invokes the recursive edit
- selects a different buffer first, that is the buffer you will edit
- recursively. You can switch buffers within the recursive edit in the
- normal manner (as long as the buffer-switching keys have not been
- rebound). While you could theoretically do the rest of your editing
- inside the recursive edit, including visiting files, this could have
- surprising effects (such as stack overflow) from time to time. It is
- recommended you always exit or abort a recursive edit when you no
- longer need it.
-
- In general, GNU Emacs tries to avoid using recursive edits. It is
- usually preferable to allow users to switch among the possible editing
- modes in any order they like. With recursive edits, the only way to
- get to another state is to go "back" to the state that the recursive
- edit was invoked from.
-
- File: emacs, Node: Narrowing, Next: Sorting, Prev: Recursive Edit, Up: Top
-
- Narrowing
- =========
-
- "Narrowing" means focusing in on some portion of the buffer, making
- the rest temporarily invisible and inaccessible. Cancelling the
- narrowing, and making the entire buffer once again visible, is called
- "widening". The amount of narrowing in effect in a buffer at any time
- is called the buffer's "restriction".
-
- `C-x n'
- Narrow down to between point and mark (`narrow-to-region').
-
- `C-x w'
- Widen to make the entire buffer visible again (`widen').
-
- Narrowing sometimes makes it easier to concentrate on a single
- subroutine or paragraph by eliminating clutter. It can also be used to
- restrict the range of operation of a replace command or repeating
- keyboard macro. The word `Narrow' appears in the mode line whenever
- narrowing is in effect. When you have narrowed to a part of the
- buffer, that part appears to be all there is. You can't see the rest,
- can't move into it (motion commands won't go outside the visible part),
- and can't change it in any way. However, the invisible text is not
- gone; if you save the file, it will be saved.
-
- The primary narrowing command is `C-x n' (`narrow-to-region'). It
- sets the current buffer's restrictions so that the text in the current
- region remains visible but all text before the region or after the
- region is invisible. Point and mark do not change.
-
- Because narrowing can easily confuse users who do not understand it,
- `narrow-to-region' is normally a disabled command. Attempting to use
- this command asks for confirmation and gives you the option of
- enabling it; once you enable the command, confirmation will no longer
- be required. *Note Disabling::.
-
- To undo narrowing, use `C-x w' (`widen'). This makes all text in
- the buffer accessible again.
-
- Use the `C-x =' command to get information on what part of the
- buffer you narrowed down. *Note Position Info::.
-