## 20 Hooks ¶

VM has many hook variables that allow you to run functions when certain events occur. Here is a list of the hooks and when they are run. (If you don’t write Emacs-Lisp programs you can skip this chapter.)

`vm-select-new-message-hook` ¶

  List of hook functions called every time a message with the “new” attribute is made to be the current message. When the hooks are run, the current buffer will be the folder containing the message and the start and end of the message will be bracketed by (point-min) and (point-max).

`vm-select-unread-message-hook` ¶

  List of hook functions called every time a message with the “unread” attribute is made to be the current message. When the hooks are run, the current buffer will be the folder containing the message and the start and end of the message will be bracketed by (point-min) and (point-max).

`vm-select-message-hook` ¶

  List of hook functions called every time a message is made to be the current message. When the hooks are run, the current buffer will be the folder containing the message and the start and end of the message will be bracketed by (point-min) and (point-max).

`vm-save-message-hook` ¶

  List of hook fucntions called every time a message is saved to a folder. When the hooks are called, the current buffer will be the folder containing the message and the start and end of the message will be bracketed by (point-min) and (point-max). The hooks are calle with one argument, a string denoting the folder where the message was saved. The folder could be a file name or the maildrop specification of an IMAP mailbox.

`vm-arrived-message-hook` ¶

  List of hook functions called once for each message gathered from the system mail spool, or from another folder with `vm-get-new-mail`, or from a digest with `vm-burst-digest`. When the hooks are run, the current buffer will be the folder containing the message and the start and end of the message will be bracketed by (point-min) and (point-max).

`vm-spooled-mail-waiting-hook` ¶

  List of functions called when VM first notices mail is spooled for a folder. The folder buffer will be current when the hooks are run.

`vm-arrived-messages-hook` ¶

  List of hook functions called after VM has gathered a group of messages from the system mail spool, or from another folder with `vm-get-new-mail`, or from a digest with `vm-burst-digest`. When the hooks are run, the new messages will have already been added to the message list but may not yet appear in the summary. When the hooks are run the current buffer will be the folder containing the messages.

`vm-reply-hook` ¶

  List of hook functions to be run after a Mail mode composition buffer has been created for a reply. VM runs this hook and then runs `vm-mail-mode-hook` before leaving you in the Mail mode buffer.

`vm-forward-message-hook` ¶

  List of hook functions to be run after a Mail mode composition buffer has been created to forward a message. VM runs this hook and then runs `vm-mail-mode-hook` before leaving the user in the Mail mode buffer.

`vm-resend-bounced-message-hook` ¶

  List of hook functions to be run after a Mail mode composition buffer has been created to resend a bounced message. VM runs this hook and then runs `vm-mail-mode-hook` before leaving you in the Mail mode buffer.

`vm-resend-message-hook` ¶

  List of hook functions to be run after a Mail mode composition buffer has been created to resend a message. VM runs this hook and then runs `vm-mail-mode-hook` before leaving you in the Mail mode buffer.

`vm-send-digest-hook` ¶

  List of hook functions to be run after a Mail mode composition buffer has been created to send a digest. VM runs this hook and then runs `m-mail-mode-hook` before leaving you in the Mail mode buffer.

`vm-mail-hook` ¶

  List of hook functions to be run after a Mail mode composition buffer has been created to send a non specialized message, i.e. a message that is not a reply, forward, digest, etc. VM runs this hook and then runs `vm-mail-mode-hook` before leaving you in the Mail mode buffer.

`vm-summary-update-hook` ¶

  List of hook functions called just after VM updates an existing entry in a folder summary buffer.

`vm-summary-redo-hook` ¶

  List of hook functions called just after VM adds or deletes entries from a folder summary buffer.

`vm-visit-folder-hook` ¶

  List of hook functions called just after VM visits a folder. It doesn’t matter if the folder buffer already exists, this hook is run each time `vm` or `vm-visit-folder` is called interactively. It is not run after `vm-mode` is called.

`vm-retrieved-spooled-mail-hook` ¶

  List of hook functions called just after VM has retrieved a group of messages from your system mailbox(es). When these hooks are run, the messages have been added to the folder buffer but not the message list or summary. When the hooks are run, the current buffer will be the folder where the messages were incorporated.

`vm-edit-message-hook` ¶

  List of hook functions to be run just before a message is edited. This is the last thing `vm-edit-message` does before leaving you in the edit buffer.

`vm-mail-mode-hook` ¶

  List of hook functions to be run after a Mail mode composition buffer has been created. This is the last thing VM does before leaving you in the Mail mode buffer.

`vm-mode-hook` ¶

  List of hook functions to run when a buffer enters `vm-mode`. These hook functions should generally be used to set key bindings and local variables.

`vm-mode-hooks` ¶

  Old name for `vm-mode-hook`. Supported for backward compatibility. You should use the new name.

`vm-summary-mode-hook` ¶

  List of hook functions to run when a VM summary buffer is created. The current buffer will be that buffer when the hooks are run.

`vm-summary-mode-hooks` ¶

  Old name for `vm-summary-mode-hook`. Supported for backward compatibility. You should use the new name.

`vm-virtual-mode-hook` ¶

  List of hook functions to run when a VM virtual folder buffer is created. The current buffer will be that buffer when the hooks are run.

`vm-presentation-mode-hook` ¶

  List of hook functions to run when a VM presentation buffer is created. The current buffer will be the new presentation buffer when the hooks are run. Presentation buffers are used to display messages when some type of decoding must be done to the message to make it presentable. E.g. MIME decoding.

`vm-quit-hook` ¶

  List of hook functions to run when you quit VM. This applies to all VM quit commands, including `vm-quit-no-change`. So you should not include in this hook any functions that alter the folder. For automatically expunging deleted messages, set the variable `vm-expunge-before-quit`.

`vm-summary-pointer-update-hook` ¶

  List of hook functions to run when the VM summary pointer is updated. When the hooks are run, the current buffer will be the summary buffer.

`vm-display-buffer-hook` ¶

  List of hook functions that are run every time VM wants to display a buffer. When the hooks are run, the current buffer will be the buffer that VM wants to display. The hooks are expected to select a window and VM will display the buffer in that window.

  If you use display hooks, you should not use VM’s built-in window configuration system as the result is likely to be confusing.

`vm-undisplay-buffer-hook` ¶

  List of hook functions that are run every time VM wants to remove a buffer from the display. When the hooks are run, the current buffer will be the buffer that VM wants to disappear. The hooks are expected to do the work of removing the buffer from the display. The hook functions should not kill the buffer.

  If you use undisplay hooks, you should not use VM’s built-in window configuration system as the result is likely to be confusing.

`vm-iconify-frame-hook` ¶

  List of hook functions that are run whenever VM iconifies a frame.

`vm-menu-setup-hook` ¶

  List of hook functions that are run just after all menus are initialized.

`vm-mime-display-function` ¶

  If non-`nil`, this should name a function to be called inside `vm-decode-mime-message` to do the MIME display of the current message. The function is called with no arguments, and at the time of the call the current buffer will be the presentation buffer for the folder, which is a temporary buffer that VM uses for the display of MIME messages. A copy of the current message will be in the presentation buffer at that time. The normal work that `vm-decode-mime-message` would do is not done, because this function is expected to subsume all of it.

`vm-mail-send-hook` ¶

  List of hook functions to call just before sending a message. The hooks are run after confirming that you want to send the message (see `vm-confirm-mail-send` but before MIME encoding and FCC processing.

`mail-yank-hooks` ¶

  Hooks called after a message is yanked into a mail composition buffer.

  (This hook is deprecated, you should use mail-citation-hook instead.)

  The value of this hook is a list of functions to be run. Each hook function can find the newly yanked message between point and mark. Each hook function should return with point and mark around the yanked message.

  See the documentation for `vm-yank-message` to see when VM will run these hooks.

`mail-citation-hook` ¶

  Hook for modifying a citation just inserted in the mail buffer. Each hook function can find the citation between (point) and (mark t). And each hook function should leave point and mark around the citation text as modified.

  If this hook is entirely empty, i.e. `nil`, a default action is taken instead of no action.