sc: Reply Buffer Initialization

 
 6.1 Reply Buffer Initialization
 ===============================
 
 Executing ‘sc-cite-original’ performs the following steps as it
 initializes the reply buffer:
 
   1. _Runs ‘sc-pre-hook’._  This hook variable is run before
      ‘sc-cite-original’ does any other work.  You could conceivably use
      this hook to set certain Supercite variables based on the reply
      buffer’s mode or name (i.e., to do something different based on
      whether you are replying or following up to an article).
 
   2. _Inserts Supercite’s keymap._  Supercite provides a number of
      commands for performing post-yank modifications to the reply
      buffer.  These commands are installed on Supercite’s top-level
      keymap.  Since Supercite has to interface with a wide variety of
      MUAs, it does not install all of its commands directly into the
      reply buffer’s keymap.  Instead, it puts its commands on a keymap
      prefix, then installs this prefix onto the buffer’s keymap.  What
      this means is that you typically have to type more characters to
      invoke a Supercite command, but Supercite’s key bindings can be
      made much more consistent across MUAs.
 
      You can control what key Supercite uses as its keymap prefix by
      changing the variable ‘sc-mode-map-prefix’.  By default, this
      variable is set to ‘C-c C-p’; a finger twister perhaps, but
      unfortunately the best default due to the scarcity of available key
      bindings in many MUAs.
 
   3. _Turns on Supercite minor mode._  The modeline of the reply buffer
      should indicate that Supercite is active in that buffer by
      displaying the string ‘SC’.
 
   4. _Sets the “Undo Boundary.”_ Supercite sets an undo boundary before
      it begins to modify the original yanked text.  This allows you to
      easily undo Supercite’s changes to affect alternative citing
      styles.
 
   5. _Processes the mail headers._  All previously retrieved info
      key-value pairs are deleted from the info alist, then the mail
      headers in the body of the yanked message are scanned.  Info
      key-value pairs are created for each header found.  Also, such
      useful information as the author’s name and email address are
      extracted.  If the variable ‘sc-mail-warn-if-non-rfc822-p’ is
      non-‘nil’, then Supercite will warn you if it finds a mail header
      that does not conform to RFC822.  This is rare and indicates a
      problem either with your MUA or the original author’s MUA, or some
      MTA (mail transport agent) along the way.
 
      Once the info keys have been extracted from the mail headers, the
      headers are nuked from the reply buffer.  You can control exactly
      which headers are removed or kept, but by default, all headers are
      removed.
 
      There are two variables which control mail header nuking.  The
      variable ‘sc-nuke-mail-headers’ controls the overall behavior of
      the header nuking routines.  By setting this variable to ‘'all’,
      you automatically nuke all mail headers.  Likewise, setting this
      variable to ‘'none’ inhibits nuking of any mail headers.  In
      between these extremes, you can tell Supercite to nuke only a
      specified list of mail headers by setting this variable to
      ‘'specified’, or to keep only a specified list of headers by
      setting it to ‘'keep’.
 
      If ‘sc-nuke-mail-headers’ is set to ‘'specified’ or ‘'keep’, then
      the variable ‘sc-nuke-mail-header-list’ is consulted for the list
      of headers to nuke or keep.  This variable contains a list of
      regular expressions.  If the mail header line matches a regular
      expression in this list, the header will be nuked or kept.  The
      line is matched against the regexp using ‘looking-at’ rooted at the
      beginning of the line.
 
      If the variable ‘sc-blank-lines-after-headers’ is non-‘nil’, it
      contains the number of blank lines remaining in the buffer after
      mail headers are nuked.  By default, only one blank line is left in
      the buffer.
 
   6. _Selects the attribution and citation strings._  Once the mail
      headers have been processed, Supercite selects a attribution string
      and a citation string which it will use to cite the original
      message.  SeeSelecting an Attribution, for details.
 
   7. _Cites the message body._  After the selection of the attribution
      and citation strings, Supercite cites the original message by
      inserting the citation string prefix in front of every uncited
      line.  You may not want Supercite to automatically cite very long
      messages however.  For example, some email could contain a smaller
      header section followed by a huge uuencoded message.  It wouldn’t
      make sense to cite the uuencoded message part when responding to
      the original author’s short preface.  For this reason, Supercite
      provides a variable which limits the automatic citation of long
      messages to a certain maximum number of lines.  The variable is
      called ‘sc-cite-region-limit’.  If this variable contains an
      integer, messages with more lines that this will not be cited at
      all, and a warning message will be displayed.  Supercite has
      performed everything necessary, though, for you to manually cite
      only the small portion of the original message that you want to
      use.
 
      If ‘sc-cite-region-limit’ contains a non-‘nil’ value, the original
      message will always be cited, regardless of its size.  If the
      variable contains the value ‘nil’, the region will never be cited
      automatically.  Use this if you always want to be able to edit and
      cite the message manually.
 
      The variable ‘sc-cite-blank-lines-p’ controls whether blank lines
      in the original message should be cited or not.  If this variable
      is non-‘nil’, blank lines will be cited just like non-blank lines.
      Otherwise, blank lines will be treated as paragraph separators.
 
      Citing of the original message is highly configurable.  Supercite’s
      default setup does a pretty good job of citing many common forms of
      previously cited messages.  But there are as many citation styles
      out there as people on the net, or just about!  It would be
      impossible for Supercite to anticipate every style in existence,
      and you probably wouldn’t encounter them all anyway.  But you can
      configure Supercite to recognize those styles you see often.  See
      Configuring the Citation Engine, for details.
 
   8. _Runs ‘sc-post-hook’._  This variable is very similar to
      ‘sc-pre-hook’, except that it runs after ‘sc-cite-original’ is
      finished.  This hook is provided mostly for completeness and
      backward compatibility.  Perhaps it could be used to reset certain
      variables set in ‘sc-pre-hook’.