A citation is the acknowledgement of the original author of a mail message in the body of the reply. There are two basic citation styles which Supercite supports. The first, called nested citations is an anonymous form of citation; in other words, an indication is made that the cited line was written by someone other that the current message author (i.e., other than you, the person composing the reply), but no reference is made as to the identity of the original author. This style should look familiar since its use on the net is widespread. Here's an example of what a message buffer would look like using nested citations after multiple replies:
>> John originally wrote this >> and this as well > Jane said that John didn't know > what he was talking about And that's what I think too.
Note that multiple inclusions of the original messages result in a
nesting of the `>
' characters. This can sometimes be quite
confusing when many levels of citations are included since it may be
difficult or impossible to figure out who actually participated in the
thread, and multiple nesting of `>
' characters can sometimes
make the message very difficult for the eye to scan.
In non-nested citations, each cited line begins with an informative string attributing that line to the original author. Only the first level of attribution will be shown; subsequent citations don't nest the citation strings. The above dialog might look like this when non-nested citations are used:
John> John originally wrote this John> and this as well Jane> Jane said that John didn't know Jane> what he was talking about And that's what I think too.
Notice here that my inclusion of Jane's inclusion of John's original message did not result in a line cited with `Jane>John>'.
Supercite supports both styles of citation, and the variable
sc-nested-citation-p
controls which style it will use when citing
previously uncited text. When this variable is nil
(the default),
non-nested citations are used. When non-nil
, nested citations
are used.
Citation strings are composed of one or more elements. Non-nested citations are composed of four elements, three of which are directly user definable. The elements are concatenated together, in this order:
sc-citation-leader
, and has the default value of a
string containing four spaces.
sc-citation-delimiter
visually separates the citation from the
text of the line. This variable has a default value of ">"
and
for best results, the string should consist of only a single character.
sc-citation-separator
, and has the default value of
a string containing a single space.
For example, suppose you were using the default values for the above
variables, and Supercite provided the attribution string `Jane'.
In this case, the composed, non-nested citation string used might be
something like
" Jane> "
.
This citation string will be inserted in front of
every line in the original message that is not already cited.
Nested citations, being simpler than non-nested citations, are composed of the same elements, sans the attribution string. Supercite is smart enough to not put additional spaces between citation delimiters for multi-level nested citations.
Supercite also recognizes citations in the original article, and can transform these already cited lines in a number of ways. This is how Supercite suppresses the multiple citing of non-nested citations. Recognition of cited lines is controlled by variables analogous to those that make up the citation string as mentioned previously.
The variable sc-citation-leader-regexp
describes how citation
leaders can look, by default it matches any number of spaces or tabs.
Note that since the lisp function looking-at
is used to do the
matching, if you change this variable it need not start with a leading
"^"
.
Similarly, the variables sc-citation-delimiter-regexp
and
sc-citation-separator-regexp
respectively describe how citation
delimiters and separators can look. They follow the same rule as
sc-citation-leader-regexp
above.
When Supercite composes a citation string, it provides the attribution
automatically. The analogous variable which handles recognition of the
attribution part of citation strings is sc-citation-root-regexp
.
This variable describes the attribution root for both nested and
non-nested citations. By default it can match zero-to-many alphanumeric
characters (also ".", "-", and "_"). But in some situations,
Supercite has to determine whether it is looking at a nested or
non-nested citation. Thus the variable
sc-citation-nonnested-root-regexp
is used to describe only
non-nested citation roots. It is important to remember that if you
change sc-citation-root-regexp
you should always also change
sc-citation-nonnested-root-regexp
.
Nemacs users: For best results, try setting
sc-citation-root-regexp
to:
"\\([-._a-zA-Z0-9]\\|\\cc\\|\\cC\\|\\ch\\|\\cH\\|\\ck\\|\\cK\\|\\ca\\|\\cg\\|\\cr\\|\\cu\\)*"
Mule users: For best results, try setting
sc-citation-root-regexp
to:
"\\([-._a-zA-Z0-9]\\|\\cj\\)*"