When Message is being used from a news/mail reader, the reader is likely to want to perform some task after the message has been sent. Perhaps return to the previous window configuration or mark an article as replied.
The user may exit from the message buffer in various ways. The most
common is C-c C-c, which sends the message and exits. Other
possibilities are C-c C-s which just sends the message, C-c C-d which postpones the message editing and buries the message buffer,
and C-c C-k which kills the message buffer. Each of these actions
have lists associated with them that contains actions to be executed:
message-send-actions
, message-exit-actions
,
message-postpone-actions
, and message-kill-actions
.
Message provides a function to interface with these lists:
message-add-action
. The first parameter is the action to be
added, and the rest of the arguments are which lists to add this action
to. Here's an example from Gnus:
(message-add-action `(set-window-configuration ,(current-window-configuration)) 'exit 'postpone 'kill)
This restores the Gnus window configuration when the message buffer is killed, postponed or exited.
An action can be either: a normal function, or a list where the
car
is a function and the cdr
is the list of arguments, or
a form to be eval
ed.