annotate lisp/=sc.el @ 4012:26e0209b6e56

Doc fix.
author Roland McGrath <roland@gnu.org>
date Wed, 07 Jul 1993 02:03:18 +0000
parents 41ef3e4adb0d
children 51964472e60e
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
341d551a3411 Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122 (require 'sc-alist)
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)