annotate lisp/=sc.el @ 4413:5a00cec8e9b0

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