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

Frames and Windows

VM uses Emacs frames and windows to display messages and summaries and to provide a place for you to compose messages. Using VM's frame configuration facilities you can control when VM creates new frames and the size and attributes associated with new frames. Inside each frame you can associate different window setups with commands and classes of commands by using VM's window configuration facilities.

To use VM's frame configuration features, the variable vm-mutable-frames must be set non-nil. This is the default. If vm-mutable-frames is set to nil VM will only use the current frame, and VM will not create, delete or resize frames.

To use window configurations, the variable vm-mutable-windows must be set non-nil. If vm-mutable-windows is set to nil, VM will only use the selected window, and will not create, delete or resize windows.

Frame Configuration

VM has a set of variables that let you specify when VM creates frames and what attributes the new frames will have.

If vm-frame-per-folder is set non-nil, when you visit a folder, VM will create a new frame and display that folder in the new frame. When you quit the folder, VM will delete the frame.

If vm-frame-per-summary is set non-nil, the vm-summarize command will create a new frame in which to display a folder's summary buffer. This works best if a full-screen window configuration has been assigned to the vm-summarize command. When you quit the folder or kill the summary, VM will delete the frame.

Setting vm-frame-per-composition non-nil causes VM to create a new frame for the composition buffer when you run any of VM's message composition commands. E.g. vm-reply-include-text, vm-mail, vm-forward-message. When you finish editing the composition and send it, or when you kill the composition buffer, the frame will be deleted.

The variable vm-frame-per-edit, if non-nil, tells VM to create a new frame when the vm-edit-message command is run. When you finish editing the message, or abort the edit, the frame will be deleted.

If vm-frame-per-help is set non-nil, VM will create a new frame to display any help buffer produced by the vm-help command.

If vm-frame-per-completion is set non-nil, VM will create a new frame on mouse initiated completing reads. A mouse initiated completing read occurs when you invoke a VM command using the mouse, either with a menu or a toolbar button. That command must then prompt you for information, and there must be a limited set of valid responses. If these conditions are met and vm-frame-per-completion's value is non-nil, VM will create a new frame containing a list of responses that you can select with the mouse.

When VM is deciding whether to create a new frame, it checks other existing frames to see if a buffer that it wants to display in a frame is already being displayed somewhere. If so, then VM will not create a new frame. If you don't want VM to search other frames, set the variable vm-search-other-frames to nil. VM will still search the currently selected frame and will not create a new frame if the buffer that it wants to display is visible there.

The variable vm-frame-parameter-alist allows you to specify the frame parameters for newly created frames.

The value of vm-frame-parameter-alist should be of this form


SYMBOL must be one of "completion", "composition", "edit", "folder", "primary-folder" or "summary". It specifies the type of frame that the following PARAMLIST applies to.

specifies parameters for frames that display lists of choices generated by a mouse-initiated completing read. (See vm-frame-per-completion.)
specifies parameters for mail composition frames.
specifies parameters for message edit frames (e.g. created by vm-edit-message-other-frame)
specifies parameters for frames created by `vm' and the vm-visit- commands.
specifies parameters for the frame created by running vm without any arguments.
specifies parameters for frames that display a summary buffer (e.g. created by vm-summarize-other-frame)

PARAMLIST is a list of pairs as described in the documentation for the function make-frame.

Window Configuration

Window configurations allow you to specify how the windows within a frame should look for a particular command or class of commands. Each command can have a configuration associated with it and you can also associate a configuration with command classes like "reading-message" or "composing-message". To setup a window configuration, first use Emacs' window management commands (split-window, enlarge-window, etc.) to make the windows in the frame look the way you want. Then use the switch-to-buffer command to put the buffers you want to see into the windows. Next type W S, which invokes the vm-save-window-configuration command. Type the name of the command or class of commands to which you want the configuration to apply. Nearly all VM commands can be entered here. Valid classes are:


When a VM command is executed, window configurations are searched for as follows. First, a command specific configuration is searched for. If one is found, it is used. Next a class configuration is searched for. Not all commands are in command classes. Message composition commands are in the "composing-message" class. All the vm-quit* commands are in the "quitting" class. All the VM commands that set and clear message marks are in the "marking-message" class, and so on. If such a class configuration is found it is used. If no matching class configuration is found, the "default" class configuration is used, if it is defined.

Note that when a window configuration is saved the selected window at that time will be the selected window when that window configuration is used. So if you prefer for the cursor to be in a particular window, make sure you invoke vm-save-window-configuration window from that window. Remember that you can invoke the command with M-x if VM's normal keymap is not in effect.

To delete a window configuration, use W D which is bound to vm-delete-window-configuration. You will be prompted for the name of the configuration to delete.

To see what an existing configuration looks like, type W W which invokes vm-apply-window-configuration.

VM saves information about your window configurations in the file named by the variable vm-window-configuration-file. The default location of the configuration file is `"~/.vm.windows"'. Do not make vm-window-configuration-file point to the same location as vm-init-file, as the window configuration save commands will then overwrite the content of your init file.

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