In June of 1989, some discussion was held between the various MUA authors, the Supercite author, and other Supercite users. These discussions centered around the need for a standard interface between MUAs and Supercite (or any future Supercite-like packages). This interface was formally proposed by Martin Neitzel on Fri, 23 Jun 89, in a mail message to the Supercite mailing list:
Martin> Each news/mail-reader should provide a form of Martin> mail-yank-original that Martin> 1: inserts the original message incl. header into the Martin> reply buffer; no indentation/prefixing is done, the header Martin> tends to be a "full blown" version rather than to be Martin> stripped down. Martin> 2: `point' is at the start of the header, `mark' at the Martin> end of the message body. Martin> 3: (run-hooks 'mail-yank-hooks) Martin> [Supercite] should be run as such a hook and merely Martin> rewrite the message. This way it isn't anymore Martin> [Supercite]'s job to gather the original from obscure Martin> sources. [...]
This specification was adopted, but with the recent release of
Emacs 19, it has undergone a slight modification. Instead of the
mail-yank-hooks, the new preferred hook variable that
the MUA should provide is
mail-yank-hooks can be provided for backward compatibility, but
mail-citation-hook should always take precedence. Richard
Stallman (of the FSF) suggests that the MUAs should
nil and perform some default citing
when that is the case. Take a look at Emacs 19's `sendmail.el'
file, specifically the
mail-yank-original defun for
If you are writing a new MUA package, or maintaining an existing MUA package, you should make it conform to this interface so that your users will be able to link Supercite easily and seamlessly. To do this, when setting up a reply or forward buffer, your MUA should follow these steps:
mail-header-separatorline and one copy below, however there will probably be more headers below this line.
mail-citation-hook. You will probably want to provide some kind of default citation functions in cases where the user does not have Supercite installed. By default, your MUA should
nil, and in your yanking function, check its value. If it finds
nil, it should perform some default citing behavior. User who want to connect to Supercite then need only add
sc-cite-originalto this list of hooks using
If you do all this, your users will not need to overload your routines to use Supercite, and your MUA will join the ranks of those that conform to this interface "out of the box."