Add 2007 to copyright years.
[bpt/emacs.git] / man / sc.texi
CommitLineData
6bf7aab6
DL
1\input texinfo @comment -*-texinfo-*-
2@comment 3.47
3@comment %**start of header (This is for running Texinfo on a region.)
4@setfilename ../info/sc
5@settitle Supercite Version 3.1 User's Manual
6@iftex
7@finalout
8@end iftex
9
6bf7aab6
DL
10@c @setchapternewpage odd % For book style double sided manual.
11@comment %**end of header (This is for running Texinfo on a region.)
18f952d5
KB
12
13@copying
6bf7aab6
DL
14This document describes the Supercite Version 3.1 package for citing and
15attributing the replies for various GNU Emacs mail and news reading
16subsystems.
17
b65d8176 18Copyright @copyright{} 1993, 2001, 2002, 2003, 2004,
4e6835db 192005, 2006, 2007 Free Software Foundation, Inc.
6bf7aab6 20
18f952d5 21@quotation
d4f9443d 22Permission is granted to copy, distribute and/or modify this document
678e7c71 23under the terms of the GNU Free Documentation License, Version 1.2 or
d4f9443d
GM
24any later version published by the Free Software Foundation; with no
25Invariant Sections, with the Front-Cover texts being ``A GNU
26Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
27license is included in the section entitled ``GNU Free Documentation
28License'' in the Emacs manual.
6bf7aab6 29
d4f9443d
GM
30(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
31this GNU Manual, like GNU software. Copies published by the Free
32Software Foundation raise funds for GNU development.''
6bf7aab6 33
d4f9443d
GM
34This document is part of a collection distributed under the GNU Free
35Documentation License. If you want to distribute this document
36separately from the collection, you can do so by adding a copy of the
37license to the document, as described in section 6 of the license.
18f952d5
KB
38@end quotation
39@end copying
40
41@c @smallbook
42
43@dircategory Emacs
44@direntry
177c0ea7 45* SC: (sc). Supercite lets you cite parts of messages you're
18f952d5
KB
46 replying to, in flexible ways.
47@end direntry
48
6bf7aab6
DL
49@titlepage
50@sp 6
51@center @titlefont{Supercite User's Manual}
52@sp 2
53@center @titlefont{Supercite Version 3.1}
54@sp 4
55@center Manual Revision: 3.47
56@center August 1993
57@sp 5
58@center Barry A@. Warsaw
59@center @t{bwarsaw@@cen.com}
60@center @t{@dots{}!uunet!cen.com!bwarsaw}
61@page
62@vskip 0pt plus 1filll
18f952d5 63@insertcopying
6bf7aab6 64@end titlepage
18f952d5
KB
65
66@ifnottex
6bf7aab6
DL
67@node Top, Introduction, (dir), (dir)
68@comment node-name, next, previous, up
69
70This document describes the Supercite Version 3.1 package for citing and
71attributing the replies for various GNU Emacs mail and news reading
72subsystems. The manual is divided into the following chapters.
73
74@menu
75* Introduction::
76* Citations::
77* Getting Connected::
78* Replying and Yanking::
79* Selecting an Attribution::
80* Configuring the Citation Engine::
81* Post-yank Formatting Commands::
82* Information Keys and the Info Alist::
83* Reference Headers::
84* Hints to MUA Authors::
85* Version 3 Changes::
86* Thanks and History::
87* The Supercite Mailing List::
88
89* Concept Index::
90* Command Index::
91* Key Index::
92* Variable Index::
93@end menu
18f952d5
KB
94@end ifnottex
95
6bf7aab6
DL
96
97@node Introduction, Usage Overview, Top, Top
98@comment node-name, next, previous, up
99@chapter Introduction
100@ifinfo
101
102@end ifinfo
103Supercite version 3.1 is a GNU Emacs package written entirely in Emacs
104Lisp. It interfaces to most of the commonly used Emacs mail user agents
105(@dfn{MUAs}) and news user agents (@dfn{NUAs}), and provides
106sophisticated facilities for the citing and attributing of message
107replies. Supercite has a very specific and limited role in the process
108of composing replies to both USENET network news and electronic mail.
109
110The preferred way to spell Supercite is with a capital @samp{S},
111lowercase @samp{upercite}. There are a few alternate spellings out there
112and I won't be terribly offended if you use them. People often ask
113though@dots{}
114
115@ifinfo
116@menu
117* Usage Overview::
118* What Supercite Does Not Do::
119* What Supercite Does::
120@end menu
121@end ifinfo
122
123@cindex MUA
124@cindex NUA
125Supercite is only useful in conjunction with MUAs and NUAs such as VM,
126GNUS, RMAIL, etc@. (hereafter referred to collectively as MUAs).
127Supercite is typically called by the MUA after a reply buffer has been
128setup. Thereafter, Supercite's many commands and formatting styles are
129available in that reply buffer until the reply is sent. Supercite is
130re-initialized in each new reply buffer.
131
132Supercite is currently at major revision 3.1, and is known to work in the
133following environments:
134
135@table @asis
136@item Emacs versions:
137 GNU Emacs 18.57 through 18.59, all Emacs 19,
138 all current Lucid Emacs, and Epoch 4.@refill
139
140@item MUAs:
141 VM 4.37 and beyond (including VM version 5), RMAIL, MH-E 3.7 and
142 beyond, PCMAIL.@refill
143
144@item NUAs:
145 RNEWS, GNUS 3.12 and beyond, GNEWS.@refill
146
147@end table
148For systems with version numbers, all known subsequent versions also
149work with Supercite. For those systems without version numbers,
150Supercite probably works with any recently released version. Note that
151only some of these systems will work with Supercite ``out of the box.''
152All others must overload interfacing routines to supply the necessary
153glue. @xref{Getting Connected}, for more details.@refill
154
155
156@node Usage Overview, What Supercite Does Not Do, Introduction, Introduction
157@comment node-name, next, previous, up
158@kindex r
159@kindex f
160@kindex C-c C-y
161@cindex yank
162@cindex cite, citing
163@cindex attribute, attributing
164@comment
165@section Usage Overview
166@ifinfo
167
168@end ifinfo
169Typical usage is as follows. You want to reply or followup to a message
170in your MUA. You will probably hit @kbd{r} (i.e., ``reply'') or @kbd{f}
171(i.e., ``forward'') to begin composing the reply. In response, the MUA
172will create a reply buffer and initialize the outgoing mail headers
173appropriately. The body of the reply will usually be empty at this
174point. You now decide that you would like to include part of the
175original message in your reply. To do this, you @dfn{yank} the original
176message into the reply buffer, typically with a key stroke such as
177@kbd{C-c C-y}. This sequence will invoke an MUA-specific function which
178fills the body of the reply with the original message and then
179@dfn{attributes} this text to its author. This is called @dfn{citing}
180and its effect is to prefix every line from the original message with a
181special text tag. Most MUAs provide some default style of citing; by
182using Supercite you gain a wider flexibility in the look and style of
183citations. Supercite's only job is to cite the original message.
184
185@node What Supercite Does Not Do, What Supercite Does, Usage Overview, Introduction
186@comment node-name, next, previous, up
187@section What Supercite Doesn't Do
188@ifinfo
189
190@end ifinfo
191Because of this clear division of labor, there are useful features which
192are the sole responsibility of the MUA, even though it might seem that
193Supercite should provide them. For example, many people would like to
194be able to yank (and cite) only a portion of the original message.
195Since Supercite only modifies the text it finds in the reply buffer as
196set up by the MUA, it is the MUA's responsibility to do partial yanking.
197@xref{Reply Buffer Initialization}.@refill
198
199@vindex mail-header-separator
200@comment
201Another potentially useful thing would be for Supercite to set up the
202outgoing mail headers with information it gleans from the reply buffer.
203But by previously agreed upon convention, any text above the
204@code{mail-header-separator} which separates mail headers from message
205bodies cannot be modified by Supercite. Supercite, in fact, doesn't
206know anything about the meaning of these headers, and never ventures
207outside the designated region. @xref{Hints to MUA Authors}, for more
208details.@refill
209
210@node What Supercite Does, Citations, What Supercite Does Not Do, Introduction
211@comment node-name, next, previous, up
212@findex sc-cite-original
213@section What Supercite Does
214@ifinfo
215
216@end ifinfo
217Supercite is invoked for the first time on a reply buffer via your MUA's
218reply or forward command. This command will actually perform citations
219by calling a hook variable to which Supercite's top-level function
220@code{sc-cite-original} has been added. When @code{sc-cite-original} is
221executed, the original message must be set up in a very specific way,
222but this is handled automatically by the MUA. @xref{Hints to MUA
223Authors}.@refill
224
225@cindex info alist
226The first thing Supercite does, via @code{sc-cite-original}, is to parse
227through the original message's mail headers. It saves this data in an
228@dfn{information association list}, or @dfn{info alist}. The information
229in this list is used in a number of places throughout Supercite.
230@xref{Information Keys and the Info Alist}.@refill
231
232@cindex nuking mail headers
233@cindex reference header
234After the mail header info is extracted, the headers are optionally
235removed (@dfn{nuked}) from the reply. Supercite then writes a
236@dfn{reference header} into the buffer. This reference header is a
237string carrying details about the citation it is about to perform.
238
239@cindex modeline
240Next, Supercite visits each line in the reply, transforming the line
44df92db 241according to a customizable ``script.'' Lines which were not previously
6bf7aab6
DL
242cited in the original message are given a citation, while already cited
243lines remain untouched, or are coerced to your preferred style.
244Finally, Supercite installs a keymap into the reply buffer so that you
245have access to Supercite's post-yank formatting and reciting commands as
246you subsequently edit your reply. You can tell that Supercite has been
247installed into the reply buffer because that buffer's modeline will
248display the minor mode string @samp{SC}.
249
250@cindex filladapt
251@cindex gin-mode
252@vindex fill-prefix
253@findex fill-paragraph
254@comment
255When the original message is cited by @code{sc-cite-original}, it will
256(optionally) be filled by Supercite. However, if you manually edit the
257cited text and want to re-fill it, you must use an add-on package such
258as @cite{filladapt} or @cite{gin-mode}. These packages can recognize
259Supercited text and will fill them appropriately. Emacs' built-in
260filling routines, e.g@. @code{fill-paragraph}, do not recognize cited
261text and will not re-fill them properly because it cannot guess the
262@code{fill-prefix} being used.
263@xref{Post-yank Formatting Commands}, for details.@refill
264
265As mentioned above, Supercite provides commands to recite or uncite
266regions of text in the reply buffer, and commands to perform other
267beautifications on the cited original text, maintaining consistent and
268informative citations throughout. Supercite tries to be as configurable
269as possible to allow for a wide range of personalized citation styles,
270but it is also immediately useful with the default configuration, once
271it has been properly connected to your MUA. @xref{Getting Connected},
272for more details.@refill
273
274@node Citations, Citation Elements, What Supercite Does, Top
275@comment node-name, next, previous, up
276@cindex nested citations
277@cindex citation
278@comment
279@chapter Citations
280@ifinfo
281
282@end ifinfo
283A @dfn{citation} is the acknowledgement of the original author of a mail
284message in the body of the reply. There are two basic citation styles
285which Supercite supports. The first, called @dfn{nested citations} is
286an anonymous form of citation; in other words, an indication is made
287that the cited line was written by someone @emph{other} that the current
288message author (i.e., other than you, the person composing the reply),
289but no reference is made as to the identity of the original author.
290This style should look familiar since its use on the net is widespread.
291Here's an example of what a message buffer would look like using nested
292citations after multiple replies:
293
294@example
295>> John originally wrote this
296>> and this as well
297> Jane said that John didn't know
298> what he was talking about
299And that's what I think too.
300@end example
301
302@ifinfo
303@menu
304* Citation Elements::
305* Recognizing Citations::
306@end menu
307@end ifinfo
308
309Note that multiple inclusions of the original messages result in a
310nesting of the @samp{@code{>}} characters. This can sometimes be quite
311confusing when many levels of citations are included since it may be
312difficult or impossible to figure out who actually participated in the
313thread, and multiple nesting of @samp{@code{>}} characters can sometimes
314make the message very difficult for the eye to scan.
315
316@cindex non-nested citations
317In @dfn{non-nested citations}, each cited line begins with an
318informative string attributing that line to the original author. Only
319the first level of attribution will be shown; subsequent citations don't
320nest the citation strings. The above dialog might look like this when
321non-nested citations are used:
322
323@example
324John> John originally wrote this
325John> and this as well
326Jane> Jane said that John didn't know
327Jane> what he was talking about
328And that's what I think too.
329@end example
330
331Notice here that my inclusion of Jane's inclusion of John's original
332message did not result in a line cited with @samp{Jane>John>}.
333
334@vindex sc-nested-citation-p
335@vindex nested-citation-p (sc-)
336Supercite supports both styles of citation, and the variable
337@code{sc-nested-citation-p} controls which style it will use when citing
338previously uncited text. When this variable is @code{nil} (the default),
339non-nested citations are used. When non-@code{nil}, nested citations
340are used.
341
342
343@node Citation Elements, Recognizing Citations, Citations, Citations
344@comment node-name, next, previous, up
345@cindex citation string
346@comment
347@section Citation Elements
348@ifinfo
349
350@end ifinfo
351@dfn{Citation strings} are composed of one or more elements. Non-nested
352citations are composed of four elements, three of which are directly
353user definable. The elements are concatenated together, in this order:
354
355@cindex citation leader
356@vindex citation-leader (sc-)
357@vindex sc-citation-leader
358@enumerate
359@item
360The @dfn{citation leader}. The citation leader is contained in the
361variable @code{sc-citation-leader}, and has the default value of a
362string containing four spaces.
363
364@cindex attribution string
365@item
366The @dfn{attribution string}. This element is supplied automatically by
367Supercite, based on your preferences and the original message's mail
368headers, though you may be asked to confirm Supercite's choice.
369@xref{Selecting an Attribution}, for more details.@refill
370
371@cindex citation delimiter
372@vindex sc-citation-delimiter
373@vindex citation-delimiter (sc-)
374@item
375The @dfn{citation delimiter}. This string, contained in the variable
376@code{sc-citation-delimiter} visually separates the citation from the
377text of the line. This variable has a default value of @code{">"} and
378for best results, the string should consist of only a single character.
379
380@cindex citation separator
381@vindex citation-separator (sc-)
382@vindex sc-citation-separator
383@item
384The @dfn{citation separator}. The citation separator is contained in
385the variable @code{sc-citation-separator}, and has the default value of
386a string containing a single space.
387@end enumerate
388
389For example, suppose you were using the default values for the above
390variables, and Supercite provided the attribution string @samp{Jane}.
391In this case, the composed, non-nested citation string used might be
392something like
393@code{@asis{" Jane> "}}.
394This citation string will be inserted in front of
395every line in the original message that is not already cited.@refill
396
397Nested citations, being simpler than non-nested citations, are composed
398of the same elements, sans the attribution string. Supercite is smart
399enough to not put additional spaces between citation delimiters for
400multi-level nested citations.
401
402@node Recognizing Citations, Getting Connected, Citation Elements, Citations
403@comment node-name, next, previous, up
404@section Recognizing Citations
405@ifinfo
406
407@end ifinfo
408Supercite also recognizes citations in the original article, and can
409transform these already cited lines in a number of ways. This is how
410Supercite suppresses the multiple citing of non-nested citations.
411Recognition of cited lines is controlled by variables analogous to those
412that make up the citation string as mentioned previously.
413
414@vindex sc-citation-leader-regexp
415@vindex citation-leader-regexp (sc-)
416@vindex sc-citation-delimiter-regexp
417@vindex citation-delimiter-regexp (sc-)
418@vindex sc-citation-separator-regexp
419@vindex citation-separator-regexp (sc-)
420@vindex sc-citation-root-regexp
421@vindex citation-root-regexp (sc-)
422@vindex sc-citation-nonnested-root-regexp
423@vindex citation-nonnested-root-regexp (sc-)
424
425The variable @code{sc-citation-leader-regexp} describes how citation
426leaders can look, by default it matches any number of spaces or tabs.
427Note that since the lisp function @code{looking-at} is used to do the
428matching, if you change this variable it need not start with a leading
429@code{"^"}.
430
431Similarly, the variables @code{sc-citation-delimiter-regexp} and
432@code{sc-citation-separator-regexp} respectively describe how citation
433delimiters and separators can look. They follow the same rule as
434@code{sc-citation-leader-regexp} above.
435
436When Supercite composes a citation string, it provides the attribution
437automatically. The analogous variable which handles recognition of the
438attribution part of citation strings is @code{sc-citation-root-regexp}.
439This variable describes the attribution root for both nested and
440non-nested citations. By default it can match zero-to-many alphanumeric
441characters (also ``.'', ``-'', and ``_''). But in some situations,
442Supercite has to determine whether it is looking at a nested or
443non-nested citation. Thus the variable
444@code{sc-citation-nonnested-root-regexp} is used to describe only
445non-nested citation roots. It is important to remember that if you
446change @code{sc-citation-root-regexp} you should always also change
447@code{sc-citation-nonnested-root-regexp}.@refill
448
6bf7aab6
DL
449@node Information Keys and the Info Alist, Reference Headers, Miscellaneous Commands, Top
450@comment node-name, next, previous, up
451@cindex information keys
452@cindex Info Alist
453@cindex information extracted from mail fields
454@findex sc-mail-field
455@findex mail-field (sc-)
456@comment
457@chapter Information Keys and the Info Alist
458@ifinfo
459
460@end ifinfo
461@dfn{Mail header information keys} are nuggets of information that
462Supercite extracts from the various mail headers of the original
463message, placed in the reply buffer by the MUA. Information is kept in
464the @dfn{Info Alist} as key-value pairs, and can be retrieved for use in
465various places within Supercite, such as in header rewrite functions and
466attribution selection. Other bits of data, composed and created by
467Supercite, are also kept as key-value pairs in this alist. In the case
468of mail fields, the key is the name of the field, omitting the trailing
469colon. Info keys are always case insensitive (as are mail headers), and
470the value for a corresponding key can be retrieved from the alist with
471the @code{sc-mail-field} function. Thus, if the following fields were
472present in the original article:@refill
473
474@example
475Date:@: 08 April 1991, 17:32:09 EST
476Subject:@: Better get out your asbestos suit
477@end example
478
479@vindex sc-mumble
480@vindex mumble (sc-)
481@noindent
482then, the following lisp constructs return:
483
484@example
485(sc-mail-field "date")
486==> "08 April 1991, 17:32:09 EST"
487
488(sc-mail-field "subject")
489==> "Better get out your asbestos suit"
490@end example
491
492Since the argument to @code{sc-mail-field} can be any string, it is
493possible that the mail field will not be present on the info alist
494(possibly because the mail header was not present in the original
495message). In this case, @code{sc-mail-field} will return the value of
496the variable @code{sc-mumble}.
497
498Supercite always places all mail fields found in the yanked original
499article into the info alist. If possible, Supercite will also places
500the following keys into the info alist:
501
502@table @code
503@cindex sc-attribution info field
504@cindex attribution info field (sc-)
505@item "sc-attribution"
506the selected attribution string.
507
508@cindex sc-citation info field
509@cindex citation info field (sc-)
510@item "sc-citation"
511the non-nested citation string.
512
513@cindex sc-from-address info field
514@cindex from-address info field (sc-)
515@item "sc-from-address"
516email address extracted from the @samp{From:@:} field.
517
518@cindex sc-reply-address info field
519@cindex reply-address info field (sc-)
520@item "sc-reply-address"
521email address extracted from the @samp{Reply-To:@:} field.
522
523@cindex sc-sender-address info field
524@cindex sender-address info field (sc-)
525@item "sc-sender-address"
526email address extracted from the @samp{Sender:@:} field.
527
528@cindex sc-emailname info field
529@cindex emailname info field (sc-)
530@item "sc-emailname"
531email terminus extracted from the @samp{From:@:} field.
532
533@cindex sc-initials info field
534@cindex initials info field (sc-)
535@item "sc-initials"
536the author's initials.
537
538@cindex sc-author info field
539@cindex author info field (sc-)
540@item "sc-author"
541the author's full name.
542
543@cindex sc-firstname info field
544@cindex firstname info field (sc-)
545@item "sc-firstname"
546the author's first name.
547
548@cindex sc-lastname info field
549@cindex lastname info field (sc-)
550@item "sc-lastname"
551the author's last name.
552
553@cindex sc-middlename-1 info field
554@cindex middlename-1 info field (sc-)
555@item "sc-middlename-1"
556the author's first middle name.
557@end table
558
559If the author's name has more than one middle name, they will appear as
560info keys with the appropriate index (e.g., @code{"sc-middlename-2"},
561@dots{}). @xref{Selecting an Attribution}.@refill
562
563@node Reference Headers, The Built-in Header Rewrite Functions, Information Keys and the Info Alist, Top
564@comment node-name, next, previous, up
565@cindex reference headers
566@chapter Reference Headers
567@ifinfo
568
569@end ifinfo
570Supercite will insert an informative @dfn{reference header} at the
571beginning of the cited body of text, which display more detail about the
572original article and provides the mapping between the attribution and
573the original author in non-nested citations. Whereas the citation
574string usually only contains a portion of the original author's name,
575the reference header can contain such information as the author's full
576name, email address, the original article's subject, etc. In fact any
577information contained in the info alist can be inserted into a reference
578header.
579
580@ifinfo
581@menu
582* The Built-in Header Rewrite Functions::
583* Electric References::
584@end menu
585@end ifinfo
586
587@cindex header rewrite functions
588@vindex sc-rewrite-header-list
589@vindex rewrite-header-list (sc-)
590There are a number of built-in @dfn{header rewrite functions} supplied
591by Supercite, but you can write your own custom header rewrite functions
592(perhaps using the built-in ones as examples). The variable
593@code{sc-rewrite-header-list} contains the list of such header rewrite
594functions. This list is consulted both when inserting the initial
595reference header, and when displaying @dfn{electric references}.
596@xref{Electric References}.
597
598@vindex sc-preferred-header-style
599@vindex preferred-header-style (sc-)
600When Supercite is initially run on a reply buffer (via
601@code{sc-cite-original}), it will automatically call one of these
602functions. The one it uses is defined in the variable
603@code{sc-preferred-header-style}. The value of this variable is an
604integer which is an index into the @code{sc-rewrite-header-list},
605beginning at zero.
606
607@node The Built-in Header Rewrite Functions, Electric References, Reference Headers, Reference Headers
608@comment node-name, next, previous, up
609@cindex header rewrite functions, built-in
610@comment
611@section The Built-in Header Rewrite Functions
612@ifinfo
613
614@end ifinfo
615Below are examples of the various built-in header rewrite functions.
616Please note the following:@: first, the text which appears in the
617examples below as @var{infokey} indicates that the corresponding value
618of the info key from the info alist will be inserted there.
619(@pxref{Information Keys and the Info Alist}). For example, in @code{sc-header-on-said}
620below, @var{date} and @var{from} correspond to the values of the
621@samp{Date:@:} and @samp{From:@:} mail headers respectively.@refill
622
623@vindex sc-reference-tag-string
624@vindex reference-tag-string (sc-)
625Also, the string @code{">>>>>"} below is really the value of the
626variable @code{sc-reference-tag-string}. This variable is used in all
627built-in header rewrite functions, and you can customize its value to
628change the tag string globally.
629
630Finally, the references headers actually written may omit certain parts
631of the header if the info key associated with @var{infokey} is not
632present in the info alist. In fact, for all built-in headers, if the
633@samp{From:@:} field is not present in the mail headers, the entire
634reference header will be omitted (but this usually signals a serious
635problem either in your MUA or in Supercite's installation).
636
637@table @code
638@findex sc-no-header
639@findex no-header (sc-)
640@item sc-no-header
641This function produces no header. It should be used instead of
642@code{nil} to produce a blank header. This header can possibly contain
643a blank line after the @code{mail-header-separator} line.
644
645@item sc-no-blank-line-or-header
646@findex sc-no-blank-line-or-header
647@findex no-blank-line-or-header (sc-)
648This function is similar to @code{sc-no-header} except that any blank
649line after the @code{mail-header-separator} line will be removed.
650
651@item sc-header-on-said
652@findex sc-header-on-said
653@findex header-on-said (sc-)
654@code{>>>>> On @var{date}, @var{from} said:}
655
656@item sc-header-inarticle-writes
657@findex sc-header-inarticle-writes
658@findex header-inarticle-writes (sc-)
659@code{>>>>> In article @var{message-id}, @var{from} writes:}
660
661@item sc-header-regarding-adds
662@findex sc-header-regarding-adds
663@findex header-regarding-adds (sc-)
664@code{>>>>> Regarding @var{subject}; @var{from} adds:}
665
666@item sc-header-attributed-writes
667@findex sc-header-attributed-writes
668@findex header-attributed-writes (sc-)
669@code{>>>>> "@var{sc-attribution}" == @var{sc-author} <@var{sc-reply-address}> writes:}
670
671@item sc-header-author-writes
672@findex sc-header-author-writes
673@findex header-author-writes (sc-)
674@code{>>>>> @var{sc-author} writes:}
675
676@item sc-header-verbose
677@findex sc-header-verbose
678@findex header-verbose (sc-)
679@code{>>>>> On @var{date},}@*
680@code{>>>>> @var{sc-author}}@*
681@code{>>>>> from the organization of @var{organization}}@*
682@code{>>>>> who can be reached at:@: @var{sc-reply-address}}@*
683@code{>>>>> (whose comments are cited below with:@: "@var{sc-cite}")}@*
684@code{>>>>> had this to say in article @var{message-id}}@*
685@code{>>>>> in newsgroups @var{newsgroups}}@*
686@code{>>>>> concerning the subject of @var{subject}}@*
687@code{>>>>> see @var{references} for more details}
688@end table
689
690@node Electric References, Hints to MUA Authors, The Built-in Header Rewrite Functions, Reference Headers
691@comment node-name, next, previous, up
692@cindex electric references
693@section Electric References
694@ifinfo
695
696@end ifinfo
697By default, when Supercite cites the original message for the first
698time, it just goes ahead and inserts the reference header indexed by
699@code{sc-preferred-header-style}. However, you may want to select
700different reference headers based on the type of reply or forwarding you
701are doing. You may also want to preview the reference header before
702deciding whether to insert it into the reply buffer or not. Supercite
703provides an optional @dfn{electric reference} mode which you can drop
704into to give you this functionality.
705
706@vindex sc-electric-references-p
707@vindex electric-references-p (sc-)
708If the variable @code{sc-electric-references-p} is non-@code{nil},
709Supercite will bring up an electric reference mode buffer and place you
710into a recursive edit. The electric reference buffer is read-only, so
711you cannot directly modify the reference text until you exit electric
712references and insert the text into the reply buffer. But you can cycle
713through all the reference header rewrite functions in your
714@code{sc-rewrite-header-list}.
715
716You can also set a new preferred header style, jump to any header, or
717jump to the preferred header. The header will be shown in the electric
718reference buffer and the header index and function name will appear in
719the echo area.
720
721The following commands are available while in electric reference mode
722(shown here with their default key bindings):
723
724@table @asis
725@item @code{sc-eref-next} (@kbd{n})
726@findex sc-eref-next
727@findex eref-next (sc-)
728@kindex n
729@vindex sc-electric-circular-p
730@vindex electric-circular-p (sc-)
731Displays the next reference header in the electric reference buffer. If
732the variable @code{sc-electric-circular-p} is non-@code{nil}, invoking
733@code{sc-eref-next} while viewing the last reference header in the list
734will wrap around to the first header.@refill
735
736@item @code{sc-eref-prev} (@kbd{p})
737@findex sc-eref-prev
738@findex eref-prev (sc-)
739@kindex p
740Displays the previous reference header in the electric reference buffer.
741If the variable @code{sc-electric-circular-p} is non-@code{nil},
742invoking @code{sc-eref-prev} will wrap around to the last header.@refill
743
744@item @code{sc-eref-goto} (@kbd{g})
745@findex sc-eref-goto
746@findex eref-goto (sc-)
747@kindex g
748Goes to a specified reference header. The index (into the
749@code{sc-rewrite-header-list}) can be specified as a numeric argument to
750the command. Otherwise, Supercite will query you for the index in the
751minibuffer.@refill
752
753@item @code{sc-eref-jump} (@kbd{j})
754@findex sc-eref-jump
755@findex eref-jump (sc-)
756@kindex j
757Display the preferred reference header, i.e., the one indexed by the current
758value of @code{sc-preferred-header-style}.
759
760@item @code{sc-eref-setn} (@kbd{s})
761@findex sc-eref-setn
762@findex eref-setn (sc-)
763@kindex s
764Set the preferred reference header (i.e.,
765@code{sc-preferred-header-style}) to the currently displayed header.@refill
766
767@item @code{sc-eref-exit} (@kbd{C-j}, @key{RET}, and @key{ESC C-c})
768@kindex RET
769@kindex C-j
770@kindex q
771@findex sc-eref-exit
772@findex eref-exit (sc-)
773Exit from electric reference mode and insert the current header into the
774reply buffer.@refill
775
776@item @code{sc-eref-abort} (@kbd{q}, @kbd{x})
777@findex sc-eref-abort
778@findex eref-abort (sc-)
779@kindex x
780Exit from electric reference mode without inserting the current header.
781@end table
782
783@vindex sc-electric-mode-hook
784@vindex electric-mode-hook (sc-)
785@noindent
786Supercite will execute the hook @code{sc-electric-mode-hook} before
787entering electric reference mode.
788
789@node Getting Connected, Emacs 19 MUAs, Recognizing Citations, Top
790@comment node-name, next, previous, up
791@cindex citation interface specification
792@chapter Getting Connected
793@ifinfo
794
795@end ifinfo
796Hitting @kbd{C-c C-y} in your MUA's reply buffer yanks and cites the
797original message into the reply buffer. In reality, the citation of the
798original message is performed via a call through a configurable hook
799variable. The name of this variable has been agreed to in advance as
800part of the @dfn{citation interface specification}. By default this
801hook variable has a @code{nil} value, which the MUA recognizes to mean,
44df92db 802``use your default citation function.'' When you add Supercite's
6bf7aab6
DL
803citation function to the hook, thereby giving the variable a
804non-@code{nil} value, it tells the MUA to run the hook via
805@code{run-hooks} instead of using the default citation.@refill
806
807@ifinfo
808@menu
809* Emacs 19 MUAs::
810* Emacs 18 MUAs::
811* MH-E with any Emacsen::
812* VM with any Emacsen::
813* GNEWS with any Emacsen::
814* Overloading for Non-conforming MUAs::
815@end menu
816@end ifinfo
817
818Early in Supercite's development, the Supercite author, a few MUA
819authors, and some early Supercite users got together and agreed upon a
820standard interface between MUAs and citation packages (of which
821Supercite is currently the only known add-on @t{:-)}. With the recent
822release of the Free Software Foundation's GNU Emacs 19, the interface
823has undergone some modification and it is possible that not all MUAs
824support the new interface yet. Some support only the old interface and
825some do not support the interface at all. Still, it is possible for all
826known MUAs to use Supercite, and the following sections will outline the
827procedures you need to follow.
828
829To learn exactly how to connect Supercite to the software systems you
830are using, read the appropriate following sections. For details on the
831interface specifications, or if you are writing or maintaining an MUA,
832@pxref{Hints to MUA Authors}.
833
834@cindex autoload
835@cindex .emacs file
836@findex sc-cite-original
837@findex cite-original (sc-)
838@findex sc-submit-bug-report
839@findex submit-bug-report (sc-)
840The first thing that everyone should do, regardless of the MUA you are
841using is to set up Emacs so it will load Supercite at the appropriate
842time. You can either dump Supercite into your Emacs binary (ask your
843local Emacs guru how to do this if you don't know), or you can set up an
844@dfn{autoload} for Supercite. To do the latter, put the following in
845your @file{.emacs} file:
846
847@example
848(autoload 'sc-cite-original "supercite" "Supercite 3.1" t)
849(autoload 'sc-submit-bug-report "supercite" "Supercite 3.1" t)
850@end example
851
852@cindex point
853@cindex mark
854The function @code{sc-cite-original} is the top-level Supercite function
855designed to be run from the citation hook. It expects
856@samp{point} and @samp{mark} to be set around the region to cite, and it
857expects the original article's mail headers to be present within this
858region. Note that Supercite @emph{never} touches any text outside this
859region. Note further that for Emacs 19, the region need not be active
860for @code{sc-cite-original} to do its job.
861@xref{Hints to MUA Authors}.@refill
862
863The other step in the getting connected process is to make sure your
864MUA calls @code{sc-cite-original} at the right time. As mentioned
865above, some MUAs handle this differently. Read the sections that follow
866pertaining to the MUAs you are using.
867
868@vindex sc-load-hook
869@vindex load-hook (sc-)
870@vindex sc-pre-hook
871@vindex pre-hook (sc-)
872One final note. After Supercite is loaded into your Emacs session, it
873runs the hook @code{sc-load-hook}. You can put any customizations into
874this hook since it is only run once. This will not work, however, if
875your Emacs maintainer has put Supercite into your dumped Emacs' image.
876In that case, you can use the @code{sc-pre-hook} variable, but this will
877get executed every time @code{sc-cite-original} is called. @xref{Reply
878Buffer Initialization}.@refill
879
880@node Emacs 19 MUAs, Emacs 18 MUAs, Getting Connected, Getting Connected
881@comment node-name, next, previous, up
882@vindex mail-citation-hook
883@cindex .emacs file
884@section GNUS, RMAIL, or RNEWS with any Emacs 19
885@ifinfo
886
887@end ifinfo
888These MUAs, distributed with Emacs and with Lucid Emacs, use Emacs's
889built-in yanking facility, which provides the citing hook variable
890@code{mail-citation-hook}. By default, this hook's value is @code{nil},
891but by adding the following to your @file{.emacs} file, you can tell
892these MUAs to use Supercite to perform the citing of the original
893message:
894
895@example
896(add-hook 'mail-citation-hook 'sc-cite-original)
897@end example
898
899GNUS users may also want to add the following bit of lisp as well. This
900prevents GNUS from inserting its default attribution header. Otherwise,
901both GNUS and Supercite will insert an attribution header:
902
903@example
904(setq news-reply-header-hook nil)
905@end example
906
907@node Emacs 18 MUAs, MH-E with any Emacsen, Emacs 19 MUAs, Getting Connected
908@comment node-name, next, previous, up
909@vindex mail-citation-hook
910@cindex .emacs file
911@cindex overloading
912@cindex sendmail.el file
913@section GNUS, RMAIL, PCMAIL, RNEWS with Emacs 18 or Epoch 4
914@ifinfo
915
916@end ifinfo
917These MUAs use Emacs' built-in yanking and citing routines, contained in
918the @file{sendmail.el} file. @file{sendmail.el} for Emacs 18, and its
919derivative Epoch 4, do not know anything about the citation interface
920required by Supercite. To connect Supercite to any of these MUAs under
921Emacs 18 or Epoch 4, you should first
922@pxref{Overloading for Non-conforming MUAs}. Then follow the directions
923for using these MUAs under Emacs 19.
924@xref{Emacs 19 MUAs}.@refill
925
926@cindex add-hook substitute
927@cindex setq as a substitute for add-hook
928@findex setq
929@findex add-hook
930@cindex sc-unsupp.el file
931Note that those instructions will tell you to use the function
932@code{add-hook}. This function is new with Emacs 19 and you will not
933have it by default if you are running Emacs 18 or Epoch 4. You can
934either substitute the appropriate call to @code{setq}, or you can use
935the @code{add-hook} function that is provided in the @file{sc-unsupp.el}
936file of unsupported Supercite hacks and ideas. Or you can upgrade to
937some Emacs 19 variant! @t{:-)}@refill
938
939To use @code{setq} instead of @code{add-hook}, you would, for example,
940change this:
941
942@example
943(add-hook 'mail-citation-hook 'sc-cite-original)
944@end example
945
946to:
947
948@example
949(setq mail-citation-hook 'sc-cite-original)
950@end example
951
c443d1e2 952Note the lack of a single quote on the first argument to @code{setq}.
6bf7aab6
DL
953
954@node MH-E with any Emacsen, VM with any Emacsen, Emacs 18 MUAs, Getting Connected
955@comment node-name, next, previous, up
956@cindex .emacs file
957@vindex mh-yank-hooks
958@findex add-hook
959@cindex mail-citation-hook
960@section MH-E with any Emacsen
961@ifinfo
962
963@end ifinfo
964MH-E 4.x conforms to the @code{mail-citation-hook} interface supported
965by other MUAs. At the time of this writing, MH-E 4.0 has not been
966released, but if you have it, put this in your @file{.emacs} file to
967connect Supercite and MH-E 4.x:
968
969@example
970(add-hook 'mail-citation-hook 'sc-cite-original)
971@end example
972
973Note that if you are using Emacs 18 or Epoch 4, you will not have the
974@code{add-hook} function. @xref{Emacs 18 MUAs}, for details on how to
975proceed without @code{add-hook}.
976
977MH-E version 3.x uses a slightly different interface than other MUAs.
978MH-E provides a hook variable @code{mh-yank-hooks}, but it doesn't act
979like a hook, and doing an @code{add-hook} will not work.
980
981To connect Supercite to MH-E 3.x, you should instead add the following
982to your @code{.emacs} file:
983
984@example
985(add-hook 'mh-yank-hooks 'sc-cite-original)
986@end example
987
988@vindex mh-yank-from-start-of-msg
989You also need to make sure that MH-E includes all the original mail
990headers in the yanked message. The variable that controls this is
991@code{mh-yank-from-start-of-msg}. By default, this variable has the
992value @code{t}, which tells MH-E to include all the mail headers when
993yanking the original message. Before you switched to using Supercite,
994you may have set this variable to other values so as not to include the
995mail headers in the yanked message. Since Supercite requires these
996headers (and cleans them out for you), you need to make sure the value
997is @code{t}. This lisp, in your @file{.emacs} file will do the trick:
998
999@example
1000(setq mh-yank-from-start-of-msg t)
1001@end example
1002
1003Note that versions of MH-E before 3.7 did not provide the
1004@code{mh-yank-hooks} variable. Your only option is to upgrade to MH-E
1005version 3.7 or later.
1006
1007@node VM with any Emacsen, GNEWS with any Emacsen, MH-E with any Emacsen, Getting Connected
1008@comment node-name, next, previous, up
1009@cindex .emacs file
1010@vindex mail-citation-hook
1011@vindex mail-yank-hooks
1012@section VM with any Emacsen
1013@ifinfo
1014
1015@end ifinfo
1016Since release 4.40, VM has supported the citation interface required by
1017Supercite. But since the interface has changed recently the details of
1018getting connected differ with the version of VM you are using.
1019
1020If you are running any release of VM after 4.40, you can add the
1021following to your @file{.emacs} to connect Supercite with VM:
1022
1023@example
1024(add-hook 'mail-yank-hooks 'sc-cite-original)
1025@end example
1026
1027Note that if you are using Emacs 18 or Epoch 4, you will not have the
1028@code{add-hook} function. @xref{Emacs 18 MUAs}, for details on how to
1029proceed without @code{add-hook}.
1030
1031Since version 5.34, VM has supported the newer @code{mail-citation-hook}
1032interface, but @code{mail-yank-hooks} is still being supported for
1033backward compatibility. If you are running a newer version of VM and
1034you want to maintain consistency with other MUAs, use this bit of code
1035instead:
1036
1037@example
1038(add-hook 'mail-citation-hook 'sc-cite-original)
1039@end example
1040
1041@node GNEWS with any Emacsen, Overloading for Non-conforming MUAs, VM with any Emacsen, Getting Connected
1042@comment node-name, next, previous, up@cindex .emacs file
1043@vindex news-reply-mode-hook
1044@findex sc-perform-overloads
1045@findex perform-overloads (sc-)
1046@vindex gnews-ready-hook
1047@section GNEWS with any Emacsen
1048@ifinfo
1049
1050@end ifinfo
1051As far as I know, no version of GNEWS supports the citation interface
1052required by Supercite. To connect Supercite with GNEWS, please first
1053@pxref{Overloading for Non-conforming MUAs}.
1054
1055After you have followed the directions in that section. You should add
1056the following lisp code to your @file{.emacs} file:
1057
1058@example
1059(add-hook 'mail-citation-hook 'sc-cite-original)
1060@end example
1061
1062Note that if you are using Emacs 18 or Epoch 4, you will not have the
1063@code{add-hook} function. @xref{Emacs 18 MUAs}, for details on how to
1064proceed without @code{add-hook}.
1065
1066@node Overloading for Non-conforming MUAs, Replying and Yanking, GNEWS with any Emacsen, Getting Connected
1067@comment node-name, next, previous, up
1068@cindex overloading
1069@cindex sc-oloads.el
1070@vindex mail-citation-hook
1071@findex sc-perform-overloads
1072@cindex .emacs file
1073@section Overloading for Non-conforming MUAs
1074@ifinfo
1075
1076@end ifinfo
1077As mentioned elsewhere, some MUAs do not provide the necessary hooks to
1078connect with Supercite. Supercite version 3.1 provides an unsupported
1079mechanism, called @dfn{overloading} which redefines certain key
1080functions in the MUA, so that it will call the @code{mail-citation-hook}
1081variable instead of the MUA's default hard-coded citing routines. Since
1082most newer versions of the known MUAs support the
1083@code{mail-citation-hook} variable, it is recommended that you upgrade
1084if at all possible. But if you can't upgrade, at least you're not out
1085of luck! Once you set up overloading properly, you should follow the
1086directions for connecting Supercite to the Emacs 19 MUAs.
1087@xref{Emacs 19 MUAs}.@refill
1088
1089@cindex Hyperbole
1090@vindex hyperb:version
1091Users of Bob Weiner's Hyperbole package take note. Hyperbole provides
1092the necessary overloads (and a whole lot more!) and you can potentially
1093clobber it if you were to load Supercite's overloading after
1094Hyperbole's. For this reason, Supercite will @emph{not} perform any
1095overloading if it finds the variable @code{hyperb:version} is
1096@code{boundp} (i.e. it exists because Hyperbole has been loaded into
1097your Emacs session). If this is the case, Supercite will display a
1098warning message in the minibuffer. You should consult the Hyperbole
1099manual for further details.
1100
1101Overloading involves the re-definition of the citing function with the
1102new, @code{mail-citation-hook} savvy version. The function in
1103@file{sc-oloads.el} that does this is @code{sc-perform-overloads}. This
1104function is smart enough to only overload the MUA functions when it is
1105absolutely necessary, based on the version numbers it can figure out.
1106Also, @code{sc-perform-overloads} will only install the new functions
1107once. It is also smart enough to do nothing if the MUA is not yet
1108loaded.@refill
1109
1110The tricky part is finding the right time and place to perform the
1111overloading. It must be done after the MUA has been loaded into your
1112Emacs session, but before the first time you try to yank in a message.
1113Fortunately, this has been figured out for you.
1114
1115If you must overload, you should put the following lisp code in your
1116@file{.emacs} file, to make sure the @file{sc-oloads.el} file gets
1117loaded at the right time:
1118
1119@example
1120(autoload 'sc-perform-overloads "sc-oloads" "Supercite 3.1" t)
1121@end example
1122
1123Then you must make sure that the function @code{sc-perform-overloads}
1124gets run at the right time. For GNUS, put this in your @file{.emacs}
1125file:
1126
1127@example
1128(setq news-reply-mode-hook 'sc-perform-overloads)
1129(setq mail-setup-hook 'sc-perform-overloads)
1130@end example
1131
1132If you are using RNEWS, put this in your @file{.emacs} file:
1133
1134@vindex news-reply-mode-hook
1135@example
1136(setq news-reply-mode-hook 'sc-perform-overloads)
1137@end example
1138
1139If you are using RMAIL or PCMAIL, put this in your @file{.emacs} file:
1140
1141@example
1142(setq mail-setup-hook 'sc-perform-overloads)
1143@end example
1144
1145If you are using GNEWS, put this in your @file{.emacs} file:
1146
1147@example
1148(setq news-reply-mode-hook 'sc-perform-overloads)
1149(setq gnews-ready-hook 'sc-perform-overloads)
1150@end example
1151
1152Now go back and follow the directions for getting the Emacs 19 MUAs
1153connected to Supercite. Be sure to @pxref{Emacs 18 MUAs} on substitutes
1154for Emacs 19's @code{add-hook} function.@refill
1155
1156@node Replying and Yanking, Reply Buffer Initialization, Overloading for Non-conforming MUAs, Top
1157@comment node-name, next, previous, up
1158@chapter Replying and Yanking
1159@ifinfo
1160
1161This chapter explains what happens when you reply and yank an original
1162message from an MUA.
1163
1164@menu
1165* Reply Buffer Initialization::
1166* Filling Cited Text::
1167@end menu
1168@end ifinfo
1169@node Reply Buffer Initialization, Filling Cited Text, Replying and Yanking, Replying and Yanking
1170@comment node-name, next, previous, up
1171@findex sc-cite-original
1172@findex cite-original (sc-)
1173@comment
1174@section Reply Buffer Initialization
1175@ifinfo
1176
1177@end ifinfo
1178Executing @code{sc-cite-original} performs the following steps as it
1179initializes the reply buffer:
1180
1181@enumerate
177c0ea7 1182@item
6bf7aab6
DL
1183@vindex sc-pre-hook
1184@vindex pre-hook (sc-)
1185@emph{Runs @code{sc-pre-hook}.}
1186This hook variable is run before @code{sc-cite-original} does any other
1187work. You could conceivably use this hook to set certain Supercite
1188variables based on the reply buffer's mode or name (i.e., to do
1189something different based on whether you are replying or following up to
1190an article).@refill
1191
1192@item
1193@emph{Inserts Supercite's keymap.}
1194@vindex sc-mode-map-prefix
1195@vindex mode-map-prefix (sc-)
1196@kindex C-c C-p
1197@cindex keymap prefix
1198Supercite provides a number of commands for performing post-yank
1199modifications to the reply buffer. These commands are installed on
1200Supercite's top-level keymap. Since Supercite has to interface with a
1201wide variety of MUAs, it does not install all of its commands directly
1202into the reply buffer's keymap. Instead, it puts its commands on a
1203keymap prefix, then installs this prefix onto the buffer's keymap. What
1204this means is that you typically have to type more characters to invoke
47d7776c 1205a Supercite command, but Supercite's key bindings can be made much more
6bf7aab6
DL
1206consistent across MUAs.
1207
1208You can control what key Supercite uses as its keymap prefix by changing
1209the variable @code{sc-mode-map-prefix}. By default, this variable is
1210set to @code{C-c C-p}; a finger twister perhaps, but unfortunately the
47d7776c 1211best default due to the scarcity of available key bindings in many MUAs.
6bf7aab6
DL
1212
1213@item
1214@emph{Turns on Supercite minor mode.}
1215@cindex modeline
1216The modeline of the reply buffer should indicate that Supercite is
1217active in that buffer by displaying the string @samp{SC}.
1218
1219@item
44df92db 1220@emph{Sets the ``Undo Boundary.''}
6bf7aab6
DL
1221@cindex undo boundary
1222Supercite sets an undo boundary before it begins to modify the original
1223yanked text. This allows you to easily undo Supercite's changes to
1224affect alternative citing styles.
1225
177c0ea7 1226@item
6bf7aab6
DL
1227@emph{Processes the mail headers.}
1228@vindex sc-confirm-always-p
1229@vindex confirm-always-p (sc-)
1230@vindex sc-mail-warn-if-non-rfc822-p
1231@vindex mail-warn-if-non-rfc822-p (sc-)
1232All previously retrieved info key-value pairs are deleted from the info
1233alist, then the mail headers in the body of the yanked message are
1234scanned. Info key-value pairs are created for each header found. Also,
1235such useful information as the author's name and email address are
1236extracted. If the variable @code{sc-mail-warn-if-non-rfc822-p} is
1237non-@code{nil}, then Supercite will warn you if it finds a mail header
1238that does not conform to RFC822. This is rare and indicates a problem
1239either with your MUA or the original author's MUA, or some MTA (mail
1240transport agent) along the way.
1241
1242@vindex sc-nuke-mail-headers
1243@vindex sc-nuke-mail-header-list
1244@vindex nuke-mail-headers (sc-)
1245@vindex nuke-mail-header-list (sc-)
1246Once the info keys have been extracted from the mail headers, the
1247headers are nuked from the reply buffer. You can control exactly which
1248headers are removed or kept, but by default, all headers are removed.
1249
1250There are two variables which control mail header nuking. The variable
1251@code{sc-nuke-mail-headers} controls the overall behavior of the header
1252nuking routines. By setting this variable to @code{'all}, you
1253automatically nuke all mail headers. Likewise, setting this variable to
1254@code{'none} inhibits nuking of any mail headers. In between these
1255extremes, you can tell Supercite to nuke only a specified list of mail
1256headers by setting this variable to @code{'specified}, or to keep only a
1257specified list of headers by setting it to @code{'keep}.
1258
1259If @code{sc-nuke-mail-headers} is set to @code{'specified} or
1260@code{'keep}, then the variable @code{sc-nuke-mail-header-list} is
1261consulted for the list of headers to nuke or keep. This variable
1262contains a list of regular expressions. If the mail header line matches
1263a regular expression in this list, the header will be nuked or kept.
1264The line is matched against the regexp using @code{looking-at} rooted at
1265the beginning of the line.
1266
1267@vindex sc-blank-lines-after-headers
1268@vindex blank-lines-after-headers (sc-)
1269If the variable @code{sc-blank-lines-after-headers} is non-@code{nil},
1270it contains the number of blank lines remaining in the buffer after mail
1271headers are nuked. By default, only one blank line is left in the buffer.
1272
1273@item
1274@emph{Selects the attribution and citation strings.}
1275Once the mail headers have been processed, Supercite selects a
1276attribution string and a citation string which it will use to cite the
1277original message. @xref{Selecting an Attribution}, for details.
1278
177c0ea7 1279@item
6bf7aab6
DL
1280@emph{Cites the message body.}
1281@vindex sc-cite-region-limit
1282@vindex cite-region-limit (sc-)b
1283After the selection of the attribution and citation strings, Supercite
1284cites the original message by inserting the citation string prefix in
1285front of every uncited line. You may not want Supercite to
1286automatically cite very long messages however. For example, some email
1287could contain a smaller header section followed by a huge uuencoded
1288message. It wouldn't make sense to cite the uuencoded message part when
1289responding to the original author's short preface. For this reason,
1290Supercite provides a variable which limits the automatic citation of
1291long messages to a certain maximum number of lines. The variable is
1292called @code{sc-cite-region-limit}. If this variable contains an
1293integer, messages with more lines that this will not be cited at all,
1294and a warning message will be displayed. Supercite has performed
1295everything necessary, though, for you to manually cite only the small
1296portion of the original message that you want to use.
1297
1298If @code{sc-cite-region-limit} contains a non-@code{nil} value, the
1299original message will always be cited, regardless of its size. If the
1300variable contains the value @code{nil}, the region will never be cited
1301automatically. Use this if you always want to be able to edit and cite
1302the message manually.
1303
1304@vindex sc-cite-blank-lines-p
1305@vindex cite-blank-lines-p (sc-)
1306The variable @code{sc-cite-blank-lines-p} controls whether blank lines
1307in the original message should be cited or not. If this variable is
1308non-@code{nil}, blank lines will be cited just like non-blank lines.
1309Otherwise, blank lines will be treated as paragraph separators.
1310
1311Citing of the original message is highly configurable. Supercite's
1312default setup does a pretty good job of citing many common forms of
1313previously cited messages. But there are as many citation styles out
1314there as people on the net, or just about! It would be impossible for
1315Supercite to anticipate every style in existence, and you probably
1316wouldn't encounter them all anyway. But you can configure Supercite to
1317recognize those styles you see often.
1318@xref{Configuring the Citation Engine}, for details.@refill
1319
177c0ea7 1320@item
6bf7aab6
DL
1321@emph{Runs @code{sc-post-hook}.}
1322@vindex sc-post-hook
1323@vindex post-hook (sc-)
1324This variable is very similar to @code{sc-pre-hook}, except that it runs
1325after @code{sc-cite-original} is finished. This hook is provided mostly
1326for completeness and backward compatibility. Perhaps it could be used to
1327reset certain variables set in @code{sc-pre-hook}.@refill
1328@end enumerate
1329
1330@node Filling Cited Text, Selecting an Attribution, Reply Buffer Initialization, Replying and Yanking
1331@comment node-name, next, previous, up
1332@cindex filling paragraphs
1333@vindex sc-auto-fill-region-p
1334@vindex auto-fill-region-p (sc-)
1335@cindex filladapt
1336@cindex gin-mode
1337@findex sc-setup-filladapt
1338@findex setup-filladapt (sc-)
1339@vindex sc-load-hook
1340@vindex load-hook (sc-)
1341@section Filling Cited Text
1342@ifinfo
1343
1344@end ifinfo
1345Supercite will automatically fill newly cited text from the original
1346message unless the variable @code{sc-auto-fill-region-p} has a
1347@code{nil} value. Supercite will also re-fill paragraphs when you
1348manually cite or re-cite text.
1349
1350However, during normal editing, Supercite itself cannot be used to fill
1351paragraphs. This is a change from version 2. There are other add-on
1352lisp packages which do filling much better than Supercite ever did. The
1353two best known are @dfn{filladapt} and @dfn{gin-mode}. Both work well
1354with Supercite and both are available at the normal Emacs Lisp archive
1355sites. @dfn{gin-mode} works pretty well out of the box, but if you use
1356@dfn{filladapt}, you may want to run the function
1357@code{sc-setup-filladapt} from your @code{sc-load-hook}. This simply
1358makes @dfn{filladapt} a little more Supercite savvy than its default
1359setup.
1360
1361@vindex sc-fixup-whitespace-p
1362@vindex fixup-whitespace-p (sc-)
1363Also, Supercite will collapse leading whitespace between the citation
1364string and the text on a line when the variable
1365@code{sc-fixup-whitespace-p} is non-@code{nil}. The default value for
1366this variable is @code{nil}.@refill
1367
1368@vindex fill-prefix
1369Its important to understand that Supercite's automatic filling (during
1370the initial citation of the reply) is very fragile. That is because
1371figuring out the @code{fill-prefix} for a particular paragraph is a
1372really hard thing to do automatically. This is especially the case when
1373the original message contains code or some other text where leading
1374whitespace is important to preserve. For this reason, many Supercite
1375users typically run with @code{sc-auto-fill-region-p} (and possibly also
1376@code{sc-fixup-whitespace-p}) set to @code{nil}. They then manually
1377fill each cited paragraph in the reply buffer.
1378
1379I usually run with both these variables containing their default values.
1380When Supercite's automatic filling breaks on a particular message, I
1381will use Emacs' undo feature to undo back before the citation was
1382applied to the original message. Then I'll toggle the variables and
1383manually cite those paragraphs that I don't want to fill or collapse
1384whitespace on. @xref{Variable Toggling Shortcuts}.@refill
1385
1386@kindex C-c C-p C-p
1387If you find that Supercite's automatic filling is just too fragile for
1388your tastes, you might consider one of these alternate approaches.
1389Also, to make life easier, a shortcut function to toggle the state of
1390both of these variables is provided on the key binding
1391@kbd{C-c C-p C-p} (with the default value of @code{sc-mode-map-prefix};
1392@pxref{Post-yank Formatting Commands}).@refill
1393
1394You will noticed that the minor mode string will
1395show the state of these variables as qualifier characters. When both
1396variables are @code{nil}, the Supercite minor mode string will display
1397@samp{SC}. When just @code{sc-auto-fill-region-p} is non-@code{nil}, the
1398string will display @samp{SC:f}, and when just
1399@code{sc-fixup-whitespace-p} is non-@code{nil}, the string will display
1400@samp{SC:w}. When both variables are non-@code{nil}, the string will
1401display @samp{SC:fw}. Note that the qualifiers chosen are mnemonics for
1402the default bindings of the toggling function for each respective
1403variable.
1404@xref{Variable Toggling Shortcuts}.@refill
1405
1406Why are these variables not set to @code{nil} by default? It is because
1407many users won't manually fill paragraphs that are Supercited, and there
1408have been widespread complaints on the net about mail and news messages
1409containing lines greater than about 72 characters. So the default is to
1410fill cited text.
1411
1412@node Selecting an Attribution, Attribution Preferences, Filling Cited Text, Top
1413@comment node-name, next, previous, up
1414@cindex attribution list
1415@vindex sc-preferred-attribution-list
1416@vindex preferred-attribution-list (sc-)
1417@comment
1418@chapter Selecting an Attribution
1419@ifinfo
1420
1421@end ifinfo
1422As you know, the attribution string is the part of the author's name
1423that will be used to composed a non-nested citation string. Supercite
1424scans the various mail headers present in the original article and uses
1425a number of heuristics to extract strings which it puts into the
1426@dfn{attribution association list} or @dfn{attribution alist}. This is
1427analogous, but different than, the info alist previously mentioned. Each
1428element in the attribution alist is a key-value pair containing such
1429information as the author's first name, middle names, and last name, the
1430author's initials, and the author's email terminus.
1431
1432@ifinfo
1433@menu
1434* Attribution Preferences::
1435* Anonymous Attributions::
1436* Author Names::
1437@end menu
1438@end ifinfo
1439
1440@node Attribution Preferences, Anonymous Attributions, Selecting an Attribution, Selecting an Attribution
1441@comment node-name, next, previous, up
1442@section Attribution Preferences
1443@ifinfo
1444
1445@end ifinfo
1446When you cite an original message, you can tell Supercite which part of
1447the author's name you would prefer it to use as the attribution. The
1448variable @code{sc-preferred-attribution-list} controls this; it contains
1449keys which are matched against the attribution alist in the given order.
1450The first value of a key that produces a non-@code{nil}, non-empty
1451string match is used as the attribution string, and if no keys match, a
1452secondary mechanism is used to generate the attribution.
1453@xref{Anonymous Attributions}.
1454
1455The following preferences are always available in the attribution alist
1456(barring error):
1457
1458@table @code
1459@item "emailname"
1460the author's email terminus.
1461
1462@item "initials"
1463the author's initials.
1464
1465@item "firstname"
1466the author's first name.
1467
1468@item "lastname"
1469the author's last name.
1470
1471@item "middlename-1"
1472the author's first middle name.
1473
1474@item "sc-lastchoice"
1475the last attribution string you have selected. This is useful when you
1476recite paragraphs in the reply.@refill
1477
1478@item "sc-consult"
1479@vindex sc-attrib-selection-list
1480@vindex attrib-selection-list (sc-)
1481consults the customizable list @code{sc-attrib-selection-list} which can
1482be used to select special attributions based on the value of any info
1483key. See below for details.
1484
1485@item "x-attribution"
1486the original author's suggestion for attribution string choice. See below
1487for details.@refill
1488@end table
1489
1490Middle name indexes can be any positive integer greater than zero,
1491though it is unlikely that many authors will have more than one middle
1492name, if that many.
1493
1494At this point, let me digress into a discussion of etiquette. It is my
1495belief that while the style of the citations is a reflection of the
1496personal tastes of the replier (i.e., you), the attribution selection is
1497ultimately the personal choice of the original author. In a sense it is
1498his or her ``net nickname'', and therefore the author should have some
1499say in the selection of attribution string. Imagine how you would feel
1500if someone gave you a nickname that you didn't like?
1501
1502For this reason, Supercite recognizes a special mail header,
1503@samp{X-Attribution:}, which if present, tells Supercite the attribution
1504string preferred by the original author. It is the value of this header
1505that is associated with the @code{"x-attribution"} key in the
1506attribution alist. Currently, you can override the preference of this
1507key by changing @code{sc-preferred-attribution-list}, but that isn't
1508polite, and in the future Supercite may hard-code this. For now, it is
1509suggested that if you change the order of the keys in this list, that
1510@code{"x-attribution"} always be first, or possible second behind only
1511@code{"sc-lastchoice"}. This latter is the default.
1512
1513@vindex sc-attrib-selection-list
1514@vindex attrib-selection-list (sc-)
1515The value @code{"sc-consult"} in @code{sc-preferred-attribution-list}
1516has a special meaning during attribution selection. When Supercite
1517encounters this preference, it begins processing a customizable list of
1518attributions, contained in the variable @code{sc-attrib-selection-list}.
1519Each element in this list contains lists of the following form:
1520
1521@example
1522@group
1523(@var{infokey} ((@var{regexp} @. @var{attribution})
1524 (@var{regexp} @. @var{attribution})
1525 (@dots{})))
1526@end group
1527@end example
1528
1529@noindent
1530@findex sc-mail-field
1531@findex mail-field (sc-)
1532where @var{infokey} is a key for @code{sc-mail-field} and @var{regexp}
1533is a regular expression to match against the @var{infokey}'s value. If
1534@var{regexp} matches the @var{infokey}'s value, the @var{attribution} is
1535used as the attribution string. Actually, @var{attribution} can be a
1536string or a list; if it is a list, it is @code{eval}uated and the return
1537value (which must be a string), is used as the attribution.
1538
1539This can be very useful for when you are replying to net acquaintances
1540who do not use the @samp{X-Attribution:@:} mail header. You may know
1541what nickname they would prefer to use, and you can set up this list to
1542match against a specific mail field, e.g., @samp{From:@:}, allowing you
1543to cite your friend's message with the appropriate attribution.
1544
1545@node Anonymous Attributions, Author Names, Attribution Preferences, Selecting an Attribution
1546@comment node-name, next, previous, up
1547@vindex sc-default-author-name
1548@vindex default-author-name (sc-)
1549@vindex sc-default-attribution
1550@vindex default-attribution (sc-)
1551@comment
1552@section Anonymous Attributions
1553@ifinfo
1554
1555@end ifinfo
1556When the author's name cannot be found in the @samp{From:@:} mail
1557header, a fallback author name and attribution string must be supplied.
1558The fallback author name is contained in the variable
1559@code{sc-default-author-name} and the fallback attribution string is
1560contained in the variable @code{sc-default-attribution}. Default values
1561for these variables are @code{"Anonymous"} and @code{"Anon"},
1562respectively. Note that in most circumstances, getting the default
1563author name or attribution is a sign that something is set up
1564incorrectly.
1565
1566@vindex sc-use-only-preference-p
1567@vindex use-only-preference-p (sc-)
1568Also, if the preferred attribution, which you specified in your
6fa0c1a1 1569@code{sc-preferred-attribution-list} variable cannot be found, a
6bf7aab6
DL
1570secondary method can be employed to find a valid attribution string. The
1571variable @code{sc-use-only-preference-p} controls what happens in this
1572case. If the variable's value is non-@code{nil}, then
1573@code{sc-default-author-name} and @code{sc-default-attribution} are
1574used, otherwise, the following steps are taken to find a valid
1575attribution string, and the first step to return a non-@code{nil},
1576non-empty string becomes the attribution:@refill
1577
1578@enumerate
1579@item
1580Use the last selected attribution, if there is one.
1581
1582@item
1583Use the value of the @code{"x-attribution"} key.
1584
177c0ea7 1585@item
6bf7aab6
DL
1586Use the author's first name.
1587
1588@item
1589Use the author's last name.
1590
1591@item
1592Use the author's initials.
1593
177c0ea7 1594@item
6bf7aab6
DL
1595Find the first non-@code{nil}, non-empty attribution string in the
1596attribution alist.
1597
177c0ea7 1598@item
6bf7aab6
DL
1599@code{sc-default-attribution} is used.
1600@end enumerate
1601
1602@vindex sc-confirm-always-p
1603@vindex confirm-always-p (sc-)
1604Once the attribution string has been automatically selected, a number of
1605things can happen. If the variable @code{sc-confirm-always-p} is
1606non-@code{nil}, you are queried for confirmation of the chosen
1607attribution string. The possible values for completion are those strings
1608in the attribution alist, however you are not limited to these choices.
1609You can type any arbitrary string at the confirmation prompt. The string
1610you enter becomes the value associated with the @code{"sc-lastchoice"}
1611key in the attribution alist.
1612
1613@vindex sc-downcase-p
1614@vindex downcase-p (sc-)
1615Once an attribution string has been selected, Supercite will force the
1616string to lower case if the variable @code{sc-downcase-p} is
1617non-@code{nil}.
1618
1619@vindex sc-attribs-preselect-hook
1620@vindex attribs-preselect-hook (sc-)
1621@vindex sc-attribs-postselect-hook
1622@vindex attribs-postselect-hook (sc-)
1623
1624Two hook variables provide even greater control of the attribution
1625selection process. The hook @code{sc-attribs-preselect-hook} is run
1626before any attribution is selected. Likewise, the hook
1627@code{sc-attribs-postselect-hook} is run after the attribution is
1628selected (and the corresponding citation string is built), but before
1629these values are committed for use by Supercite. During the
1630post-selection hook, the local variables @code{attribution} and
1631@code{citation} are bound to the appropriate strings. By changing these
1632variables in your hook functions, you change the attribution and
1633citation strings used by Supercite. One possible use of this would be
1634to override any automatically derived attribution string when it is only
1635one character long; e.g. you prefer to use @code{"initials"} but the
1636author only has one name.@refill
1637
1638@node Author Names, Configuring the Citation Engine, Anonymous Attributions, Selecting an Attribution
1639@comment node-name, next, previous, up
1640@cindex author names
1641@section Author Names
1642@ifinfo
1643
1644@end ifinfo
1645Supercite employs a number of heuristics to decipher the author's name
1646based on value of the @samp{From:@:} mail field of the original message.
1647Supercite can recognize almost all of the common @samp{From:@:} field
1648formats in use. If you encounter a @samp{From:@:} field that Supercite
1649cannot parse, please report this bug.
1650@xref{The Supercite Mailing List}.@refill
1651
1652@vindex sc-titlecue-regexp
1653@vindex titlecue-regexp (sc-)
1654There are a number of Supercite variables that control how author names
1655are extracted from the @samp{From:@:} header. Some headers may contain a
1656descriptive title as in:
1657
1658@example
1659From:@: computer!speedy!doe (John Xavier-Doe -- Decent Hacker)
1660@end example
1661
1662Supercite knows which part of the @samp{From:@:} header is email address
1663and which part is author name, but in this case the string @code{"Decent
1664Hacker"} is not part of the author's name. You can tell Supercite to
1665ignore the title, while still recognizing hyphenated names through the
1666use of a regular expression in the variable @code{sc-titlecue-regexp}.
1667This variable has the default value of @code{"\\\\s +-+\\\\s +"}. Any
1668text after this regexp is encountered is ignored as noise.
1669
1670@vindex sc-name-filter-alist
1671@vindex name-filter-alist (sc-)
1672Some @samp{From:@:} headers may contain extra titles in the name fields
1673not separated by a title cue, but which are nonetheless not part of the
1674author's name proper. Examples include the titles ``Dr.'', ``Mr.'',
1675``Ms.'', ``Jr.'', ``Sr.'', and ``III'' (e.g., Thurston Howe, the Third).
1676Also, some companies prepend or append the name of the division,
1677organization, or project on the author's name. All of these titles are
1678noise which should be ignored. The variable @code{sc-name-filter-alist}
1679is used for this purpose. As implied by its name, this variable is an
1680association list, where each element is a cons cell of the form:
1681
1682@example
1683(@var{regexp} @. @var{position})
1684@end example
1685
1686@noindent
1687where @var{regexp} is a regular expression that is matched (using
1688@code{string-match}) against each element of the @samp{From:@:} field's
1689author name. @var{position} is a position indicator, starting at zero.
1690Thus to strip out all titles of ``Dr.'', ``Mr.'', etc. from the name,
1691@code{sc-name-filter-alist} would have an entry such as:
1692
1693@example
1694("^\\(Mr\\|Mrs\\|Ms\\|Dr\\)[.]?$" @. 0)
1695@end example
1696
1697@noindent
1698which only removes them if they appear as the first word in the name.
1699The position indicator is an integer, or one of the two special symbols
1700@code{last} or @code{any}. @code{last} always matches against the last
1701word in the name field, while @code{any} matches against every word in
1702the name field.
1703
1704@node Configuring the Citation Engine, Using Regi, Author Names, Top
1705@comment node-name, next, previous, up
1706@cindex Regi
1707@cindex frames (Regi)
1708@cindex entries (Regi)
1709@chapter Configuring the Citation Engine
1710@ifinfo
1711
1712@end ifinfo
1713At the heart of Supercite is a regular expression interpreting engine
1714called @dfn{Regi}. Regi operates by interpreting a data structure
1715called a Regi-frame (or just @dfn{frame}), which is a list of
1716Regi-entries (or just @dfn{entry}). Each entry contains a predicate,
1717typically a regular expression, which is matched against a line of text
1718in the current buffer. If the predicate matches true, an associated
1719expression is @code{eval}uated. In this way, an entire region of text
1720can be transformed in an @emph{awk}-like manner. Regi is used
1721throughout Supercite, from mail header information extraction, to header
1722nuking, to citing text.
1723
1724@ifinfo
1725@menu
1726* Using Regi::
1727* Frames You Can Customize::
1728@end menu
1729@end ifinfo
1730
1731While the details of Regi are discussed below (@pxref{Using Regi}), only
1732those who wish to customize certain aspects of Supercite need concern
1733themselves with it. It is important to understand though, that any
1734conceivable citation style that can be described by a regular expression
1735can be recognized by Supercite. This leads to some interesting
1736applications. For example, if you regularly receive email from a
1737co-worker that uses an uncommon citation style (say one that employs a
1738@samp{|} or @samp{@}} character at the front of the line), it is
1739possible for Supercite to recognize this and @emph{coerce} the citation
1740to your preferred style, for consistency. In theory, it is possible for
1741Supercite to recognize such things as uuencoded messages or C code and
1742cite or fill those differently than normal text. None of this is
1743currently part of Supercite, but contributions are welcome!
1744
1745@node Using Regi, Frames You Can Customize, Configuring the Citation Engine, Configuring the Citation Engine
1746@comment node-name, next, previous, up
1747@findex regi-interpret
1748@findex eval
1749@findex looking-at
1750@section Using Regi
1751@ifinfo
1752
1753@end ifinfo
1754Regi works by interpreting frames with the function
1755@code{regi-interpret}. A frame is a list of arbitrary size where each
1756element is a entry of the following form:
1757
1758@example
1759(@var{pred} @var{func} [@var{negate-p} [@var{case-fold-search}]])
1760@end example
1761
1762Regi starts with the first entry in a frame, evaluating the @var{pred}
1763of that entry against the beginning of the line that @samp{point} is on.
1764If the @var{pred} evaluates to true (or false if the optional
1765@var{negate-p} is non-@code{nil}), then the @var{func} for that entry is
1766@code{eval}uated. How processing continues is determined by the return
1767value for @var{func}, and is described below. If @var{pred} was false
1768the next entry in the frame is checked until all entries have been
1769matched against the current line. If no entry matches, @samp{point} is
1770moved forward one line and the frame is reset to the first entry.
1771
1772@var{pred} can be a string, a variable, a list or one of the following
1773symbols: @code{t}, @code{begin}, @code{end}, or @code{every}. If
1774@var{pred} is a string, or a variable or list that @code{eval}uates to a
1775string, it is interpreted as a regular expression. This regexp is
1776matched against the current line, from the beginning, using
1777@code{looking-at}. This match folds case if the optional
1778@var{case-fold-search} is non-@code{nil}. If @var{pred} is not a
1779string, or does not @code{eval}uate to a string, it is interpreted as a
1780binary value (@code{nil} or non-@code{nil}).@refill
1781
1782The four special symbol values for @var{pred} are recognized:
1783
1784@table @code
1785@item t
1786Always produces a true outcome.
1787@item begin
1788Always executed before the frame is interpreted. This can be used to
1789initialize some global variables for example.
1790@item end
1791Always executed after frame interpreting is completed. This can be used
1792to perform any necessary post-processing.
1793@item every
1794Executes whenever the frame is reset, usually after the entire frame has
1795been matched against the current line.
1796@end table
1797
1798Note that @var{negate-p} and @var{case-fold-search} are ignored if
1799@var{pred} is one of these special symbols. Only the first occurrence of
1800each symbol in a frame is used; any duplicates are ignored. Also
1801note that for performance reasons, the entries associated with these
1802symbols are removed from the frame during the main interpreting loop.
1803
1804Your @var{func} can return certain values which control continued Regi
1805processing. By default, if your @var{func} returns @code{nil} (as it
1806should be careful to do explicitly), Regi will reset the frame to the
1807first entry, and advance @samp{point} to the beginning of the next line.
1808If a list is returned from your function, it can contain any combination
1809of the following elements:@refill
1810
1811@table @asis
1812@item the symbol @code{continue}
1813This tells Regi to continue processing entries after a match, instead of
28665d46 1814resetting the frame and moving @samp{point}. In this way, lines of text
6bf7aab6
DL
1815can have multiple matches, but you have to be careful to avoid entering
1816infinite loops.
1817
1818@item the symbol @code{abort}
1819This tells Regi to terminate frame processing. However, any @code{end}
1820entry is still processed.
1821
1822@item the list @code{(frame . @var{newframe})}
1823This tells Regi to substitute @var{newframe} as the frame it is
1824interpreting. In other words, your @var{func} can modify the Regi frame
1825on the fly. @var{newframe} can be a variable containing a frame, or it
1826can be the frame in-lined.@refill
1827
1828@item the list @code{(step . @var{step})}
1829Tells Regi to move @var{step} number of lines forward as it continues
1830processing. By default, Regi moves forward one line. @var{step} can be
1831zero or negative of course, but watch out for infinite loops.@refill
1832@end table
1833
1834During execution of your @var{func}, the following variables will be
1835temporarily bound to some useful information:@refill
1836
1837@table @code
1838@item curline
1839The current line in the buffer that Regi is @code{looking-at}, as a string.
1840@item curframe
1841The current frame being interpreted.
1842@item curentry
1843The current frame entry being interpreted.
1844@end table
1845
1846@node Frames You Can Customize, Post-yank Formatting Commands, Using Regi, Configuring the Citation Engine
1847@comment node-name, next, previous, up
1848@vindex sc-nuke-mail-header
1849@section Frames You Can Customize
1850@ifinfo
1851
1852@end ifinfo
1853As mentioned earlier, Supercite uses various frames to perform
1854certain jobs such as mail header information extraction and mail header
1855nuking. However, these frames are not available for you to customize,
1856except through abstract interfaces such as @code{sc-nuke-mail-header},
1857et al.
1858
1859@vindex sc-default-cite-frame
1860However, the citation frames Supercite uses provide a lot of customizing
1861power and are thus available to you to change to suit your needs. The
1862workhorse of citation is the frame contained in the variable
1863@code{sc-default-cite-frame}. This frame recognizes many situations,
1864such as blank lines, which it interprets as paragraph separators. It
1865also recognizes previously cited nested and non-nested citations in the
1866original message. By default it will coerce non-nested citations into
1867your preferred citation style, and it will add a level of citation to
1868nested citations. It will also simply cite uncited lines in your
1869preferred style.
1870
1871@cindex unciting
1872@cindex reciting
1873@vindex sc-default-uncite-frame
1874@vindex sc-default-recite-frame
1875In a similar vein, there are default frames for @dfn{unciting} and
1876@dfn{reciting}, contained in the variables
1877@code{sc-default-uncite-frame} and @code{sc-default-recite-frame}
1878respectively.@refill
1879
1880As mentioned earlier (@pxref{Recognizing Citations}), citations are
1881recognized through the values of the regular expressions
1882@code{sc-citation-root-regexp}, et al. To recognize odd styles, you
1883could modify these variables, or you could modify the default citing
1884frame. Alternatively, you could set up association lists of frames for
1885recognizing specific alternative forms.
1886
1887@vindex sc-cite-frame-alist
1888@vindex sc-uncite-frame-alist
1889@vindex sc-recite-frame-alist
1890For each of the actions -- citing, unciting, and reciting -- an alist is
1891consulted to find the frame to use (@code{sc-cite-frame-alist},
1892@code{sc-uncite-frame-alist}, and @code{sc-recite-frame-alist}
1893respectively). These frames can contain alists of the form:
1894
1895@example
1896((@var{infokey} (@var{regexp} @. @var{frame}) (@var{regexp} @. @var{frame}) @dots{})
1897 (@var{infokey} (@var{regexp} @. @var{frame}) (@var{regexp} @. @var{frame}) @dots{})
1898 (@dots{}))
1899@end example
1900
1901@vindex sc-mail-field
1902@findex string-match
1903Where @var{infokey} is a key suitable for @code{sc-mail-field},
1904@var{regexp} is a regular expression which is @code{string-match}'d
1905against the value of the @code{sc-mail-field} key, and @var{frame} is
1906the frame to use if a match occurred. @var{frame} can be a variable
1907containing a frame or a frame in-lined.@refill
1908
1909When Supercite is about to cite, uncite, or recite a region, it consults
1910the appropriate alist and attempts to find a frame to use. If one
1911is not found from the alist, then the appropriate default frame is used.
1912
1913@node Post-yank Formatting Commands, Citing Commands, Frames You Can Customize, Top
1914@comment node-name, next, previous, up
1915@vindex sc-mode-map-prefix
1916@vindex mode-map-prefix (sc-)
1917@kindex C-c C-p
1918@chapter Post-yank Formatting Commands
1919@ifinfo
1920
1921@end ifinfo
1922Once the original message has been yanked into the reply buffer, and
1923@code{sc-cite-original} has had a chance to do its thing, a number of
1924useful Supercite commands will be available to you. Since there is wide
1925variety in the keymaps that MUAs set up in their reply buffers, it is
1926next to impossible for Supercite to properly sprinkle its commands into
1927the existing keymap. For this reason Supercite places its commands on a
1928separate keymap, putting this keymap onto a prefix key in the reply
1929buffer. You can customize the prefix key Supercite uses by changing the
1930variable @code{sc-mode-map-prefix}. By default, the
1931@code{sc-mode-map-prefix} is @kbd{C-c C-p}; granted, not a great choice,
1932but unfortunately the best general solution so far. In the rest of this
1933chapter, we'll assume you've installed Supercite's keymap on the default
1934prefix.@refill
1935
1936@ifinfo
1937@menu
1938* Citing Commands::
1939* Insertion Commands::
1940* Variable Toggling Shortcuts::
1941* Mail Field Commands::
1942* Miscellaneous Commands::
1943@end menu
1944@end ifinfo
1945
1946@node Citing Commands, Insertion Commands, Post-yank Formatting Commands, Post-yank Formatting Commands
1947@comment node-name, next, previous, up
1948@vindex sc-cite-region-limit
1949@section Commands to Manually Cite, Recite, and Uncite
1950@ifinfo
1951
1952@end ifinfo
1953Probably the three most common post-yank formatting operations that you
1954will perform will be the manual citing, reciting, and unciting of
1955regions of text in the reply buffer. Often you may want to recite a
1956paragraph to use a nickname, or manually cite a message when setting
1957@code{sc-cite-region-limit} to @code{nil}. The following commands
1958perform these functions on the region of text between @samp{point} and
1959@samp{mark}. Each of them sets the @dfn{undo boundary} before modifying
1960the region so that the command can be undone in the standard Emacs
1961way.@refill
1962
1963A quick note about Emacs 19. Unlike in Emacs 18, the region delimited
1964by @samp{point} and @samp{mark} can have two states. It can be
1965@dfn{active} or @dfn{inactive}. Although Emacs 19 and Lucid Emacs 19
1966use different terminology and functions, both employ the same convention
1967such that when the region is inactive, commands that modify the region
1968should generate an error. The user needs to explicitly activate the
1969region before successfully executing the command. All Supercite
1970commands conform to this convention.
1971
1972Here is the list of Supercite citing commands:
1973
1974@table @asis
1975@findex sc-cite-region
1976@findex cite-region (sc-)
1977@kindex C-c C-p c
1978@vindex sc-pre-cite-hook
1979@vindex pre-cite-hook (sc-)
1980@vindex sc-confirm-always-p
1981@vindex confirm-always-p
1982@kindex C-u
1983@item @code{sc-cite-region} (@kbd{C-c C-p c})
1984@comment
1985This command cites each line in the region of text by interpreting the
1986selected frame from @code{sc-cite-frame-alist}, or the default citing
1987frame @code{sc-default-cite-frame}. It runs the hook
1988@code{sc-pre-cite-hook} before interpreting the frame. With an optional
1989universal argument (@kbd{C-u}), it temporarily sets
1990@code{sc-confirm-always-p} to @code{t} so you can confirm the
1991attribution string for a single manual citing.
1992@xref{Configuring the Citation Engine}.@refill
1993
1994@findex sc-uncite-region
1995@findex uncite-region (sc-)
1996@kindex C-c C-p u
1997@item @code{sc-uncite-region} (@kbd{C-c C-p u})
1998@comment
1999This command removes any citation strings from the beginning of each
2000cited line in the region by interpreting the selected frame from
2001@code{sc-uncite-frame-alist}, or the default unciting frame
2002@code{sc-default-uncite-frame}. It runs the hook
2003@code{sc-pre-uncite-hook} before interpreting the frame.
2004@xref{Configuring the Citation Engine}.@refill
2005
2006@findex sc-recite-region
2007@findex recite-region (sc-)
2008@kindex C-c C-p r
2009@item @code{sc-recite-region} (@kbd{C-c C-p r})
2010@comment
2011This command recites each line the region by interpreting the selected
2012frame from @code{sc-recite-frame-alist}, or the default reciting frame
2013@code{sc-default-recite-frame}. It runs the hook
2014@code{sc-pre-recite-hook} before interpreting the frame.
2015@xref{Configuring the Citation Engine}.@refill
2016
2017@vindex sc-confirm-always-p
2018@vindex confirm-always-p (sc-)
2019Supercite will always ask you to confirm the attribution when reciting a
2020region, regardless of the value of @code{sc-confirm-always-p}.
2021@end table
2022
2023@node Insertion Commands, Variable Toggling Shortcuts, Citing Commands, Post-yank Formatting Commands
2024@comment node-name, next, previous, up
2025@section Insertion Commands
2026@ifinfo
2027
2028@end ifinfo
2029These two functions insert various strings into the reply buffer.
2030
2031@table @asis
2032@findex sc-insert-reference
2033@findex insert-reference (sc-)
2034@kindex C-c C-p w
2035@item @code{sc-insert-reference} (@kbd{C-c C-p w})
2036@comment
2037@vindex sc-preferred-header-style
2038@vindex preferred-header-style (sc-)
2039Inserts a reference header into the reply buffer at @samp{point}. With
2040no arguments, the header indexed by @code{sc-preferred-header-style} is
2041inserted. An optional numeric argument is the index into
2042@code{sc-rewrite-header-list} indicating which reference header to
2043write.@refill
2044
2045With just the universal argument (@kbd{C-u}), electric reference mode is
2046entered, regardless of the value of @code{sc-electric-references-p}.
2047
2048@findex sc-insert-citation
2049@findex insert-citation (sc-)
2050@kindex C-c C-p i
2051@item @code{sc-insert-citation} (@kbd{C-c C-p i})
2052@comment
2053Inserts the current citation string at the beginning of the line that
2054@samp{point} is on. If the line is already cited, Supercite will issue
2055an error and will not cite the line.
2056@end table
2057
2058@node Variable Toggling Shortcuts, Mail Field Commands, Insertion Commands, Post-yank Formatting Commands
2059@comment node-name, next, previous, up
2060@cindex toggling variables
2061@section Variable Toggling Shortcuts
2062@ifinfo
2063
2064@end ifinfo
2065Supercite defines a number of commands that make it easier for you to
2066toggle and set various Supercite variables as you are editing the reply
2067buffer. For example, you may want to turn off filling or whitespace
2068cleanup, but only temporarily. These toggling shortcut commands make
2069this easy to do.
2070
2071@kindex C-c C-p C-t
2072Like Supercite commands in general, the toggling commands are placed on
2073a keymap prefix within the greater Supercite keymap. For the default
2074value of @code{sc-mode-map-prefix}, this will be
2075@kbd{C-c C-p C-t}.@refill
2076
2077The following commands toggle the value of certain Supercite variables
2078which take only a binary value:
2079
2080@table @kbd
2081@item C-c C-p C-t b
2082Toggles the variable @code{sc-mail-nuke-blank-lines-p}.
2083
2084@item C-c C-p C-t c
2085Toggles the variable @code{sc-confirm-always-p}.
2086
2087@item C-c C-p C-t d
2088Toggles the variable @code{sc-downcase-p}.
2089
2090@item C-c C-p C-t e
2091Toggles the variable @code{sc-electric-references-p}.
2092
2093@item C-c C-p C-t f
2094Toggles the variable @code{sc-auto-fill-region-p}.
2095
2096@item C-c C-p C-t o
2097Toggles the variable @code{sc-electric-circular-p}.
2098
2099@item C-c C-p C-t s
2100Toggles the variable @code{sc-nested-citation-p}.
2101
2102@item C-c C-p C-t u
2103Toggles the variable @code{sc-use-only-preferences-p}.
2104
2105@item C-c C-p C-t w
2106Toggles the variable @code{sc-fixup-whitespace-p}.
2107@end table
2108
2109@findex set-variable
2110The following commands let you set the value of multi-value variables,
2111in the same way that Emacs' @code{set-variable} does:
2112
2113@table @kbd
2114@item C-c C-p C-t a
2115Sets the value of the variable @code{sc-preferred-attribution-list}.
2116
2117@item C-c C-p C-t l
2118Sets the value of the variable @code{sc-cite-region-limit}.
2119
2120@item C-c C-p C-t n
2121Sets the value of the variable @code{sc-mail-nuke-mail-headers}.
2122
2123@item C-c C-p C-t N
2124Sets the value of the variable @code{sc-mail-header-nuke-list}.
2125
2126@item C-c C-p C-t p
2127Sets the value of the variable @code{sc-preferred-header-style}.
2128@end table
2129
2130@kindex C-c C-p C-p
2131One special command is provided to toggle both
2132@code{sc-auto-fill-region-p} and @code{sc-fixup-whitespace-p} together.
2133This is because you typically want to run Supercite with either variable
2134as @code{nil} or non-@code{nil}. The command to toggle these variables
2135together is bound on @kbd{C-c C-p C-p}.@refill
2136
2137Finally, the command @kbd{C-c C-p C-t h} (also @kbd{C-c C-p C-t ?})
2138brings up a Help message on the toggling keymap.
177c0ea7 2139
6bf7aab6
DL
2140
2141@node Mail Field Commands, Miscellaneous Commands, Variable Toggling Shortcuts, Post-yank Formatting Commands
2142@comment node-name, next, previous, up
2143@section Mail Field Commands
2144@ifinfo
2145
2146@end ifinfo
2147These commands allow you to view, modify, add, and delete various bits
2148of information from the info alist.
2149@xref{Information Keys and the Info Alist}.@refill
2150
2151@table @asis
2152@kindex C-c C-p f
2153@findex sc-mail-field-query
2154@findex mail-field-query (sc-)
2155@kindex C-c C-p f
2156@item @code{sc-mail-field-query} (@kbd{C-c C-p f})
2157@comment
2158Allows you to interactively view, modify, add, and delete info alist
2159key-value pairs. With no argument, you are prompted (with completion)
2160for a info key. The value associated with that key is displayed in the
2161minibuffer. With an argument, this command will first ask if you want
2162to view, modify, add, or delete an info key. Viewing is identical to
2163running the command with no arguments.
2164
2165If you want to modify the value of a key, Supercite will first prompt
2166you (with completion) for the key of the value you want to change. It
2167will then put you in the minibuffer with the key's current value so you
2168can edit the value as you wish. When you hit @key{RET}, the key's value
2169is changed. For those of you running Emacs 19, minibuffer history is
2170kept for the values.
2171
2172If you choose to delete a key-value pair, Supercite will prompt you (with
2173completion) for the key to delete.
2174
2175If you choose to add a new key-value pair, Supercite firsts prompts you
2176for the key to add. Note that completion is turned on for this prompt,
2177but you can type any key name here, even one that does not yet exist.
2178After entering the key, Supercite prompts you for the key's value. It
2179is not an error to enter a key that already exists, but the new value
2180will override any old value. It will not replace it though; if you
2181subsequently delete the key-value pair, the old value will reappear.
2182
2183@findex sc-mail-process-headers
2184@findex mail-process-headers (sc-)
2185@kindex C-c C-p g
2186@item @code{sc-mail-process-headers} (@kbd{C-c C-p g})
2187@comment
2188This command lets you re-initialize Supercite's info alist from any set
2189of mail headers in the region between @samp{point} and @samp{mark}.
2190This function is especially useful for replying to digest messages where
2191Supercite will initially set up its information for the digest
2192originator, but you want to cite each component article with the real
2193message author. Note that unless an error during processing occurs, any
2194old information is lost.@refill
2195@end table
2196
2197@node Miscellaneous Commands, Information Keys and the Info Alist, Mail Field Commands, Post-yank Formatting Commands
2198@comment node-name, next, previous, up
2199@section Miscellaneous Commands
2200@ifinfo
2201
2202@end ifinfo
2203@table @asis
2204@findex sc-open-line
2205@findex open-line (sc-)
2206@findex open-line
2207@kindex C-c C-p o
2208@item @code{sc-open-line} (@kbd{C-c C-p o})
2209@comment
2210Similar to Emacs' standard @code{open-line} commands, but inserts the
2211citation string in front of the new line. As with @code{open-line},
2212an optional numeric argument inserts that many new lines.@refill
2213
2214@findex sc-describe
2215@findex describe (sc-)
2216@kindex C-c C-p ?
2217@kindex C-c C-p h
2218@item @code{sc-describe} (@kbd{C-c C-p h} and @kbd{C-c C-p ?})
2219@comment
2220This function has been obsoleted by the @TeX{}info manual you are now
2221reading. It is still provided for compatibility, but it will eventually
2222go away.
2223
2224@findex sc-version
2225@findex version (sc-)
2226@kindex C-c C-p v
2227@item @code{sc-version} (@kbd{C-c C-p v})
2228@comment
2229Echos the version of Supercite you are using. With the optional
2230universal argument (@kbd{C-u}), this command inserts the version
2231information into the current buffer.
2232
2233@findex sc-submit-bug-report
2234@findex submit-bug-report (sc-)
2235@kindex C-c C-p C-b
2236@item @code{sc-submit-bug-report} (@kbd{C-c C-p C-b})
2237@comment
2238If you encounter a bug, or wish to suggest an enhancement, use this
2239command to set up an outgoing mail buffer, with the proper address to
2240the Supercite maintainer automatically inserted in the @samp{To:@:}
2241field. This command also inserts information that the Supercite
2242maintainer can use to recreate your exact setup, making it easier to
2243verify your bug.
2244@end table
2245
2246@node Hints to MUA Authors, Version 3 Changes, Electric References, Top
2247@comment node-name, next, previous, up
2248@chapter Hints to MUA Authors
2249@ifinfo
2250
2251@end ifinfo
2252In June of 1989, some discussion was held between the various MUA
2253authors, the Supercite author, and other Supercite users. These
2254discussions centered around the need for a standard interface between
2255MUAs and Supercite (or any future Supercite-like packages). This
2256interface was formally proposed by Martin Neitzel on Fri, 23 Jun 89, in
2257a mail message to the Supercite mailing list:
2258
2259@example
2260 Martin> Each news/mail-reader should provide a form of
2261 Martin> mail-yank-original that
2262
2263 Martin> 1: inserts the original message incl. header into the
2264 Martin> reply buffer; no indentation/prefixing is done, the header
2265 Martin> tends to be a "full blown" version rather than to be
2266 Martin> stripped down.
2267
2268 Martin> 2: `point' is at the start of the header, `mark' at the
2269 Martin> end of the message body.
2270
2271 Martin> 3: (run-hooks 'mail-yank-hooks)
2272
2273 Martin> [Supercite] should be run as such a hook and merely
2274 Martin> rewrite the message. This way it isn't anymore
2275 Martin> [Supercite]'s job to gather the original from obscure
2276 Martin> sources. [@dots{}]
2277@end example
2278
2279@vindex mail-citation-hook
2280@vindex mail-yank-hooks
2281@cindex sendmail.el
2282@findex mail-yank-original
2283@findex defvar
2284This specification was adopted, but with the recent release of
2285Emacs 19, it has undergone a slight modification. Instead of the
2286variable @code{mail-yank-hooks}, the new preferred hook variable that
2287the MUA should provide is @code{mail-citation-hook}.
2288@code{mail-yank-hooks} can be provided for backward compatibility, but
2289@code{mail-citation-hook} should always take precedence. Richard
2290Stallman (of the FSF) suggests that the MUAs should @code{defvar}
2291@code{mail-citation-hook} to @code{nil} and perform some default citing
2292when that is the case. Take a look at Emacs 19's @file{sendmail.el}
2293file, specifically the @code{mail-yank-original} defun for
2294details.@refill
2295
2296If you are writing a new MUA package, or maintaining an existing MUA
2297package, you should make it conform to this interface so that your users
2298will be able to link Supercite easily and seamlessly. To do this, when
2299setting up a reply or forward buffer, your MUA should follow these
2300steps:
2301
2302@enumerate
177c0ea7 2303@item
6bf7aab6
DL
2304Insert the original message, including the mail headers into the reply
2305buffer. At this point you should not modify the raw text in any way, and
2306you should place all the original headers into the body of the reply.
2307This means that many of the mail headers will be duplicated, one copy
2308above the @code{mail-header-separator} line and one copy below,
2309however there will probably be more headers below this line.@refill
2310
177c0ea7 2311@item
6bf7aab6
DL
2312Set @samp{point} to the beginning of the line containing the first mail
2313header in the body of the reply. Set @samp{mark} at the end of the
2314message text. It is very important that the region be set around the
2315text Supercite is to modify and that the mail headers are within this
2316region. Supercite will not venture outside the region for any reason,
2317and anything within the region is fair game, so don't put anything that
2318@strong{must} remain unchanged inside the region. Further note that for
2319Emacs 19, the region need not be set active. Supercite will work
2320properly when the region is inactive, as should any other like-minded
2321package.@refill
2322
177c0ea7 2323@item
6bf7aab6
DL
2324Run the hook @code{mail-citation-hook}. You will probably want to
2325provide some kind of default citation functions in cases where the user
2326does not have Supercite installed. By default, your MUA should
2327@code{defvar} @code{mail-citation-hook} to @code{nil}, and in your
2328yanking function, check its value. If it finds
2329@code{mail-citation-hook} to be @code{nil}, it should perform some
2330default citing behavior. User who want to connect to Supercite then
2331need only add @code{sc-cite-original} to this list of hooks using
2332@code{add-hook}.@refill
2333@end enumerate
2334
2335If you do all this, your users will not need to overload your routines
2336to use Supercite, and your MUA will join the ranks of those that conform
2337to this interface ``out of the box.''
2338
2339@node Version 3 Changes, Thanks and History, Hints to MUA Authors, Top
2340@comment node-name, next, previous, up
2341@chapter Version 3 Changes
2342@ifinfo
2343
2344@end ifinfo
2345@cindex sc-unsupp.el file
2346With version 3, Supercite has undergone an almost complete rewrite, and
2347has hopefully benefited in a number of ways, including vast
2348improvements in the speed of performance, a big reduction in size of the
2349code and in the use of Emacs resources, and a much cleaner and flexible
2350internal architecture. The central construct of the info alist, and its
2351role in Supercite has been expanded, and the other central concept, the
2352general package Regi, was developed to provide a theoretically unlimited
2353flexibility.
2354
2355But most of this work is internal and not of very great importance to the
2356casual user. There have been some changes at the user-visible level,
2357but for the most part, the Supercite configuration variables from
2358version 2 should still be relevant to version 3. Below, I briefly
2359outline those user-visible things that have changed since version 2. For
2360details, look to other sections of this manual.
2361
2362@enumerate
2363@item
2364@cindex supercite.el file
2365@cindex reporter.el file
2366@cindex regi.el file
2367@cindex sc.el from version 2
2368@cindex sc-elec.el from version 2
2369Supercite proper now comes in a single file, @file{supercite.el}, which
2370contains everything except the unsupported noodlings, overloading (which
2371should be more or less obsolete with the release of Emacs 19), and the
2372general lisp packages @file{reporter.el} and @file{regi.el}. Finally,
2373the @TeX{}info manual comes in its own file as well. In particular, the
2374file @file{sc.el} from the version 2 distribution is obsolete, as is the
2375file @file{sc-elec.el}.
2376
2377@item
2378@code{sc-spacify-name-chars} is gone in version 3.
2379
2380@item
2381@vindex sc-attrib-selection-list
2382@vindex attrib-selection-list
2383@code{sc-nickname-alist} is gone in version 3. The
2384@code{sc-attrib-selection-list} is a more general construct supporting
2385the same basic feature.
2386
2387@item
2388The version 2 variable @code{sc-preferred-attribution} has been changed
2389to @code{sc-preferred-attribution-list}, and has been expanded upon to
2390allow you to specify an ordered list of preferred attributions.
2391
2392@item
2393@code{sc-mail-fields-list} has been removed, and header nuking in
2394general has been greatly improved, giving you wider flexibility in
2395specifying which headers to keep and remove while presenting a
2396simplified interface to commonly chosen defaults.
2397
2398@item
2399Post-yank paragraph filling has been completely removed from Supercite,
2400other packages just do it better than Supercite ever would. Supercite
2401will still fill newly cited paragraphs.
2402
2403@item
2404@vindex sc-cite-region-limit
2405@vindex cite-region-limit
2406The variable @code{sc-all-but-cite-p} has been replaced by
2407@code{sc-cite-region-limit}.
2408
2409@item
2410Keymap hacking in the reply buffer has been greatly simplified, with, I
2411believe, little reduction in functionality.
2412
2413@item
2414Hacking of the reply buffer's docstring has been completely eliminated.
2415@end enumerate
2416
2417@node Thanks and History, The Supercite Mailing List, Version 3 Changes, Top
2418@comment node-name, next, previous, up
2419@chapter Thanks and History
2420@ifinfo
2421
2422@end ifinfo
2423The Supercite package was derived from its predecessor Superyank 1.11
2424which was inspired by various bits of code and ideas from Martin Neitzel
2425and Ashwin Ram. They were the folks who came up with the idea of
2426non-nested citations and implemented some rough code to provide this
2427style. Superyank and Supercite version 2 evolved to the point where much
2428of the attribution selection mechanism was automatic, and features have
2429been continuously added through the comments and suggestions of the
2430Supercite mailing list participants. Supercite version 3 represents a
2431nearly complete rewrite with many of the algorithms and coding styles
2432being vastly improved. Hopefully Supercite version 3 is faster,
2433smaller, and much more flexible than its predecessors.
2434
2435In the version 2 manual I thanked some specific people for their help in
2436developing Supercite 2. You folks know who you are and your continued
2437support is greatly appreciated. I wish to thank everyone on the
2438Supercite mailing list, especially the brave alpha testers, who helped
2439considerably in testing out the concepts and implementation of Supercite
2440version 3. Special thanks go out to the MUA and Emacs authors Kyle
2441Jones, Stephen Gildea, Richard Stallman, and Jamie Zawinski for coming
2442to a quick agreement on the new @code{mail-citation-hook} interface, and
2443for adding the magic lisp to their code to support this.
2444
2445All who have helped and contributed have been greatly appreciated.
2446
2447@node The Supercite Mailing List, Concept Index, Thanks and History, Top
2448@comment node-name, next, previous, up
2449@cindex supercite mailing list address
2450@cindex mailing list address
2451@chapter The Supercite Mailing List
2452@ifinfo
2453
2454@end ifinfo
2455The author runs a simple mail expanding mailing list for discussion of
2456issues related to Supercite. This includes enhancement requests, bug
2457reports, general help questions, etc. To subscribe or unsubscribe to
2458the mailing list, send a request to the administrative address:
2459
2460@example
2461supercite-request@@python.org
2462@end example
2463
2464Please be sure to include the most reliable and shortest (preferably
2465Internet) address back to you. To post articles to the list, send your
2466message to this address (you do not need to be a member to post, but be
2467sure to indicate this in your article or replies may not be CC'd to
2468you):
2469
2470@example
2471supercite@@python.org
2472@end example
2473
2474If you are sending bug reports, they should go to the following address,
2475but @emph{please}! use the command @code{sc-submit-bug-report} since it
2476will be much easier for me to duplicate your problem if you do so. It
2477will set up a mail buffer automatically with this address on the
2478@samp{To:@:} line:
2479
2480@example
2481supercite-help@@python.org
2482@end example
2483
2484@node Concept Index, Command Index, The Supercite Mailing List, Top
2485@comment node-name, next, previous, up
2486@unnumbered Concept Index
2487@printindex cp
2488
2489@node Command Index, Key Index, Concept Index, Top
2490@comment node-name, next, previous, up
2491@unnumbered Command Index
2492@ifinfo
2493
2494@end ifinfo
2495Since all supercite commands are prepended with the string
2496``@code{sc-}'', each appears under its @code{sc-}@var{command} name and
2497its @var{command} name.
2498@iftex
2499@sp 2
2500@end iftex
2501@printindex fn
2502
2503@node Key Index, Variable Index, Command Index, Top
2504@comment node-name, next, previous, up
2505@unnumbered Key Index
2506@printindex ky
2507
2508@node Variable Index, , Key Index, Top
2509@comment node-name, next, previous, up
2510@unnumbered Variable Index
2511@ifinfo
2512
2513@end ifinfo
2514Since all supercite variables are prepended with the string
2515``@code{sc-}'', each appears under its @code{sc-}@var{variable} name and
2516its @var{variable} name.
2517@iftex
2518@sp 2
2519@end iftex
2520@printindex vr
56f7c94a 2521@setchapternewpage odd
6bf7aab6
DL
2522@summarycontents
2523@contents
2524@bye
ab5796a9
MB
2525
2526@ignore
2527 arch-tag: 0521847a-4680-44b6-ae6e-13ce20e18436
2528@end ignore