annotate lisp/textmodes/refbib.el @ 35362:f6b85f5a5397

(isearch-highlight): Set isearch-overlay priority to 1 here rather than each time through isearch-lazy-highlight-new-loop. (isearch-lazy-highlight-max): Variable deleted. (isearch-lazy-highlight-max-at-a-time): New user variable, like isearch-lazy-highlight-max but controls a single invocation of isearch-lazy-highlight-update. (isearch-lazy-highlight-wrapped): Variable recreated. (isearch-lazy-highlight-window-start): New variable. (isearch-lazy-highlight-cleanup): Restored to behavior of before 2-Jan. (isearch-lazy-highlight-remove-overlays): Function deleted; behavior folded into isearch-lazy-highlight-cleanup. "Keep" behavior removed. (isearch-lazy-highlight-new-loop): Restore old behavior of calling isearch-lazy-highlight-update in a loop rather than just once. Test isearch-invalid-regexp here and decide not to start a new loop, rather than testing it each time through isearch-lazy-highlight-update. (isearch-lazy-highlight-search): Function restored. (isearch-lazy-highlight-update): Get called in a timer loop again, but this time highlight more than one match each time through. Only highlight matches in the visible part of the window. Start at point, move in the direction of the search, and wrap around at the edge of the window. Use sit-for to force redisplay and ensure window-start is credible. "Face suppressing" behavior removed; overlay priorities should make it unnecessary, right? (isearch-highlight): Face suppressing behavior removed. (isearch-dehighlight): Face suppressing behavior removed. (isearch-set-lazy-highlight-faces-at): Removed.
author Gerd Moellmann <gerd@gnu.org>
date Wed, 17 Jan 2001 14:10:25 +0000
parents adcead6b7ce1
children 5ade352e8d1c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
659
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
1 ;;; refbib.el --- convert refer-style references to ones usable by Latex bib
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
2
845
213978acbc1e entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 829
diff changeset
3 ;; Copyright (C) 1989 Free Software Foundation, Inc.
213978acbc1e entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 829
diff changeset
4
829
f6f8f3eae92f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 814
diff changeset
5 ;; Author: Henry Kautz <kautz@research.att.com>
f6f8f3eae92f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 814
diff changeset
6 ;; Keywords: bib, tex
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
7
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
9
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
13 ;; any later version.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
14
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
18 ;; GNU General Public License for more details.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
19
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
23 ;; Boston, MA 02111-1307, USA.
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
24
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
25 ;;; Commentary:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
26
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
27 ;; Use: from a buffer containing the refer-style bibliography,
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
28 ;; M-x r2b-convert-buffer
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
29 ;; Program will prompt for an output buffer name, and will log
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
30 ;; warnings during the conversion process in the buffer *Log*.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
31
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
32 ;;; Change Log:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
33
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
34 ;; HISTORY
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
35 ;; 9/88, created H.Kautz
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
36 ;; modified 1/19/89, allow books with editor but no author;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
37 ;; added %O ordering field;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
38 ;; appended illegal multiple fields, instead of
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
39 ;; discarding;
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
40 ;; added rule, a tech report whose %R number
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
41 ;; contains "ISBN" is really a book
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
42 ;; added rule, anything with an editor is a book
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
43 ;; or a proceedings
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
44 ;; added 'manual type, for items with institution
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
45 ;; but no author or editor
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
46 ;; fixed bug so trailing blanks are trimmed
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
47 ;; added 'proceedings type
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
48 ;; used "organization" field for proceedings
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
49 ;; modified 2/16/89, updated help messages
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
50 ;; modified 2/23/89, include capitalize stop words in r2b stop words,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
51 ;; fixed problems with contractions (e.g. it's),
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
52 ;; caught multiple stop words in a row
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
53 ;; modified 3/1/89, fixed capitalize-title for first words all caps
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
54 ;; modified 3/15/89, allow use of " to delimit fields
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14002
diff changeset
55 ;; modified 4/18/89, properly "quote" special characters on output
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
56
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
57 ;;; Code:
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
58
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
59 ;**********************************************************
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
60 ; User Parameters
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
61
20959
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
62 (defgroup refbib nil
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
63 "Convert refer-style references to ones usable by Latex bib."
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
64 :prefix "r2b-"
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
65 :group 'wp)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
66
20959
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
67 (defcustom r2b-trace-on nil
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
68 "*Non-nil means trace conversion."
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
69 :type 'boolean
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
70 :group 'refbib)
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
71
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
72 (defcustom r2b-journal-abbrevs
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
73 '(
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
74 )
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
75 "Abbreviation list for journal names.
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
76 If the car of an element matches a journal name exactly, it is replaced by
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
77 the cadr when output. Braces must be included if replacement is a
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
78 {string}, but not if replacement is a bibtex abbreviation. The cadr
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
79 may be eliminated if is exactly the same as the car.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
80 Because titles are capitalized before matching, the abbreviation
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
81 for the journal name should be listed as beginning with a capital
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
82 letter, even if it really doesn't.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
83 For example, a value of '((\"Aij\" \"{Artificial Intelligence}\")
7639
67b7d1ea7b2e Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 845
diff changeset
84 \(\"Ijcai81\" \"ijcai7\")) would expand Aij to the text string
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
85 \"Artificial Intelligence\", but would replace Ijcai81 with the
20959
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
86 BibTeX macro \"ijcai7\"."
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
87 :type '(repeat (list string string))
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
88 :group 'refbib)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
89
20959
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
90 (defcustom r2b-booktitle-abbrevs
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
91 '(
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
92 )
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
93 "Abbreviation list for book and proceedings names.
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
94 If the car of an element matches a title or booktitle exactly, it is
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
95 replaced by the cadr when output. Braces must be included if
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
96 replacement is a {string}, but not if replacement is a bibtex
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
97 abbreviation. The cadr may be eliminated if is exactly the same as
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
98 the car.
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
99 Because titles are capitalized before matching, the abbreviated title
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
100 should be listed as beginning with a capital letter, even if it doesn't.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
101 For example, a value of '((\"Aij\" \"{Artificial Intelligence}\")
7639
67b7d1ea7b2e Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 845
diff changeset
102 \(\"Ijcai81\" \"ijcai7\")) would expand Aij to the text string
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
103 \"Artificial Intelligence\", but would replace Ijcai81 with the
20959
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
104 BibTeX macro \"ijcai7\"."
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
105 :type '(repeat (list string string))
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
106 :group 'refbib)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
107
20959
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
108 (defcustom r2b-proceedings-list
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
109 '()
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
110 "Assoc list of books or journals which are really conference proceedings,
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
111 but whose name and whose abbrev expansion (as defined in `r2b-journal-abbrevs'
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
112 and `r2b-booktitle-abbrevs') does not contain the words \"conference\" or
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
113 \"proceedings\". (Those cases are handled automatically.)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
114 The entry must match the given data exactly.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
115 Because titles are capitalized before matching, the items in this list
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
116 should begin with a capital letter.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
117 For example, suppose the title \"Ijcai81\" is used for the proceedings of
16420
35bc9eed0c1f (r2b-proceedings-list, r2b-help-message): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 16284
diff changeset
118 a conference, and its expansion is the BibTeX macro \"ijcai7\". Then
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
119 `r2b-proceedings-list' should be '((\"Ijcai81\") ...). If instead its
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
120 expansion were \"Proceedings of the Seventh International Conference
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
121 on Artificial Intelligence\", then you would NOT need to include Ijcai81
20959
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
122 in `r2b-proceedings-list' (although it wouldn't cause an error)."
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
123 :type '(repeat (list string string))
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
124 :group 'refbib)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
125
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
126 (defvar r2b-additional-stop-words
20959
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
127 "Some\\|What"
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
128 "Words not to be used to build the citation key.
16284
f4cc8bf7ca84 (r2b-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
129 This is in addition to the `r2b-capitalize-title-stop-words'.")
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
130
20959
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
131 (defcustom r2b-delimit-with-quote t
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
132 "*If true, then use \" to delimit fields, otherwise use braces."
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
133 :type 'boolean
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
134 :group 'refbib)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
135
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
136 ;**********************************************************
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
137 ; Utility Functions
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
138
16284
f4cc8bf7ca84 (r2b-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
139 (defvar r2b-capitalize-title-stop-words
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
140 (concat
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
141 "the\\|and\\|of\\|is\\|a\\|an\\|of\\|for\\|in\\|to\\|in\\|on\\|at\\|"
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
142 "by\\|with\\|that\\|its")
16284
f4cc8bf7ca84 (r2b-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
143 "Words not to be capitalized in a title (unless the first word).")
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
144
16284
f4cc8bf7ca84 (r2b-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
145 (defvar r2b-capitalize-title-stop-regexp
f4cc8bf7ca84 (r2b-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
146 (concat "\\(" r2b-capitalize-title-stop-words "\\)\\(\\b\\|'\\)"))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
147
16284
f4cc8bf7ca84 (r2b-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
148 (defun r2b-capitalize-title-region (begin end)
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
149 "Like `capitalize-region', but don't capitalize stop words, except the first."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
150 (interactive "r")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
151 (let ((case-fold-search nil) (orig-syntax-table (syntax-table)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
152 (unwind-protect
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
153 (save-restriction
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
154 (set-syntax-table text-mode-syntax-table)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
155 (narrow-to-region begin end)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
156 (goto-char (point-min))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
157 (if (looking-at "[A-Z][a-z]*[A-Z]")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
158 (forward-word 1)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
159 (capitalize-word 1))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
160 (while (re-search-forward "\\<" nil t)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
161 (if (looking-at "[A-Z][a-z]*[A-Z]")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
162 (forward-word 1)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
163 (if (let ((case-fold-search t))
16284
f4cc8bf7ca84 (r2b-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
164 (looking-at r2b-capitalize-title-stop-regexp))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
165 (downcase-word 1)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
166 (capitalize-word 1)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
167 ))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
168 (set-syntax-table orig-syntax-table))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
169
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
170
16284
f4cc8bf7ca84 (r2b-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
171 (defun r2b-capitalize-title (s)
f4cc8bf7ca84 (r2b-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
172 "Like `capitalize', but don't capitalize stop words, except the first."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
173 (save-excursion
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
174 (set-buffer (get-buffer-create "$$$Scratch$$$"))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
175 (erase-buffer)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
176 (insert s)
16284
f4cc8bf7ca84 (r2b-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
177 (r2b-capitalize-title-region (point-min) (point-max))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
178 (buffer-string)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
179
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
180 ;*********************************************************
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
181 (defun r2b-reset ()
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
182 "Unbind defvars, for debugging."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
183 (interactive)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
184 (makunbound 'r2b-journal-abbrevs)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
185 (makunbound 'r2b-booktitle-abbrevs)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
186 (makunbound 'r2b-proceedings-list)
16284
f4cc8bf7ca84 (r2b-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
187 (makunbound 'r2b-capitalize-title-stop-words)
f4cc8bf7ca84 (r2b-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
188 (makunbound 'r2b-capitalize-title-stop-regexp)
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
189 (makunbound 'r2b-additional-stop-words)
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
190 (makunbound 'r2b-stop-regexp))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
191
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
192 (defvar r2b-stop-regexp
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
193 (concat "\\`\\(\\("
16284
f4cc8bf7ca84 (r2b-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
194 r2b-additional-stop-words "\\|" r2b-capitalize-title-stop-words
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
195 "\\)\\('\\w*\\)?\\W+\\)*\\([A-Z0-9]+\\)"))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
196
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
197
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
198 (defun r2b-trace (&rest args)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
199 (if r2b-trace-on
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
200 (progn
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
201 (apply (function message) args)
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
202 (sit-for 0))))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
203
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
204 (defun r2b-match (exp)
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
205 "Returns string matched in current buffer."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
206 (buffer-substring (match-beginning exp) (match-end exp)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
207
20959
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
208 (defcustom r2b-out-buf-name "*Out*"
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
209 "*Name of buffer for output from refer-to-bibtex."
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
210 :type 'string
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
211 :group 'refbib)
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
212
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
213 (defcustom r2b-log-name "*Log*"
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
214 "*Name of buffer for logs errors from refer-to-bibtex."
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
215 :type 'string
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
216 :group 'refbib)
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16420
diff changeset
217
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
218 (defvar r2b-in-buf nil)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
219 (defvar r2b-out-buf nil)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
220 (defvar r2b-log nil)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
221
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
222 (defvar r2b-error-found nil)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
223
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
224 (setq r2b-variables '(
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
225 r2b-error-found
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
226 r2bv-author
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
227 r2bv-primary-author
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
228 r2bv-date
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
229 r2bv-year
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
230 r2bv-decade
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
231 r2bv-month
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
232 r2bv-title
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
233 r2bv-title-first-word
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
234 r2bv-editor
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
235 r2bv-annote
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
236 r2bv-tr
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
237 r2bv-address
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
238 r2bv-institution
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
239 r2bv-keywords
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
240 r2bv-booktitle
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
241 r2bv-journal
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
242 r2bv-volume
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
243 r2bv-number
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
244 r2bv-pages
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
245 r2bv-booktitle
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
246 r2bv-kn
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
247 r2bv-publisher
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
248 r2bv-organization
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
249 r2bv-school
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
250 r2bv-type
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
251 r2bv-where
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
252 r2bv-note
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
253 r2bv-ordering
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
254 ))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
255
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
256 (defun r2b-clear-variables ()
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
257 "Set all global vars used by r2b to nil."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
258 (let ((vars r2b-variables))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
259 (while vars
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
260 (set (car vars) nil)
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
261 (setq vars (cdr vars)))))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
262
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
263 (defun r2b-warning (&rest args)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
264 (setq r2b-error-found t)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
265 (princ (apply (function format) args) r2b-log)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
266 (princ "\n" r2b-log)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
267 (princ "\n" r2b-out-buf)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
268 (princ "% " r2b-out-buf)
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
269 (princ (apply (function format) args) r2b-out-buf))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
270
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
271 (defun r2b-get-field (var field &optional unique required capitalize)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
272 "Set VAR to string value of FIELD, if any. If none, VAR is set to
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
273 nil. If multiple fields appear, then separate values with the
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
274 '\\nand\\t\\t', unless UNIQUE is non-nil, in which case log a warning
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
275 and just concatenate the values. Trim off leading blanks and tabs on
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
276 first line, and trailing blanks and tabs of every line. Log a warning
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
277 and set VAR to the empty string if REQUIRED is true. Capitalize as a
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
278 title if CAPITALIZE is true. Returns value of VAR."
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
279 (let (item val (not-past-end t))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
280 (r2b-trace "snarfing %s" field)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
281 (goto-char (point-min))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
282 (while (and not-past-end
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
283 (re-search-forward
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
284 (concat "^" field "\\b[ \t]*\\(.*[^ \t\n]\\)[ \t]*") nil t))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
285 (setq item (r2b-match 1))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
286 (while (and (setq not-past-end (zerop (forward-line 1)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
287 (not (looking-at "[ \t]*$\\|%")))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
288 (looking-at "\\(.*[^ \t\n]\\)[ \t]*$")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
289 (setq item (concat item "\n" (r2b-match 1)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
290 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
291 (if (null val)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
292 (setq val item)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
293 (if unique
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
294 (progn
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
295 (r2b-warning "*Illegal multiple field %s %s" field item)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
296 (setq val (concat val "\n" item))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
297 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
298 (setq val (concat val "\n\t\tand " item))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
299 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
300 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
301 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
302 (if (and val capitalize)
16284
f4cc8bf7ca84 (r2b-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
303 (setq val (r2b-capitalize-title val)))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
304 (set var val)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
305 (if (and (null val) required)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
306 (r2b-require var))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
307 ))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
308
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
309 (defun r2b-set-match (var n regexp string )
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
310 "Set VAR to the Nth subpattern in REGEXP matched by STRING, or nil if none."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
311 (set var
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
312 (if (and (stringp string) (string-match regexp string))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
313 (substring string (match-beginning n) (match-end n))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
314 nil)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
315 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
316 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
317
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
318 (defvar r2b-month-abbrevs
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
319 '(("jan") ("feb") ("mar") ("apr") ("may") ("jun") ("jul") ("aug")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
320 ("sep") ("oct") ("nov") ("dec")))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
321
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
322 (defun r2b-convert-month ()
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
323 "Try to convert `r2bv-month' to a standard 3 letter name."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
324 (if r2bv-month
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
325 (let ((months r2b-month-abbrevs))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
326 (if (string-match "[^0-9]" r2bv-month)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
327 (progn
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
328 (while (and months (not (string-match (car (car months))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
329 r2bv-month)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
330 (setq months (cdr months)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
331 (if months
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
332 (setq r2bv-month (car (car months)))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
333 (progn
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
334 (setq months (car (read-from-string r2bv-month)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
335 (if (and (numberp months)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
336 (> months 0)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
337 (< months 13))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
338 (setq r2bv-month (car (nth months r2b-month-abbrevs)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
339 (progn
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
340 (r2b-warning "* Ridiculous month")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
341 (setq r2bv-month nil))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
342 ))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
343 ))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
344 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
345 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
346
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
347 (defun r2b-snarf-input ()
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
348 "Parse buffer into global variables."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
349 (let ((case-fold-search t))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
350 (r2b-trace "snarfing...")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
351 (sit-for 0)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
352 (set-buffer r2b-in-buf)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
353 (goto-char (point-min))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
354 (princ " " r2b-log)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
355 (princ (buffer-substring (point) (progn (end-of-line) (point))) r2b-log)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
356 (terpri r2b-log)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
357
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
358 (r2b-get-field 'r2bv-author "%A")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
359 (r2b-get-field 'r2bv-editor "%E")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
360 (cond
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
361 (r2bv-author
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
362 (r2b-set-match 'r2bv-primary-author 1
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
363 "\\b\\(\\w+\\)[ \t]*\\($\\|,\\)" r2bv-author)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
364 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
365 (r2bv-editor
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
366 (r2b-set-match 'r2bv-primary-author 1
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
367 "\\b\\(\\w+\\)[ \t]*\\($\\|,\\)" r2bv-editor)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
368 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
369 (t
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
370 (setq r2bv-primary-author "")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
371 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
372 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
373
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
374 (r2b-get-field 'r2bv-date "%D" t t)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
375 (r2b-set-match 'r2bv-year 0 "[12][0-9][0-9][0-9]" r2bv-date)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
376 (and (null r2bv-year)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
377 (r2b-set-match 'r2bv-year 1 "[^0-9]\\([0-9][0-9]\\)$" r2bv-date)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
378 (setq r2bv-year (concat "19" r2bv-year)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
379 (r2b-set-match 'r2bv-decade 1 "..\\(..\\)" r2bv-year)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
380 (r2b-set-match 'r2bv-month 0
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
381 "[0-9]+/\\|[a-zA-Z]+" r2bv-date)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
382 (if (and (stringp r2bv-month) (string-match "\\(.*\\)/$" r2bv-month))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
383 (setq r2bv-month (substring r2bv-month 0 (match-end 1))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
384 (r2b-convert-month)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
385
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
386 (r2b-get-field 'r2bv-title "%T" t t t)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
387 (r2b-set-match 'r2bv-title-first-word 4
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
388 r2b-stop-regexp
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
389 r2bv-title)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
390
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
391 (r2b-get-field 'r2bv-annote "%X" t )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
392 (r2b-get-field 'r2bv-tr "%R" t)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
393 (r2b-get-field 'r2bv-address "%C" t)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
394 (r2b-get-field 'r2bv-institution "%I" t)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
395 (r2b-get-field 'r2bv-keywords "%K")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
396 (r2b-get-field 'r2bv-booktitle "%B" t nil t)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
397 (r2b-get-field 'r2bv-journal "%J" t nil t)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
398 (r2b-get-field 'r2bv-volume "%V" t)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
399 (r2b-get-field 'r2bv-number "%N" t)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
400 (r2b-get-field 'r2bv-pages "%P" t)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
401 (r2b-get-field 'r2bv-where "%W" t)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
402 (r2b-get-field 'r2bv-ordering "%O" t)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
403 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
404 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
405
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
406
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
407 (defun r2b-put-field (field data &optional abbrevs)
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
408 "Print bibtex FIELD = {DATA} if DATA not null; precede
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
409 with a comma and newline; if ABBREVS list is given, then
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
410 try to replace the {DATA} with an abbreviation."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
411 (if data
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
412 (let (match nodelim multi-line index)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
413 (cond
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
414 ((and abbrevs (setq match (assoc data abbrevs)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
415 (if (null (cdr match))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
416 (setq data (car match))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
417 (setq data (car (cdr match))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
418 (setq nodelim t))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
419 ((and (not (equal data ""))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
420 (not (string-match "[^0-9]" data)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
421 (setq nodelim t))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
422 (t
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
423 (setq index 0)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
424 (while (string-match "[\\~^]" data index)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
425 (setq data (concat (substring data 0 (match-beginning 0))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
426 "\\verb+"
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
427 (substring data (match-beginning 0) (match-end 0))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
428 "+"
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
429 (substring data (match-end 0))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
430 (setq index (+ (match-end 0) 7)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
431 (setq index 0)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
432 (while (string-match "[$&%#_{}]" data index)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
433 (setq data (concat (substring data 0 (match-beginning 0))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
434 "\\"
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
435 (substring data (match-beginning 0))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
436 (setq index (+ (match-end 0) 1)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
437 (setq index 0)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
438 (if r2b-delimit-with-quote
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
439 (while (string-match "\"" data index)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
440 (setq data (concat (substring data 0 (match-beginning 0))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
441 "{\"}"
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
442 (substring data (match-end 0))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
443 (setq index (+ (match-end 0) 2))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
444 ))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
445 (princ ", \n ")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
446 (princ field)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
447 (princ " =\t")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
448 (if (not nodelim)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
449 (if r2b-delimit-with-quote
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
450 (princ "\"")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
451 (princ "{")))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
452 (string-match ".*" data)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
453 (if (> (match-end 0) 59)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
454 (princ "\n"))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
455 (princ data)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
456 (if (not nodelim)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
457 (if r2b-delimit-with-quote
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
458 (princ "\"")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
459 (princ "}")))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
460 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
461 ))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
462
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
463
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
464 (defun r2b-require (vars)
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
465 "If any of VARS is null, set to empty string and log error."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
466 (cond
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
467 ((null vars))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
468 ((listp vars) (r2b-require (car vars)) (r2b-require (cdr vars)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
469 (t
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
470 (if (null (symbol-value vars))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
471 (progn
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
472 (r2b-warning "*Missing value for field %s" vars)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
473 (set vars "")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
474 )))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
475 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
476 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
477
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
478
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
479 (defmacro r2b-moveq (new old)
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
480 "Set NEW to OLD and set OLD to nil."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
481 (list 'progn (list 'setq new old) (list 'setq old 'nil)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
482
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
483 (defun r2b-isa-proceedings (name)
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
484 "Return t if NAME is the name of proceedings."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
485 (and
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
486 name
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
487 (or
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
488 (string-match "proceedings\\|conference" name)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
489 (assoc name r2b-proceedings-list)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
490 (let ((match (assoc name r2b-booktitle-abbrevs)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
491 (and match
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
492 (string-match "proceedings\\|conference" (car (cdr match)))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
493 )))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
494
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
495 (defun r2b-isa-university (name)
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
496 "Return t if NAME is a university or similar organization,
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
497 but not a publisher."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
498 (and
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
499 name
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
500 (string-match "university" name)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
501 (not (string-match "press" name))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
502
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
503 ))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
504
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
505 (defun r2b-barf-output ()
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
506 "Generate bibtex based on global variables."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
507 (let ((standard-output r2b-out-buf) (case-fold-search t) match)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
508
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
509 (r2b-trace "...barfing")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
510 (sit-for 0)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
511 (set-buffer r2b-out-buf)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
512
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
513 (setq r2bv-kn (concat r2bv-primary-author r2bv-decade
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
514 r2bv-title-first-word))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
515
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
516 (setq r2bv-entry-kind
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
517 (cond
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
518 ((r2b-isa-proceedings r2bv-journal)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
519 (r2b-moveq r2bv-booktitle r2bv-journal)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
520 (if (r2b-isa-university r2bv-institution)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
521 (r2b-moveq r2bv-organization r2bv-institution)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
522 (r2b-moveq r2bv-publisher r2bv-institution))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
523 (r2b-moveq r2bv-note r2bv-tr)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
524 (r2b-require 'r2bv-author)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
525 'inproceedings)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
526 ((r2b-isa-proceedings r2bv-booktitle)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
527 (if (r2b-isa-university r2bv-institution)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
528 (r2b-moveq r2bv-organization r2bv-institution)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
529 (r2b-moveq r2bv-publisher r2bv-institution))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
530 (r2b-moveq r2bv-note r2bv-tr)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
531 (r2b-require 'r2bv-author)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
532 'inproceedings)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
533 ((and r2bv-tr (string-match "phd" r2bv-tr))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
534 (r2b-moveq r2bv-school r2bv-institution)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
535 (r2b-require 'r2bv-school )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
536 (r2b-require 'r2bv-author)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
537 'phdthesis)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
538 ((and r2bv-tr (string-match "master" r2bv-tr))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
539 (r2b-moveq r2bv-school r2bv-institution)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
540 (r2b-require 'r2bv-school )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
541 (r2b-require 'r2bv-author)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
542 'mastersthesis)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
543 ((and r2bv-tr (string-match "draft\\|unpublish" r2bv-tr))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
544 (r2b-moveq r2bv-note r2bv-institution)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
545 (r2b-require 'r2bv-author)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
546 'unpublished)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
547 (r2bv-journal
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
548 (r2b-require 'r2bv-author)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
549 'article)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
550 (r2bv-booktitle
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
551 (r2b-moveq r2bv-publisher r2bv-institution)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
552 (r2b-moveq r2bv-note r2bv-tr)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
553 (r2b-require 'r2bv-publisher)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
554 (r2b-require 'r2bv-author)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
555 'incollection)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
556 ((and r2bv-author
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
557 (null r2bv-editor)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
558 (string-match "\\`personal communication\\'" r2bv-title))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
559 'misc)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
560 ((r2b-isa-proceedings r2bv-title)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
561 (if (r2b-isa-university r2bv-institution)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
562 (r2b-moveq r2bv-organization r2bv-institution)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
563 (r2b-moveq r2bv-publisher r2bv-institution))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
564 (r2b-moveq r2bv-note r2bv-tr)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
565 'proceedings)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
566 ((or r2bv-editor
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
567 (and r2bv-author
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
568 (or
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
569 (null r2bv-tr)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
570 (string-match "\\bisbn\\b" r2bv-tr))))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
571 (r2b-moveq r2bv-publisher r2bv-institution)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
572 (r2b-moveq r2bv-note r2bv-tr)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
573 (r2b-require 'r2bv-publisher)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
574 (if (null r2bv-editor)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
575 (r2b-require 'r2bv-author))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
576 'book)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
577 (r2bv-tr
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
578 (r2b-require 'r2bv-institution)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
579 (if (string-match
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
580 "\\`\\(\\(.\\|\n\\)+\\)[ \t\n]+\\([^ \t\n]\\)+\\'"
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
581 r2bv-tr)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
582 (progn
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
583 (setq r2bv-type (substring r2bv-tr 0 (match-end 1)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
584 (setq r2bv-number (substring r2bv-tr
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
585 (match-beginning 3)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
586 (setq r2bv-tr nil))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
587 (r2b-moveq r2bv-number r2bv-tr))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
588 (r2b-require 'r2bv-author)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
589 'techreport)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
590 (r2bv-institution
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
591 (r2b-moveq r2bv-organization r2bv-institution)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
592 'manual)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
593 (t
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
594 'misc)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
595 ))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
596
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
597 (r2b-require '( r2bv-year))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
598
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
599 (if r2b-error-found
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
600 (princ "\n% Warning -- Errors During Conversion Next Entry\n"))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
601
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
602 (princ "\n@")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
603 (princ r2bv-entry-kind)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
604 (princ "( ")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
605 (princ r2bv-kn)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
606
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
607 (r2b-put-field "author" r2bv-author )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
608 (r2b-put-field "title" r2bv-title r2b-booktitle-abbrevs)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
609 (r2b-put-field "year" r2bv-year )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
610
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
611 (r2b-put-field "month" r2bv-month r2b-month-abbrevs)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
612 (r2b-put-field "journal" r2bv-journal r2b-journal-abbrevs)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
613 (r2b-put-field "volume" r2bv-volume)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
614 (r2b-put-field "type" r2bv-type)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
615 (r2b-put-field "number" r2bv-number)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
616 (r2b-put-field "booktitle" r2bv-booktitle r2b-booktitle-abbrevs)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
617 (r2b-put-field "editor" r2bv-editor)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
618 (r2b-put-field "publisher" r2bv-publisher)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
619 (r2b-put-field "institution" r2bv-institution)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
620 (r2b-put-field "organization" r2bv-organization)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
621 (r2b-put-field "school" r2bv-school)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
622 (r2b-put-field "pages" r2bv-pages)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
623 (r2b-put-field "address" r2bv-address)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
624 (r2b-put-field "note" r2bv-note)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
625 (r2b-put-field "keywords" r2bv-keywords)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
626 (r2b-put-field "where" r2bv-where)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
627 (r2b-put-field "ordering" r2bv-ordering)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
628 (r2b-put-field "annote" r2bv-annote)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
629
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
630 (princ " )\n")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
631 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
632 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
633
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
634
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
635 (defun r2b-convert-record (output-name)
243
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
636 "Transform current bib entry and append to buffer OUTPUT;
6155e428f077 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 36
diff changeset
637 do \"M-x r2b-help\" for more info."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
638 (interactive
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
639 (list (read-string "Output to buffer: " r2b-out-buf-name)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
640 (let (rec-end rec-begin not-done)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
641 (setq r2b-out-buf-name output-name)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
642 (setq r2b-out-buf (get-buffer-create output-name))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
643 (setq r2b-in-buf (current-buffer))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
644 (set-buffer r2b-out-buf)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
645 (goto-char (point-max))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
646 (setq r2b-log (get-buffer-create r2b-log-name))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
647 (set-buffer r2b-log)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
648 (goto-char (point-max))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
649 (set-buffer r2b-in-buf)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
650 (setq not-done (re-search-forward "[^ \t\n]" nil t))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
651 (if not-done
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
652 (progn
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
653 (re-search-backward "^[ \t]*$" nil 2)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
654 (re-search-forward "^%")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
655 (beginning-of-line nil)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
656 (setq rec-begin (point))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
657 (re-search-forward "^[ \t]*$" nil 2)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
658 (setq rec-end (point))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
659 (narrow-to-region rec-begin rec-end)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
660 (r2b-clear-variables)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
661 (r2b-snarf-input)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
662 (r2b-barf-output)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
663 (set-buffer r2b-in-buf)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
664 (widen)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
665 (goto-char rec-end)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
666 t)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
667 nil
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
668 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
669 ))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
670
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
671
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
672 (defun r2b-convert-buffer (output-name)
24811
adcead6b7ce1 Don't print any messages or display
Karl Heuer <kwzh@gnu.org>
parents: 20959
diff changeset
673 "Transform current buffer and append to buffer OUTPUT.
adcead6b7ce1 Don't print any messages or display
Karl Heuer <kwzh@gnu.org>
parents: 20959
diff changeset
674 Do `M-x r2b-help' for more info."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
675 (interactive
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
676 (list (read-string "Output to buffer: " r2b-out-buf-name)))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
677 (save-excursion
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
678 (setq r2b-log (get-buffer-create r2b-log-name))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
679 (set-buffer r2b-log)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
680 (erase-buffer))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
681 (widen)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
682 (goto-char (point-min))
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
683 (message "Working, please be patient...")
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
684 (sit-for 0)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
685 (while (r2b-convert-record output-name) t)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
686 (message "Done, results in %s, errors in %s"
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
687 r2b-out-buf-name r2b-log-name)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
688 )
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
689
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
690 (defvar r2b-help-message
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
691 " Refer to Bibtex Bibliography Conversion
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
692
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
693 A refer-style database is of the form:
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
694
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
695 %A Joe Blow
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
696 %T Great Thoughts I've Thought
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
697 %D 1977
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
698 etc.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
699
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
700 This utility converts these kind of databases to bibtex form, for
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
701 users of TeX and LaTex. Instructions:
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
702 1. Visit the file containing the refer-style database.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
703 2. The command
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
704 M-x r2b-convert-buffer
16420
35bc9eed0c1f (r2b-proceedings-list, r2b-help-message): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 16284
diff changeset
705 converts the entire buffer, appending its output by default in a
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
706 buffer named *Out*, and logging progress and errors in a buffer
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
707 named *Log*. The original file is never modified.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
708 Note that results are appended to *Out*, so if that buffer
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
709 buffer already exists and contains material you don't want to
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
710 save, you should kill it first.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
711 3. Switch to the buffer *Out* and save it as a named file.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
712 4. To convert a single refer-style entry, simply position the cursor
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
713 at the entry and enter
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
714 M-x r2b-convert-record
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
715 Again output is appended to *Out* and errors are logged in *Log*.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
716
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
717 This utility is very robust and pretty smart about determining the
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
718 type of the entry. It includes facilities for expanding refer macros
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
719 to text, or substituting bibtex macros. Do M-x describe-variable on
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
720 r2b-journal-abbrevs
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
721 r2b-booktitle-abbrevs
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
722 r2b-proceedings-list
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
723 for information on these features.
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
724
829
f6f8f3eae92f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 814
diff changeset
725 Please send bug reports and suggestions to
f6f8f3eae92f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 814
diff changeset
726 Henry Kautz
f6f8f3eae92f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 814
diff changeset
727 kautz@research.att.com
f6f8f3eae92f *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 814
diff changeset
728 allegra!kautz")
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
729
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
730
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
731 (defun r2b-help ()
24811
adcead6b7ce1 Don't print any messages or display
Karl Heuer <kwzh@gnu.org>
parents: 20959
diff changeset
732 "Print help describing the `refbib' package."
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
733 (interactive)
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
734 (with-output-to-temp-buffer "*Help*"
9848
1365bc291f4c (r2b-help): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 7639
diff changeset
735 (princ r2b-help-message)
1365bc291f4c (r2b-help): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 7639
diff changeset
736 (save-excursion
1365bc291f4c (r2b-help): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 7639
diff changeset
737 (set-buffer standard-output)
1365bc291f4c (r2b-help): Set help-mode in *Help* buffer.
Karl Heuer <kwzh@gnu.org>
parents: 7639
diff changeset
738 (help-mode))))
36
9697c13298e5 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
739
24811
adcead6b7ce1 Don't print any messages or display
Karl Heuer <kwzh@gnu.org>
parents: 20959
diff changeset
740 (provide 'refbib)
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 243
diff changeset
741 (provide 'refer-to-bibtex)
659
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
742
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
743 ;;; refbib.el ends here