sc-cite-original performs the following steps as it
initializes the reply buffer:
sc-pre-hook. This hook variable is run before
sc-cite-originaldoes 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).
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 keybindings in many MUAs.
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-headerscontrols 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
'noneinhibits 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
sc-nuke-mail-headersis set to
'keep, then the variable
sc-nuke-mail-header-listis 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-atrooted at the beginning of the line. If the variable
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.
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-limitcontains a non-
nilvalue, 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-pcontrols 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 section Configuring the Citation Engine for details.
sc-post-hook. This variable is very similar to
sc-pre-hook, except that it runs after
sc-cite-originalis finished. This hook is provided mostly for completeness and backward compatibility. Perhaps it could be used to reset certain variables set in
Supercite will automatically fill newly cited text from the original
message unless the variable
sc-auto-fill-region-p has a
nil value. Supercite will also re-fill paragraphs when you
manually cite or re-cite text.
However, during normal editing, Supercite itself cannot be used to fill
paragraphs. This is a change from version 2. There are other add-on
lisp packages which do filling much better than Supercite ever did. The
two best known are filladapt and gin-mode. Both work well
with Supercite and both are available at the normal Emacs Lisp archive
sites. gin-mode works pretty well out of the box, but if you use
filladapt, you may want to run the function
sc-setup-filladapt from your
sc-load-hook. This simply
makes filladapt a little more Supercite savvy than its default
Also, Supercite will collapse leading whitespace between the citation
string and the text on a line when the variable
sc-fixup-whitespace-p is non-
nil. The default value for
this variable is
Its important to understand that Supercite's automatic filling (during
the initial citation of the reply) is very fragile. That is because
figuring out the
fill-prefix for a particular paragraph is a
really hard thing to do automatically. This is especially the case when
the original message contains code or some other text where leading
whitespace is important to preserve. For this reason, many Supercite
users typically run with
sc-auto-fill-region-p (and possibly also
sc-fixup-whitespace-p) set to
nil. They then manually
fill each cited paragraph in the reply buffer.
I usually run with both these variables containing their default values. When Supercite's automatic filling breaks on a particular message, I will use Emacs' undo feature to undo back before the citation was applied to the original message. Then I'll toggle the variables and manually cite those paragraphs that I don't want to fill or collapse whitespace on. See section Variable Toggling Shortcuts.
If you find that Supercite's automatic filling is just too fragile for
your tastes, you might consider one of these alternate approaches.
Also, to make life easier, a shortcut function to toggle the state of
both of these variables is provided on the key binding
C-c C-p C-p (with the default value of
see section Post-yank Formatting Commands).
You will noticed that the minor mode string will
show the state of these variables as qualifier characters. When both
nil, the Supercite minor mode string will display
`SC'. When just
sc-auto-fill-region-p is non-
string will display `SC:f', and when just
sc-fixup-whitespace-p is non-
nil, the string will display
`SC:w'. When both variables are non-
nil, the string will
display `SC:fw'. Note that the qualifiers chosen are mnemonics for
the default bindings of the toggling function for each respective
See section Variable Toggling Shortcuts.
Why are these variables not set to
nil by default? It is because
many users won't manually fill paragraphs that are Supercited, and there
have been widespread complaints on the net about mail and news messages
containing lines greater than about 72 characters. So the default is to
fill cited text.