Go to the first, previous, next, last section, table of contents.

Reading Messages

Once a message has been selected, VM will show it to you. By default, presentation is done in two stages: previewing and paging.


Previewing means showing you a small portion of a message and allowing you to decide whether you want to read it. Typing SPC exposes the body of the message, and from there you can repeatedly type SPC to page through the message.

By default, the sender, recipient, subject and date headers are shown when previewing; the rest of the message is hidden. This behavior may be altered by changing the settings of three variables: vm-visible-headers, vm-invisible-header-regexp and vm-preview-lines.

If the value of vm-preview-lines is a number, it tells VM how many lines of the text of the message should be visible. The default value of this variable is 0. If vm-preview-lines is nil, then previewing is not done at all; when a message is first presented it is immediately exposed in its entirety and is flagged as read. If vm-preview-lines is t, the message body is displayed fully but the message is not flagged as read until you type SPC.

The value of vm-visible-headers should be a list of regular expressions matching the beginnings of headers that should be made visible when a message is presented. The regexps should be listed in the preferred presentation order of the headers they match.

If non-nil, the variable vm-invisible-header-regexp specifies what headers should not be displayed. Its value should be a string containing a regular expression that matches all headers you do not want to see. Setting this variable non-nil implies that you want to see all headers not matched by it; therefore the value of vm-visible-headers is only used to determine the order of the visible headers in this case. Headers not matched by vm-invisible-header-regexp or vm-visible-headers are displayed last.

If you change the value of either vm-visible-headers or vm-invisible-header-regexp in the middle of a VM session the effects will not be immediate. You will need to use the command vm-discard-cached-data on each message (bound to j by default) to force VM to rearrange the message headers. A good way to do this is to mark all the messages in the folder and apply vm-discard-cached-data to the marked messages. See section Message Marks.

Another variable of interest is vm-highlighted-header-regexp. The value of this variable should be a single regular expression that matches the beginnings of any header that should be presented in inverse video when previewing. For example, a value of `"^From\\|^Subject"' causes the From and Subject headers to be highlighted. Highlighted headers will be displayed using the face specified by vm-highlighted-header-face, which defaults to 'bold.

By default, VM will not preview messages that are flagged as read. To have VM preview all messages, set the value of vm-preview-read-messages to t.

Typing t (vm-expose-hidden-headers) makes VM toggle between exposing and hiding headers that would ordinarily be hidden.


Typing SPC during a message preview exposes the body of the message. If the message was new or previously unread, it will be flagged "read". At this point you can use SPC to scroll forward, and b or DEL to scroll backward a windowful of text at a time. A prefix argument n applied to these commands causes VM to scroll forward or backward n lines. Typing space at the end of a message moves you to the next message. If the value of vm-auto-next-message is nil, SPC will not move to the next message; you must type n explicitly.

If the value of vm-honor-page-delimiters is non-nil, VM will recognize and honor page delimiters. This means that when you scroll through a document, VM will display text only up to the next page delimiter. Text after the delimiter will be hidden until you type another SPC, at which point the text preceding the delimiter will become hidden. The Emacs variable page-delimiter determines what VM will consider to be a page delimiter.

You can "unread" a message (so to speak) by typing U (vm-unread-message). The current message will be flagged unread.

Sometimes you will receive messages that contain lines that are too long to fit on your screen without wrapping. If you set vm-fill-paragraphs-containing-long-lines to a positive numeric value N, VM will call fill-paragraph on all paragraphs that contain lines spanning N columns or more. As with other things VM does that modifies the way the message looks on the screen, this does not change message contents. VM copies the message contents to a "presentation" buffer before altering them. The fill column that VM uses is controlled by vm-paragraph-fill-column. Unlike the Emacs variable fill-column, this variable is not buffer-local by default.

Go to the first, previous, next, last section, table of contents.