annotate lisp/=sc.el @ 18092:8428d56cd207

(smtpmail-via-smtp): Recognize XVRB as a synonym for VERB and XONE as a synonym for ONEX. (smtpmail-read-response): Add "%s" to `message' calls to avoid problems with percent signs in strings. (smtpmail-read-response): Return all lines of the response text as a list of strings. Formerly only the first line was returned. This is insufficient when one wants to parse e.g. an EHLO response. Ignore responses starting with "0". This is necessary to support the VERB SMTP extension. (smtpmail-via-smtp): Try EHLO and find out which SMTP service extensions the receiving mailer supports. Issue the ONEX and XUSR commands if the corresponding extensions are supported. Issue VERB if supported and `smtpmail-debug-info' is non-nil. Add SIZE attribute to MAIL FROM: command if SIZE extension is supported. Add code that could set the BODY= attribute to MAIL FROM: if the receiving mailer supports 8BITMIME. This is currently disabled, since doing it right might involve adding MIME headers to, and in some cases reencoding, the message.
author Richard M. Stallman <rms@gnu.org>
date Sun, 01 Jun 1997 22:24:22 +0000
parents ca55f9c620c5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1745
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 ;; -*- Mode: Emacs-Lisp -*-
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2 ;; sc.el -- Version 2.3 (used to be supercite.el)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
3
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
4 ;; ========== Introduction ==========
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 ;; Citation and attribution package for various GNU emacs news and
4662
abe65b45d5f5 Comment fixes.
Richard M. Stallman <rms@gnu.org>
parents: 4323
diff changeset
6 ;; electronic mail reading subsystems. This version of supercite should
abe65b45d5f5 Comment fixes.
Richard M. Stallman <rms@gnu.org>
parents: 4323
diff changeset
7 ;; work with Rmail and GNUS as found in Emacs 19. It may also work with
abe65b45d5f5 Comment fixes.
Richard M. Stallman <rms@gnu.org>
parents: 4323
diff changeset
8 ;; VM 4.40+ and MH-E 3.7.
1745
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10 ;; This package does not do any yanking of messages, but instead
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; massages raw reply buffers set up by the reply/forward functions in
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; the news/mail subsystems. Therefore, such useful operations as
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; yanking and citing portions of the original article (instead of the
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3577
diff changeset
14 ;; whole article) are not within the ability or responsibility of
1745
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15 ;; supercite.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; ========== Disclaimer ==========
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; This software is distributed in the hope that it will be useful,
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; but WITHOUT ANY WARRANTY. No author or distributor, nor any
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20 ;; author's past, present, or future employers accepts responsibility
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 ;; to anyone for the consequences of using it or for whether it serves
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 ;; any particular purpose or works at all, unless he says so in
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
23 ;; writing.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
24
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25 ;; Some of this software was written as part of the supercite author's
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 ;; official duty as an employee of the United States Government and is
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27 ;; thus not subject to copyright. You are free to use that particular
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
28 ;; software as you wish, but WITHOUT ANY WARRANTY WHATSOEVER. It
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
29 ;; would be nice, though if when you use any of this or other freely
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
30 ;; available code, you give due credit to the author.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
31
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
32 ;; Other parts of this code were written by other people. Wherever
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 ;; possible, credit to that author, and the copy* notice supplied by
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 ;; the author are included with that code. The supercite author is no
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 ;; longer an employee of the U.S. Government so the GNU Public Licence
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 ;; should be considered in effect for all enhancements and bug fixes
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
37 ;; performed by the author.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
38
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
39 ;; ========== Author (unless otherwise stated) ========================
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
40 ;; NAME: Barry A. Warsaw USMAIL: Century Computing, Inc.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 ;; TELE: (301) 593-3330 1014 West Street
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
42 ;; INET: bwarsaw@cen.com Laurel, Md 20707
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43 ;; UUCP: uunet!cen.com!bwarsaw
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 ;;
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 ;; Want to be on the Supercite mailing list?
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 ;;
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 ;; Send articles to:
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 ;; Internet: supercite@anthem.nlm.nih.gov
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49 ;; UUCP: uunet!anthem.nlm.nih.gov!supercite
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 ;;
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 ;; Send administrivia (additions/deletions to list, etc) to:
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 ;; Internet: supercite-request@anthem.nlm.nih.gov
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
53 ;; UUCP: uunet!anthem.nlm.nih.gov!supercite-request
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
54
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55 ;; ========== Credits and Thanks ==========
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 ;; This package was derived from the Superyank 1.11 package as posted
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
57 ;; to the net. Superyank 1.11 was inspired by code and ideas from
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58 ;; Martin Neitzel and Ashwin Ram. Supercite version 2.3 has evolved
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 ;; through the comments and suggestions of the supercite mailing list
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60 ;; which consists of many authors and users of the various mail and
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 ;; news reading subsystems.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 ;; Many folks on the supercite mailing list have contributed their
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64 ;; help in debugging, making suggestions and supplying support code or
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 ;; bug fixes for the previous versions of supercite. I want to thank
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 ;; everyone who helped, especially (in no particular order):
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
67 ;;
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 ;; Mark D. Baushke, Khalid Sattar, David Lawrence, Chris Davis, Kyle
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69 ;; Jones, Kayvan Sylvan, Masanobu Umeda, Dan Jacobson, Piet van
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
70 ;; Oostrum, Hamish (H.I.) Macdonald, and Joe Wells.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 ;;
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 ;; I don't mean to leave anyone out. All who have helped have been
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 ;; appreciated.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75 ;; ========== Getting Started ==========
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76 ;; Here is a quick guide to getting started with supercite. The
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 ;; information contained here is mostly excerpted from the more
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 ;; detailed explanations given in the accompanying README file.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79 ;; Naturally, there are many customizations you can do to give your
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
80 ;; replies that personalized flair, but the instructions in this
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
81 ;; section should be sufficient for getting started.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
82
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
83 ;; First, to connect supercite to any mail/news reading subsystem, put
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
84 ;; this in your .emacs file:
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
85 ;;
3815
41ef3e4adb0d Change usage comment.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
86 ;; (setq mail-yank-hooks 'sc-cite-original) ; for old mail agents
1745
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
87 ;; (setq mh-yank-hooks 'sc-cite-original) ; for MH-E only
3815
41ef3e4adb0d Change usage comment.
Richard M. Stallman <rms@gnu.org>
parents: 3591
diff changeset
88 ;; (add-hook 'mail-citation-hook 'sc-cite-original) ; for newer mail agents
1745
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89 ;;
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 ;; If supercite is not pre-loaded into your emacs session, you should
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
91 ;; add the following autoload:
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
92 ;;
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
93 ;; (autoload 'sc-cite-original "sc" "Supercite 2.3" t)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 ;;
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95 ;; Finally, if you want to customize supercite, you should do it in a
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 ;; function called my-supercite-hook and:
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
97 ;;
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98 ;; (setq sc-load-hook 'my-supercite-hook)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99
4323
51964472e60e Require assoc instead of sc-alist.
Richard M. Stallman <rms@gnu.org>
parents: 3815
diff changeset
100 (require 'assoc)
1745
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 ;; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104 ;; start of user defined variables
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105 ;; vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107 (defvar sc-nested-citation-p nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108 "*Controls whether to use nested or non-nested citation style.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 Non-nil uses nested citations, nil uses non-nested citations. Type
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 \\[sc-describe] for more information.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 (defvar sc-citation-leader " "
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113 "*String comprising first part of a citation.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
114
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 (defvar sc-citation-delimiter ">"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116 "*String comprising third part of a citation.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 This string is used in both nested and non-nested citations.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 (defvar sc-citation-separator " "
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
120 "*String comprising fourth and last part of a citation.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122 (defvar sc-default-author-name "Anonymous"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123 "*String used when author's name cannot be determined.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 (defvar sc-default-attribution "Anon"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
126 "*String used when author's attribution cannot be determined.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 ;; Noriya KOBAYASHI (nk@ics.osaka-u.ac.jp) writes to the supercite
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
129 ;; mailing list:
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130 ;; I use supercite in Nemacs-3.3.2. In order to handle citation using
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
131 ;; Kanji, [...set sc-cite-regexp to...]
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
132 ;; "\\s *\\([a-zA-Z0-9]\\|\\cc\\|\\cC\\|\\ch\\|\\cH\\|\\ck\\|\\cK\\)*\\s *>+"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133 ;;
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134 (defvar sc-cite-regexp "\\s *[-a-zA-Z0-9_.]*>+\\s *"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
135 "*Regular expression describing how a already cited line begins.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136 The regexp is only used at the beginning of a line, so it doesn't need
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
137 to start with a '^'.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
138
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 (defvar sc-titlecue-regexp "\\s +-+\\s +"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 "*Regular expression describing the separator between names and titles.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141 Set to nil to treat entire field as a name.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 (defvar sc-spacify-name-chars '(?_ ?* ?+ ?=)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 "*List of characters to convert to spaces if found in an author's name.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146 (defvar sc-nicknames-alist
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 '(("Michael" "Mike")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
148 ("Daniel" "Dan")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 ("David" "Dave")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
150 ("Jonathan" "John")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151 ("William" "Bill")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
152 ("Elizabeth" "Beth")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153 ("Elizabeth" "Betsy")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
154 ("Kathleen" "Kathy")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
155 ("Smith" "Smitty"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
156 "*Association list of names and their common nicknames.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
157 Entries are of the form (NAME NICKNAME), and NAMEs can have more than
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
158 one nickname. Nicknames will not be automatically used as an
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
159 attribution string, since I'm not sure this is really polite, but if a
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
160 name is glommed from the author name and presented in the attribution
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
161 string completion list, the matching nicknames will also be presented.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162 Set this variable to nil to defeat nickname expansions. Also note that
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
163 nicknames are not put in the supercite information alist.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
164
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165 (defvar sc-confirm-always-p t
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166 "*If non-nil, always confirm attribution string before citing text body.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
167
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
168 (defvar sc-preferred-attribution 'firstname
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
169 "*Specifies which part of the author's name becomes the attribution.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
170 The value of this variable must be one of the following quoted symbols:
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
171
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
172 emailname -- email terminus name
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173 initials -- initials of author
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
174 firstname -- first name of author
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
175 lastname -- last name of author
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176 middlename1 -- first middle name of author
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177 middlename2 -- second middle name of author
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
178 ...
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
179
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
180 Middle name indexes can be any positive integer greater than 0, though
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
181 it is unlikely that many authors will supply more than one middle
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
182 name, if that many.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
183
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
184 (defvar sc-use-only-preference-p nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
185 "*Controls what happens when the preferred attribution cannot be found.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
186 If non-nil, then sc-default-attribution will be used. If nil, then
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
187 some secondary scheme will be employed to find a suitable attribution
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
188 string.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
189
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
190 (defvar sc-downcase-p nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
191 "*Non-nil means downcase the attribution and citation strings.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
193 (defvar sc-rewrite-header-list
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
194 '((sc-no-header)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
195 (sc-header-on-said)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
196 (sc-header-inarticle-writes)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
197 (sc-header-regarding-adds)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
198 (sc-header-attributed-writes)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
199 (sc-header-verbose)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
200 (sc-no-blank-line-or-header)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
201 )
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202 "*List of reference header rewrite functions.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
203 The variable sc-preferred-header-style controls which function in this
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
204 list is chosen for automatic reference header insertions. Electric
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
205 reference mode will cycle through this list of functions. For more
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
206 information, type \\[sc-describe].")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
207
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
208 (defvar sc-preferred-header-style 1
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
209 "*Index into sc-rewrite-header-list specifying preferred header style.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
210 Index zero accesses the first function in the list.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
211
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212 (defvar sc-electric-references-p t
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213 "*Use electric references if non-nil.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
215 (defvar sc-electric-circular-p t
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
216 "*Treat electric references as circular if non-nil.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
218 (defvar sc-mail-fields-list
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219 '("date" "message-id" "subject" "newsgroups" "references"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 "from" "return-path" "path" "reply-to" "organization"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 "reply" )
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
222 "*List of mail header whose values will be saved by supercite.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
223 These values can be used in header rewrite functions by accessing them
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
224 with the sc-field function. Mail headers in this list are case
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
225 insensitive and do not require a trailing colon.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
226
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227 (defvar sc-mumble-string ""
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228 "*Value returned by sc-field if chosen field cannot be found.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
229
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
230 (defvar sc-nuke-mail-headers-p t
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
231 "*Nuke or don't nuke mail headers.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
232 If non-nil, nuke mail headers after gleaning useful information from
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233 them.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 (defvar sc-reference-tag-string ">>>>> "
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236 "*String used at the beginning of built-in reference headers.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238 (defvar sc-fill-paragraph-hook 'sc-fill-paragraph
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 "*Hook for filling a paragraph.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240 This hook gets executed when you fill a paragraph either manually or
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 automagically. It expects point to be within the extent of the
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 paragraph that is going to be filled. This hook allows you to use a
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 different paragraph filling package than the one supplied with
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
244 supercite.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
246 (defvar sc-auto-fill-region-p nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 "*If non-nil, automatically fill each paragraph after it has been cited.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
248
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 (defvar sc-auto-fill-query-each-paragraph-p nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250 "*If non-nil, query before filling each paragraph.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251 No querying and no filling will be performed if sc-auto-fill-region-p
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 is set to nil.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 (defvar sc-fixup-whitespace-p nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 "*If non-nil, delete all leading white space before citing.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
257 (defvar sc-all-but-cite-p nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258 "*If non-nil, sc-cite-original does everything but cite the text.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
259 This is useful for manually citing large messages, or portions of
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
260 large messages. When non-nil, sc-cite-original will still set up all
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
261 necessary variables and databases, but will skip the citing routine
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
262 which modify the reply buffer's text.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
263
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
264 (defvar sc-load-hook nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265 "*User definable hook.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
266 Runs after supercite is loaded. Set your customizations here.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
268 (defvar sc-pre-hook nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
269 "*User definable hook.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
270 Runs before sc-cite-original executes.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
271
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
272 (defvar sc-post-hook nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
273 "*User definable hook.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
274 Runs after sc-cite-original executes.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
276 (defvar sc-header-nuke-list
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 '("via" "origin" "status" "received" "remailed" "cc" "sender" "replied"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278 "organization" "keywords" "distribution" "xref" "references" "expires"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 "approved" "summary" "precedence" "subject" "newsgroup[s]?"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
280 "\\(followup\\|apparently\\|errors\\|\\(\\(in-\\)?reply\\)?-\\)?to"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
281 "x-[a-z0-9-]+" "[a-z-]*message-id" "\\(summary-\\)?line[s]"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 "\\(\\(return\\|reply\\)-\\)?path" "\\(posted-\\)?date"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283 "\\(mail-\\)?from")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
284 "*List of mail headers to remove from body of reply.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
285
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
287
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
288 ;; ======================================================================
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
289 ;; keymaps
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 (defvar sc-default-keymap
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
292 '(lambda ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293 (local-set-key "\C-c\C-r" 'sc-insert-reference)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
294 (local-set-key "\C-c\C-t" 'sc-cite)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 (local-set-key "\C-c\C-a" 'sc-recite)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 (local-set-key "\C-c\C-u" 'sc-uncite)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
297 (local-set-key "\C-c\C-i" 'sc-insert-citation)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298 (local-set-key "\C-c\C-o" 'sc-open-line)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 (local-set-key "\C-c\C-q" 'sc-fill-paragraph-manually)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300 (local-set-key "\C-cq" 'sc-fill-paragraph-manually)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
301 (local-set-key "\C-c\C-m" 'sc-modify-information)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
302 (local-set-key "\C-cf" 'sc-view-field)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
303 (local-set-key "\C-cg" 'sc-glom-headers)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
304 (local-set-key "\C-c\C-v" 'sc-version)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
305 (local-set-key "\C-c?" 'sc-describe)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
306 )
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
307 "*Default keymap if major-mode can't be found in `sc-local-keymaps'.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
308
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
309 (defvar sc-local-keymaps
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
310 '((mail-mode
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311 (lambda ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312 (local-set-key "\C-c\C-r" 'sc-insert-reference)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313 (local-set-key "\C-c\C-t" 'sc-cite)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
314 (local-set-key "\C-c\C-a" 'sc-recite)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
315 (local-set-key "\C-c\C-u" 'sc-uncite)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316 (local-set-key "\C-c\C-i" 'sc-insert-citation)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
317 (local-set-key "\C-c\C-o" 'sc-open-line)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
318 (local-set-key "\C-c\C-q" 'sc-fill-paragraph-manually)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
319 (local-set-key "\C-cq" 'sc-fill-paragraph-manually)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
320 (local-set-key "\C-c\C-m" 'sc-modify-information)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
321 (local-set-key "\C-cf" 'sc-view-field)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
322 (local-set-key "\C-cg" 'sc-glom-headers)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323 (local-set-key "\C-c\C-v" 'sc-version)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
324 (local-set-key "\C-c?" 'sc-describe)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
325 ))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326 (mh-letter-mode
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327 (lambda ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328 (local-set-key "\C-c\C-r" 'sc-insert-reference)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329 (local-set-key "\C-c\C-t" 'sc-cite)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
330 (local-set-key "\C-c\C-a" 'sc-recite)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331 (local-set-key "\C-c\C-u" 'sc-uncite)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
332 (local-set-key "\C-ci" 'sc-insert-citation)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333 (local-set-key "\C-c\C-o" 'sc-open-line)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334 (local-set-key "\C-cq" 'sc-fill-paragraph-manually)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335 (local-set-key "\C-c\C-m" 'sc-modify-information)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 (local-set-key "\C-cf" 'sc-view-field)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337 (local-set-key "\C-cg" 'sc-glom-headers)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 (local-set-key "\C-c\C-v" 'sc-version)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339 (local-set-key "\C-c?" 'sc-describe)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340 ))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
341 (news-reply-mode mail-mode)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342 (vm-mail-mode mail-mode)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343 (e-reply-mode mail-mode)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 (n-reply-mode mail-mode)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 )
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346 "*List of keymaps to use with the associated major-mode.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 (defvar sc-electric-mode-map nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349 "*Keymap for sc-electric-mode.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351 (if sc-electric-mode-map
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
352 nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 (setq sc-electric-mode-map (make-sparse-keymap))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354 (define-key sc-electric-mode-map "p" 'sc-eref-prev)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355 (define-key sc-electric-mode-map "n" 'sc-eref-next)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356 (define-key sc-electric-mode-map "s" 'sc-eref-setn)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357 (define-key sc-electric-mode-map "j" 'sc-eref-jump)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358 (define-key sc-electric-mode-map "x" 'sc-eref-abort)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
359 (define-key sc-electric-mode-map "\r" 'sc-eref-exit)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
360 (define-key sc-electric-mode-map "\n" 'sc-eref-exit)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361 (define-key sc-electric-mode-map "q" 'sc-eref-exit)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 (define-key sc-electric-mode-map "g" 'sc-eref-goto)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363 )
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
364
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 ;; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
366 ;; end of user defined variables
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
367 ;; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
368
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
369
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370 ;; ======================================================================
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3577
diff changeset
371 ;; global variables, not user accessible
1745
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
372
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
373 (defconst sc-version-number "2.3"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
374 "Supercite's version number.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
375
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
376 ;; when rnewspost.el patch is installed (or function is overloaded)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
377 ;; this should be nil since supercite now does this itself.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
378 (setq news-reply-header-hook nil)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
379
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 ;; autoload for sc-electric-mode
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
381 (autoload 'sc-electric-mode "sc-elec"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
382 "Quasi-major mode for viewing supercite reference headers." nil)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
383
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384 ;; global alists (gals), misc variables. make new bytecompiler happy
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
385 (defvar sc-gal-information nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
386 "Internal global alist variable containing information.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
387 (defvar sc-gal-attributions nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
388 "Internal global alist variable containing attributions.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 (defvar sc-fill-arg nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
390 "Internal fill argument holder.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391 (defvar sc-cite-context nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 "Internal citation context holder.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 (defvar sc-force-confirmation-p nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
394 "Internal variable.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
395
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
396 (make-variable-buffer-local 'sc-gal-attributions)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 (make-variable-buffer-local 'sc-gal-information)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
398 (make-variable-buffer-local 'sc-leached-keymap)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399 (make-variable-buffer-local 'sc-fill-arg)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400 (make-variable-buffer-local 'sc-cite-context)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
401
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 (setq-default sc-gal-attributions nil)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 (setq-default sc-gal-information nil)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 (setq-default sc-leached-keymap (current-local-map))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 (setq-default sc-fill-arg nil)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 (setq-default sc-cite-context nil)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
407
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
408
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 ;; ======================================================================
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411 ;; miscellaneous support functions
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
412
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413 (defun sc-mark ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 "Mark compatibility between emacs v18 and v19."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415 (let ((zmacs-regions nil))
3577
d4c48ca1b220 (sc-mark): Use mark-marker.
Richard M. Stallman <rms@gnu.org>
parents: 3547
diff changeset
416 (marker-position (mark-marker))))
1745
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
417
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 (defun sc-update-gal (attribution)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419 "Update the information alist.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
420 Add ATTRIBUTION and compose the nested and non-nested citation
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421 strings."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 (let ((attrib (if sc-downcase-p (downcase attribution) attribution)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
423 (aput 'sc-gal-information "sc-attribution" attrib)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424 (aput 'sc-gal-information "sc-nested-citation"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
425 (concat attrib sc-citation-delimiter))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
426 (aput 'sc-gal-information "sc-citation"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
427 (concat sc-citation-leader
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
428 attrib
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
429 sc-citation-delimiter
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
430 sc-citation-separator))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
431
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
432 (defun sc-valid-index-p (index)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
433 "Returns t if INDEX is a valid index into sc-rewrite-header-list."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
434 (let ((last (1- (length sc-rewrite-header-list))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
435 (and (natnump index) ;; a number, and greater than or equal to zero
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
436 (<= index last) ;; less than or equal to the last index
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
437 )))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
439 (defun sc-string-car (namestring)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
440 "Return the string-equivalent \"car\" of NAMESTRING.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
441
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
442 example: (sc-string-car \"John Xavier Doe\")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
443 => \"John\""
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 (substring namestring
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
445 (progn (string-match "\\s *" namestring) (match-end 0))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
446 (progn (string-match "\\s *\\S +" namestring) (match-end 0))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
447
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
448 (defun sc-string-cdr (namestring)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449 "Return the string-equivalent \"cdr\" of NAMESTRING.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
451 example: (sc-string-cdr \"John Xavier Doe\")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452 => \"Xavier Doe\""
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453 (substring namestring
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454 (progn (string-match "\\s *\\S +\\s *" namestring)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455 (match-end 0))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
456
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
457 (defun sc-linepos (&optional position col-p)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
458 "Return the character position at various line positions.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
459 Optional POSITION can be one of the following symbols:
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
460 bol == beginning of line
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
461 boi == beginning of indentation
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 eol == end of line [default]
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 Optional COL-P non-nil returns current-column instead of character position."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 (let ((tpnt (point))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 rval)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467 (cond
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468 ((eq position 'bol) (beginning-of-line))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 ((eq position 'boi) (back-to-indentation))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
470 (t (end-of-line)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
471 (setq rval (if col-p (current-column) (point)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472 (goto-char tpnt)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473 rval))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
474
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
475
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476 ;; ======================================================================
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477 ;; this section snarfs mail fields and places them in the info alist
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 (defun sc-build-header-zap-regexp ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 "Return a regexp for sc-mail-yank-clear-headers."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 (let ((headers sc-header-nuke-list)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 (regexp nil))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483 (while headers
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
484 (setq regexp (concat regexp
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
485 "^" (car headers) ":"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
486 (if (cdr headers) "\\|" nil)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
487 (setq headers (cdr headers)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
488 regexp))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
489
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
490 (defun sc-mail-yank-clear-headers (start end)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
491 "Nuke mail headers between START and END."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
492 (if (and sc-nuke-mail-headers-p sc-header-nuke-list)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
493 (let ((regexp (sc-build-header-zap-regexp)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
494 (save-excursion
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
495 (goto-char start)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
496 (if (search-forward "\n\n" end t)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
497 (save-restriction
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
498 (narrow-to-region start (point))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
499 (goto-char start)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
500 (while (let ((case-fold-search t))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
501 (re-search-forward regexp nil t))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
502 (beginning-of-line)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
503 (delete-region (point)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
504 (progn (re-search-forward "\n[^ \t]")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
505 (forward-char -1)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
506 (point)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
507 )))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
508 ))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
509
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 (defun sc-mail-fetch-field (field)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
511 "Return the value of the header field FIELD.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 The buffer is expected to be narrowed to just the headers of the
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
513 message."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
514 (save-excursion
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
515 (goto-char (point-min))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516 (let ((case-fold-search t)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
517 (name (concat "^" (regexp-quote field) "[ \t]*:[ \t]*")))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
518 (goto-char (point-min))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
519 (if (re-search-forward name nil t)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
520 (let ((opoint (point)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521 (while (progn (forward-line 1)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
522 (looking-at "[ \t]")))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
523 (buffer-substring opoint (1- (point))))))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
524
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
525 (defun sc-fetch-fields (start end)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
526 "Fetch the mail fields in the region from START to END.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
527 These fields can be accessed in header rewrite functions with sc-field."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
528 (save-excursion
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
529 (save-restriction
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
530 (narrow-to-region start end)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
531 (goto-char start)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
532 (let ((fields sc-mail-fields-list))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
533 (while fields
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
534 (let ((value (sc-mail-fetch-field (car fields)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
535 (next (cdr fields)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
536 (and value
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
537 (aput 'sc-gal-information (car fields) value))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
538 (setq fields next)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
539 (if (sc-mail-fetch-field "from")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
540 (aput 'sc-gal-information "from" (sc-mail-fetch-field "from")))))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
541
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
542 (defun sc-field (field)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
543 "Return the alist information associated with the FIELD.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
544 If FIELD is not a valid key, return sc-mumble-string."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
545 (or (aget sc-gal-information field) sc-mumble-string))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
546
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
547
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
548 ;; ======================================================================
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
549 ;; built-in reference header rewrite functions
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
550
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
551 (defun sc-no-header ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
552 "Does nothing. Use this instead of nil to get a blank header."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
553 ())
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
554
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
555 (defun sc-no-blank-line-or-header()
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3577
diff changeset
556 "Similar to sc-no-header except it removes the preceding blank line."
1745
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
557 (if (not (bobp))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
558 (if (and (eolp)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
559 (progn (forward-line -1)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
560 (or (looking-at mail-header-separator)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
561 (and (eq major-mode 'mh-letter-mode)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
562 (mh-in-header-p)))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
563 (progn (forward-line)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
564 (let ((kill-lines-magic t)) (kill-line))))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
565
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566 (defun sc-header-on-said ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
567 "\"On <date>, <from> said:\", unless 1. the \"from\" field cannot be
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
568 found, in which case nothing is inserted; or 2. the \"date\" field is
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569 missing in which case only the from part is printed."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
570 (let* ((sc-mumble-string "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571 (whofrom (sc-field "from"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572 (when (sc-field "date")))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573 (if (not (string= whofrom ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
574 (insert sc-reference-tag-string
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
575 (if (not (string= when ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
576 (concat "On " when ", ") "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
577 whofrom " said:\n"))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
578
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
579 (defun sc-header-inarticle-writes ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
580 "\"In article <message-id>, <from> writes:\"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
581 Treats \"message-id\" and \"from\" fields similar to sc-header-on-said."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
582 (let* ((sc-mumble-string "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
583 (whofrom (sc-field "from"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
584 (msgid (sc-field "message-id")))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
585 (if (not (string= whofrom ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586 (insert sc-reference-tag-string
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
587 (if (not (string= msgid ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
588 (concat "In article " msgid ", ") "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
589 whofrom " writes:\n"))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
590
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
591 (defun sc-header-regarding-adds ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
592 "\"Regarding <subject>; <from> adds:\"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
593 Treats \"subject\" and \"from\" fields similar to sc-header-on-said."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
594 (let* ((sc-mumble-string "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595 (whofrom (sc-field "from"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
596 (subj (sc-field "subject")))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
597 (if (not (string= whofrom ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598 (insert sc-reference-tag-string
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
599 (if (not (string= subj ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
600 (concat "Regarding " subj "; ") "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
601 whofrom " adds:\n"))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
603 (defun sc-header-attributed-writes ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
604 "\"<sc-attribution>\" == <sc-author> <address> writes:
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
605 Treats these fields in a similar manner to sc-header-on-said."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
606 (let* ((sc-mumble-string "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607 (whofrom (sc-field "from"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 (reply (sc-field "sc-reply-address"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 (from (sc-field "sc-from-address"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 (attr (sc-field "sc-attribution"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
611 (auth (sc-field "sc-author")))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
612 (if (not (string= whofrom ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
613 (insert sc-reference-tag-string
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
614 (if (not (string= attr ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
615 (concat "\"" attr "\" == " ) "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
616 (if (not (string= auth ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617 (concat auth " ") "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
618 (if (not (string= reply ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
619 (concat "<" reply ">")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
620 (if (not (string= from ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
621 (concat "<" from ">") ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
622 " writes:\n"))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
623
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
624 (defun sc-header-verbose ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
625 "Very verbose, some say gross."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
626 (let* ((sc-mumble-string "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
627 (whofrom (sc-field "from"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
628 (reply (sc-field "sc-reply-address"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
629 (from (sc-field "sc-from-address"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
630 (author (sc-field "sc-author"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
631 (date (sc-field "date"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
632 (org (sc-field "organization"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
633 (msgid (sc-field "message-id"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634 (ngrps (sc-field "newsgroups"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
635 (subj (sc-field "subject"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
636 (refs (sc-field "references"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
637 (cite (sc-field "sc-citation"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
638 (nl sc-reference-tag-string))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
639 (if (not (string= whofrom ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
640 (insert (if (not (string= date ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
641 (concat nl "On " date ",\n") "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
642 (concat nl (if (not (string= author ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
643 author
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
644 whofrom) "\n")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 (if (not (string= org ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646 (concat nl "from the organization of " org "\n") "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 (if (not (string= reply ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 (concat nl "who can be reached at: " reply "\n")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
649 (if (not (string= from ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 (concat nl "who can be reached at: " from "\n") ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
651 (if (not (string= cite ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
652 (concat nl "(whose comments are cited below with \""
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
653 cite "\"),\n") "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654 (if (not (string= msgid ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
655 (concat nl "had this to say in article " msgid "\n") "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656 (if (not (string= ngrps ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657 (concat nl "in newsgroups " ngrps "\n") "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658 (if (not (string= subj ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
659 (concat nl "concerning the subject of " subj "\n") "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
660 (if (not (string= refs ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661 (concat nl "(see " refs " for more details)\n") "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662 ))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
664
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665 ;; ======================================================================
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
666 ;; this section queries the user for necessary information
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
667
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668 (defun sc-query (&optional default)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669 "Query for an attribution string with the optional DEFAULT choice.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 Returns the string entered by the user, if non-empty and non-nil, or
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671 DEFAULT otherwise. If DEFAULT is not supplied, sc-default-attribution
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672 is used."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673 (if (not default) (setq default sc-default-attribution))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674 (let* ((prompt (concat "Enter attribution string: (default " default ") "))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
675 (query (read-string prompt)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
676 (if (or (null query)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
677 (string= query ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678 default
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
679 query)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
680
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
681 (defun sc-confirm ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
682 "Confirm the preferred attribution with the user."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683 (if (or sc-confirm-always-p
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
684 sc-force-confirmation-p)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
685 (aput 'sc-gal-attributions
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686 (let* ((default (aheadsym sc-gal-attributions))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
687 chosen
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
688 (prompt (concat "Complete "
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689 (cond
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
690 ((eq sc-cite-context 'citing) "cite")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
691 ((eq sc-cite-context 'reciting) "recite")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
692 (t ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
693 " attribution string: (default "
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
694 default ") "))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
695 (minibuffer-local-completion-map
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
696 (copy-keymap minibuffer-local-completion-map)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697 (define-key minibuffer-local-completion-map "\C-g"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
698 '(lambda () (interactive) (beep) (throw 'select-abort nil)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
699 (setq chosen (completing-read prompt sc-gal-attributions))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 (if (or (not chosen)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
701 (string= chosen ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702 default
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703 chosen)))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
705
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
706 ;; ======================================================================
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
707 ;; this section contains primitive functions used in the email address
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
708 ;; parsing schemes. they extract name fields from various parts of
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709 ;; the "from:" field.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
710
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
711 (defun sc-style1-addresses (from-string &optional delim)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
712 "Extract the author's email terminus from email address FROM-STRING.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
713 Match addresses of the style \"name%[stuff].\" when called with DELIM
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
714 of \"%\" and addresses of the style \"[stuff]name@[stuff]\" when
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
715 called with DELIM \"@\". If DELIM is nil or not provided, matches
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
716 addresses of the style \"name\"."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
717 (and (string-match (concat "[a-zA-Z0-9_-]+" delim) from-string 0)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
718 (substring from-string
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719 (match-beginning 0)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
720 (- (match-end 0) (if (null delim) 0 1)))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
721
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
722 (defun sc-style2-addresses (from-string)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
723 "Extract the author's email terminus from email address FROM-STRING.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
724 Match addresses of the style \"[stuff]![stuff]...!name[stuff].\""
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
725 (let ((eos (length from-string))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
726 (mstart (string-match "![a-zA-Z0-9_-]+\\([^!a-zA-Z0-9_-]\\|$\\)"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
727 from-string 0))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
728 (mend (match-end 0)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
729 (and mstart
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
730 (substring from-string (1+ mstart) (- mend (if (= mend eos) 0 1)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
731 )))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
732
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
733 (defun sc-get-address (from-string author)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
734 "Get the full email address path from FROM-STRING.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
735 AUTHOR is the author's name (which is removed from the address)."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
736 (let ((eos (length from-string)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
737 (if (string-match (concat "\\(^\\|^\"\\)" author
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
738 "\\(\\s +\\|\"\\s +\\)") from-string 0)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
739 (let ((addr (substring from-string (match-end 0) eos)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
740 (if (and (= (aref addr 0) ?<)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
741 (= (aref addr (1- (length addr))) ?>))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
742 (substring addr 1 (1- (length addr)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
743 addr))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
744 (if (string-match "[a-zA-Z0-9!@%._-]+" from-string 0)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
745 (substring from-string (match-beginning 0) (match-end 0))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746 "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747 )))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
748
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749 (defun sc-get-emailname (from-string)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
750 "Get the email terminus name from FROM-STRING."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
751 (cond
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
752 ((sc-style1-addresses from-string "%"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
753 ((sc-style1-addresses from-string "@"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
754 ((sc-style2-addresses from-string))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755 ((sc-style1-addresses from-string nil))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
756 (t (substring from-string 0 10))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
757
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
758
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
759 ;; ======================================================================
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760 ;; this section contains functions that will extract a list of names
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761 ;; from the name field string.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
762
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
763 (defun sc-spacify-name-chars (name)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764 (let ((len (length name))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
765 (s 0))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
766 (while (< s len)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
767 (if (memq (aref name s) sc-spacify-name-chars)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
768 (aset name s 32))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
769 (setq s (1+ s)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
770 name))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
771
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
772 (defun sc-name-substring (string start end extend)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
773 "Extract the specified substring of STRING from START to END.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
774 EXTEND is the number of characters on each side to extend the
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775 substring."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
776 (and start
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
777 (let ((sos (+ start extend))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
778 (eos (- end extend)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
779 (substring string sos
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
780 (or (string-match sc-titlecue-regexp string sos) eos)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781 ))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
782
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
783 (defun sc-extract-namestring (from-string)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
784 "Extract the name string from FROM-STRING.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
785 This should be the author's full name minus an optional title."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
786 (let ((pstart (string-match "(.*)" from-string 0))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
787 (pend (match-end 0))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788 (qstart (string-match "\".*\"" from-string 0))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
789 (qend (match-end 0))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
790 (bstart (string-match "\\([.a-zA-Z0-9_-]+\\s *\\)+" from-string 0))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
791 (bend (match-end 0)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
792 (sc-spacify-name-chars
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
793 (cond
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
794 ((sc-name-substring from-string pstart pend 1))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
795 ((sc-name-substring from-string qstart qend 1))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
796 ((sc-name-substring from-string bstart bend 0))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
797 ))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
798
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
799 (defun sc-chop-namestring (namestring)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
800 "Convert NAMESTRING to a list of names.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
801
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
802 example: (sc-namestring-to-list \"John Xavier Doe\")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
803 => (\"John\" \"Xavier\" \"Doe\")"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
804 (if (not (string= namestring ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
805 (append (list (sc-string-car namestring))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
806 (sc-chop-namestring (sc-string-cdr namestring)))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
807
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
808 (defun sc-strip-initials (namelist)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
809 "Extract the author's initials from the NAMELIST."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
810 (if (not namelist)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
811 nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
812 (concat (if (string= (car namelist) "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
813 ""
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
814 (substring (car namelist) 0 1))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
815 (sc-strip-initials (cdr namelist)))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
816
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
817
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
818 ;; ======================================================================
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
819 ;; this section handles selection of the attribution and citation strings
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
820
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
821 (defun sc-populate-alists (from-string)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
822 "Put important and useful information in the alists using FROM-STRING.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
823 Return the list of name symbols."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
824 (let* ((namelist (sc-chop-namestring (sc-extract-namestring from-string)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
825 (revnames (reverse (cdr namelist)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
826 (midnames (reverse (cdr revnames)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
827 (firstname (car namelist))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
828 (midnames (reverse (cdr revnames)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
829 (lastname (car revnames))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
830 (initials (sc-strip-initials namelist))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
831 (emailname (sc-get-emailname from-string))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
832 (n 1)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
833 (symlist (list 'emailname 'initials 'firstname 'lastname)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
834
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
835 ;; put basic information
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
836 (aput 'sc-gal-attributions 'firstname firstname)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
837 (aput 'sc-gal-attributions 'lastname lastname)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
838 (aput 'sc-gal-attributions 'emailname emailname)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
839 (aput 'sc-gal-attributions 'initials initials)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
840
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
841 (aput 'sc-gal-information "sc-firstname" firstname)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
842 (aput 'sc-gal-information "sc-lastname" lastname)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
843 (aput 'sc-gal-information "sc-emailname" emailname)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
844 (aput 'sc-gal-information "sc-initials" initials)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
845
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
846 ;; put middle names and build sc-author entry
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
847 (let ((author (concat firstname " ")))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
848 (while midnames
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
849 (let ((name (car midnames))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
850 (next (cdr midnames))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
851 (symbol (intern (format "middlename%d" n)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
852 (string (format "sc-middlename-%d" n)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
853 ;; first put new middlename
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
854 (aput 'sc-gal-attributions symbol name)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
855 (aput 'sc-gal-information string name)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
856 (setq n (1+ n))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
857 (nconc symlist (list symbol))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
858
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
859 ;; now build author name
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
860 (setq author (concat author name " "))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
861
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
862 ;; incr loop
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
863 (setq midnames next)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
864 ))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
865 (setq author (concat author lastname))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
866
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
867 ;; put author name and email address
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
868 (aput 'sc-gal-information "sc-author" author)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
869 (aput 'sc-gal-information "sc-from-address"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
870 (sc-get-address from-string author))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
871 (aput 'sc-gal-information "sc-reply-address"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
872 (sc-get-address (sc-field "reply-to") author))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
873 )
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
874 ;; return value
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
875 symlist))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
877 (defun sc-sort-attribution-alist ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
878 "Put preferred attribution at head of attributions alist."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
879 (asort 'sc-gal-attributions sc-preferred-attribution)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
880
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
881 ;; use backup scheme if preference is not legal
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
882 (if (or (null sc-preferred-attribution)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
883 (anot-head-p sc-gal-attributions sc-preferred-attribution)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
884 (let ((prefval (aget sc-gal-attributions
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
885 sc-preferred-attribution)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
886 (or (null prefval)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
887 (string= prefval ""))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
888 ;; no legal attribution
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
889 (if sc-use-only-preference-p
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
890 (aput 'sc-gal-attributions 'sc-user-query
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
891 (sc-query sc-default-attribution))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
892 ;; else use secondary scheme
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
893 (asort 'sc-gal-attributions 'firstname))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
894
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
895 (defun sc-build-attribution-alist (from-string)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
896 "Extract attributions from FROM-STRING, applying preferences."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
897 (let ((symlist (sc-populate-alists from-string))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
898 (headval (progn (sc-sort-attribution-alist)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
899 (aget sc-gal-attributions
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
900 (aheadsym sc-gal-attributions) t))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
901
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
902 ;; for each element in the symlist, remove the corresponding
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
903 ;; key-value pair in the alist, then insert just the value.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
904 (while symlist
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
905 (let ((value (aget sc-gal-attributions (car symlist) t))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
906 (next (cdr symlist)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
907 (if (not (or (null value)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
908 (string= value "")))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
909 (aput 'sc-gal-attributions value))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
910 (adelete 'sc-gal-attributions (car symlist))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
911 (setq symlist next)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
912
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
913 ;; add nicknames to the completion list
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
914 (let ((gal sc-gal-attributions))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
915 (while gal
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
916 (let ((nns sc-nicknames-alist)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
917 (galname (car (car gal))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
918 (while nns
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
919 (if (string= galname (car (car nns)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
920 (aput 'sc-gal-attributions (car (cdr (car nns)))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
921 (setq nns (cdr nns)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922 (setq gal (cdr gal)))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
923
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
924 ;; now reinsert the head (preferred) attribution unless it is nil,
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
925 ;; this effectively just moves the head value to the front of the
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
926 ;; list.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
927 (if headval
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
928 (aput 'sc-gal-attributions headval))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
929
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
930 ;; check to be sure alist is not nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
931 (if (null sc-gal-attributions)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
932 (aput 'sc-gal-attributions sc-default-attribution))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
933
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
934 (defun sc-select ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
935 "Select an attribution and create a citation string."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
936 (cond
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
937 (sc-nested-citation-p
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
938 (sc-update-gal ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
939 ((null (aget sc-gal-information "from" t))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
940 (aput 'sc-gal-information "sc-author" sc-default-author-name)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
941 (sc-update-gal (sc-query sc-default-attribution)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
942 ((null sc-gal-attributions)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
943 (sc-build-attribution-alist (aget sc-gal-information "from" t))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
944 (sc-confirm)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
945 (sc-update-gal (aheadsym sc-gal-attributions)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
946 (t
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
947 (sc-confirm)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
948 (sc-update-gal (aheadsym sc-gal-attributions))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
949 t)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
950
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
951
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
952 ;; ======================================================================
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
953 ;; region citing and unciting
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
954
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
955 (defun sc-cite-region (start end)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
956 "Cite a region delineated by START and END."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
957 (save-excursion
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
958 ;; set real end-of-region
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
959 (goto-char end)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
960 (forward-line 1)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
961 (set-mark (point))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
962 ;; goto real beginning-of-region
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
963 (goto-char start)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
964 (beginning-of-line)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
965 (let ((fstart (point))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
966 (fend (point)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
967 (while (< (point) (sc-mark))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
968 ;; remove leading whitespace if desired
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
969 (and sc-fixup-whitespace-p
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
970 (fixup-whitespace))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
971 ;; if end of line then perhaps autofill
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
972 (cond ((eolp)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
973 (or (= fstart fend)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
974 (not sc-auto-fill-region-p)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
975 (and sc-auto-fill-query-each-paragraph-p
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
976 (not (y-or-n-p "Fill this paragraph? ")))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
977 (save-excursion (set-mark fend)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
978 (goto-char (/ (+ fstart fend 1) 2))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
979 (run-hooks 'sc-fill-paragraph-hook)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
980 (setq fstart (point)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
981 fend (point)))
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3577
diff changeset
982 ;; not end of line so perhaps cite it
1745
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
983 ((not (looking-at sc-cite-regexp))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
984 (insert (aget sc-gal-information "sc-citation")))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
985 (sc-nested-citation-p
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
986 (insert (aget sc-gal-information "sc-nested-citation"))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
987 (setq fend (point))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
988 (forward-line 1))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
989 (and sc-auto-fill-query-each-paragraph-p
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
990 (message " "))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
991 )))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
992
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
993 (defun sc-uncite-region (start end cite-regexp)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
994 "Uncite a previously cited region delineated by START and END.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
995 CITE-REGEXP describes how a cited line of texts starts. Unciting also
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
996 auto-fills paragraph if sc-auto-fill-region-p is non-nil."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
997 (save-excursion
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
998 (set-mark end)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
999 (goto-char start)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1000 (beginning-of-line)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1001 (let ((fstart (point))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1002 (fend (point)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1003 (while (< (point) (sc-mark))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1004 ;; if end of line, then perhaps autofill
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1005 (cond ((eolp)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1006 (or (= fstart fend)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1007 (not sc-auto-fill-region-p)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1008 (and sc-auto-fill-query-each-paragraph-p
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1009 (not (y-or-n-p "Fill this paragraph? ")))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1010 (save-excursion (set-mark fend)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1011 (goto-char (/ (+ fstart fend 1) 2))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1012 (run-hooks 'sc-fill-paragraph-hook)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1013 (setq fstart (point)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1014 fend (point)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1015 ;; not end of line so perhaps uncite it
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1016 ((looking-at cite-regexp)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1017 (save-excursion
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1018 (save-restriction
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1019 (narrow-to-region (sc-linepos 'bol) (sc-linepos))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1020 (beginning-of-line)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1021 (delete-region (point-min)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1022 (progn (re-search-forward cite-regexp
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1023 (point-max)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1024 t)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1025 (match-end 0)))))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1026 (setq fend (point))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1027 (forward-line 1)))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1028
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1029
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1030 ;; ======================================================================
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1031 ;; this section contains paragraph filling support
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1032
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1033 (defun sc-guess-fill-prefix (&optional literalp)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1034 "Guess the fill prefix used on the current line.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1035 Use various heuristics to find the fill prefix. Search begins on first
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1036 non-blank line after point.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1037
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1038 1) If fill-prefix is already bound to the empty string, return
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1039 nil.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1040
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1041 2) If fill-prefix is already bound, but not to the empty
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1042 string, return the value of fill-prefix.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1043
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1044 3) If the current line starts with the last chosen citation
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1045 string, then that string is returned.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1046
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1047 4) If the current line starts with a string matching the regular
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1048 expression sc-cite-regexp, return the match. Note that if
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1049 optional LITERALP is provided and non-nil, then the *string*
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1050 that matches the regexp is return. Otherwise, if LITERALP is
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1051 not provided or is nil, the *regexp* sc-cite-regexp is
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1052 returned.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1053
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1054 5) If the current line starts with any number of characters,
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1055 followed by the sc-citation-delimiter and then white space,
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1056 that match is returned. See comment #4 above for handling of
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1057 LITERALP.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1058
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1059 6) Nil is returned."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1060 (save-excursion
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1061 ;; scan for first non-blank line in the region
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1062 (beginning-of-line)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1063 (skip-chars-forward "\n\t ")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1064 (beginning-of-line)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1065 (let ((citation (aget sc-gal-information "sc-citation"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1066 (generic-citation
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1067 (concat "\\s *[^ \t\n" sc-citation-delimiter "]+>\\s +")))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1068 (cond
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1069 ((string= fill-prefix "") nil) ;; heuristic #1
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1070 (fill-prefix) ;; heuristic #2
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1071 ((looking-at (regexp-quote citation)) citation) ;; heuristic #3
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1072 ((looking-at sc-cite-regexp) ;; heuristic #4
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1073 (if literalp
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1074 (buffer-substring
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1075 (point)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1076 (progn (re-search-forward (concat sc-cite-regexp "\\s *")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1077 (point-max) nil)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1078 (point)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1079 sc-cite-regexp))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1080 ((looking-at generic-citation) ;; heuristic #5
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1081 (if literalp
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1082 (buffer-substring
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1083 (point)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1084 (progn (re-search-forward generic-citation) (point)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1085 generic-citation))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1086 (t nil))))) ;; heuristic #6
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1087
3547
de673e6edb19 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 3397
diff changeset
1088 (defun sc-consistent-cite-p (prefix)
de673e6edb19 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 3397
diff changeset
1089 "Check current paragraph for consistent citation.
1745
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1090 Scans to paragraph delineated by (forward|backward)-paragraph to see
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1091 if all lines start with PREFIX. Returns t if entire paragraph is
3547
de673e6edb19 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 3397
diff changeset
1092 consistently cited, nil otherwise."
1745
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1093 (save-excursion
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1094 (let ((end (progn (forward-paragraph)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1095 (beginning-of-line)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1096 (or (not (eolp))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1097 (forward-char -1))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1098 (point)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1099 (start (progn (backward-paragraph)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1100 (beginning-of-line)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1101 (or (not (eolp))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1102 (forward-char 1))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1103 (point)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1104 (badline t))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1105 (goto-char start)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1106 (beginning-of-line)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1107 (while (and (< (point) end)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1108 badline)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1109 (setq badline (looking-at prefix))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1110 (forward-line 1))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1111 badline)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1112
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1113 (defun sc-fill-start (fill-prefix)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1114 "Find buffer position of start of region which begins with FILL-PREFIX.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1115 Restrict scan to current paragraph."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1116 (save-excursion
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1117 (let ((badline nil)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1118 (top (save-excursion
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1119 (backward-paragraph)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1120 (beginning-of-line)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1121 (or (not (eolp))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1122 (forward-char 1))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1123 (point))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1124 (while (and (not badline)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1125 (> (point) top))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1126 (forward-line -1)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1127 (setq badline (not (looking-at fill-prefix)))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1128 (forward-line 1)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1129 (point)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1130
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1131 (defun sc-fill-end (fill-prefix)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1132 "Find the buffer position of end of region which begins with FILL-PREFIX.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1133 Restrict scan to current paragraph."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1134 (save-excursion
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1135 (let ((badline nil)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1136 (bot (save-excursion
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1137 (forward-paragraph)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1138 (beginning-of-line)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1139 (or (not (eolp))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1140 (forward-char -1))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141 (point))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1142 (while (and (not badline)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1143 (< (point) bot))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1144 (beginning-of-line)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1145 (setq badline (not (looking-at fill-prefix)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1146 (forward-line 1)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1147 (forward-line -1)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1148 (point)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1149
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1150 (defun sc-fill-paragraph ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1151 "Supercite's paragraph fill function.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1152 Fill the paragraph containing or following point. Use
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1153 sc-guess-fill-prefix to find the fill-prefix for the paragraph.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1154
3547
de673e6edb19 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 3397
diff changeset
1155 If the paragraph is inconsistently cited (mixed fill-prefix), then the
1745
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1156 user is queried to restrict the the fill to only those lines around
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1157 point which begin with the fill prefix.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1158
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1159 The variable sc-fill-arg is passed to fill-paragraph and
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1160 fill-region-as-paragraph which controls justification of the
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1161 paragraph. sc-fill-arg is set by sc-fill-paragraph-manually."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1162 (save-excursion
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1163 (let ((pnt (point))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1164 (fill-prefix (sc-guess-fill-prefix t)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1165 (cond
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1166 ((not fill-prefix)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1167 (fill-paragraph sc-fill-arg))
3547
de673e6edb19 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 3397
diff changeset
1168 ((sc-consistent-cite-p fill-prefix)
1745
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1169 (fill-paragraph sc-fill-arg))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1170 ((y-or-n-p "Inconsistent citation found. Restrict? ")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1171 (message "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1172 (fill-region-as-paragraph (progn (goto-char pnt)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1173 (sc-fill-start fill-prefix))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1174 (progn (goto-char pnt)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1175 (sc-fill-end fill-prefix))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1176 sc-fill-arg))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1177 (t
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1178 (message "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1179 (progn
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1180 (setq fill-prefix (aget sc-gal-information "sc-citation"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1181 (fill-paragraph sc-fill-arg)))))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1182
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1183
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1184 ;; ======================================================================
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1185 ;; the following functions are the top level, interactive commands that
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1186 ;; can be bound to key strokes
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1187
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1188 (defun sc-insert-reference (arg)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1189 "Insert, at point, a reference header in the body of the reply.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1190 Numeric ARG indicates which header style from sc-rewrite-header-list
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1191 to use when rewriting the header. No supplied ARG indicates use of
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1192 sc-preferred-header-style.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1193
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1194 With just \\[universal-argument], electric reference insert mode is
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1195 entered, regardless of the value of sc-electric-references-p. See
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1196 sc-electric-mode for more information."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1197 (interactive "P")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1198 (if (consp arg)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1199 (sc-electric-mode)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1200 (let ((pref (cond ((sc-valid-index-p arg) arg)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1201 ((sc-valid-index-p sc-preferred-header-style)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1202 sc-preferred-header-style)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1203 (t 0))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1204 (if sc-electric-references-p (sc-electric-mode pref)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1205 (condition-case err
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1206 (eval (nth pref sc-rewrite-header-list))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1207 (void-function
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1208 (progn (message
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1209 "Symbol's function definition is void: %s. (Header %d)."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1210 (symbol-name (car (cdr err)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1211 pref)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1212 (beep)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1213 (error
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1214 (progn (message "Error evaluating rewrite header function %d."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1215 pref)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1216 (beep)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1217 )))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1218
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1219 (defun sc-cite (arg)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1220 "Cite the region of text between point and mark.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1221 Numeric ARG, if supplied, is passed unaltered to sc-insert-reference."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1222 (interactive "P")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1223 (if (not (sc-mark))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1224 (error "Please designate a region to cite (i.e. set the mark)."))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1225 (catch 'select-abort
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1226 (let ((sc-cite-context 'citing)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1227 (sc-force-confirmation-p (interactive-p)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1228 (sc-select)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1229 (undo-boundary)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1230 (let ((xchange (if (> (sc-mark) (point)) nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1231 (exchange-point-and-mark)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1232 t)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1233 (sc-insert-reference arg)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1234 (sc-cite-region (point) (sc-mark))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1235 ;; leave point on first cited line
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1236 (while (and (< (point) (sc-mark))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1237 (not (looking-at (aget sc-gal-information
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1238 (if sc-nested-citation-p
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1239 "sc-nested-citation"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1240 "sc-citation")))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1241 (forward-line 1))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1242 (and xchange
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1243 (exchange-point-and-mark))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1244 ))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1245
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1246 (defun sc-uncite ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1247 "Uncite the region between point and mark."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1248 (interactive)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1249 (if (not (sc-mark))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1250 (error "Please designate a region to uncite (i.e. set the mark)."))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1251 (undo-boundary)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1252 (let ((xchange (if (> (sc-mark) (point)) nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1253 (exchange-point-and-mark)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1254 t))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1255 (fp (or (sc-guess-fill-prefix)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1256 "")))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1257 (sc-uncite-region (point) (sc-mark) fp)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1258 (and xchange
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1259 (exchange-point-and-mark))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1260
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1261 (defun sc-recite ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1262 "Recite the region by first unciting then citing the text."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1263 (interactive)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1264 (if (not (sc-mark))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1265 (error "Please designate a region to recite (i.e. set the mark)."))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1266 (catch 'select-abort
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1267 (let ((sc-cite-context 'reciting)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1268 (sc-force-confirmation-p t))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1269 (sc-select)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1270 (undo-boundary)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1271 (let ((xchange (if (> (sc-mark) (point)) nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1272 (exchange-point-and-mark)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1273 t))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1274 (fp (or (sc-guess-fill-prefix)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1275 "")))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1276 (sc-uncite-region (point) (sc-mark) fp)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1277 (sc-cite-region (point) (sc-mark))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1278 (and xchange
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1279 (exchange-point-and-mark))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1280 ))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1281
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1282 (defun sc-insert-citation ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1283 "Insert citation string at beginning of current line."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1284 (interactive)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1285 (save-excursion
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1286 (beginning-of-line)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1287 (insert (aget sc-gal-information "sc-citation"))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1288
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1289 (defun sc-open-line (arg)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1290 "Insert a newline and leave point before it.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1291 Also inserts the guessed prefix at the beginning of the new line. With
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1292 numeric ARG, inserts that many new lines."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1293 (interactive "p")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1294 (save-excursion
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1295 (let ((start (point))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1296 (string (or (sc-guess-fill-prefix t)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1297 "")))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1298 (open-line arg)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1299 (goto-char start)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1300 (forward-line 1)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1301 (while (< 0 arg)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1302 (insert string)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1303 (forward-line 1)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1304 (setq arg (- arg 1))))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1305
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1306 (defun sc-fill-paragraph-manually (arg)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1307 "Fill current cited paragraph.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1308 Really just runs the hook sc-fill-paragraph-hook, however it does set
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1309 the global variable sc-fill-arg to the value of ARG. This is
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1310 currently the only way to pass an argument to a hookified function."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1311 (interactive "P")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1312 (setq sc-fill-arg arg)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1313 (run-hooks 'sc-fill-paragraph-hook))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1314
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1315 (defun sc-modify-information (arg)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1316 "Interactively modify information in the information alist.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1317 \\[universal-argument] if supplied, deletes the entry from the alist.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1318 You can add an entry by supplying a key instead of completing."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1319 (interactive "P")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1320 (let* ((delete-p (consp arg))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1321 (action (if delete-p "delete" "modify"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1322 (defaultkey (aheadsym sc-gal-information))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1323 (prompt (concat "Select information key to "
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1324 action ": (default "
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1325 defaultkey ") "))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1326 (key (completing-read prompt sc-gal-information))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1327 )
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1328 (if (or (string= key "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1329 (null key))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1330 (setq key defaultkey))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1331 (if delete-p (adelete 'sc-gal-information key)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1332 (let* ((oldval (aget sc-gal-information key t))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1333 (prompt (concat "Enter new value for key \""
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1334 key "\" (default \"" oldval "\") "))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1335 (newval (read-input prompt)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1336 (if (or (string= newval "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1337 (null newval))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1338 nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1339 (aput 'sc-gal-information key newval)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1340 )))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1341
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1342 (defun sc-view-field (arg)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1343 "View field values in the information alist.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1344 This is essentially an interactive version of sc-field, and is similar
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1345 to sc-modify-information, except that the field values can't be
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1346 modified. With \\[universal-argument], if supplied, inserts the value
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1347 into the current buffer as well."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1348 (interactive "P")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1349 (let* ((defaultkey (aheadsym sc-gal-information))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1350 (prompt (concat "View information key: (default "
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1351 defaultkey ") "))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1352 (key (completing-read prompt sc-gal-information)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1353 (if (or (string= key "")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1354 (null key))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1355 (setq key defaultkey))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1356 (let* ((val (aget sc-gal-information key t))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1357 (pval (if val (concat "\"" val "\"") "nil")))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1358 (message "value of key %s: %s" key pval)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1359 (if (and key (consp arg)) (insert val)))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1360
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1361 (defun sc-glom-headers ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1362 "Glom information from mail headers in region between point and mark.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1363 Any old information is lost, unless an error occurs."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1364 (interactive)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1365 (let ((attr (copy-sequence sc-gal-attributions))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1366 (info (copy-sequence sc-gal-information)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1367 (setq sc-gal-attributions nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1368 sc-gal-information nil)
4707
ca55f9c620c5 (sc-glom-headers): Bind mark-active around calling region-...
Richard M. Stallman <rms@gnu.org>
parents: 4662
diff changeset
1369 (let (start end
1745
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1370 (sc-force-confirmation-p t)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1371 (sc-cite-context nil))
4707
ca55f9c620c5 (sc-glom-headers): Bind mark-active around calling region-...
Richard M. Stallman <rms@gnu.org>
parents: 4662
diff changeset
1372 (let ((mark-active t))
ca55f9c620c5 (sc-glom-headers): Bind mark-active around calling region-...
Richard M. Stallman <rms@gnu.org>
parents: 4662
diff changeset
1373 (setq start (region-beginning)
ca55f9c620c5 (sc-glom-headers): Bind mark-active around calling region-...
Richard M. Stallman <rms@gnu.org>
parents: 4662
diff changeset
1374 end (region-end)))
1745
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1375 (sc-fetch-fields start end)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1376 (if (null sc-gal-information)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1377 (progn
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1378 (message "No mail headers found! Restoring old information.")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1379 (setq sc-gal-attributions attr
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1380 sc-gal-information info))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1381 (sc-mail-yank-clear-headers start end)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1382 (if (not (catch 'select-abort
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1383 (condition-case foo
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1384 (sc-select)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1385 (quit (beep) (throw 'select-abort nil)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1386 ))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1387 (setq sc-gal-attributions attr
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1388 sc-gal-information info))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1389 ))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1390
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1391 (defun sc-version (arg)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1392 "Show supercite version.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1393 Universal argument (\\[universal-argument]) ARG inserts version
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1394 information in the current buffer instead of printing the message in
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1395 the echo area."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1396 (interactive "P")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1397 (if (consp arg)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1398 (insert "Using Supercite version " sc-version-number)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1399 (message "Using Supercite version %s" sc-version-number)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1400
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1401
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1402 ;; ======================================================================
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1403 ;; leach onto current mode
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1404
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1405 (defun sc-append-current-keymap ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1406 "Append some useful key bindings to the current local key map.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1407 This searches sc-local-keymap for the keymap to install based on the
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1408 major-mode of the current buffer."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1409 (let ((hook (car (cdr (assq major-mode sc-local-keymaps)))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1410 (cond
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1411 ((not hook)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1412 (run-hooks 'sc-default-keymap))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1413 ((not (listp hook))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1414 (setq hook (car (cdr (assq hook sc-local-keymaps))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1415 (run-hooks 'hook))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1416 (t
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1417 (run-hooks 'hook))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1418 (setq sc-leached-keymap (current-local-map)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1419
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1420 (defun sc-snag-all-keybindings ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1421 "Snag all keybindings in major-mode's current keymap."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1422 (let* ((curkeymap (current-local-map))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1423 (symregexp ".*sc-.*\n")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1424 (docstring (substitute-command-keys "\\{curkeymap}"))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1425 (start 0)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1426 (maxend (length docstring))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1427 (spooge ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1428 (while (and (< start maxend)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1429 (string-match symregexp docstring start))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1430 (setq spooge (concat spooge (substring docstring
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1431 (match-beginning 0)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1432 (match-end 0))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1433 (setq start (match-end 0)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1434 spooge))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1435
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1436 (defun sc-spoogify-docstring ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1437 "Modifies (makes into spooge) the docstring for the current major mode.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1438 This will leach the keybinding descriptions for supercite onto the end
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1439 of the current major mode's docstring. If major mode is preloaded,
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1440 this function will first make a copy of the list associated with the
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1441 mode, then modify this copy."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1442 (let* ((symfunc (symbol-function major-mode))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1443 (doc-cdr (and (listp symfunc) (nthcdr 2 symfunc)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1444 (doc-str (documentation major-mode)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1445 (cond
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1446 ;; is a docstring even provided?
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1447 ((not (stringp doc-str)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1448 ;; have we already leached on?
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1449 ((string-match "Supercite" doc-str))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1450 ;; lets build the new doc string
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1451 (t
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1452 (let* ((described (sc-snag-all-keybindings))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1453 (commonstr "
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1454
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1455 The major mode for this buffer has been modified to include the
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1456 Supercite 2.3 package for handling attributions and citations of
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1457 original messages in email replies. For more information on this
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1458 package, type \"\\[sc-describe]\".")
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1459 (newdoc-str
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1460 (concat doc-str commonstr
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1461 (if (not (string= described ""))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1462 (concat "\n\nThe following keys are bound "
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1463 "to Supercite commands:\n\n"
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1464 described)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1465 ))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1466 (cond
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1467 (doc-cdr
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1468 (condition-case nil
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1469 (setcar doc-cdr newdoc-str)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1470 (error
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1471 ;; the major mode must be preloaded, make a copy first
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1472 (setq symfunc (copy-sequence (symbol-function major-mode))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1473 doc-cdr (nthcdr 2 symfunc))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1474 (setcar doc-cdr newdoc-str)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1475 (fset major-mode symfunc))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1476 ;; lemacs 19 byte-code.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1477 ;; Set function to a new byte-code vector with the
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1478 ;; new documentation in the documentation slot (element 4).
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1479 ;; We can't use aset because aset won't allow you to modify
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1480 ;; a byte-code vector.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1481 ;; Include element 5 if the vector has one.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1482 (t
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1483 (fset major-mode
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1484 (apply 'make-byte-code
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1485 (aref symfunc 0) (aref symfunc 1)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1486 (aref symfunc 2) (aref symfunc 3)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1487 newdoc-str
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1488 (if (> (length symfunc) 5)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1489 (list (aref symfunc 5)))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1490 )))))))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1491
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1492
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1493 ;; ======================================================================
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1494 ;; this section contains default hooks and hook support for execution
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1495
3397
b21d11dec171 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 1745
diff changeset
1496 ;;;###autoload
1745
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1497 (defun sc-cite-original ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1498 "Hook version of sc-cite.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1499 This is callable from the various mail and news readers' reply
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1500 function according to the agreed upon standard. See \\[sc-describe]
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1501 for more details. Sc-cite-original does not do any yanking of the
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1502 original message but it does require a few things:
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1503
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1504 1) The reply buffer is the current buffer.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1505
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1506 2) The original message has been yanked and inserted into the
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1507 reply buffer.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1508
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1509 3) Verbose mail headers from the original message have been
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1510 inserted into the reply buffer directly before the text of the
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1511 original message.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1512
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1513 4) Point is at the beginning of the verbose headers.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1514
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1515 5) Mark is at the end of the body of text to be cited."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1516 (run-hooks 'sc-pre-hook)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1517 (setq sc-gal-attributions nil)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1518 (setq sc-gal-information nil)
4707
ca55f9c620c5 (sc-glom-headers): Bind mark-active around calling region-...
Richard M. Stallman <rms@gnu.org>
parents: 4662
diff changeset
1519 (let (start end)
ca55f9c620c5 (sc-glom-headers): Bind mark-active around calling region-...
Richard M. Stallman <rms@gnu.org>
parents: 4662
diff changeset
1520 (let ((mark-active t))
ca55f9c620c5 (sc-glom-headers): Bind mark-active around calling region-...
Richard M. Stallman <rms@gnu.org>
parents: 4662
diff changeset
1521 (setq start (region-beginning)
ca55f9c620c5 (sc-glom-headers): Bind mark-active around calling region-...
Richard M. Stallman <rms@gnu.org>
parents: 4662
diff changeset
1522 end (region-end)))
1745
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1523 (sc-fetch-fields start end)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1524 (sc-mail-yank-clear-headers start end)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1525 (if (not sc-all-but-cite-p)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1526 (sc-cite sc-preferred-header-style))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1527 (sc-append-current-keymap)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1528 (sc-spoogify-docstring)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1529 (run-hooks 'sc-post-hook)))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1530
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1531
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1532 ;; ======================================================================
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1533 ;; describe this package
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1534 ;;
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1535 (defun sc-describe ()
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1536 "Supercite version 2.3 is now described in a texinfo manual which
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3577
diff changeset
1537 makes the documentation available both for online perusal via emacs'
1745
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1538 info system, or for hard-copy printing using the TeX facility.
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1539
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1540 To view the online document hit \\[info], then \"mSupercite <RET>\"."
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1541 (interactive)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1542 (describe-function 'sc-describe))
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1543
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1544 ;; ======================================================================
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1545 ;; load hook
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1546 (run-hooks 'sc-load-hook)
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1547 (provide 'sc)