mh-e: Composing

 
 8.1 Composing
 =============
 
 Outside of an MH-Folder buffer, you must call either ‘M-x mh-smail’ or
 ‘M-x mh-smail-other-window’ to compose a new message.  The former
 command always creates a two-window layout with the current buffer on
 top and the draft on the bottom.  Use the latter command if you would
 rather preserve the window layout.  You may find adding the following
 key bindings to ‘~/.emacs’ useful:
 
      (global-set-key "\C-xm" 'mh-smail)
      (global-set-key "\C-x4m" 'mh-smail-other-window)
 
    From within a MH-Folder buffer, you can simply use the command ‘m’
 (‘mh-send’).  However you invoke ‘mh-send’, your letter appears in an
 Emacs buffer whose mode is MH-Letter (to see what the buffer looks like,
 SeeSending Mail Tour).  MH-Letter mode allows you to edit your
 message, to check the validity of the recipients, to insert attachments
 and other messages into your message, and to send the message.  We’ll go
 more into depth about editing a “draft”(1) (a message you’re composing)
 in just a moment (SeeEditing Drafts).
 
    If you prefer to be prompted for the recipient and subject fields
 before the MH-Letter buffer appears, turn on the option
 ‘mh-compose-prompt-flag’.
 
    MH-E adds an ‘X-Mailer:’ header field to the header that includes the
 version of MH-E and Emacs that you are using.  If you don’t want to
 participate in our marketing, you can turn off the option
 ‘mh-insert-x-mailer-flag’.
 
    Two hooks are provided to run commands on your freshly created draft.
 The first hook, ‘mh-letter-mode-hook’, allows you to do some processing
 before editing a letter(2).  For example, you may wish to modify the
 header after ‘repl’ has done its work, or you may have a complicated
 ‘components’ file and need to tell MH-E where the cursor should go.
 Here’s an example of how you would use this hook.
 
      (defvar letter-mode-init-done-flag nil
        "Non-nil means one-time MH-E settings have been made.")
 
      (defun my-mh-letter-mode-hook ()
        "Prepare letter for editing."
        (when (not letter-mode-init-done)     ; only need to bind the keys once
          (local-set-key "\C-ctb" 'add-enriched-text)
          (local-set-key "\C-cti" 'add-enriched-text)
          (local-set-key "\C-ctf" 'add-enriched-text)
          (local-set-key "\C-cts" 'add-enriched-text)
          (local-set-key "\C-ctB" 'add-enriched-text)
          (local-set-key "\C-ctu" 'add-enriched-text)
          (local-set-key "\C-ctc" 'add-enriched-text)
          (setq letter-mode-init-done t))
        (save-excursion
          (goto-char (point-max))             ; go to end of message to
          (mh-insert-signature)))             ;   insert signature
 
      Prepare draft for editing via mh-letter-mode-hook
 
 
    The function, ‘add-enriched-text’ is defined in the example in See
 Adding Attachments.
 
    The second hook, a function really, is ‘mh-compose-letter-function’.
 Like ‘mh-letter-mode-hook’, it is called just before editing a new
 message; however, it is the last function called before you edit your
 message.  The consequence of this is that you can write a function to
 write and send the message for you.  This function is passed three
 arguments: the contents of the ‘To:’, ‘Subject:’, and ‘Cc:’ header
 fields.
 
    ---------- Footnotes ----------
 
    (1) I highly recommend that you use a “draft folder” so that you can
 edit several drafts in parallel.  To do so, create a folder named
 ‘+drafts’ for example, and add the profile component ‘Draft-Folder:
 drafts’ (see ‘mh-profile’(5)).
 
    (2) Actually, because MH-Letter mode inherits from Mail mode, the
 hooks ‘text-mode-hook’ and ‘mail-mode-hook’ are run (in that order)
 before ‘mh-letter-mode-hook’.