Mercurial > emacs
annotate lisp/textmodes/bibtex.el @ 111616:7b6e15a1faad
Document revision 100210 as an incompatible change in posn-col-row.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Sat, 13 Nov 2010 23:59:28 +0200 |
parents | 516f3d80dac6 |
children | 029e4783cbae 376148b31b5e |
rev | line source |
---|---|
662
8a533acedb77
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
584
diff
changeset
|
1 ;;; bibtex.el --- BibTeX mode for GNU Emacs |
8a533acedb77
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
584
diff
changeset
|
2 |
74509 | 3 ;; Copyright (C) 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, |
111257
516f3d80dac6
Replace some inappropriate uses of toggle-read-only. (Bug#7292)
Glenn Morris <rgm@gnu.org>
parents:
110227
diff
changeset
|
4 ;; 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 |
516f3d80dac6
Replace some inappropriate uses of toggle-read-only. (Bug#7292)
Glenn Morris <rgm@gnu.org>
parents:
110227
diff
changeset
|
5 ;; Free Software Foundation, Inc. |
845 | 6 |
14789
d68b71228abd
(bibtex-pop): New generic function which unifies the
Richard M. Stallman <rms@gnu.org>
parents:
14410
diff
changeset
|
7 ;; Author: Stefan Schoef <schoef@offis.uni-oldenburg.de> |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
8 ;; Bengt Martensson <bengt@mathematik.uni-Bremen.de> |
73792
9429d986b2d1
Fix typo in name of author of bibtex.el,
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
71044
diff
changeset
|
9 ;; Marc Shapiro <marc.shapiro@acm.org> |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
10 ;; Mike Newton <newton@gumby.cs.caltech.edu> |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
11 ;; Aaron Larson <alarson@src.honeywell.com> |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
12 ;; Dirk Herrmann <D.Herrmann@tu-bs.de> |
110227
6f57977b6f9e
Update email of Roland Winkler <winkler@gnu.org>
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
106837
diff
changeset
|
13 ;; Maintainer: Roland Winkler <winkler@gnu.org> |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
14 ;; Keywords: BibTeX, LaTeX, TeX |
810
80303373daae
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
807
diff
changeset
|
15 |
257 | 16 ;; This file is part of GNU Emacs. |
17 | |
94670
f4a69fedbd46
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
92218
diff
changeset
|
18 ;; GNU Emacs is free software: you can redistribute it and/or modify |
257 | 19 ;; it under the terms of the GNU General Public License as published by |
94670
f4a69fedbd46
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
92218
diff
changeset
|
20 ;; the Free Software Foundation, either version 3 of the License, or |
f4a69fedbd46
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
92218
diff
changeset
|
21 ;; (at your option) any later version. |
257 | 22 |
23 ;; GNU Emacs is distributed in the hope that it will be useful, | |
24 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
25 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
26 ;; GNU General Public License for more details. | |
27 | |
28 ;; You should have received a copy of the GNU General Public License | |
94670
f4a69fedbd46
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
92218
diff
changeset
|
29 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
257 | 30 |
12700
b3a8ee2da96a
Add keywords and comments as per conventions.
Richard M. Stallman <rms@gnu.org>
parents:
12028
diff
changeset
|
31 ;;; Commentary: |
14169 | 32 |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
33 ;; Major mode for editing and validating BibTeX files. |
257 | 34 |
12700
b3a8ee2da96a
Add keywords and comments as per conventions.
Richard M. Stallman <rms@gnu.org>
parents:
12028
diff
changeset
|
35 ;; Usage: |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
36 ;; See documentation for `bibtex-mode' or type "M-x describe-mode" |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
37 ;; when you are in BibTeX mode. |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
38 |
12700
b3a8ee2da96a
Add keywords and comments as per conventions.
Richard M. Stallman <rms@gnu.org>
parents:
12028
diff
changeset
|
39 ;; Todo: |
b3a8ee2da96a
Add keywords and comments as per conventions.
Richard M. Stallman <rms@gnu.org>
parents:
12028
diff
changeset
|
40 ;; Distribute texinfo file. |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
41 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
42 ;;; Code: |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
43 |
57815 | 44 (require 'button) |
45 | |
26711
eac840d283b6
(bibtex-hs-forward-sexp): Added to support
Gerd Moellmann <gerd@gnu.org>
parents:
25444
diff
changeset
|
46 |
12700
b3a8ee2da96a
Add keywords and comments as per conventions.
Richard M. Stallman <rms@gnu.org>
parents:
12028
diff
changeset
|
47 ;; User Options: |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
48 |
19460 | 49 (defgroup bibtex nil |
64054
23a07b9b6687
(bibtex, bibtex-autokey): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents:
63470
diff
changeset
|
50 "BibTeX mode." |
19460 | 51 :group 'tex |
52 :prefix "bibtex-") | |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
53 |
19460 | 54 (defgroup bibtex-autokey nil |
64054
23a07b9b6687
(bibtex, bibtex-autokey): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents:
63470
diff
changeset
|
55 "Generate automatically a key from the author/editor and the title field." |
19460 | 56 :group 'bibtex |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
57 :prefix "bibtex-autokey-") |
19460 | 58 |
59 (defcustom bibtex-mode-hook nil | |
60 "List of functions to call on entry to BibTeX mode." | |
61 :group 'bibtex | |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
62 :type 'hook) |
19460 | 63 |
64 (defcustom bibtex-field-delimiters 'braces | |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
65 "Type of field delimiters. Allowed values are `braces' or `double-quotes'." |
19460 | 66 :group 'bibtex |
67 :type '(choice (const braces) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
68 (const double-quotes))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
69 |
19460 | 70 (defcustom bibtex-entry-delimiters 'braces |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
71 "Type of entry delimiters. Allowed values are `braces' or `parentheses'." |
19460 | 72 :group 'bibtex |
73 :type '(choice (const braces) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
74 (const parentheses))) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
75 |
19460 | 76 (defcustom bibtex-include-OPTcrossref '("InProceedings" "InCollection") |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
77 "List of BibTeX entries that get an OPTcrossref field." |
19460 | 78 :group 'bibtex |
79 :type '(repeat string)) | |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
80 |
19460 | 81 (defcustom bibtex-include-OPTkey t |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
82 "If non-nil, all newly created entries get an OPTkey field. |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
83 If this is a string, use it as the initial field text. |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
84 If this is a function, call it to generate the initial field text." |
19460 | 85 :group 'bibtex |
86 :type '(choice (const :tag "None" nil) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
87 (string :tag "Initial text") |
77281
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
88 (function :tag "Initialize Function") |
70808
0c087a8f2e1c
(bibtex-maintain-sorted-entries): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
70250
diff
changeset
|
89 (const :tag "Default" t))) |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
90 (put 'bibtex-include-OPTkey 'risky-local-variable t) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
91 |
19460 | 92 (defcustom bibtex-user-optional-fields |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
93 '(("annote" "Personal annotation (ignored)")) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
94 "List of optional fields the user wants to have always present. |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
95 Entries should be of the same form as the OPTIONAL and |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
96 CROSSREF-OPTIONAL lists in `bibtex-entry-field-alist' (which see)." |
19460 | 97 :group 'bibtex |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
98 :type '(repeat (group (string :tag "Field") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
99 (string :tag "Comment") |
77281
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
100 (option (choice :tag "Init" |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
101 (const nil) string function))))) |
70249
eb2b6bd1c6f0
(bibtex-user-optional-fields): Mark as risky.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
70210
diff
changeset
|
102 (put 'bibtex-user-optional-fields 'risky-local-variable t) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
103 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
104 (defcustom bibtex-entry-format |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
105 '(opts-or-alts required-fields numerical-fields) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
106 "Type of formatting performed by `bibtex-clean-entry'. |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
107 It may be t, nil, or a list of symbols out of the following: |
19461 | 108 opts-or-alts Delete empty optional and alternative fields and |
109 remove OPT and ALT prefixes from used fields. | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
110 required-fields Signal an error if a required field is missing. |
19461 | 111 numerical-fields Delete delimiters around numeral fields. |
112 page-dashes Change double dashes in page field to single dash | |
113 (for scribe compatibility). | |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
114 whitespace Delete whitespace at the beginning and end of fields. |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
115 inherit-booktitle If entry contains a crossref field and the booktitle |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
116 field is empty, set the booktitle field to the content |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
117 of the title field of the crossreferenced entry. |
19461 | 118 realign Realign entries, so that field texts and perhaps equal |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
119 signs (depending on the value of |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
120 `bibtex-align-at-equal-sign') begin in the same column. |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
121 Also fill fields. |
19461 | 122 last-comma Add or delete comma on end of last field in entry, |
123 according to value of `bibtex-comma-after-last-field'. | |
124 delimiters Change delimiters according to variables | |
125 `bibtex-field-delimiters' and `bibtex-entry-delimiters'. | |
92218
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
126 unify-case Change case of entry types and field names. |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
127 braces Enclose parts of field entries by braces according to |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
128 `bibtex-field-braces-alist'. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
129 strings Replace parts of field entries by string constants |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
130 according to `bibtex-field-strings-alist'. |
19461 | 131 |
132 The value t means do all of the above formatting actions. | |
133 The value nil means do no formatting at all." | |
19460 | 134 :group 'bibtex |
135 :type '(choice (const :tag "None" nil) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
136 (const :tag "All" t) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
137 (set :menu-tag "Some" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
138 (const opts-or-alts) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
139 (const required-fields) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
140 (const numerical-fields) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
141 (const page-dashes) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
142 (const whitespace) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
143 (const inherit-booktitle) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
144 (const realign) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
145 (const last-comma) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
146 (const delimiters) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
147 (const unify-case) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
148 (const braces) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
149 (const strings)))) |
97521
c383ec0fd021
(bibtex-entry-format): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
94670
diff
changeset
|
150 (put 'bibtex-entry-format 'safe-local-variable |
c383ec0fd021
(bibtex-entry-format): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
94670
diff
changeset
|
151 (lambda (x) |
c383ec0fd021
(bibtex-entry-format): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
94670
diff
changeset
|
152 (or (eq x t) |
c383ec0fd021
(bibtex-entry-format): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
94670
diff
changeset
|
153 (let ((OK t)) |
c383ec0fd021
(bibtex-entry-format): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
94670
diff
changeset
|
154 (while (consp x) |
c383ec0fd021
(bibtex-entry-format): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
94670
diff
changeset
|
155 (unless (memq (pop x) |
c383ec0fd021
(bibtex-entry-format): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
94670
diff
changeset
|
156 '(opts-or-alts required-fields numerical-fields |
c383ec0fd021
(bibtex-entry-format): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
94670
diff
changeset
|
157 page-dashes whitespace inherit-booktitle realign |
c383ec0fd021
(bibtex-entry-format): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
94670
diff
changeset
|
158 last-comma delimiters unify-case braces strings)) |
c383ec0fd021
(bibtex-entry-format): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
94670
diff
changeset
|
159 (setq OK nil))) |
c383ec0fd021
(bibtex-entry-format): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
94670
diff
changeset
|
160 (unless (null x) (setq OK nil)) |
c383ec0fd021
(bibtex-entry-format): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
94670
diff
changeset
|
161 OK)))) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
162 |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
163 (defcustom bibtex-field-braces-alist nil |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
164 "Alist of field regexps that \\[bibtex-clean-entry] encloses by braces. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
165 Each element has the form (FIELDS REGEXP), where FIELDS is a list |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
166 of BibTeX field names and REGEXP is a regexp. |
106426
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
167 Space characters in REGEXP will be replaced by \"[ \\t\\n]+\"." |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
168 :group 'bibtex |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
169 :type '(repeat (list (repeat (string :tag "field name")) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
170 (choice (regexp :tag "regexp") |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
171 (sexp :tag "sexp"))))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
172 |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
173 (defcustom bibtex-field-strings-alist nil |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
174 "Alist of regexps that \\[bibtex-clean-entry] replaces by string constants. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
175 Each element has the form (FIELDS REGEXP TO-STR), where FIELDS is a list |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
176 of BibTeX field names. In FIELDS search for REGEXP, which are replaced |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
177 by the BibTeX string constant TO-STR. |
106426
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
178 Space characters in REGEXP will be replaced by \"[ \\t\\n]+\"." |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
179 :group 'bibtex |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
180 :type '(repeat (list (repeat (string :tag "field name")) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
181 (regexp :tag "From regexp") |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
182 (regexp :tag "To string constant")))) |
257 | 183 |
19460 | 184 (defcustom bibtex-clean-entry-hook nil |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
185 "List of functions to call when entry has been cleaned. |
19461 | 186 Functions are called with point inside the cleaned entry, and the buffer |
19460 | 187 narrowed to just the entry." |
188 :group 'bibtex | |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
189 :type 'hook) |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
190 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
191 (defcustom bibtex-maintain-sorted-entries nil |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
192 "If non-nil, BibTeX mode maintains all entries in sorted order. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
193 Allowed non-nil values are: |
70808
0c087a8f2e1c
(bibtex-maintain-sorted-entries): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
70250
diff
changeset
|
194 plain or t All entries are sorted alphabetically. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
195 crossref All entries are sorted alphabetically unless an entry has a |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
196 crossref field. These crossrefed entries are placed in |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
197 alphabetical order immediately preceding the main entry. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
198 entry-class The entries are divided into classes according to their |
92218
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
199 entry type, see `bibtex-sort-entry-class'. Within each class |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
200 the entries are sorted alphabetically. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
201 See also `bibtex-sort-ignore-string-entries'." |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
202 :group 'bibtex |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
203 :type '(choice (const nil) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
204 (const plain) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
205 (const crossref) |
70808
0c087a8f2e1c
(bibtex-maintain-sorted-entries): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
70250
diff
changeset
|
206 (const entry-class) |
0c087a8f2e1c
(bibtex-maintain-sorted-entries): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
70250
diff
changeset
|
207 (const t))) |
0c087a8f2e1c
(bibtex-maintain-sorted-entries): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
70250
diff
changeset
|
208 (put 'bibtex-maintain-sorted-entries 'safe-local-variable |
70837
c60679e723c7
(bibtex-maintain-sorted-entries): Quote safe-local-variable predicate.
Reiner Steib <Reiner.Steib@gmx.de>
parents:
70808
diff
changeset
|
209 '(lambda (a) (memq a '(nil t plain crossref entry-class)))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
210 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
211 (defcustom bibtex-sort-entry-class |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
212 '(("String") |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
213 (catch-all) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
214 ("Book" "Proceedings")) |
92218
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
215 "List of classes of BibTeX entry types, used for sorting entries. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
216 If value of `bibtex-maintain-sorted-entries' is `entry-class' |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
217 entries are ordered according to the classes they belong to. Each |
92218
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
218 class contains a list of entry types. An entry `catch-all' applies |
59733
96d73eb02751
(bibtex-format-entry): Use `bibtex-empty-field-re' only on the text of
Lute Kamstra <lute@gnu.org>
parents:
58772
diff
changeset
|
219 to all entries not explicitly mentioned." |
105170 | 220 :group 'bibtex |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
221 :type '(repeat (choice :tag "Class" |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
222 (const :tag "catch-all" (catch-all)) |
92218
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
223 (repeat :tag "Entry type" string)))) |
71044
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
224 (put 'bibtex-sort-entry-class 'safe-local-variable |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
225 (lambda (x) (let ((OK t)) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
226 (while (consp x) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
227 (let ((y (pop x))) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
228 (while (consp y) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
229 (let ((z (pop y))) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
230 (unless (or (stringp z) (eq z 'catch-all)) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
231 (setq OK nil)))) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
232 (unless (null y) (setq OK nil)))) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
233 (unless (null x) (setq OK nil)) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
234 OK))) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
235 |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
236 (defcustom bibtex-sort-ignore-string-entries t |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
237 "If non-nil, BibTeX @String entries are not sort-significant. |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
238 That means they are ignored when determining ordering of the buffer |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
239 \(e.g., sorting, locating alphabetical position for new entries, etc.)." |
19460 | 240 :group 'bibtex |
241 :type 'boolean) | |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
242 |
19460 | 243 (defcustom bibtex-field-kill-ring-max 20 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
244 "Max length of `bibtex-field-kill-ring' before discarding oldest elements." |
19460 | 245 :group 'bibtex |
246 :type 'integer) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
247 |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
248 (defcustom bibtex-entry-kill-ring-max 20 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
249 "Max length of `bibtex-entry-kill-ring' before discarding oldest elements." |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
250 :group 'bibtex |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
251 :type 'integer) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
252 |
19460 | 253 (defcustom bibtex-parse-keys-timeout 60 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
254 "Time interval in seconds for parsing BibTeX buffers during idle time. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
255 Parsing initializes `bibtex-reference-keys' and `bibtex-strings'." |
19460 | 256 :group 'bibtex |
257 :type 'integer) | |
15637
405b1ecbf8ba
(bibtex-reference-head): Allow spaces and tabs between
Karl Heuer <kwzh@gnu.org>
parents:
15565
diff
changeset
|
258 |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
259 (defcustom bibtex-parse-keys-fast t |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
260 "If non-nil, use fast but simplified algorithm for parsing BibTeX keys. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
261 If parsing fails, try to set this variable to nil." |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
262 :group 'bibtex |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
263 :type 'boolean) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
264 |
77269
b9298f94662a
(bibtex-entry-field-alist): Use defcustom.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77217
diff
changeset
|
265 (defcustom bibtex-entry-field-alist |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
266 '(("Article" |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
267 ((("author" "Author1 [and Author2 ...] [and others]") |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
268 ("title" "Title of the article (BibTeX converts it to lowercase)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
269 ("journal" "Name of the journal (use string, remove braces)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
270 ("year" "Year of publication")) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
271 (("volume" "Volume of the journal") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
272 ("number" "Number of the journal (only allowed if entry contains volume)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
273 ("pages" "Pages in the journal") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
274 ("month" "Month of the publication as a string (remove braces)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
275 ("note" "Remarks to be put at the end of the \\bibitem"))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
276 ((("author" "Author1 [and Author2 ...] [and others]") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
277 ("title" "Title of the article (BibTeX converts it to lowercase)")) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
278 (("pages" "Pages in the journal") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
279 ("journal" "Name of the journal (use string, remove braces)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
280 ("year" "Year of publication") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
281 ("volume" "Volume of the journal") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
282 ("number" "Number of the journal") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
283 ("month" "Month of the publication as a string (remove braces)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
284 ("note" "Remarks to be put at the end of the \\bibitem")))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
285 ("Book" |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
286 ((("author" "Author1 [and Author2 ...] [and others]" nil t) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
287 ("editor" "Editor1 [and Editor2 ...] [and others]" nil t) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
288 ("title" "Title of the book") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
289 ("publisher" "Publishing company") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
290 ("year" "Year of publication")) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
291 (("volume" "Volume of the book in the series") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
292 ("number" "Number of the book in a small series (overwritten by volume)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
293 ("series" "Series in which the book appeared") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
294 ("address" "Address of the publisher") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
295 ("edition" "Edition of the book as a capitalized English word") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
296 ("month" "Month of the publication as a string (remove braces)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
297 ("note" "Remarks to be put at the end of the \\bibitem"))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
298 ((("author" "Author1 [and Author2 ...] [and others]" nil t) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
299 ("editor" "Editor1 [and Editor2 ...] [and others]" nil t) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
300 ("title" "Title of the book")) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
301 (("publisher" "Publishing company") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
302 ("year" "Year of publication") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
303 ("volume" "Volume of the book in the series") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
304 ("number" "Number of the book in a small series (overwritten by volume)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
305 ("series" "Series in which the book appeared") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
306 ("address" "Address of the publisher") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
307 ("edition" "Edition of the book as a capitalized English word") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
308 ("month" "Month of the publication as a string (remove braces)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
309 ("note" "Remarks to be put at the end of the \\bibitem")))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
310 ("Booklet" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
311 ((("title" "Title of the booklet (BibTeX converts it to lowercase)")) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
312 (("author" "Author1 [and Author2 ...] [and others]") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
313 ("howpublished" "The way in which the booklet was published") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
314 ("address" "Address of the publisher") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
315 ("month" "Month of the publication as a string (remove braces)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
316 ("year" "Year of publication") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
317 ("note" "Remarks to be put at the end of the \\bibitem")))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
318 ("InBook" |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
319 ((("author" "Author1 [and Author2 ...] [and others]" nil t) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
320 ("editor" "Editor1 [and Editor2 ...] [and others]" nil t) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
321 ("title" "Title of the book") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
322 ("chapter" "Chapter in the book") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
323 ("publisher" "Publishing company") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
324 ("year" "Year of publication")) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
325 (("volume" "Volume of the book in the series") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
326 ("number" "Number of the book in a small series (overwritten by volume)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
327 ("series" "Series in which the book appeared") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
328 ("type" "Word to use instead of \"chapter\"") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
329 ("address" "Address of the publisher") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
330 ("edition" "Edition of the book as a capitalized English word") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
331 ("month" "Month of the publication as a string (remove braces)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
332 ("pages" "Pages in the book") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
333 ("note" "Remarks to be put at the end of the \\bibitem"))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
334 ((("author" "Author1 [and Author2 ...] [and others]" nil t) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
335 ("editor" "Editor1 [and Editor2 ...] [and others]" nil t) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
336 ("title" "Title of the book") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
337 ("chapter" "Chapter in the book")) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
338 (("pages" "Pages in the book") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
339 ("publisher" "Publishing company") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
340 ("year" "Year of publication") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
341 ("volume" "Volume of the book in the series") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
342 ("number" "Number of the book in a small series (overwritten by volume)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
343 ("series" "Series in which the book appeared") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
344 ("type" "Word to use instead of \"chapter\"") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
345 ("address" "Address of the publisher") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
346 ("edition" "Edition of the book as a capitalized English word") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
347 ("month" "Month of the publication as a string (remove braces)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
348 ("note" "Remarks to be put at the end of the \\bibitem")))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
349 ("InCollection" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
350 ((("author" "Author1 [and Author2 ...] [and others]") |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
351 ("title" "Title of the article in book (BibTeX converts it to lowercase)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
352 ("booktitle" "Name of the book") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
353 ("publisher" "Publishing company") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
354 ("year" "Year of publication")) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
355 (("editor" "Editor1 [and Editor2 ...] [and others]") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
356 ("volume" "Volume of the book in the series") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
357 ("number" "Number of the book in a small series (overwritten by volume)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
358 ("series" "Series in which the book appeared") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
359 ("type" "Word to use instead of \"chapter\"") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
360 ("chapter" "Chapter in the book") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
361 ("pages" "Pages in the book") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
362 ("address" "Address of the publisher") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
363 ("edition" "Edition of the book as a capitalized English word") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
364 ("month" "Month of the publication as a string (remove braces)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
365 ("note" "Remarks to be put at the end of the \\bibitem"))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
366 ((("author" "Author1 [and Author2 ...] [and others]") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
367 ("title" "Title of the article in book (BibTeX converts it to lowercase)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
368 ("booktitle" "Name of the book")) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
369 (("pages" "Pages in the book") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
370 ("publisher" "Publishing company") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
371 ("year" "Year of publication") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
372 ("editor" "Editor1 [and Editor2 ...] [and others]") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
373 ("volume" "Volume of the book in the series") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
374 ("number" "Number of the book in a small series (overwritten by volume)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
375 ("series" "Series in which the book appeared") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
376 ("type" "Word to use instead of \"chapter\"") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
377 ("chapter" "Chapter in the book") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
378 ("address" "Address of the publisher") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
379 ("edition" "Edition of the book as a capitalized English word") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
380 ("month" "Month of the publication as a string (remove braces)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
381 ("note" "Remarks to be put at the end of the \\bibitem")))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
382 ("InProceedings" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
383 ((("author" "Author1 [and Author2 ...] [and others]") |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
384 ("title" "Title of the article in proceedings (BibTeX converts it to lowercase)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
385 ("booktitle" "Name of the conference proceedings") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
386 ("year" "Year of publication")) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
387 (("editor" "Editor1 [and Editor2 ...] [and others]") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
388 ("volume" "Volume of the conference proceedings in the series") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
389 ("number" "Number of the conference proceedings in a small series (overwritten by volume)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
390 ("series" "Series in which the conference proceedings appeared") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
391 ("pages" "Pages in the conference proceedings") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
392 ("address" "Location of the Proceedings") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
393 ("month" "Month of the publication as a string (remove braces)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
394 ("organization" "Sponsoring organization of the conference") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
395 ("publisher" "Publishing company, its location") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
396 ("note" "Remarks to be put at the end of the \\bibitem"))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
397 ((("author" "Author1 [and Author2 ...] [and others]") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
398 ("title" "Title of the article in proceedings (BibTeX converts it to lowercase)")) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
399 (("booktitle" "Name of the conference proceedings") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
400 ("pages" "Pages in the conference proceedings") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
401 ("year" "Year of publication") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
402 ("editor" "Editor1 [and Editor2 ...] [and others]") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
403 ("volume" "Volume of the conference proceedings in the series") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
404 ("number" "Number of the conference proceedings in a small series (overwritten by volume)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
405 ("series" "Series in which the conference proceedings appeared") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
406 ("address" "Location of the Proceedings") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
407 ("month" "Month of the publication as a string (remove braces)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
408 ("organization" "Sponsoring organization of the conference") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
409 ("publisher" "Publishing company, its location") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
410 ("note" "Remarks to be put at the end of the \\bibitem")))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
411 ("Manual" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
412 ((("title" "Title of the manual")) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
413 (("author" "Author1 [and Author2 ...] [and others]") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
414 ("organization" "Publishing organization of the manual") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
415 ("address" "Address of the organization") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
416 ("edition" "Edition of the manual as a capitalized English word") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
417 ("month" "Month of the publication as a string (remove braces)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
418 ("year" "Year of publication") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
419 ("note" "Remarks to be put at the end of the \\bibitem")))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
420 ("MastersThesis" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
421 ((("author" "Author1 [and Author2 ...] [and others]") |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
422 ("title" "Title of the master\'s thesis (BibTeX converts it to lowercase)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
423 ("school" "School where the master\'s thesis was written") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
424 ("year" "Year of publication")) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
425 (("type" "Type of the master\'s thesis (if other than \"Master\'s thesis\")") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
426 ("address" "Address of the school (if not part of field \"school\") or country") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
427 ("month" "Month of the publication as a string (remove braces)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
428 ("note" "Remarks to be put at the end of the \\bibitem")))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
429 ("Misc" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
430 (() |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
431 (("author" "Author1 [and Author2 ...] [and others]") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
432 ("title" "Title of the work (BibTeX converts it to lowercase)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
433 ("howpublished" "The way in which the work was published") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
434 ("month" "Month of the publication as a string (remove braces)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
435 ("year" "Year of publication") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
436 ("note" "Remarks to be put at the end of the \\bibitem")))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
437 ("PhdThesis" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
438 ((("author" "Author1 [and Author2 ...] [and others]") |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
439 ("title" "Title of the PhD. thesis") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
440 ("school" "School where the PhD. thesis was written") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
441 ("year" "Year of publication")) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
442 (("type" "Type of the PhD. thesis") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
443 ("address" "Address of the school (if not part of field \"school\") or country") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
444 ("month" "Month of the publication as a string (remove braces)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
445 ("note" "Remarks to be put at the end of the \\bibitem")))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
446 ("Proceedings" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
447 ((("title" "Title of the conference proceedings") |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
448 ("year" "Year of publication")) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
449 (("booktitle" "Title of the proceedings for cross references") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
450 ("editor" "Editor1 [and Editor2 ...] [and others]") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
451 ("volume" "Volume of the conference proceedings in the series") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
452 ("number" "Number of the conference proceedings in a small series (overwritten by volume)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
453 ("series" "Series in which the conference proceedings appeared") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
454 ("address" "Location of the Proceedings") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
455 ("month" "Month of the publication as a string (remove braces)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
456 ("organization" "Sponsoring organization of the conference") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
457 ("publisher" "Publishing company, its location") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
458 ("note" "Remarks to be put at the end of the \\bibitem")))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
459 ("TechReport" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
460 ((("author" "Author1 [and Author2 ...] [and others]") |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
461 ("title" "Title of the technical report (BibTeX converts it to lowercase)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
462 ("institution" "Sponsoring institution of the report") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
463 ("year" "Year of publication")) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
464 (("type" "Type of the report (if other than \"technical report\")") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
465 ("number" "Number of the technical report") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
466 ("address" "Address of the institution (if not part of field \"institution\") or country") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
467 ("month" "Month of the publication as a string (remove braces)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
468 ("note" "Remarks to be put at the end of the \\bibitem")))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
469 ("Unpublished" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
470 ((("author" "Author1 [and Author2 ...] [and others]") |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
471 ("title" "Title of the unpublished work (BibTeX converts it to lowercase)") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
472 ("note" "Remarks to be put at the end of the \\bibitem")) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
473 (("month" "Month of the publication as a string (remove braces)") |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
474 ("year" "Year of publication"))))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
475 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
476 "List of BibTeX entry types and their associated fields. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
477 List elements are triples |
92218
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
478 \(ENTRY-TYPE (REQUIRED OPTIONAL) (CROSSREF-REQUIRED CROSSREF-OPTIONAL)). |
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
479 ENTRY-TYPE is the type of a BibTeX entry. The remaining pairs contain |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
480 the required and optional fields of the BibTeX entry. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
481 The second pair is used if a crossref field is present |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
482 and the first pair is used if a crossref field is absent. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
483 If the second pair is nil, the first pair is always used. |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
484 REQUIRED, OPTIONAL, CROSSREF-REQUIRED and CROSSREF-OPTIONAL are lists. |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
485 Each element of these lists is a list of the form |
43950
5ef8be2a8db1
(bibtex-sort-ignore-string-entries)
Pavel Janík <Pavel@Janik.cz>
parents:
43758
diff
changeset
|
486 \(FIELD-NAME COMMENT-STRING INIT ALTERNATIVE-FLAG). |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
487 COMMENT-STRING, INIT, and ALTERNATIVE-FLAG are optional. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
488 FIELD-NAME is the name of the field, COMMENT-STRING is the comment that |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
489 appears in the echo area, INIT is either the initial content of the |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
490 field or a function, which is called to determine the initial content |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
491 of the field, and ALTERNATIVE-FLAG (either nil or t) marks if the |
19461 | 492 field is an alternative. ALTERNATIVE-FLAG may be t only in the |
77269
b9298f94662a
(bibtex-entry-field-alist): Use defcustom.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77217
diff
changeset
|
493 REQUIRED or CROSSREF-REQUIRED lists." |
b9298f94662a
(bibtex-entry-field-alist): Use defcustom.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77217
diff
changeset
|
494 :group 'bibtex |
92218
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
495 :type '(repeat (group (string :tag "Entry type") |
77281
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
496 (group (repeat :tag "Required fields" |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
497 (group (string :tag "Field") |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
498 (string :tag "Comment") |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
499 (option (choice :tag "Init" :value nil |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
500 (const nil) string function)) |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
501 (option (choice :tag "Alternative" |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
502 (const :tag "No" nil) |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
503 (const :tag "Yes" t))))) |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
504 (repeat :tag "Optional fields" |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
505 (group (string :tag "Field") |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
506 (string :tag "Comment") |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
507 (option (choice :tag "Init" :value nil |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
508 (const nil) string function))))) |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
509 (option :extra-offset -4 |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
510 (group (repeat :tag "Crossref: required fields" |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
511 (group (string :tag "Field") |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
512 (string :tag "Comment") |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
513 (option (choice :tag "Init" :value nil |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
514 (const nil) string function)) |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
515 (option (choice :tag "Alternative" |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
516 (const :tag "No" nil) |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
517 (const :tag "Yes" t))))) |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
518 (repeat :tag "Crossref: optional fields" |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
519 (group (string :tag "Field") |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
520 (string :tag "Comment") |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
521 (option (choice :tag "Init" :value nil |
372e6a7ea660
(bibtex-include-OPTkey, bibtex-user-optional-fields)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77269
diff
changeset
|
522 (const nil) string function))))))))) |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
523 (put 'bibtex-entry-field-alist 'risky-local-variable t) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
524 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
525 (defcustom bibtex-comment-start "@Comment" |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
526 "String starting a BibTeX comment." |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
527 :group 'bibtex |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
528 :type 'string) |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
529 |
19460 | 530 (defcustom bibtex-add-entry-hook nil |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
531 "List of functions to call when BibTeX entry has been inserted." |
19460 | 532 :group 'bibtex |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
533 :type 'hook) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
534 |
19460 | 535 (defcustom bibtex-predefined-month-strings |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
536 '(("jan" . "January") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
537 ("feb" . "February") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
538 ("mar" . "March") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
539 ("apr" . "April") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
540 ("may" . "May") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
541 ("jun" . "June") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
542 ("jul" . "July") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
543 ("aug" . "August") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
544 ("sep" . "September") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
545 ("oct" . "October") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
546 ("nov" . "November") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
547 ("dec" . "December")) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
548 "Alist of month string definitions used in the BibTeX style files. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
549 Each element is a pair of strings (ABBREVIATION . EXPANSION)." |
19460 | 550 :group 'bibtex |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
551 :type '(repeat (cons (string :tag "Month abbreviation") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
552 (string :tag "Month expansion")))) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
553 |
19460 | 554 (defcustom bibtex-predefined-strings |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
555 (append |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
556 bibtex-predefined-month-strings |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
557 '(("acmcs" . "ACM Computing Surveys") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
558 ("acta" . "Acta Informatica") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
559 ("cacm" . "Communications of the ACM") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
560 ("ibmjrd" . "IBM Journal of Research and Development") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
561 ("ibmsj" . "IBM Systems Journal") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
562 ("ieeese" . "IEEE Transactions on Software Engineering") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
563 ("ieeetc" . "IEEE Transactions on Computers") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
564 ("ieeetcad" . "IEEE Transactions on Computer-Aided Design of Integrated Circuits") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
565 ("ipl" . "Information Processing Letters") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
566 ("jacm" . "Journal of the ACM") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
567 ("jcss" . "Journal of Computer and System Sciences") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
568 ("scp" . "Science of Computer Programming") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
569 ("sicomp" . "SIAM Journal on Computing") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
570 ("tcs" . "Theoretical Computer Science") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
571 ("tocs" . "ACM Transactions on Computer Systems") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
572 ("tods" . "ACM Transactions on Database Systems") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
573 ("tog" . "ACM Transactions on Graphics") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
574 ("toms" . "ACM Transactions on Mathematical Software") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
575 ("toois" . "ACM Transactions on Office Information Systems") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
576 ("toplas" . "ACM Transactions on Programming Languages and Systems"))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
577 "Alist of string definitions used in the BibTeX style files. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
578 Each element is a pair of strings (ABBREVIATION . EXPANSION)." |
19460 | 579 :group 'bibtex |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
580 :type '(repeat (cons (string :tag "String") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
581 (string :tag "String expansion")))) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
582 |
19460 | 583 (defcustom bibtex-string-files nil |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
584 "List of BibTeX files containing string definitions. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
585 List elements can be absolute file names or file names relative |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
586 to the directories specified in `bibtex-string-file-path'." |
19460 | 587 :group 'bibtex |
588 :type '(repeat file)) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
589 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
590 (defvar bibtex-string-file-path (getenv "BIBINPUTS") |
26711
eac840d283b6
(bibtex-hs-forward-sexp): Added to support
Gerd Moellmann <gerd@gnu.org>
parents:
25444
diff
changeset
|
591 "*Colon separated list of paths to search for `bibtex-string-files'.") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
592 |
57815 | 593 (defcustom bibtex-files nil |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
594 "List of BibTeX files that are searched for entry keys. |
57815 | 595 List elements can be absolute file names or file names relative to the |
596 directories specified in `bibtex-file-path'. If an element is a directory, | |
597 check all BibTeX files in this directory. If an element is the symbol | |
598 `bibtex-file-path', check all BibTeX files in `bibtex-file-path'." | |
599 :group 'bibtex | |
75356
2600e61a031f
(bibtex-files): Fix customization type.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
75347
diff
changeset
|
600 :type '(repeat (choice (const :tag "bibtex-file-path" bibtex-file-path) |
2600e61a031f
(bibtex-files): Fix customization type.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
75347
diff
changeset
|
601 directory file))) |
57815 | 602 |
603 (defvar bibtex-file-path (getenv "BIBINPUTS") | |
604 "*Colon separated list of paths to search for `bibtex-files'.") | |
605 | |
19460 | 606 (defcustom bibtex-help-message t |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
607 "If non-nil print help messages in the echo area on entering a new field." |
19460 | 608 :group 'bibtex |
609 :type 'boolean) | |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
610 |
19460 | 611 (defcustom bibtex-autokey-prefix-string "" |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
612 "String prefix for automatically generated reference keys. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
613 See `bibtex-generate-autokey' for details." |
19460 | 614 :group 'bibtex-autokey |
615 :type 'string) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
616 |
19460 | 617 (defcustom bibtex-autokey-names 1 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
618 "Number of names to use for the automatically generated reference key. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
619 Possibly more names are used according to `bibtex-autokey-names-stretch'. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
620 If this variable is nil, all names are used. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
621 See `bibtex-generate-autokey' for details." |
19460 | 622 :group 'bibtex-autokey |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
623 :type '(choice (const :tag "All" infty) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
624 integer)) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
625 |
19460 | 626 (defcustom bibtex-autokey-names-stretch 0 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
627 "Number of names that can additionally be used for reference keys. |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
628 These names are used only, if all names are used then. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
629 See `bibtex-generate-autokey' for details." |
19460 | 630 :group 'bibtex-autokey |
631 :type 'integer) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
632 |
19460 | 633 (defcustom bibtex-autokey-additional-names "" |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
634 "String to append to the generated key if not all names could be used. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
635 See `bibtex-generate-autokey' for details." |
19460 | 636 :group 'bibtex-autokey |
637 :type 'string) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
638 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
639 (defcustom bibtex-autokey-expand-strings nil |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
640 "If non-nil, expand strings when extracting the content of a BibTeX field. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
641 See `bibtex-generate-autokey' for details." |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
642 :group 'bibtex-autokey |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
643 :type 'boolean) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
644 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
645 (defvar bibtex-autokey-transcriptions |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
646 '(;; language specific characters |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
647 ("\\\\aa" . "a") ; \aa -> a |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
648 ("\\\\AA" . "A") ; \AA -> A |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
649 ("\\\"a\\|\\\\\\\"a\\|\\\\ae" . "ae") ; "a,\"a,\ae -> ae |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
650 ("\\\"A\\|\\\\\\\"A\\|\\\\AE" . "Ae") ; "A,\"A,\AE -> Ae |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
651 ("\\\\i" . "i") ; \i -> i |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
652 ("\\\\j" . "j") ; \j -> j |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
653 ("\\\\l" . "l") ; \l -> l |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
654 ("\\\\L" . "L") ; \L -> L |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
655 ("\\\"o\\|\\\\\\\"o\\|\\\\o\\|\\\\oe" . "oe") ; "o,\"o,\o,\oe -> oe |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
656 ("\\\"O\\|\\\\\\\"O\\|\\\\O\\|\\\\OE" . "Oe") ; "O,\"O,\O,\OE -> Oe |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
657 ("\\\"s\\|\\\\\\\"s\\|\\\\3" . "ss") ; "s,\"s,\3 -> ss |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
658 ("\\\"u\\|\\\\\\\"u" . "ue") ; "u,\"u -> ue |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
659 ("\\\"U\\|\\\\\\\"U" . "Ue") ; "U,\"U -> Ue |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
660 ;; accents |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
661 ("\\\\`\\|\\\\'\\|\\\\\\^\\|\\\\~\\|\\\\=\\|\\\\\\.\\|\\\\u\\|\\\\v\\|\\\\H\\|\\\\t\\|\\\\c\\|\\\\d\\|\\\\b" . "") |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
662 ;; braces, quotes, concatenation. |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
663 ("[`'\"{}#]" . "") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
664 ;; spaces |
57815 | 665 ("\\\\?[ \t\n]+\\|~" . " ")) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
666 "Alist of (OLD-REGEXP . NEW-STRING) pairs. |
19461 | 667 Used by the default values of `bibtex-autokey-name-change-strings' and |
668 `bibtex-autokey-titleword-change-strings'. Defaults to translating some | |
669 language specific characters to their ASCII transcriptions, and | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
670 removing any character accents.") |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
671 |
19460 | 672 (defcustom bibtex-autokey-name-change-strings |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
673 bibtex-autokey-transcriptions |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
674 "Alist of (OLD-REGEXP . NEW-STRING) pairs. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
675 Any part of a name matching OLD-REGEXP is replaced by NEW-STRING. |
19461 | 676 Case is significant in OLD-REGEXP. All regexps are tried in the |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
677 order in which they appear in the list. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
678 See `bibtex-generate-autokey' for details." |
19460 | 679 :group 'bibtex-autokey |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
680 :type '(repeat (cons (regexp :tag "Old") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
681 (string :tag "New")))) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
682 |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
683 (defcustom bibtex-autokey-name-case-convert-function 'downcase |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
684 "Function called for each name to perform case conversion. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
685 See `bibtex-generate-autokey' for details." |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
686 :group 'bibtex-autokey |
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
687 :type '(choice (const :tag "Preserve case" identity) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
688 (const :tag "Downcase" downcase) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
689 (const :tag "Capitalize" capitalize) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
690 (const :tag "Upcase" upcase) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
691 (function :tag "Conversion function"))) |
71044
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
692 (put 'bibtex-autokey-name-case-convert-function 'safe-local-variable |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
693 (lambda (x) (memq x '(upcase downcase capitalize identity)))) |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
694 (defvaralias 'bibtex-autokey-name-case-convert |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
695 'bibtex-autokey-name-case-convert-function) |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
696 |
19460 | 697 (defcustom bibtex-autokey-name-length 'infty |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
698 "Number of characters from name to incorporate into key. |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
699 If this is set to anything but a number, all characters are used. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
700 See `bibtex-generate-autokey' for details." |
19460 | 701 :group 'bibtex-autokey |
702 :type '(choice (const :tag "All" infty) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
703 integer)) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
704 |
19460 | 705 (defcustom bibtex-autokey-name-separator "" |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
706 "String that comes between any two names in the key. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
707 See `bibtex-generate-autokey' for details." |
19460 | 708 :group 'bibtex-autokey |
709 :type 'string) | |
710 | |
711 (defcustom bibtex-autokey-year-length 2 | |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
712 "Number of rightmost digits from the year field to incorporate into key. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
713 See `bibtex-generate-autokey' for details." |
19460 | 714 :group 'bibtex-autokey |
715 :type 'integer) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
716 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
717 (defcustom bibtex-autokey-use-crossref t |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
718 "If non-nil use fields from crossreferenced entry if necessary. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
719 If this variable is non-nil and some field has no entry, but a |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
720 valid crossref entry, the field from the crossreferenced entry is used. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
721 See `bibtex-generate-autokey' for details." |
19460 | 722 :group 'bibtex-autokey |
723 :type 'boolean) | |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
724 |
19460 | 725 (defcustom bibtex-autokey-titlewords 5 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
726 "Number of title words to use for the automatically generated reference key. |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
727 If this is set to anything but a number, all title words are used. |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
728 Possibly more words from the title are used according to |
19461 | 729 `bibtex-autokey-titlewords-stretch'. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
730 See `bibtex-generate-autokey' for details." |
19460 | 731 :group 'bibtex-autokey |
732 :type '(choice (const :tag "All" infty) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
733 integer)) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
734 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
735 (defcustom bibtex-autokey-title-terminators "[.!?:;]\\|--" |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
736 "Regexp defining the termination of the main part of the title. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
737 Case of the regexps is ignored. See `bibtex-generate-autokey' for details." |
19460 | 738 :group 'bibtex-autokey |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
739 :type 'regexp) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
740 |
19460 | 741 (defcustom bibtex-autokey-titlewords-stretch 2 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
742 "Number of words that can additionally be used from the title. |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
743 These words are used only, if a sentence from the title can be ended then. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
744 See `bibtex-generate-autokey' for details." |
19460 | 745 :group 'bibtex-autokey |
746 :type 'integer) | |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
747 |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
748 (defcustom bibtex-autokey-titleword-ignore |
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
749 '("A" "An" "On" "The" "Eine?" "Der" "Die" "Das" |
102133
2eec802705ee
(bibtex-autokey-titleword-ignore): Fix regexp. bug#2385.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
102038
diff
changeset
|
750 "[^[:upper:]].*" ".*[^[:upper:][:lower:]0-9].*") |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
751 "Determines words from the title that are not to be used in the key. |
59733
96d73eb02751
(bibtex-format-entry): Use `bibtex-empty-field-re' only on the text of
Lute Kamstra <lute@gnu.org>
parents:
58772
diff
changeset
|
752 Each item of the list is a regexp. If a word of the title matches a |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
753 regexp from that list, it is not included in the title part of the key. |
102133
2eec802705ee
(bibtex-autokey-titleword-ignore): Fix regexp. bug#2385.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
102038
diff
changeset
|
754 Case is significant. See `bibtex-generate-autokey' for details." |
19460 | 755 :group 'bibtex-autokey |
756 :type '(repeat regexp)) | |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
757 |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
758 (defcustom bibtex-autokey-titleword-case-convert-function 'downcase |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
759 "Function called for each titleword to perform case conversion. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
760 See `bibtex-generate-autokey' for details." |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
761 :group 'bibtex-autokey |
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
762 :type '(choice (const :tag "Preserve case" identity) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
763 (const :tag "Downcase" downcase) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
764 (const :tag "Capitalize" capitalize) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
765 (const :tag "Upcase" upcase) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
766 (function :tag "Conversion function"))) |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
767 (defvaralias 'bibtex-autokey-titleword-case-convert |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
768 'bibtex-autokey-titleword-case-convert-function) |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
769 |
19460 | 770 (defcustom bibtex-autokey-titleword-abbrevs nil |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
771 "Determines exceptions to the usual abbreviation mechanism. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
772 An alist of (OLD-REGEXP . NEW-STRING) pairs. Case is ignored |
19461 | 773 in matching against OLD-REGEXP, and the first matching pair is used. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
774 See `bibtex-generate-autokey' for details." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
775 :group 'bibtex-autokey |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
776 :type '(repeat (cons (regexp :tag "Old") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
777 (string :tag "New")))) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
778 |
19460 | 779 (defcustom bibtex-autokey-titleword-change-strings |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
780 bibtex-autokey-transcriptions |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
781 "Alist of (OLD-REGEXP . NEW-STRING) pairs. |
19461 | 782 Any part of title word matching a OLD-REGEXP is replaced by NEW-STRING. |
783 Case is significant in OLD-REGEXP. All regexps are tried in the | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
784 order in which they appear in the list. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
785 See `bibtex-generate-autokey' for details." |
19460 | 786 :group 'bibtex-autokey |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
787 :type '(repeat (cons (regexp :tag "Old") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
788 (string :tag "New")))) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
789 |
19460 | 790 (defcustom bibtex-autokey-titleword-length 5 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
791 "Number of characters from title words to incorporate into key. |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
792 If this is set to anything but a number, all characters are used. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
793 See `bibtex-generate-autokey' for details." |
19460 | 794 :group 'bibtex-autokey |
795 :type '(choice (const :tag "All" infty) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
796 integer)) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
797 |
19460 | 798 (defcustom bibtex-autokey-titleword-separator "_" |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
799 "String to be put between the title words. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
800 See `bibtex-generate-autokey' for details." |
19460 | 801 :group 'bibtex-autokey |
802 :type 'string) | |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
803 |
19460 | 804 (defcustom bibtex-autokey-name-year-separator "" |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
805 "String to be put between name part and year part of key. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
806 See `bibtex-generate-autokey' for details." |
19460 | 807 :group 'bibtex-autokey |
808 :type 'string) | |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
809 |
19460 | 810 (defcustom bibtex-autokey-year-title-separator ":_" |
97521
c383ec0fd021
(bibtex-entry-format): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
94670
diff
changeset
|
811 "String to be put between year part and title part of key. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
812 See `bibtex-generate-autokey' for details." |
19460 | 813 :group 'bibtex-autokey |
814 :type 'string) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
815 |
19460 | 816 (defcustom bibtex-autokey-edit-before-use t |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
817 "If non-nil, user is allowed to edit the generated key before it is used." |
19460 | 818 :group 'bibtex-autokey |
819 :type 'boolean) | |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
820 |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
821 (defcustom bibtex-autokey-before-presentation-function nil |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
822 "If non-nil, function to call before generated key is presented. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
823 The function must take one argument (the automatically generated key), |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
824 and must return a string (the key to use)." |
19460 | 825 :group 'bibtex-autokey |
35962
ad7104908c16
(bibtex-autokey-before-presentation-function): Fix :type.
Dave Love <fx@gnu.org>
parents:
27701
diff
changeset
|
826 :type '(choice (const nil) function)) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
827 |
19460 | 828 (defcustom bibtex-entry-offset 0 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
829 "Offset for BibTeX entries. |
59733
96d73eb02751
(bibtex-format-entry): Use `bibtex-empty-field-re' only on the text of
Lute Kamstra <lute@gnu.org>
parents:
58772
diff
changeset
|
830 Added to the value of all other variables which determine columns." |
19460 | 831 :group 'bibtex |
832 :type 'integer) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
833 |
19460 | 834 (defcustom bibtex-field-indentation 2 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
835 "Starting column for the name part in BibTeX fields." |
19460 | 836 :group 'bibtex |
837 :type 'integer) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
838 |
19460 | 839 (defcustom bibtex-text-indentation |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
840 (+ bibtex-field-indentation |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
841 (length "organization = ")) |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
842 "Starting column for the text part in BibTeX fields. |
19460 | 843 Should be equal to the space needed for the longest name part." |
844 :group 'bibtex | |
845 :type 'integer) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
846 |
19460 | 847 (defcustom bibtex-contline-indentation |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
848 (+ bibtex-text-indentation 1) |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
849 "Starting column for continuation lines of BibTeX fields." |
19460 | 850 :group 'bibtex |
851 :type 'integer) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
852 |
19460 | 853 (defcustom bibtex-align-at-equal-sign nil |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
854 "If non-nil, align fields at equal sign instead of field text. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
855 If non-nil, the column for the equal sign is the value of |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
856 `bibtex-text-indentation', minus 2." |
19460 | 857 :group 'bibtex |
858 :type 'boolean) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
859 |
19460 | 860 (defcustom bibtex-comma-after-last-field nil |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
861 "If non-nil, a comma is put at end of last field in the entry template." |
19460 | 862 :group 'bibtex |
863 :type 'boolean) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
864 |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
865 (defcustom bibtex-autoadd-commas t |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
866 "If non-nil automatically add missing commas at end of BibTeX fields." |
57815 | 867 :group 'bibtex |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
868 :type 'boolean) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
869 |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
870 (defcustom bibtex-autofill-types '("Proceedings") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
871 "Automatically fill fields if possible for those BibTeX entry types." |
57815 | 872 :group 'bibtex |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
873 :type '(repeat string)) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
874 |
57815 | 875 (defcustom bibtex-summary-function 'bibtex-summary |
62077
e233a73cbf79
(bibtex-summary): Use current BibTeX entry to avoid calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61439
diff
changeset
|
876 "Function to call for generating a summary of current BibTeX entry. |
e233a73cbf79
(bibtex-summary): Use current BibTeX entry to avoid calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61439
diff
changeset
|
877 It takes no arguments. Point must be at beginning of entry. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
878 Used by `bibtex-complete-crossref-cleanup' and `bibtex-copy-summary-as-kill'." |
57815 | 879 :group 'bibtex |
880 :type '(choice (const :tag "Default" bibtex-summary) | |
881 (function :tag "Personalized function"))) | |
882 | |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
883 (defcustom bibtex-generate-url-list |
61247
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
884 '((("url" . ".*:.*"))) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
885 "List of schemes for generating the URL of a BibTeX entry. |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
886 These schemes are used by `bibtex-url'. |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
887 |
61247
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
888 Each scheme should have one of these forms: |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
889 |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
890 ((FIELD . REGEXP)) |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
891 ((FIELD . REGEXP) STEP...) |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
892 ((FIELD . REGEXP) STRING STEP...) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
893 |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
894 FIELD is a field name as returned by `bibtex-parse-entry'. |
61247
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
895 REGEXP is matched against the text of FIELD. If the match succeeds, |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
896 then this scheme is used. If no STRING and STEPs are specified |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
897 the matched text is used as the URL, otherwise the URL is built |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
898 by evaluating STEPs. If no STRING is specified the STEPs must result |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
899 in strings which are concatenated. Otherwise the resulting objects |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
900 are passed through `format' using STRING as format control string. |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
901 |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
902 A STEP is a list (FIELD REGEXP REPLACE). The text of FIELD |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
903 is matched against REGEXP, and is replaced with REPLACE. |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
904 REPLACE can be a string, or a number (which selects the corresponding |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
905 submatch), or a function called with the field's text as argument |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
906 and with the `match-data' properly set. |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
907 |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
908 Case is always ignored. Always remove the field delimiters. |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
909 If `bibtex-expand-strings' is non-nil, BibTeX strings are expanded |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
910 for generating the URL. |
106426
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
911 Set this variable before loading BibTeX mode. |
61247
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
912 |
106454
d218ddb3768e
(bibtex-enclosing-field): Exclude entry delimiter if it is at the end
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106426
diff
changeset
|
913 The following is a complex example, see URL `http://link.aps.org/'. |
61247
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
914 |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
915 (((\"journal\" . \"\\\\=<\\(PR[ABCDEL]?\\|RMP\\)\\\\=>\") |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
916 \"http://link.aps.org/abstract/%s/v%s/p%s\" |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
917 (\"journal\" \".*\" downcase) |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
918 (\"volume\" \".*\" 0) |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
919 (\"pages\" \"\\`[A-Z]?[0-9]+\" 0)))" |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
920 :group 'bibtex |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
921 :type '(repeat |
61247
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
922 (cons :tag "Scheme" |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
923 (cons :tag "Matcher" :extra-offset 4 |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
924 (string :tag "BibTeX field") |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
925 (regexp :tag "Regexp")) |
61247
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
926 (choice |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
927 (const :tag "Take match as is" nil) |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
928 (cons :tag "Formatted" |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
929 (string :tag "Format control string") |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
930 (repeat :tag "Steps to generate URL" |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
931 (list (string :tag "BibTeX field") |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
932 (regexp :tag "Regexp") |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
933 (choice (string :tag "Replacement") |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
934 (integer :tag "Sub-match") |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
935 (function :tag "Filter"))))) |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
936 (repeat :tag "Concatenated" |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
937 (list (string :tag "BibTeX field") |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
938 (regexp :tag "Regexp") |
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
939 (choice (string :tag "Replacement") |
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
940 (integer :tag "Sub-match") |
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
941 (function :tag "Filter")))))))) |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
942 (put 'bibtex-generate-url-list 'risky-local-variable t) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
943 |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
944 (defcustom bibtex-cite-matcher-alist |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
945 '(("\\\\cite[ \t\n]*{\\([^}]+\\)}" . 1)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
946 "Alist of rules to identify cited keys in a BibTeX entry. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
947 Each rule should be of the form (REGEXP . SUBEXP), where SUBEXP |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
948 specifies which parenthesized expression in REGEXP is a cited key. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
949 Case is significant. |
106426
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
950 Used by `bibtex-search-crossref' and for font-locking. |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
951 Set this variable before loading BibTeX mode." |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
952 :group 'bibtex |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
953 :type '(repeat (cons (regexp :tag "Regexp") |
100439
5de002dfa264
* face-remap.el (text-scale-mode-step, buffer-face-mode-face):
Juanma Barranquero <lekktu@gmail.com>
parents:
97521
diff
changeset
|
954 (integer :tag "Number"))) |
5de002dfa264
* face-remap.el (text-scale-mode-step, buffer-face-mode-face):
Juanma Barranquero <lekktu@gmail.com>
parents:
97521
diff
changeset
|
955 :version "23.1") |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
956 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
957 (defcustom bibtex-expand-strings nil |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
958 "If non-nil, expand strings when extracting the content of a BibTeX field." |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
959 :group 'bibtex |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
960 :type 'boolean) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
961 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
962 ;; `bibtex-font-lock-keywords' is a user option, too. But since the |
14789
d68b71228abd
(bibtex-pop): New generic function which unifies the
Richard M. Stallman <rms@gnu.org>
parents:
14410
diff
changeset
|
963 ;; patterns used to define this variable are defined in a later |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
964 ;; section of this file, it is defined later. |
26711
eac840d283b6
(bibtex-hs-forward-sexp): Added to support
Gerd Moellmann <gerd@gnu.org>
parents:
25444
diff
changeset
|
965 |
eac840d283b6
(bibtex-hs-forward-sexp): Added to support
Gerd Moellmann <gerd@gnu.org>
parents:
25444
diff
changeset
|
966 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
967 ;; Syntax Table and Keybindings |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
968 (defvar bibtex-mode-syntax-table |
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
969 (let ((st (make-syntax-table))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
970 (modify-syntax-entry ?\" "\"" st) |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
971 (modify-syntax-entry ?$ "$$ " st) |
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
972 (modify-syntax-entry ?% "< " st) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
973 (modify-syntax-entry ?' "w " st) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
974 (modify-syntax-entry ?@ "w " st) |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
975 (modify-syntax-entry ?\\ "\\" st) |
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
976 (modify-syntax-entry ?\f "> " st) |
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
977 (modify-syntax-entry ?\n "> " st) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
978 ;; Keys cannot have = in them (wrong font-lock of @string{foo=bar}). |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
979 (modify-syntax-entry ?= "." st) |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
980 (modify-syntax-entry ?~ " " st) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
981 st) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
982 "Syntax table used in BibTeX mode buffers.") |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
983 |
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
984 (defvar bibtex-mode-map |
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
985 (let ((km (make-sparse-keymap))) |
26711
eac840d283b6
(bibtex-hs-forward-sexp): Added to support
Gerd Moellmann <gerd@gnu.org>
parents:
25444
diff
changeset
|
986 ;; The Key `C-c&' is reserved for reftex.el |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
987 (define-key km "\t" 'bibtex-find-text) |
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
988 (define-key km "\n" 'bibtex-next-field) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
989 (define-key km "\M-\t" 'bibtex-complete) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
990 (define-key km "\C-c\"" 'bibtex-remove-delimiters) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
991 (define-key km "\C-c{" 'bibtex-remove-delimiters) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
992 (define-key km "\C-c}" 'bibtex-remove-delimiters) |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
993 (define-key km "\C-c\C-c" 'bibtex-clean-entry) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
994 (define-key km "\C-c\C-q" 'bibtex-fill-entry) |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
995 (define-key km "\C-c\C-s" 'bibtex-search-entry) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
996 (define-key km "\C-c\C-x" 'bibtex-search-crossref) |
57815 | 997 (define-key km "\C-c\C-t" 'bibtex-copy-summary-as-kill) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
998 (define-key km "\C-c?" 'bibtex-print-help-message) |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
999 (define-key km "\C-c\C-p" 'bibtex-pop-previous) |
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
1000 (define-key km "\C-c\C-n" 'bibtex-pop-next) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1001 (define-key km "\C-c\C-k" 'bibtex-kill-field) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1002 (define-key km "\C-c\M-k" 'bibtex-copy-field-as-kill) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1003 (define-key km "\C-c\C-w" 'bibtex-kill-entry) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1004 (define-key km "\C-c\M-w" 'bibtex-copy-entry-as-kill) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1005 (define-key km "\C-c\C-y" 'bibtex-yank) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1006 (define-key km "\C-c\M-y" 'bibtex-yank-pop) |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
1007 (define-key km "\C-c\C-d" 'bibtex-empty-field) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1008 (define-key km "\C-c\C-f" 'bibtex-make-field) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1009 (define-key km "\C-c\C-u" 'bibtex-entry-update) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1010 (define-key km "\C-c$" 'bibtex-ispell-abstract) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1011 (define-key km "\M-\C-a" 'bibtex-beginning-of-entry) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1012 (define-key km "\M-\C-e" 'bibtex-end-of-entry) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1013 (define-key km "\C-\M-l" 'bibtex-reposition-window) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1014 (define-key km "\C-\M-h" 'bibtex-mark-entry) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1015 (define-key km "\C-c\C-b" 'bibtex-entry) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
1016 (define-key km "\C-c\C-rn" 'bibtex-narrow-to-entry) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
1017 (define-key km "\C-c\C-rw" 'widen) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1018 (define-key km "\C-c\C-l" 'bibtex-url) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1019 (define-key km "\C-c\C-o" 'bibtex-remove-OPT-or-ALT) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
1020 (define-key km "\C-c\C-e\C-i" 'bibtex-InProceedings) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
1021 (define-key km "\C-c\C-ei" 'bibtex-InCollection) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
1022 (define-key km "\C-c\C-eI" 'bibtex-InBook) |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
1023 (define-key km "\C-c\C-e\C-a" 'bibtex-Article) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
1024 (define-key km "\C-c\C-e\C-b" 'bibtex-InBook) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
1025 (define-key km "\C-c\C-eb" 'bibtex-Book) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
1026 (define-key km "\C-c\C-eB" 'bibtex-Booklet) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
1027 (define-key km "\C-c\C-e\C-c" 'bibtex-InCollection) |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
1028 (define-key km "\C-c\C-e\C-m" 'bibtex-Manual) |
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
1029 (define-key km "\C-c\C-em" 'bibtex-MastersThesis) |
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
1030 (define-key km "\C-c\C-eM" 'bibtex-Misc) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
1031 (define-key km "\C-c\C-e\C-p" 'bibtex-InProceedings) |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
1032 (define-key km "\C-c\C-ep" 'bibtex-Proceedings) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
1033 (define-key km "\C-c\C-eP" 'bibtex-PhdThesis) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1034 (define-key km "\C-c\C-e\M-p" 'bibtex-Preamble) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1035 (define-key km "\C-c\C-e\C-s" 'bibtex-String) |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
1036 (define-key km "\C-c\C-e\C-t" 'bibtex-TechReport) |
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
1037 (define-key km "\C-c\C-e\C-u" 'bibtex-Unpublished) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1038 km) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1039 "Keymap used in BibTeX mode.") |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
1040 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1041 (easy-menu-define |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1042 bibtex-edit-menu bibtex-mode-map "BibTeX-Edit Menu in BibTeX mode" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1043 '("BibTeX-Edit" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1044 ("Moving inside an Entry" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1045 ["End of Field" bibtex-find-text t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1046 ["Next Field" bibtex-next-field t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1047 ["Beginning of Entry" bibtex-beginning-of-entry t] |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
1048 ["End of Entry" bibtex-end-of-entry t] |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
1049 "--" |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
1050 ["Make Entry Visible" bibtex-reposition-window t]) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1051 ("Moving in BibTeX Buffers" |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1052 ["Search Entry" bibtex-search-entry t] |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1053 ["Search Crossref Entry" bibtex-search-crossref t]) |
57815 | 1054 "--" |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1055 ("Operating on Current Field" |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1056 ["Fill Field" fill-paragraph t] |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1057 ["Remove Delimiters" bibtex-remove-delimiters t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1058 ["Remove OPT or ALT Prefix" bibtex-remove-OPT-or-ALT t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1059 ["Clear Field" bibtex-empty-field t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1060 "--" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1061 ["Kill Field" bibtex-kill-field t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1062 ["Copy Field to Kill Ring" bibtex-copy-field-as-kill t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1063 ["Paste Most Recently Killed Field" bibtex-yank t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1064 ["Paste Previously Killed Field" bibtex-yank-pop t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1065 "--" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1066 ["Make New Field" bibtex-make-field t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1067 "--" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1068 ["Snatch from Similar Following Field" bibtex-pop-next t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1069 ["Snatch from Similar Preceding Field" bibtex-pop-previous t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1070 "--" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1071 ["String or Key Complete" bibtex-complete t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1072 "--" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1073 ["Help about Current Field" bibtex-print-help-message t]) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1074 ("Operating on Current Entry" |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1075 ["Fill Entry" bibtex-fill-entry t] |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1076 ["Clean Entry" bibtex-clean-entry t] |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1077 ["Update Entry" bibtex-entry-update t] |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1078 "--" |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1079 ["Kill Entry" bibtex-kill-entry t] |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1080 ["Copy Entry to Kill Ring" bibtex-copy-entry-as-kill t] |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1081 ["Paste Most Recently Killed Entry" bibtex-yank t] |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1082 ["Paste Previously Killed Entry" bibtex-yank-pop t] |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1083 "--" |
57815 | 1084 ["Copy Summary to Kill Ring" bibtex-copy-summary-as-kill t] |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1085 ["Browse URL" bibtex-url t] |
57815 | 1086 "--" |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1087 ["Ispell Entry" bibtex-ispell-entry t] |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1088 ["Ispell Entry Abstract" bibtex-ispell-abstract t] |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1089 "--" |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1090 ["Narrow to Entry" bibtex-narrow-to-entry t] |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1091 ["Mark Entry" bibtex-mark-entry t] |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1092 "--" |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1093 ["View Cite Locations (RefTeX)" reftex-view-crossref-from-bibtex |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1094 (fboundp 'reftex-view-crossref-from-bibtex)]) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1095 ("Operating on Buffer or Region" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1096 ["Validate Entries" bibtex-validate t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1097 ["Sort Entries" bibtex-sort-buffer t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1098 ["Reformat Entries" bibtex-reformat t] |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1099 ["Count Entries" bibtex-count-entries t] |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1100 "--" |
57815 | 1101 ["Convert Alien Buffer" bibtex-convert-alien t]) |
1102 ("Operating on Multiple Buffers" | |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
1103 ["(Re)Initialize BibTeX Buffers" bibtex-initialize t] |
57815 | 1104 ["Validate Entries" bibtex-validate-globally t]))) |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
1105 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1106 (easy-menu-define |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1107 bibtex-entry-menu bibtex-mode-map "Entry-Types Menu in BibTeX mode" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1108 (list "Entry-Types" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1109 ["Article in Journal" bibtex-Article t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1110 ["Article in Conference Proceedings" bibtex-InProceedings t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1111 ["Article in a Collection" bibtex-InCollection t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1112 ["Chapter or Pages in a Book" bibtex-InBook t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1113 ["Conference Proceedings" bibtex-Proceedings t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1114 ["Book" bibtex-Book t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1115 ["Booklet (Bound, but no Publisher/Institution)" bibtex-Booklet t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1116 ["PhD. Thesis" bibtex-PhdThesis t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1117 ["Master's Thesis" bibtex-MastersThesis t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1118 ["Technical Report" bibtex-TechReport t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1119 ["Technical Manual" bibtex-Manual t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1120 ["Unpublished" bibtex-Unpublished t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1121 ["Miscellaneous" bibtex-Misc t] |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1122 "--" |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1123 ["String" bibtex-String t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1124 ["Preamble" bibtex-Preamble t])) |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
1125 |
14789
d68b71228abd
(bibtex-pop): New generic function which unifies the
Richard M. Stallman <rms@gnu.org>
parents:
14410
diff
changeset
|
1126 |
12700
b3a8ee2da96a
Add keywords and comments as per conventions.
Richard M. Stallman <rms@gnu.org>
parents:
12028
diff
changeset
|
1127 ;; Internal Variables |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
1128 |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1129 (defvar bibtex-field-braces-opt nil |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1130 "Optimized value of `bibtex-field-braces-alist'. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1131 Created by `bibtex-field-re-init'. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1132 It is a an alist with elements (FIELD . REGEXP).") |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1133 |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1134 (defvar bibtex-field-strings-opt nil |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1135 "Optimized value of `bibtex-field-strings-alist'. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1136 Created by `bibtex-field-re-init'. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1137 It is a an alist with elements (FIELD RULE1 RULE2 ...), |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1138 where each RULE is (REGEXP . TO-STR).") |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1139 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1140 (defvar bibtex-pop-previous-search-point nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1141 "Next point where `bibtex-pop-previous' starts looking for a similar entry.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1142 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1143 (defvar bibtex-pop-next-search-point nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1144 "Next point where `bibtex-pop-next' starts looking for a similar entry.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1145 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1146 (defvar bibtex-field-kill-ring nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1147 "Ring of least recently killed fields. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1148 At most `bibtex-field-kill-ring-max' items are kept here.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1149 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1150 (defvar bibtex-field-kill-ring-yank-pointer nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1151 "The tail of `bibtex-field-kill-ring' whose car is the last item yanked.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1152 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1153 (defvar bibtex-entry-kill-ring nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1154 "Ring of least recently killed entries. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1155 At most `bibtex-entry-kill-ring-max' items are kept here.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1156 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1157 (defvar bibtex-entry-kill-ring-yank-pointer nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1158 "The tail of `bibtex-entry-kill-ring' whose car is the last item yanked.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1159 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1160 (defvar bibtex-last-kill-command nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1161 "Type of the last kill command (either 'field or 'entry).") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1162 |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1163 (defvar bibtex-strings |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1164 (lazy-completion-table bibtex-strings |
67816
d195eef388b8
(bibtex-strings, bibtex-reference-keys):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67575
diff
changeset
|
1165 (lambda () |
d195eef388b8
(bibtex-strings, bibtex-reference-keys):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67575
diff
changeset
|
1166 (bibtex-parse-strings (bibtex-string-files-init)))) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1167 "Completion table for BibTeX string keys. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1168 Initialized from `bibtex-predefined-strings' and `bibtex-string-files'.") |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1169 (make-variable-buffer-local 'bibtex-strings) |
68265
9e0c23ab13f9
(bibtex-strings, bibtex-reference-keys): Mark as risky.
Richard M. Stallman <rms@gnu.org>
parents:
68065
diff
changeset
|
1170 (put 'bibtex-strings 'risky-local-variable t) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1171 |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1172 (defvar bibtex-reference-keys |
67816
d195eef388b8
(bibtex-strings, bibtex-reference-keys):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67575
diff
changeset
|
1173 (lazy-completion-table bibtex-reference-keys |
d195eef388b8
(bibtex-strings, bibtex-reference-keys):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67575
diff
changeset
|
1174 (lambda () (bibtex-parse-keys nil t))) |
57815 | 1175 "Completion table for BibTeX reference keys. |
1176 The CDRs of the elements are t for header keys and nil for crossref keys.") | |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1177 (make-variable-buffer-local 'bibtex-reference-keys) |
68265
9e0c23ab13f9
(bibtex-strings, bibtex-reference-keys): Mark as risky.
Richard M. Stallman <rms@gnu.org>
parents:
68065
diff
changeset
|
1178 (put 'bibtex-reference-keys 'risky-local-variable t) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1179 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1180 (defvar bibtex-buffer-last-parsed-tick nil |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
1181 "Value of `buffer-modified-tick' last time buffer was parsed for keys.") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1182 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1183 (defvar bibtex-parse-idle-timer nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1184 "Stores if timer is already installed.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1185 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1186 (defvar bibtex-progress-lastperc nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1187 "Last reported percentage for the progress message.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1188 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1189 (defvar bibtex-progress-lastmes nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1190 "Last reported progress message.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1191 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1192 (defvar bibtex-progress-interval nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1193 "Interval for progress messages.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1194 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1195 (defvar bibtex-key-history nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1196 "History list for reading keys.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1197 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1198 (defvar bibtex-entry-type-history nil |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1199 "History list for reading entry types.") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1200 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1201 (defvar bibtex-field-history nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1202 "History list for reading field names.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1203 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1204 (defvar bibtex-reformat-previous-options nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1205 "Last reformat options given.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1206 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1207 (defvar bibtex-reformat-previous-reference-keys nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1208 "Last reformat reference keys option given.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1209 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1210 (defconst bibtex-field-name "[^\"#%'(),={} \t\n0-9][^\"#%'(),={} \t\n]*" |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1211 "Regexp matching the name of a BibTeX field.") |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1212 |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1213 (defconst bibtex-name-part |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1214 (concat ",[ \t\n]*\\(" bibtex-field-name "\\)") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1215 "Regexp matching the name part of a BibTeX field.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1216 |
61439
267229876c56
(bibtex-autokey-titleword-ignore, bibtex-reference-key)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61247
diff
changeset
|
1217 (defconst bibtex-reference-key "[][[:alnum:].:;?!`'/*@+|()<>&_^$-]+" |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1218 "Regexp matching the reference key part of a BibTeX entry.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1219 |
61439
267229876c56
(bibtex-autokey-titleword-ignore, bibtex-reference-key)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61247
diff
changeset
|
1220 (defconst bibtex-field-const "[][[:alnum:].:;?!`'/*@+=|<>&_^$-]+" |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1221 "Regexp matching a BibTeX field constant.") |
27701
5e135f0faf1d
(bibtex-mode): Replaced manual splitting of path
Gerd Moellmann <gerd@gnu.org>
parents:
26711
diff
changeset
|
1222 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1223 (defvar bibtex-entry-type |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1224 (concat "@[ \t]*\\(?:" |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1225 (regexp-opt (mapcar 'car bibtex-entry-field-alist)) "\\)") |
92218
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
1226 "Regexp matching the type of a BibTeX entry.") |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1227 |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1228 (defvar bibtex-entry-head |
15637
405b1ecbf8ba
(bibtex-reference-head): Allow spaces and tabs between
Karl Heuer <kwzh@gnu.org>
parents:
15565
diff
changeset
|
1229 (concat "^[ \t]*\\(" |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1230 bibtex-entry-type |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1231 "\\)[ \t]*[({][ \t\n]*\\(" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1232 bibtex-reference-key |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1233 "\\)") |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1234 "Regexp matching the header line of a BibTeX entry (including key).") |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1235 |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1236 (defvar bibtex-entry-maybe-empty-head |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1237 (concat bibtex-entry-head "?") |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1238 "Regexp matching the header line of a BibTeX entry (possibly without key).") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1239 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1240 (defconst bibtex-any-entry-maybe-empty-head |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1241 (concat "^[ \t]*\\(@[ \t]*" bibtex-field-name "\\)[ \t]*[({][ \t\n]*\\(" |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1242 bibtex-reference-key "\\)?") |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1243 "Regexp matching the header line of any BibTeX entry (possibly without key).") |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1244 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1245 (defvar bibtex-any-valid-entry-type |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1246 (concat "^[ \t]*@[ \t]*\\(?:" |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1247 (regexp-opt (append '("String" "Preamble") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1248 (mapcar 'car bibtex-entry-field-alist))) "\\)") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1249 "Regexp matching any valid BibTeX entry (including String and Preamble).") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1250 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1251 (defconst bibtex-type-in-head 1 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1252 "Regexp subexpression number of the type part in `bibtex-entry-head'.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1253 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1254 (defconst bibtex-key-in-head 2 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1255 "Regexp subexpression number of the key part in `bibtex-entry-head'.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1256 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1257 (defconst bibtex-string-type "^[ \t]*\\(@[ \t]*String\\)[ \t]*[({][ \t\n]*" |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1258 "Regexp matching the name of a BibTeX String entry.") |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1259 |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1260 (defconst bibtex-string-maybe-empty-head |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1261 (concat bibtex-string-type "\\(" bibtex-reference-key "\\)?") |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1262 "Regexp matching the header line of a BibTeX String entry.") |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1263 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1264 (defconst bibtex-preamble-prefix |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1265 "[ \t]*\\(@[ \t]*Preamble\\)[ \t]*[({][ \t\n]*" |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1266 "Regexp matching the prefix part of a BibTeX Preamble entry.") |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1267 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1268 (defconst bibtex-font-lock-syntactic-keywords |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1269 `((,(concat "^[ \t]*\\(" (substring bibtex-comment-start 0 1) "\\)" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1270 (substring bibtex-comment-start 1) "\\>") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1271 1 '(11)))) |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
1272 |
14789
d68b71228abd
(bibtex-pop): New generic function which unifies the
Richard M. Stallman <rms@gnu.org>
parents:
14410
diff
changeset
|
1273 (defvar bibtex-font-lock-keywords |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1274 ;; entry type and reference key |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1275 `((,bibtex-any-entry-maybe-empty-head |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1276 (,bibtex-type-in-head font-lock-function-name-face) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1277 (,bibtex-key-in-head font-lock-constant-face nil t)) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1278 ;; optional field names (treated as comments) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1279 (,(concat "^[ \t]*\\(OPT" bibtex-field-name "\\)[ \t]*=") |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1280 1 font-lock-comment-face) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1281 ;; field names |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1282 (,(concat "^[ \t]*\\(" bibtex-field-name "\\)[ \t]*=") |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1283 1 font-lock-variable-name-face) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1284 ;; url |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1285 (bibtex-font-lock-url) (bibtex-font-lock-crossref) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1286 ;; cite |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1287 ,@(mapcar (lambda (matcher) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1288 `((lambda (bound) (bibtex-font-lock-cite ',matcher bound)))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1289 bibtex-cite-matcher-alist)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1290 "*Default expressions to highlight in BibTeX mode.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1291 |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1292 (defvar bibtex-font-lock-url-regexp |
57815 | 1293 ;; Assume that field names begin at the beginning of a line. |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
1294 (concat "^[ \t]*" |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
1295 (regexp-opt (delete-dups (mapcar 'caar bibtex-generate-url-list)) t) |
57815 | 1296 "[ \t]*=[ \t]*") |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1297 "Regexp for `bibtex-font-lock-url' derived from `bibtex-generate-url-list'.") |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1298 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1299 (defvar bibtex-string-empty-key nil |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1300 "If non-nil, `bibtex-parse-string' accepts empty key.") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1301 |
71044
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
1302 (defvar bibtex-sort-entry-class-alist nil |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
1303 "Alist mapping entry types to their sorting index. |
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
1304 Auto-generated from `bibtex-sort-entry-class'. |
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
1305 Used when `bibtex-maintain-sorted-entries' is `entry-class'.") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1306 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1307 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1308 (defun bibtex-parse-association (parse-lhs parse-rhs) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1309 "Parse a string of the format <left-hand-side = right-hand-side>. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1310 The functions PARSE-LHS and PARSE-RHS are used to parse the corresponding |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1311 substrings. These functions are expected to return nil if parsing is not |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1312 successful. If the returned values of both functions are non-nil, |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1313 return a cons pair of these values. Do not move point." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1314 (save-match-data |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1315 (save-excursion |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1316 (let ((left (funcall parse-lhs)) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1317 right) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1318 (if (and left |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1319 (looking-at "[ \t\n]*=[ \t\n]*") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1320 (goto-char (match-end 0)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1321 (setq right (funcall parse-rhs))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1322 (cons left right)))))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1323 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1324 (defun bibtex-parse-field-name () |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1325 "Parse the name part of a BibTeX field. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1326 If the field name is found, return a triple consisting of the position of the |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1327 very first character of the match, the actual starting position of the name |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
1328 part and end position of the match. Move point to end of field name. |
59733
96d73eb02751
(bibtex-format-entry): Use `bibtex-empty-field-re' only on the text of
Lute Kamstra <lute@gnu.org>
parents:
58772
diff
changeset
|
1329 If `bibtex-autoadd-commas' is non-nil add missing comma at end of preceding |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1330 BibTeX field as necessary." |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1331 (cond ((looking-at bibtex-name-part) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1332 (goto-char (match-end 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1333 (list (match-beginning 0) (match-beginning 1) (match-end 0))) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1334 ;; Maybe add a missing comma. |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1335 ((and bibtex-autoadd-commas |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1336 (looking-at (concat "[ \t\n]*\\(?:" bibtex-field-name |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1337 "\\)[ \t\n]*="))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1338 (skip-chars-backward " \t\n") |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1339 ;; It can be confusing if non-editing commands try to |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1340 ;; modify the buffer. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1341 (if buffer-read-only |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1342 (error "Comma missing at buffer position %s" (point))) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1343 (insert ",") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1344 (forward-char -1) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1345 ;; Now try again. |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1346 (bibtex-parse-field-name)))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1347 |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1348 (defconst bibtex-braced-string-syntax-table |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1349 (let ((st (make-syntax-table))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1350 (modify-syntax-entry ?\{ "(}" st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1351 (modify-syntax-entry ?\} "){" st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1352 (modify-syntax-entry ?\[ "." st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1353 (modify-syntax-entry ?\] "." st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1354 (modify-syntax-entry ?\( "." st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1355 (modify-syntax-entry ?\) "." st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1356 (modify-syntax-entry ?\\ "." st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1357 (modify-syntax-entry ?\" "." st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1358 st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1359 "Syntax-table to parse matched braces.") |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1360 |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1361 (defconst bibtex-quoted-string-syntax-table |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1362 (let ((st (make-syntax-table))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1363 (modify-syntax-entry ?\\ "\\" st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1364 (modify-syntax-entry ?\" "\"" st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1365 st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1366 "Syntax-table to parse matched quotes.") |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1367 |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1368 (defun bibtex-parse-field-string () |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1369 "Parse a BibTeX field string enclosed by braces or quotes. |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1370 If a syntactically correct string is found, a pair containing the start and |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1371 end position of the field string is returned, nil otherwise. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1372 Do not move point." |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1373 (let ((end-point |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1374 (or (and (eq (following-char) ?\") |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1375 (save-excursion |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1376 (with-syntax-table bibtex-quoted-string-syntax-table |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1377 (forward-sexp 1)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1378 (point))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1379 (and (eq (following-char) ?\{) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1380 (save-excursion |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1381 (with-syntax-table bibtex-braced-string-syntax-table |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1382 (forward-sexp 1)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1383 (point)))))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1384 (if end-point |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1385 (cons (point) end-point)))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1386 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1387 (defun bibtex-parse-field-text () |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1388 "Parse the text part of a BibTeX field. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1389 The text part is either a string, or an empty string, or a constant followed |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1390 by one or more <# (string|constant)> pairs. If a syntactically correct text |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1391 is found, a pair containing the start and end position of the text is |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
1392 returned, nil otherwise. Move point to end of field text." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1393 (let ((starting-point (point)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1394 end-point failure boundaries) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1395 (while (not (or end-point failure)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1396 (cond ((looking-at bibtex-field-const) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1397 (goto-char (match-end 0))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1398 ((setq boundaries (bibtex-parse-field-string)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1399 (goto-char (cdr boundaries))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1400 ((setq failure t))) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1401 (if (looking-at "[ \t\n]*#[ \t\n]*") |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1402 (goto-char (match-end 0)) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1403 (setq end-point (point)))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1404 (skip-chars-forward " \t\n") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1405 (if (and (not failure) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1406 end-point) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1407 (list starting-point end-point (point))))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1408 |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1409 (defun bibtex-parse-field () |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1410 "Parse the BibTeX field beginning at the position of point. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1411 If a syntactically correct field is found, return a cons pair containing |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1412 the boundaries of the name and text parts of the field. Do not move point." |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1413 (bibtex-parse-association 'bibtex-parse-field-name |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1414 'bibtex-parse-field-text)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1415 |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1416 (defsubst bibtex-start-of-field (bounds) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1417 (nth 0 (car bounds))) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1418 (defsubst bibtex-start-of-name-in-field (bounds) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1419 (nth 1 (car bounds))) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1420 (defsubst bibtex-end-of-name-in-field (bounds) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1421 (nth 2 (car bounds))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1422 (defsubst bibtex-start-of-text-in-field (bounds) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1423 (nth 1 bounds)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1424 (defsubst bibtex-end-of-text-in-field (bounds) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1425 (nth 2 bounds)) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1426 (defsubst bibtex-end-of-field (bounds) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1427 (nth 3 bounds)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1428 |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1429 (defun bibtex-search-forward-field (name &optional bound) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1430 "Search forward to find a BibTeX field of name NAME. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1431 If a syntactically correct field is found, return a pair containing |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1432 the boundaries of the name and text parts of the field. The search |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1433 is limited by optional arg BOUND. If BOUND is t the search is limited |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1434 by the end of the current entry. Do not move point." |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1435 (save-match-data |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1436 (save-excursion |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1437 (if (eq bound t) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1438 (let ((regexp (concat bibtex-name-part "[ \t\n]*=\\|" |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1439 bibtex-any-entry-maybe-empty-head)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1440 (case-fold-search t) bounds) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1441 (catch 'done |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1442 (if (looking-at "[ \t]*@") (goto-char (match-end 0))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1443 (while (and (not bounds) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1444 (re-search-forward regexp nil t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1445 (if (match-beginning 2) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1446 ;; We found a new entry |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1447 (throw 'done nil) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1448 ;; We found a field |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1449 (goto-char (match-beginning 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1450 (setq bounds (bibtex-parse-field)))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1451 ;; Step through all fields so that we cannot overshoot. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1452 (while bounds |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1453 (goto-char (bibtex-start-of-name-in-field bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1454 (if (looking-at name) (throw 'done bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1455 (goto-char (bibtex-end-of-field bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1456 (setq bounds (bibtex-parse-field))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1457 ;; Bounded search or bound is nil (i.e. we cannot overshoot). |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1458 ;; Indeed, the search is bounded when `bibtex-search-forward-field' |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1459 ;; is called many times. So we optimize this part of this function. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1460 (let ((name-part (concat ",[ \t\n]*\\(" name "\\)[ \t\n]*=[ \t\n]*")) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1461 (case-fold-search t) left right) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1462 (while (and (not right) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1463 (re-search-forward name-part bound t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1464 (setq left (list (match-beginning 0) (match-beginning 1) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1465 (match-end 1)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1466 ;; Don't worry that the field text could be past bound. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1467 right (bibtex-parse-field-text))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1468 (if right (cons left right))))))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1469 |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1470 (defun bibtex-search-backward-field (name &optional bound) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1471 "Search backward to find a BibTeX field of name NAME. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1472 If a syntactically correct field is found, return a pair containing |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1473 the boundaries of the name and text parts of the field. The search |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1474 is limited by the optional arg BOUND. If BOUND is t the search is |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1475 limited by the beginning of the current entry. Do not move point." |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1476 (save-match-data |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1477 (if (eq bound t) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1478 (setq bound (save-excursion (bibtex-beginning-of-entry)))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1479 (let ((name-part (concat ",[ \t\n]*\\(" name "\\)[ \t\n]*=[ \t\n]*")) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1480 (case-fold-search t) left right) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1481 (save-excursion |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1482 ;; the parsing functions are not designed for parsing backwards :-( |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1483 (when (search-backward "," bound t) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1484 (or (save-excursion |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1485 (when (looking-at name-part) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1486 (setq left (list (match-beginning 0) (match-beginning 1) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1487 (match-end 1))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1488 (goto-char (match-end 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1489 (setq right (bibtex-parse-field-text)))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1490 (while (and (not right) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1491 (re-search-backward name-part bound t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1492 (setq left (list (match-beginning 0) (match-beginning 1) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1493 (match-end 1))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1494 (save-excursion |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1495 (goto-char (match-end 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1496 (setq right (bibtex-parse-field-text))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1497 (if right (cons left right))))))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1498 |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1499 (defun bibtex-name-in-field (bounds &optional remove-opt-alt) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1500 "Get content of name in BibTeX field defined via BOUNDS. |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1501 If optional arg REMOVE-OPT-ALT is non-nil remove \"OPT\" and \"ALT\"." |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1502 (let ((name (buffer-substring-no-properties |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1503 (bibtex-start-of-name-in-field bounds) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1504 (bibtex-end-of-name-in-field bounds)))) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1505 (if (and remove-opt-alt |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1506 (string-match "\\`\\(OPT\\|ALT\\)" name)) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1507 (substring name 3) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1508 name))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1509 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1510 (defun bibtex-text-in-field-bounds (bounds &optional content) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1511 "Get text in BibTeX field defined via BOUNDS. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1512 If optional arg CONTENT is non-nil extract content of field |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1513 by removing field delimiters and concatenating the resulting string. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1514 If `bibtex-expand-strings' is non-nil, also expand BibTeX strings." |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1515 (if content |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1516 (save-excursion |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1517 (goto-char (bibtex-start-of-text-in-field bounds)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1518 (let ((epoint (bibtex-end-of-text-in-field bounds)) |
106385
cd8b405d57c6
(bibtex-complete-internal): Use completion-in-region.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105813
diff
changeset
|
1519 content) |
cd8b405d57c6
(bibtex-complete-internal): Use completion-in-region.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105813
diff
changeset
|
1520 (while (< (point) epoint) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1521 (if (looking-at bibtex-field-const) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1522 (let ((mtch (match-string-no-properties 0))) |
67897
823f54b91fe2
(bibtex-text-in-field-bounds): Handle case that assoc-string returns
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67894
diff
changeset
|
1523 (push (or (if bibtex-expand-strings |
823f54b91fe2
(bibtex-text-in-field-bounds): Handle case that assoc-string returns
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67894
diff
changeset
|
1524 (cdr (assoc-string mtch (bibtex-strings) t))) |
823f54b91fe2
(bibtex-text-in-field-bounds): Handle case that assoc-string returns
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67894
diff
changeset
|
1525 mtch) content) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1526 (goto-char (match-end 0))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1527 (let ((bounds (bibtex-parse-field-string))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1528 (push (buffer-substring-no-properties |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1529 (1+ (car bounds)) (1- (cdr bounds))) content) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1530 (goto-char (cdr bounds)))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1531 (re-search-forward "\\=[ \t\n]*#[ \t\n]*" nil t)) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1532 (apply 'concat (nreverse content)))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1533 (buffer-substring-no-properties (bibtex-start-of-text-in-field bounds) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1534 (bibtex-end-of-text-in-field bounds)))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1535 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1536 (defun bibtex-text-in-field (field &optional follow-crossref) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1537 "Get content of field FIELD of current BibTeX entry. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1538 Return nil if not found. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1539 If optional arg FOLLOW-CROSSREF is non-nil, follow crossref." |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1540 (save-excursion |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1541 (let* ((end (if follow-crossref (bibtex-end-of-entry) t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1542 (beg (bibtex-beginning-of-entry)) ; move point |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1543 (bounds (bibtex-search-forward-field field end))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1544 (cond (bounds (bibtex-text-in-field-bounds bounds t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1545 ((and follow-crossref |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1546 (progn (goto-char beg) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1547 (setq bounds (bibtex-search-forward-field |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1548 "\\(OPT\\)?crossref" end)))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1549 (let ((crossref-field (bibtex-text-in-field-bounds bounds t))) |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1550 (if (bibtex-search-crossref crossref-field) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1551 ;; Do not pass FOLLOW-CROSSREF because we want |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1552 ;; to follow crossrefs only one level of recursion. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1553 (bibtex-text-in-field field)))))))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1554 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1555 (defun bibtex-parse-string-prefix () |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1556 "Parse the prefix part of a BibTeX string entry, including reference key. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1557 If the string prefix is found, return a triple consisting of the position of |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1558 the very first character of the match, the actual starting position of the |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1559 reference key and the end position of the match. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1560 If `bibtex-string-empty-key' is non-nil accept empty string key." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1561 (let ((case-fold-search t)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1562 (if (looking-at bibtex-string-type) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1563 (let ((start (point))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1564 (goto-char (match-end 0)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1565 (cond ((looking-at bibtex-reference-key) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1566 (goto-char (match-end 0)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1567 (list start |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1568 (match-beginning 0) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1569 (match-end 0))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1570 ((and bibtex-string-empty-key |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1571 (looking-at "=")) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1572 (skip-chars-backward " \t\n") |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1573 (list start (point) (point)))))))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1574 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1575 (defun bibtex-parse-string-postfix () |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1576 "Parse the postfix part of a BibTeX string entry, including the text. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1577 If the string postfix is found, return a triple consisting of the position of |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1578 the actual starting and ending position of the text and the very last |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
1579 character of the string entry. Move point past BibTeX string entry." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1580 (let* ((case-fold-search t) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1581 (bounds (bibtex-parse-field-text))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1582 (when bounds |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1583 (goto-char (nth 1 bounds)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1584 (when (looking-at "[ \t\n]*[})]") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1585 (goto-char (match-end 0)) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1586 (list (car bounds) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1587 (nth 1 bounds) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1588 (match-end 0)))))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1589 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1590 (defun bibtex-parse-string (&optional empty-key) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1591 "Parse a BibTeX string entry beginning at the position of point. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1592 If a syntactically correct entry is found, return a cons pair containing |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1593 the boundaries of the reference key and text parts of the entry. |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1594 If EMPTY-KEY is non-nil, key may be empty. Do not move point." |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1595 (let ((bibtex-string-empty-key empty-key)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1596 (bibtex-parse-association 'bibtex-parse-string-prefix |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1597 'bibtex-parse-string-postfix))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1598 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1599 (defun bibtex-search-forward-string (&optional empty-key) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1600 "Search forward to find a BibTeX string entry. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1601 If a syntactically correct entry is found, a pair containing the boundaries of |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1602 the reference key and text parts of the string is returned. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1603 If EMPTY-KEY is non-nil, key may be empty. Do not move point." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1604 (save-excursion |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1605 (save-match-data |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1606 (let ((case-fold-search t) bounds) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1607 (while (and (not bounds) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1608 (search-forward-regexp bibtex-string-type nil t)) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1609 (save-excursion (goto-char (match-beginning 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1610 (setq bounds (bibtex-parse-string empty-key)))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1611 bounds)))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1612 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1613 (defun bibtex-reference-key-in-string (bounds) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1614 "Return the key part of a BibTeX string defined via BOUNDS." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1615 (buffer-substring-no-properties (nth 1 (car bounds)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1616 (nth 2 (car bounds)))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1617 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1618 (defun bibtex-text-in-string (bounds &optional content) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1619 "Get text in BibTeX string field defined via BOUNDS. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1620 If optional arg CONTENT is non-nil extract content |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1621 by removing field delimiters and concatenating the resulting string. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1622 If `bibtex-expand-strings' is non-nil, also expand BibTeX strings." |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1623 (bibtex-text-in-field-bounds bounds content)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1624 |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1625 (defsubst bibtex-start-of-text-in-string (bounds) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1626 (nth 0 (cdr bounds))) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1627 (defsubst bibtex-end-of-text-in-string (bounds) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1628 (nth 1 (cdr bounds))) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1629 (defsubst bibtex-end-of-string (bounds) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1630 (nth 2 (cdr bounds))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1631 |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1632 (defsubst bibtex-type-in-head () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1633 "Extract BibTeX type in head." |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1634 ;; ignore @ |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1635 (buffer-substring-no-properties (1+ (match-beginning bibtex-type-in-head)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1636 (match-end bibtex-type-in-head))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1637 |
57815 | 1638 (defsubst bibtex-key-in-head (&optional empty) |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
1639 "Extract BibTeX key in head. Return optional arg EMPTY if key is empty." |
57815 | 1640 (or (match-string-no-properties bibtex-key-in-head) |
1641 empty)) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1642 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1643 (defun bibtex-parse-preamble () |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1644 "Parse BibTeX preamble. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1645 Point must be at beginning of preamble. Do not move point." |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1646 (let ((case-fold-search t)) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1647 (when (looking-at bibtex-preamble-prefix) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1648 (let ((start (match-beginning 0)) (pref-start (match-beginning 1)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1649 (bounds (save-excursion (goto-char (match-end 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1650 (bibtex-parse-string-postfix)))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1651 (if bounds (cons (list start pref-start) bounds)))))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1652 |
12700
b3a8ee2da96a
Add keywords and comments as per conventions.
Richard M. Stallman <rms@gnu.org>
parents:
12028
diff
changeset
|
1653 ;; Helper Functions |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
1654 |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1655 (defsubst bibtex-string= (str1 str2) |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
1656 "Return t if STR1 and STR2 are equal, ignoring case." |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1657 (eq t (compare-strings str1 0 nil str2 0 nil t))) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1658 |
18247
ae094c1a4334
(bibtex-delete-whitespace, bibtex-current-line)
Richard M. Stallman <rms@gnu.org>
parents:
18212
diff
changeset
|
1659 (defun bibtex-delete-whitespace () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1660 "Delete all whitespace starting at point." |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1661 (if (looking-at "[ \t\n]+") |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1662 (delete-region (point) (match-end 0)))) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1663 |
18247
ae094c1a4334
(bibtex-delete-whitespace, bibtex-current-line)
Richard M. Stallman <rms@gnu.org>
parents:
18212
diff
changeset
|
1664 (defun bibtex-current-line () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1665 "Compute line number of point regardless whether the buffer is narrowed." |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1666 (+ (count-lines 1 (point)) |
57815 | 1667 (if (bolp) 1 0))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1668 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1669 (defun bibtex-valid-entry (&optional empty-key) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1670 "Parse a valid BibTeX entry (maybe without key if EMPTY-KEY is t). |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1671 A valid entry is a syntactical correct one with type contained in |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1672 `bibtex-entry-field-alist'. Ignore @String and @Preamble entries. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1673 Return a cons pair with buffer positions of beginning and end of entry |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1674 if a valid entry is found, nil otherwise. Do not move point. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1675 After a call to this function `match-data' corresponds to the header |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1676 of the entry, see regexp `bibtex-entry-head'." |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1677 (let ((case-fold-search t) end) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1678 (if (looking-at (if empty-key bibtex-entry-maybe-empty-head |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1679 bibtex-entry-head)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1680 (save-excursion |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1681 (save-match-data |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1682 (goto-char (match-end 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1683 (let ((entry-closer |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1684 (if (save-excursion |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1685 (goto-char (match-end bibtex-type-in-head)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1686 (looking-at "[ \t]*(")) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1687 ",?[ \t\n]*)" ; entry opened with `(' |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1688 ",?[ \t\n]*}")) ; entry opened with `{' |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1689 bounds) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1690 (skip-chars-forward " \t\n") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1691 ;; loop over all BibTeX fields |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1692 (while (setq bounds (bibtex-parse-field)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1693 (goto-char (bibtex-end-of-field bounds))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1694 ;; This matches the infix* part. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1695 (if (looking-at entry-closer) (setq end (match-end 0))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1696 (if end (cons (match-beginning 0) end)))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1697 |
18247
ae094c1a4334
(bibtex-delete-whitespace, bibtex-current-line)
Richard M. Stallman <rms@gnu.org>
parents:
18212
diff
changeset
|
1698 (defun bibtex-skip-to-valid-entry (&optional backward) |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
1699 "Move point to beginning of the next valid BibTeX entry. |
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
1700 Do not move if we are already at beginning of a valid BibTeX entry. |
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
1701 With optional argument BACKWARD non-nil, move backward to |
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
1702 beginning of previous valid one. A valid entry is a syntactical correct one |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1703 with type contained in `bibtex-entry-field-alist' or, if |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1704 `bibtex-sort-ignore-string-entries' is nil, a syntactical correct string |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1705 entry. Return buffer position of beginning and end of entry if a valid |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1706 entry is found, nil otherwise." |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1707 (interactive "P") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1708 (let ((case-fold-search t) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1709 found bounds) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1710 (beginning-of-line) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1711 ;; Loop till we look at a valid entry. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1712 (while (not (or found (if backward (bobp) (eobp)))) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1713 (cond ((setq found (or (bibtex-valid-entry) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1714 (and (not bibtex-sort-ignore-string-entries) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1715 (setq bounds (bibtex-parse-string)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1716 (cons (bibtex-start-of-field bounds) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1717 (bibtex-end-of-string bounds)))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1718 (backward (re-search-backward "^[ \t]*@" nil 'move)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1719 (t (if (re-search-forward "\n\\([ \t]*@\\)" nil 'move) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1720 (goto-char (match-beginning 1)))))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1721 found)) |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
1722 |
18247
ae094c1a4334
(bibtex-delete-whitespace, bibtex-current-line)
Richard M. Stallman <rms@gnu.org>
parents:
18212
diff
changeset
|
1723 (defun bibtex-map-entries (fun) |
57815 | 1724 "Call FUN for each BibTeX entry in buffer (possibly narrowed). |
1725 FUN is called with three arguments, the key of the entry and the buffer | |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1726 positions of beginning and end of entry. Also, point is at beginning of |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1727 entry and `match-data' corresponds to the header of the entry, |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1728 see regexp `bibtex-entry-head'. If `bibtex-sort-ignore-string-entries' |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1729 is non-nil, FUN is not called for @String entries." |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1730 (let ((case-fold-search t) |
106426
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
1731 (end-marker (make-marker)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1732 found) |
106426
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
1733 ;; Use marker to keep track of the buffer position of the end of |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
1734 ;; a BibTeX entry as this position may change during reformatting. |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
1735 (set-marker-insertion-type end-marker t) |
57815 | 1736 (save-excursion |
1737 (goto-char (point-min)) | |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1738 (while (setq found (bibtex-skip-to-valid-entry)) |
106426
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
1739 (set-marker end-marker (cdr found)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1740 (looking-at bibtex-any-entry-maybe-empty-head) |
106426
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
1741 (funcall fun (bibtex-key-in-head "") (car found) end-marker) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
1742 (goto-char end-marker))))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1743 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1744 (defun bibtex-progress-message (&optional flag interval) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1745 "Echo a message about progress of current buffer. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1746 If FLAG is a string, the message is initialized (in this case a |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1747 value for INTERVAL may be given as well (if not this is set to 5)). |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1748 If FLAG is `done', the message is deinitialized. |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1749 If FLAG is nil, a message is echoed if point was incremented at least |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1750 `bibtex-progress-interval' percent since last message was echoed." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1751 (cond ((stringp flag) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1752 (setq bibtex-progress-lastmes flag |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1753 bibtex-progress-interval (or interval 5) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1754 bibtex-progress-lastperc 0)) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1755 ((eq flag 'done) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1756 (message "%s (done)" bibtex-progress-lastmes) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1757 (setq bibtex-progress-lastmes nil)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1758 (t |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1759 (let* ((size (- (point-max) (point-min))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1760 (perc (if (= size 0) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1761 100 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1762 (/ (* 100 (- (point) (point-min))) size)))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1763 (when (>= perc (+ bibtex-progress-lastperc |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1764 bibtex-progress-interval)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1765 (setq bibtex-progress-lastperc perc) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1766 (message "%s (%d%%)" bibtex-progress-lastmes perc)))))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1767 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1768 (defun bibtex-field-left-delimiter () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1769 "Return a string dependent on `bibtex-field-delimiters'." |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1770 (if (eq bibtex-field-delimiters 'braces) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1771 "{" |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1772 "\"")) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1773 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1774 (defun bibtex-field-right-delimiter () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1775 "Return a string dependent on `bibtex-field-delimiters'." |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1776 (if (eq bibtex-field-delimiters 'braces) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1777 "}" |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1778 "\"")) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1779 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1780 (defun bibtex-entry-left-delimiter () |
57815 | 1781 "Return a string dependent on `bibtex-entry-delimiters'." |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1782 (if (eq bibtex-entry-delimiters 'braces) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1783 "{" |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1784 "(")) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1785 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1786 (defun bibtex-entry-right-delimiter () |
57815 | 1787 "Return a string dependent on `bibtex-entry-delimiters'." |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1788 (if (eq bibtex-entry-delimiters 'braces) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1789 "}" |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1790 ")")) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1791 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1792 (defun bibtex-flash-head (prompt) |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
1793 "Flash at BibTeX entry head before point, if it exists." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1794 (let ((case-fold-search t) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1795 (pnt (point))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1796 (save-excursion |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1797 (bibtex-beginning-of-entry) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1798 (when (and (looking-at bibtex-any-entry-maybe-empty-head) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1799 (< (point) pnt)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1800 (goto-char (match-beginning bibtex-type-in-head)) |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
1801 (if (and (< 0 blink-matching-delay) |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
1802 (pos-visible-in-window-p (point))) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1803 (sit-for blink-matching-delay) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1804 (message "%s%s" prompt (buffer-substring-no-properties |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1805 (point) (match-end bibtex-key-in-head)))))))) |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
1806 |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1807 (defun bibtex-make-optional-field (field) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1808 "Make an optional field named FIELD in current BibTeX entry." |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1809 (if (consp field) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1810 (bibtex-make-field (cons (concat "OPT" (car field)) (cdr field))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1811 (bibtex-make-field (concat "OPT" field)))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1812 |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
1813 (defun bibtex-move-outside-of-entry () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1814 "Make sure point is outside of a BibTeX entry." |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
1815 (let ((orig-point (point))) |
26711
eac840d283b6
(bibtex-hs-forward-sexp): Added to support
Gerd Moellmann <gerd@gnu.org>
parents:
25444
diff
changeset
|
1816 (bibtex-end-of-entry) |
52891
a6806242012a
(bibtex-move-outside-of-entry):
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
1817 (when (< (point) orig-point) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1818 ;; We moved backward, so we weren't inside an entry to begin with. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1819 ;; Leave point at the beginning of a line, and preferably |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1820 ;; at the beginning of a paragraph. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1821 (goto-char orig-point) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1822 (beginning-of-line 1) |
52891
a6806242012a
(bibtex-move-outside-of-entry):
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
1823 (unless (= ?\n (char-before (1- (point)))) |
a6806242012a
(bibtex-move-outside-of-entry):
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
1824 (re-search-forward "^[ \t]*[@\n]" nil 'move) |
a6806242012a
(bibtex-move-outside-of-entry):
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
1825 (backward-char 1))) |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
1826 (skip-chars-forward " \t\n"))) |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
1827 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1828 (defun bibtex-beginning-of-first-entry () |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1829 "Go to beginning of line of first BibTeX entry in buffer. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1830 If `bibtex-sort-ignore-string-entries' is non-nil, @String entries |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1831 are ignored. Return point" |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
1832 (goto-char (point-min)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1833 (bibtex-skip-to-valid-entry) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1834 (point)) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
1835 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1836 (defun bibtex-enclosing-field (&optional comma noerr) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1837 "Search for BibTeX field enclosing point. |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1838 For `bibtex-mode''s internal algorithms, a field begins at the comma |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1839 following the preceding field. Usually, this is not what the user expects. |
106454
d218ddb3768e
(bibtex-enclosing-field): Exclude entry delimiter if it is at the end
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106426
diff
changeset
|
1840 Thus if COMMA is non-nil, the \"current field\" includes the terminating comma |
d218ddb3768e
(bibtex-enclosing-field): Exclude entry delimiter if it is at the end
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106426
diff
changeset
|
1841 as well as the entry delimiter if it appears on the same line. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1842 Unless NOERR is non-nil, signal an error if no enclosing field is found. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1843 On success return bounds, nil otherwise. Do not move point." |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1844 (save-excursion |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1845 (when comma |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1846 (end-of-line) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1847 (skip-chars-backward " \t") |
106454
d218ddb3768e
(bibtex-enclosing-field): Exclude entry delimiter if it is at the end
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106426
diff
changeset
|
1848 ;; Ignore entry delimiter and comma at end of line. |
d218ddb3768e
(bibtex-enclosing-field): Exclude entry delimiter if it is at the end
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106426
diff
changeset
|
1849 (if (memq (preceding-char) '(?} ?\))) (forward-char -1)) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1850 (if (= (preceding-char) ?,) (forward-char -1))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1851 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1852 (let ((bounds (bibtex-search-backward-field bibtex-field-name t))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1853 (cond ((and bounds |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1854 (<= (bibtex-start-of-field bounds) (point)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1855 (>= (bibtex-end-of-field bounds) (point))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1856 bounds) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1857 ((not noerr) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1858 (error "Can't find enclosing BibTeX field")))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1859 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1860 (defun bibtex-beginning-first-field (&optional beg) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1861 "Move point to beginning of first field. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1862 Optional arg BEG is beginning of entry." |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1863 (if beg (goto-char beg) (bibtex-beginning-of-entry)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1864 (looking-at bibtex-any-entry-maybe-empty-head) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1865 (goto-char (match-end 0))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1866 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1867 (defun bibtex-insert-kill (n &optional comma) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1868 "Reinsert the Nth stretch of killed BibTeX text (field or entry). |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1869 Optional arg COMMA is as in `bibtex-enclosing-field'." |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1870 (unless bibtex-last-kill-command (error "BibTeX kill ring is empty")) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1871 (let ((fun (lambda (kryp kr) ; adapted from `current-kill' |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1872 (car (set kryp (nthcdr (mod (- n (length (eval kryp))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1873 (length kr)) kr)))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1874 (if (eq bibtex-last-kill-command 'field) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1875 (progn |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1876 ;; insert past the current field |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1877 (goto-char (bibtex-end-of-field (bibtex-enclosing-field comma))) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1878 (push-mark) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1879 (bibtex-make-field (funcall fun 'bibtex-field-kill-ring-yank-pointer |
77206
389303f02afc
(bibtex-insert-kill): Pass non-nil NODELIM arg to bibtex-make-field.
Glenn Morris <rgm@gnu.org>
parents:
75356
diff
changeset
|
1880 bibtex-field-kill-ring) t nil t)) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1881 ;; insert past the current entry |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1882 (bibtex-skip-to-valid-entry) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
1883 (push-mark) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1884 (insert (funcall fun 'bibtex-entry-kill-ring-yank-pointer |
106426
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
1885 bibtex-entry-kill-ring)) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
1886 (unless (functionp bibtex-reference-keys) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
1887 ;; update `bibtex-reference-keys' |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
1888 (save-excursion |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
1889 (goto-char (mark t)) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
1890 (looking-at bibtex-any-entry-maybe-empty-head) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
1891 (let ((key (bibtex-key-in-head))) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
1892 (if key (push (cons key t) bibtex-reference-keys)))))))) |
27701
5e135f0faf1d
(bibtex-mode): Replaced manual splitting of path
Gerd Moellmann <gerd@gnu.org>
parents:
26711
diff
changeset
|
1893 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1894 (defun bibtex-format-entry () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1895 "Helper function for `bibtex-clean-entry'. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1896 Formats current entry according to variable `bibtex-entry-format'." |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
1897 ;; initialize `bibtex-field-braces-opt' if necessary |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
1898 (if (and bibtex-field-braces-alist (not bibtex-field-braces-opt)) |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
1899 (setq bibtex-field-braces-opt |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
1900 (bibtex-field-re-init bibtex-field-braces-alist 'braces))) |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
1901 ;; initialize `bibtex-field-strings-opt' if necessary |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
1902 (if (and bibtex-field-strings-alist (not bibtex-field-strings-opt)) |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
1903 (setq bibtex-field-strings-opt |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
1904 (bibtex-field-re-init bibtex-field-strings-alist 'strings))) |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
1905 |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1906 (let ((case-fold-search t) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1907 (format (if (eq bibtex-entry-format t) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1908 '(realign opts-or-alts required-fields numerical-fields |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1909 page-dashes whitespace inherit-booktitle |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1910 last-comma delimiters unify-case braces |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1911 strings) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1912 bibtex-entry-format)) |
101233
680e69b3c8ed
(bibtex-format-entry): For updating field delimiters, allow
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101166
diff
changeset
|
1913 (left-delim-re (regexp-quote (bibtex-field-left-delimiter))) |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1914 bounds crossref-key req-field-list default-field-list field-list |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1915 alt-fields error-field-name) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1916 (unwind-protect |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1917 ;; formatting (undone if error occurs) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1918 (atomic-change-group |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1919 (save-excursion |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1920 (save-restriction |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1921 (bibtex-narrow-to-entry) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1922 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1923 ;; There are more elegant high-level functions for several tasks |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1924 ;; done by `bibtex-format-entry'. However, they contain some |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1925 ;; redundancy compared with what we need to do anyway. |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1926 ;; So for speed-up we avoid using them. |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1927 ;; (`bibtex-format-entry' is called often by `bibtex-reformat'.) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1928 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1929 ;; identify entry type |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1930 (goto-char (point-min)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1931 (or (re-search-forward bibtex-entry-type nil t) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1932 (error "Not inside a BibTeX entry")) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1933 (let* ((beg-type (1+ (match-beginning 0))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1934 (end-type (match-end 0)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1935 (entry-list (assoc-string (buffer-substring-no-properties |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1936 beg-type end-type) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1937 bibtex-entry-field-alist t))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1938 |
92218
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
1939 ;; unify case of entry type |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1940 (when (memq 'unify-case format) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1941 (delete-region beg-type end-type) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1942 (insert (car entry-list))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1943 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1944 ;; update left entry delimiter |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1945 (when (memq 'delimiters format) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1946 (goto-char end-type) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1947 (skip-chars-forward " \t\n") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1948 (delete-char 1) |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1949 (insert (bibtex-entry-left-delimiter))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1950 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1951 ;; Do we have a crossref key? |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1952 (goto-char (point-min)) |
102868
cf16d0f54438
(bibtex-format-entry, bibtex-search-crossref): Allow OPT prefix for
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
102133
diff
changeset
|
1953 (if (setq bounds (bibtex-search-forward-field |
cf16d0f54438
(bibtex-format-entry, bibtex-search-crossref): Allow OPT prefix for
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
102133
diff
changeset
|
1954 "\\(OPT\\)?crossref")) |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1955 (let ((text (bibtex-text-in-field-bounds bounds t))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1956 (unless (equal "" text) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1957 (setq crossref-key text)))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1958 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1959 ;; list of required fields appropriate for an entry with |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1960 ;; or without crossref key. |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1961 (setq req-field-list (if (and crossref-key (nth 2 entry-list)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1962 (car (nth 2 entry-list)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1963 (car (nth 1 entry-list))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1964 ;; default list of fields that may appear in this entry |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1965 default-field-list (append (nth 0 (nth 1 entry-list)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1966 (nth 1 (nth 1 entry-list)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1967 bibtex-user-optional-fields))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1968 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1969 ;; process all fields |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1970 (bibtex-beginning-first-field (point-min)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1971 (while (setq bounds (bibtex-parse-field)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1972 (let* ((beg-field (copy-marker (bibtex-start-of-field bounds))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1973 (end-field (copy-marker (bibtex-end-of-field bounds) t)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1974 (beg-name (copy-marker (bibtex-start-of-name-in-field bounds))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1975 (end-name (copy-marker (bibtex-end-of-name-in-field bounds))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1976 (beg-text (copy-marker (bibtex-start-of-text-in-field bounds))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1977 (end-text (copy-marker (bibtex-end-of-text-in-field bounds) t)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1978 (opt-alt (string-match "OPT\\|ALT" |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1979 (buffer-substring-no-properties |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1980 beg-name (+ beg-name 3)))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1981 (field-name (buffer-substring-no-properties |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1982 (if opt-alt (+ beg-name 3) beg-name) end-name)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1983 (empty-field (equal "" (bibtex-text-in-field-bounds bounds t))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1984 deleted) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1985 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1986 ;; keep track of alternatives |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1987 (if (nth 3 (assoc-string field-name req-field-list t)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1988 (push field-name alt-fields)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1989 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1990 (if (memq 'opts-or-alts format) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1991 ;; delete empty optional and alternative fields |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1992 ;; (but keep empty required fields) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1993 (cond ((and empty-field |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1994 (or opt-alt |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1995 (let ((field (assoc-string |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1996 field-name req-field-list t))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1997 (or (not field) ; OPT field |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1998 (nth 3 field))))) ; ALT field |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
1999 (delete-region beg-field end-field) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2000 (setq deleted t)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2001 ;; otherwise nonempty field: delete "OPT" or "ALT" |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2002 (opt-alt |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2003 (goto-char beg-name) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2004 (delete-char 3)))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2005 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2006 (unless deleted |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2007 (push field-name field-list) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2008 |
106426
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
2009 ;; Remove whitespace at beginning and end of field. |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
2010 ;; We do not look at individual parts of the field |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
2011 ;; as {foo } # bar # { baz} is a fine field. |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
2012 (when (memq 'whitespace format) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
2013 (goto-char beg-text) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
2014 (if (looking-at "\\([{\"]\\)[ \t\n]+") |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
2015 (replace-match "\\1")) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
2016 (goto-char end-text) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
2017 (if (looking-back "[ \t\n]+\\([}\"]\\)" beg-text t) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
2018 (replace-match "\\1"))) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
2019 |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2020 ;; remove delimiters from purely numerical fields |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2021 (when (and (memq 'numerical-fields format) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2022 (progn (goto-char beg-text) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2023 (looking-at "\\(\"[0-9]+\"\\)\\|\\({[0-9]+}\\)"))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2024 (goto-char end-text) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2025 (delete-char -1) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2026 (goto-char beg-text) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2027 (delete-char 1)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2028 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2029 ;; update delimiters |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2030 (when (memq 'delimiters format) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2031 (goto-char beg-text) |
101233
680e69b3c8ed
(bibtex-format-entry): For updating field delimiters, allow
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101166
diff
changeset
|
2032 ;; simplified from `bibtex-parse-field-text', as we |
680e69b3c8ed
(bibtex-format-entry): For updating field delimiters, allow
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101166
diff
changeset
|
2033 ;; already checked that the field format is correct |
680e69b3c8ed
(bibtex-format-entry): For updating field delimiters, allow
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101166
diff
changeset
|
2034 (while (< (point) end-text) |
680e69b3c8ed
(bibtex-format-entry): For updating field delimiters, allow
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101166
diff
changeset
|
2035 (if (looking-at bibtex-field-const) |
680e69b3c8ed
(bibtex-format-entry): For updating field delimiters, allow
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101166
diff
changeset
|
2036 (goto-char (match-end 0)) |
680e69b3c8ed
(bibtex-format-entry): For updating field delimiters, allow
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101166
diff
changeset
|
2037 (let ((boundaries (bibtex-parse-field-string))) |
101248
372dac1d4b95
(bibtex-format-entry): Simplify previous change.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101236
diff
changeset
|
2038 (if (looking-at left-delim-re) |
372dac1d4b95
(bibtex-format-entry): Simplify previous change.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101236
diff
changeset
|
2039 (goto-char (cdr boundaries)) |
101233
680e69b3c8ed
(bibtex-format-entry): For updating field delimiters, allow
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101166
diff
changeset
|
2040 (delete-char 1) |
101248
372dac1d4b95
(bibtex-format-entry): Simplify previous change.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101236
diff
changeset
|
2041 (insert (bibtex-field-left-delimiter)) |
372dac1d4b95
(bibtex-format-entry): Simplify previous change.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101236
diff
changeset
|
2042 (goto-char (1- (cdr boundaries))) |
101233
680e69b3c8ed
(bibtex-format-entry): For updating field delimiters, allow
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101166
diff
changeset
|
2043 (delete-char 1) |
680e69b3c8ed
(bibtex-format-entry): For updating field delimiters, allow
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101166
diff
changeset
|
2044 (insert (bibtex-field-right-delimiter))))) |
680e69b3c8ed
(bibtex-format-entry): For updating field delimiters, allow
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101166
diff
changeset
|
2045 (if (looking-at "[ \t\n]*#[ \t\n]*") |
680e69b3c8ed
(bibtex-format-entry): For updating field delimiters, allow
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101166
diff
changeset
|
2046 (goto-char (match-end 0))))) |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2047 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2048 ;; update page dashes |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2049 (if (and (memq 'page-dashes format) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2050 (bibtex-string= field-name "pages") |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2051 (progn (goto-char beg-text) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2052 (looking-at |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2053 "\\([\"{][0-9]+\\)[ \t\n]*--?[ \t\n]*\\([0-9]+[\"}]\\)"))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2054 (replace-match "\\1-\\2")) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2055 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2056 ;; enclose field text by braces according to |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2057 ;; `bibtex-field-braces-alist'. |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2058 (let (case-fold-search temp) ; Case-sensitive search |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2059 (when (and (memq 'braces format) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2060 (setq temp (cdr (assoc-string field-name |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2061 bibtex-field-braces-opt t)))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2062 (goto-char beg-text) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2063 (while (re-search-forward temp end-text t) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2064 (let ((beg (match-beginning 0)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2065 (bounds (bibtex-find-text-internal nil t))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2066 (unless (or (nth 4 bounds) ; string constant |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2067 ;; match already surrounded by braces |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2068 ;; (braces are inside field delimiters) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2069 (and (< (point) (1- (nth 2 bounds))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2070 (< (1+ (nth 1 bounds)) beg) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2071 (looking-at "}") |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2072 (save-excursion (goto-char (1- beg)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2073 (looking-at "{")))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2074 (insert "}") |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2075 (goto-char beg) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2076 (insert "{"))))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2077 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2078 ;; replace field text by BibTeX string constants |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2079 ;; according to `bibtex-field-strings-alist'. |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2080 (when (and (memq 'strings format) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2081 (setq temp (cdr (assoc-string field-name |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2082 bibtex-field-strings-opt t)))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2083 (goto-char beg-text) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2084 (dolist (re temp) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2085 (while (re-search-forward (car re) end-text t) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2086 (let ((bounds (save-match-data |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2087 (bibtex-find-text-internal nil t)))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2088 (unless (nth 4 bounds) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2089 ;; if match not at right subfield boundary... |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2090 (if (< (match-end 0) (1- (nth 2 bounds))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2091 (insert " # " (bibtex-field-left-delimiter)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2092 (delete-char 1)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2093 (replace-match (cdr re)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2094 (goto-char (match-beginning 0)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2095 ;; if match not at left subfield boundary... |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2096 (if (< (1+ (nth 1 bounds)) (match-beginning 0)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2097 (insert (bibtex-field-right-delimiter) " # ") |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2098 (delete-backward-char 1)))))))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2099 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2100 ;; use book title of crossref'd entry |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2101 (if (and (memq 'inherit-booktitle format) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2102 empty-field |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2103 (bibtex-string= field-name "booktitle") |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2104 crossref-key) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2105 (let ((title (save-excursion |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2106 (save-restriction |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2107 (widen) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2108 (if (bibtex-search-entry crossref-key t) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2109 (bibtex-text-in-field "title")))))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2110 (when title |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2111 (setq empty-field nil) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2112 (goto-char (1+ beg-text)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2113 (insert title)))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2114 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2115 ;; if empty field is a required field, complain |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2116 (when (and empty-field |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2117 (memq 'required-fields format) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2118 (assoc-string field-name req-field-list t)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2119 (setq error-field-name field-name) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2120 (error "Mandatory field `%s' is empty" field-name)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2121 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2122 ;; unify case of field name |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2123 (if (memq 'unify-case format) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2124 (let ((fname (car (assoc-string field-name |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2125 default-field-list t)))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2126 (if fname |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2127 (progn |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2128 (delete-region beg-name end-name) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2129 (goto-char beg-name) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2130 (insert fname)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2131 ;; there are no rules we could follow |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2132 (downcase-region beg-name end-name)))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2133 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2134 ;; update point |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2135 (goto-char end-field)))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2136 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2137 ;; check whether all required fields are present |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2138 (if (memq 'required-fields format) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2139 (let ((found 0) alt-list) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2140 (dolist (fname req-field-list) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2141 (cond ((nth 3 fname) ; t if field has alternative flag |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2142 (push (car fname) alt-list) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2143 (if (member-ignore-case (car fname) field-list) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2144 (setq found (1+ found)))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2145 ((not (member-ignore-case (car fname) field-list)) |
92218
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
2146 ;; If we use the crossref field, a required field |
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
2147 ;; can have the OPT prefix. So if it was empty, |
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
2148 ;; we have deleted by now. Nonetheless we can |
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
2149 ;; move point on this empty field. |
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
2150 (setq error-field-name (car fname)) |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2151 (error "Mandatory field `%s' is missing" (car fname))))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2152 (if alt-list |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2153 (cond ((= found 0) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2154 (if alt-fields |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2155 (setq error-field-name (car (last alt-fields)))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2156 (error "Alternative mandatory field `%s' is missing" |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2157 alt-list)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2158 ((> found 1) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2159 (if alt-fields |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2160 (setq error-field-name (car (last alt-fields)))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2161 (error "Alternative fields `%s' are defined %s times" |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2162 alt-list found)))))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2163 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2164 ;; update comma after last field |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2165 (if (memq 'last-comma format) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2166 (cond ((and bibtex-comma-after-last-field |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2167 (not (looking-at ","))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2168 (insert ",")) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2169 ((and (not bibtex-comma-after-last-field) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2170 (looking-at ",")) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2171 (delete-char 1)))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2172 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2173 ;; update right entry delimiter |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2174 (if (looking-at ",") |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2175 (forward-char)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2176 (when (memq 'delimiters format) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2177 (skip-chars-forward " \t\n") |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2178 (delete-char 1) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2179 (insert (bibtex-entry-right-delimiter))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2180 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2181 ;; realign and fill entry |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2182 (if (memq 'realign format) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2183 (bibtex-fill-entry))))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2184 |
106837
855f55740303
Fix typos in comments.
Juanma Barranquero <lekktu@gmail.com>
parents:
106815
diff
changeset
|
2185 ;; Unwindform: move point to location where error occurred if possible |
92218
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
2186 (if error-field-name |
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
2187 (let (bounds) |
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
2188 (when (save-excursion |
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
2189 (bibtex-beginning-of-entry) |
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
2190 (setq bounds |
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
2191 (bibtex-search-forward-field |
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
2192 ;; If we use the crossref field, a required field |
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
2193 ;; can have the OPT prefix |
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
2194 (concat "\\(OPT\\|ALT\\)?" error-field-name) t))) |
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
2195 (goto-char (bibtex-start-of-text-in-field bounds)) |
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
2196 (bibtex-find-text))))))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2197 |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2198 (defun bibtex-field-re-init (regexp-alist type) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2199 "Calculate optimized value for bibtex-regexp-TYPE-opt. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2200 This value is based on bibtex-regexp-TYPE-alist. TYPE is 'braces or 'strings. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2201 Return optimized value to be used by `bibtex-format-entry'." |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2202 (setq regexp-alist |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2203 (mapcar (lambda (e) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2204 (list (car e) |
106426
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
2205 (replace-regexp-in-string " +" "[ \t\n]+" (nth 1 e)) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2206 (nth 2 e))) ; nil for 'braces'. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2207 regexp-alist)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2208 (let (opt-list) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2209 ;; Loop over field names |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2210 (dolist (field (delete-dups (apply 'append (mapcar 'car regexp-alist)))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2211 (let (rules) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2212 ;; Collect all matches we have for this field name |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2213 (dolist (e regexp-alist) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2214 (if (assoc-string field (car e) t) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2215 (push (cons (nth 1 e) (nth 2 e)) rules))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2216 (if (eq type 'braces) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2217 ;; concatenate all regexps to a single regexp |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2218 (setq rules (concat "\\(?:" (mapconcat 'car rules "\\|") "\\)"))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2219 ;; create list of replacement rules. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2220 (push (cons field rules) opt-list))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2221 opt-list)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2222 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2223 |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
2224 (defun bibtex-autokey-abbrev (string len) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2225 "Return an abbreviation of STRING with at least LEN characters. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2226 If LEN is positive the abbreviation is terminated only after a consonant |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
2227 or at the word end. If LEN is negative the abbreviation is strictly |
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
2228 enforced using abs (LEN) characters. If LEN is not a number, STRING |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2229 is returned unchanged." |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2230 (cond ((or (not (numberp len)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2231 (<= (length string) (abs len))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2232 string) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2233 ((equal len 0) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2234 "") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2235 ((< len 0) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2236 (substring string 0 (abs len))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2237 (t (let* ((case-fold-search t) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2238 (abort-char (string-match "[^aeiou]" string (1- len)))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2239 (if abort-char |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2240 (substring string 0 (1+ abort-char)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2241 string))))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2242 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2243 (defun bibtex-autokey-get-field (field &optional change-list) |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
2244 "Get content of BibTeX field FIELD. Return empty string if not found. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2245 Optional arg CHANGE-LIST is a list of substitution patterns that is |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
2246 applied to the content of FIELD. It is an alist with pairs |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2247 \(OLD-REGEXP . NEW-STRING\)." |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2248 (let* ((bibtex-expand-strings bibtex-autokey-expand-strings) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2249 (content (bibtex-text-in-field field bibtex-autokey-use-crossref)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2250 case-fold-search) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2251 (unless content (setq content "")) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2252 (dolist (pattern change-list content) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2253 (setq content (replace-regexp-in-string (car pattern) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2254 (cdr pattern) |
57815 | 2255 content t))))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2256 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2257 (defun bibtex-autokey-get-names () |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2258 "Get contents of the name field of the current entry. |
57815 | 2259 Do some modifications based on `bibtex-autokey-name-change-strings'. |
2260 Return the names as a concatenated string obeying `bibtex-autokey-names' | |
2261 and `bibtex-autokey-names-stretch'." | |
2262 (let ((names (bibtex-autokey-get-field "author\\|editor" | |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
2263 bibtex-autokey-name-change-strings))) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
2264 ;; Some entries do not have a name field. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2265 (if (string= "" names) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2266 names |
57815 | 2267 (let* ((case-fold-search t) |
2268 (name-list (mapcar 'bibtex-autokey-demangle-name | |
2269 (split-string names "[ \t\n]+and[ \t\n]+"))) | |
2270 additional-names) | |
2271 (unless (or (not (numberp bibtex-autokey-names)) | |
2272 (<= (length name-list) | |
2273 (+ bibtex-autokey-names | |
2274 bibtex-autokey-names-stretch))) | |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2275 ;; Take `bibtex-autokey-names' elements from beginning of name-list |
57815 | 2276 (setq name-list (nreverse (nthcdr (- (length name-list) |
2277 bibtex-autokey-names) | |
2278 (nreverse name-list))) | |
2279 additional-names bibtex-autokey-additional-names)) | |
2280 (concat (mapconcat 'identity name-list | |
2281 bibtex-autokey-name-separator) | |
2282 additional-names))))) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2283 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2284 (defun bibtex-autokey-demangle-name (fullname) |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
2285 "Get the last part from a well-formed FULLNAME and perform abbreviations." |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2286 (let* (case-fold-search |
61439
267229876c56
(bibtex-autokey-titleword-ignore, bibtex-reference-key)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61247
diff
changeset
|
2287 (name (cond ((string-match "\\([[:upper:]][^, ]*\\)[^,]*," fullname) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2288 ;; Name is of the form "von Last, First" or |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2289 ;; "von Last, Jr, First" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2290 ;; --> Take the first capital part before the comma |
51416
83476384bebd
(bibtex-member-of-regexp, bibtex-assoc-of-regexp, bibtex-format-entry)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51415
diff
changeset
|
2291 (match-string 1 fullname)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2292 ((string-match "\\([^, ]*\\)," fullname) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2293 ;; Strange name: we have a comma, but nothing capital |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2294 ;; So we accept even lowercase names |
51416
83476384bebd
(bibtex-member-of-regexp, bibtex-assoc-of-regexp, bibtex-format-entry)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51415
diff
changeset
|
2295 (match-string 1 fullname)) |
61439
267229876c56
(bibtex-autokey-titleword-ignore, bibtex-reference-key)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61247
diff
changeset
|
2296 ((string-match "\\(\\<[[:lower:]][^ ]* +\\)+\\([[:upper:]][^ ]*\\)" |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2297 fullname) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2298 ;; name is of the form "First von Last", "von Last", |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2299 ;; "First von von Last", or "d'Last" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2300 ;; --> take the first capital part after the "von" parts |
51416
83476384bebd
(bibtex-member-of-regexp, bibtex-assoc-of-regexp, bibtex-format-entry)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51415
diff
changeset
|
2301 (match-string 2 fullname)) |
83476384bebd
(bibtex-member-of-regexp, bibtex-assoc-of-regexp, bibtex-format-entry)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51415
diff
changeset
|
2302 ((string-match "\\([^ ]+\\) *\\'" fullname) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2303 ;; name is of the form "First Middle Last" or "Last" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2304 ;; --> take the last token |
51416
83476384bebd
(bibtex-member-of-regexp, bibtex-assoc-of-regexp, bibtex-format-entry)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51415
diff
changeset
|
2305 (match-string 1 fullname)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2306 (t (error "Name `%s' is incorrectly formed" fullname))))) |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
2307 (funcall bibtex-autokey-name-case-convert-function |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2308 (bibtex-autokey-abbrev name bibtex-autokey-name-length)))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2309 |
57815 | 2310 (defun bibtex-autokey-get-year () |
2311 "Return year field contents as a string obeying `bibtex-autokey-year-length'." | |
2312 (let ((yearfield (bibtex-autokey-get-field "year"))) | |
2313 (substring yearfield (max 0 (- (length yearfield) | |
2314 bibtex-autokey-year-length))))) | |
2315 | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2316 (defun bibtex-autokey-get-title () |
57815 | 2317 "Get title field contents up to a terminator. |
2318 Return the result as a string" | |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
2319 (let ((case-fold-search t) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
2320 (titlestring |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2321 (bibtex-autokey-get-field "title" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2322 bibtex-autokey-titleword-change-strings))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2323 ;; ignore everything past a terminator |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2324 (if (string-match bibtex-autokey-title-terminators titlestring) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2325 (setq titlestring (substring titlestring 0 (match-beginning 0)))) |
57815 | 2326 ;; gather words from titlestring into a list. Ignore |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2327 ;; specific words and use only a specific amount of words. |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2328 (let ((counter 0) |
102133
2eec802705ee
(bibtex-autokey-titleword-ignore): Fix regexp. bug#2385.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
102038
diff
changeset
|
2329 (ignore-re (concat "\\`\\(?:" |
2eec802705ee
(bibtex-autokey-titleword-ignore): Fix regexp. bug#2385.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
102038
diff
changeset
|
2330 (mapconcat 'identity |
2eec802705ee
(bibtex-autokey-titleword-ignore): Fix regexp. bug#2385.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
102038
diff
changeset
|
2331 bibtex-autokey-titleword-ignore "\\|") |
2eec802705ee
(bibtex-autokey-titleword-ignore): Fix regexp. bug#2385.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
102038
diff
changeset
|
2332 "\\)\\'")) |
57815 | 2333 titlewords titlewords-extra word) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2334 (while (and (or (not (numberp bibtex-autokey-titlewords)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2335 (< counter (+ bibtex-autokey-titlewords |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2336 bibtex-autokey-titlewords-stretch))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2337 (string-match "\\b\\w+" titlestring)) |
57815 | 2338 (setq word (match-string 0 titlestring) |
2339 titlestring (substring titlestring (match-end 0))) | |
2340 ;; Ignore words matched by one of the elements of | |
102133
2eec802705ee
(bibtex-autokey-titleword-ignore): Fix regexp. bug#2385.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
102038
diff
changeset
|
2341 ;; `bibtex-autokey-titleword-ignore'. Case is significant. |
2eec802705ee
(bibtex-autokey-titleword-ignore): Fix regexp. bug#2385.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
102038
diff
changeset
|
2342 (unless (let (case-fold-search) |
2eec802705ee
(bibtex-autokey-titleword-ignore): Fix regexp. bug#2385.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
102038
diff
changeset
|
2343 (string-match ignore-re word)) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2344 (setq counter (1+ counter)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2345 (if (or (not (numberp bibtex-autokey-titlewords)) |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
2346 (<= counter bibtex-autokey-titlewords)) |
57815 | 2347 (push word titlewords) |
2348 (push word titlewords-extra)))) | |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2349 ;; Obey `bibtex-autokey-titlewords-stretch': |
57815 | 2350 ;; If by now we have processed all words in titlestring, we include |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2351 ;; titlewords-extra in titlewords. Otherwise, we ignore titlewords-extra. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2352 (unless (string-match "\\b\\w+" titlestring) |
57815 | 2353 (setq titlewords (append titlewords-extra titlewords))) |
2354 (mapconcat 'bibtex-autokey-demangle-title (nreverse titlewords) | |
2355 bibtex-autokey-titleword-separator)))) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2356 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2357 (defun bibtex-autokey-demangle-title (titleword) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2358 "Do some abbreviations on TITLEWORD. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2359 The rules are defined in `bibtex-autokey-titleword-abbrevs' |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2360 and `bibtex-autokey-titleword-length'." |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
2361 (let ((case-fold-search t) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2362 (alist bibtex-autokey-titleword-abbrevs)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2363 (while (and alist |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2364 (not (string-match (concat "\\`\\(?:" (caar alist) "\\)\\'") |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2365 titleword))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2366 (setq alist (cdr alist))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2367 (if alist |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2368 (cdar alist) |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
2369 (funcall bibtex-autokey-titleword-case-convert-function |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2370 (bibtex-autokey-abbrev titleword bibtex-autokey-titleword-length))))) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
2371 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
2372 (defun bibtex-generate-autokey () |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2373 "Generate automatically a key for a BibTeX entry. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2374 Use the author/editor, the year and the title field. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2375 The algorithm works as follows. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2376 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2377 The name part: |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2378 1. Use the author or editor field to generate the name part of the key. |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2379 Expand BibTeX strings if `bibtex-autokey-expand-strings' is non-nil. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2380 2. Change the content of the name field according to |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2381 `bibtex-autokey-name-change-strings' (see there for further detail). |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2382 3. Use the first `bibtex-autokey-names' names in the name field. If there |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2383 are up to `bibtex-autokey-names' + `bibtex-autokey-names-stretch' names, |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2384 use all names. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2385 4. Use only the last names to form the name part. From these last names, |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2386 take at least `bibtex-autokey-name-length' characters (truncate only |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2387 after a consonant or at a word end). |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2388 5. Convert all last names using the function |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
2389 `bibtex-autokey-name-case-convert-function'. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2390 6. Build the name part of the key by concatenating all abbreviated last |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2391 names with the string `bibtex-autokey-name-separator' between any two. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2392 If there are more names in the name field than names used in the name |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2393 part, append the string `bibtex-autokey-additional-names'. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2394 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2395 The year part: |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2396 1. Build the year part of the key by truncating the content of the year |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2397 field to the rightmost `bibtex-autokey-year-length' digits (useful |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2398 values are 2 and 4). |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2399 2. If the year field (or any other field required to generate the key) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2400 is absent, but the entry has a valid crossref field and |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2401 `bibtex-autokey-use-crossref' is non-nil, use the field of the |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2402 crossreferenced entry instead. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2403 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2404 The title part |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2405 1. Change the content of the title field according to |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2406 `bibtex-autokey-titleword-change-strings' (see there for further detail). |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2407 2. Truncate the title before the first match of |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2408 `bibtex-autokey-title-terminators' and delete those words which appear |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2409 in `bibtex-autokey-titleword-ignore'. Build the title part using the |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2410 first `bibtex-autokey-titlewords' words from this truncated title. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2411 If the truncated title ends after up to `bibtex-autokey-titlewords' + |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2412 `bibtex-autokey-titlewords-stretch' words, use all words from the |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2413 truncated title. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2414 3. For every title word that appears in `bibtex-autokey-titleword-abbrevs' |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2415 use the corresponding abbreviation (see documentation of this variable |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2416 for further detail). |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2417 4. From every title word not generated by an abbreviation, take at least |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2418 `bibtex-autokey-titleword-length' characters (truncate only after |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2419 a consonant or at a word end). |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2420 5. Convert all title words using the function |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
2421 `bibtex-autokey-titleword-case-convert-function'. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2422 6. Build the title part by concatenating all abbreviated title words with |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2423 the string `bibtex-autokey-titleword-separator' between any two. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2424 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2425 Concatenate the key: |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2426 1. Concatenate `bibtex-autokey-prefix-string', the name part, the year |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2427 part and the title part. If the name part and the year part are both |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2428 non-empty insert `bibtex-autokey-name-year-separator' between the two. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2429 If the title part and the year (or name) part are non-empty, insert |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2430 `bibtex-autokey-year-title-separator' between the two. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2431 2. If `bibtex-autokey-before-presentation-function' is non-nil, it must be |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2432 a function taking one argument. Call this function with the generated |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2433 key as the argument. Use the return value of this function (a string) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2434 as the key. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2435 3. If `bibtex-autokey-edit-before-use' is non-nil, present the key in the |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2436 minibuffer to the user for editing. Insert the key given by the user." |
57815 | 2437 (let* ((names (bibtex-autokey-get-names)) |
2438 (year (bibtex-autokey-get-year)) | |
2439 (title (bibtex-autokey-get-title)) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2440 (autokey (concat bibtex-autokey-prefix-string |
57815 | 2441 names |
2442 (unless (or (equal names "") | |
2443 (equal year "")) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2444 bibtex-autokey-name-year-separator) |
57815 | 2445 year |
2446 (unless (or (and (equal names "") | |
2447 (equal year "")) | |
2448 (equal title "")) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2449 bibtex-autokey-year-title-separator) |
57815 | 2450 title))) |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
2451 (if bibtex-autokey-before-presentation-function |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2452 (funcall bibtex-autokey-before-presentation-function autokey) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2453 autokey))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2454 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2455 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2456 (defun bibtex-global-key-alist () |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2457 "Return global key alist based on `bibtex-files'." |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2458 (if bibtex-files |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2459 (apply 'append |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2460 (mapcar (lambda (buf) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2461 (with-current-buffer buf bibtex-reference-keys)) |
102038
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
2462 ;; include current buffer only if it uses `bibtex-mode' |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
2463 (bibtex-initialize (eq major-mode 'bibtex-mode)))) |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
2464 (if (eq major-mode 'bibtex-mode) |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
2465 bibtex-reference-keys))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2466 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2467 (defun bibtex-read-key (prompt &optional key global) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2468 "Read BibTeX key from minibuffer using PROMPT and default KEY. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2469 If optional arg GLOBAL is non-nil, completion is based on the keys in |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2470 `bibtex-reference-keys' of `bibtex-files'," |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2471 (let (completion-ignore-case) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2472 (completing-read prompt (if global (bibtex-global-key-alist) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2473 bibtex-reference-keys) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2474 nil nil key 'bibtex-key-history))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2475 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2476 (defun bibtex-read-string-key (&optional key) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2477 "Read BibTeX string key from minibuffer using default KEY." |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2478 (let ((completion-ignore-case t)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2479 (completing-read "String key: " bibtex-strings |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2480 nil nil key 'bibtex-key-history))) |
57815 | 2481 |
2482 (defun bibtex-parse-keys (&optional abortable verbose) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2483 "Set `bibtex-reference-keys' to the keys used in the whole buffer. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2484 Find both entry keys and crossref entries. If ABORTABLE is non-nil abort |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2485 on user input. If VERBOSE is non-nil give messages about progress. |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2486 Return alist of keys if parsing was completed, `aborted' otherwise. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2487 If `bibtex-parse-keys-fast' is non-nil, use fast but simplified algorithm |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2488 for parsing BibTeX keys. If parsing fails, try to set this variable to nil." |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2489 (if (eq major-mode 'bibtex-mode) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2490 (let (ref-keys crossref-keys) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2491 (save-excursion |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2492 (save-match-data |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2493 (if verbose |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2494 (bibtex-progress-message |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2495 (concat (buffer-name) ": parsing reference keys"))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2496 (catch 'userkey |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2497 (goto-char (point-min)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2498 (if bibtex-parse-keys-fast |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2499 (let ((case-fold-search t) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2500 (re (concat bibtex-entry-head "\\|" |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2501 ",[ \t\n]*crossref[ \t\n]*=[ \t\n]*" |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2502 "\\(\"[^\"]*\"\\|{[^}]*}\\)[ \t\n]*[,})]"))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2503 (while (re-search-forward re nil t) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2504 (if (and abortable (input-pending-p)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2505 ;; user has aborted by typing a key: return `aborted' |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2506 (throw 'userkey 'aborted)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2507 (cond ((match-end 3) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2508 ;; This is a crossref. |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2509 (let ((key (buffer-substring-no-properties |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2510 (1+ (match-beginning 3)) (1- (match-end 3))))) |
57815 | 2511 (unless (assoc key crossref-keys) |
2512 (push (list key) crossref-keys)))) | |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2513 ;; only keys of known entries |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2514 ((assoc-string (bibtex-type-in-head) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2515 bibtex-entry-field-alist t) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2516 ;; This is an entry. |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2517 (let ((key (bibtex-key-in-head))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2518 (unless (assoc key ref-keys) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2519 (push (cons key t) ref-keys))))))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2520 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2521 (let (;; ignore @String entries because they are handled |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2522 ;; separately by `bibtex-parse-strings' |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2523 (bibtex-sort-ignore-string-entries t) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2524 bounds) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2525 (bibtex-map-entries |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2526 (lambda (key beg end) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2527 (if (and abortable |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2528 (input-pending-p)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2529 ;; user has aborted by typing a key: return `aborted' |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2530 (throw 'userkey 'aborted)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2531 (if verbose (bibtex-progress-message)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2532 (unless (assoc key ref-keys) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2533 (push (cons key t) ref-keys)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2534 (if (and (setq bounds (bibtex-search-forward-field "crossref" end)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2535 (setq key (bibtex-text-in-field-bounds bounds t)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2536 (not (assoc key crossref-keys))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2537 (push (list key) crossref-keys)))))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2538 |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2539 (dolist (key crossref-keys) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2540 (unless (assoc (car key) ref-keys) (push key ref-keys))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2541 (if verbose |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2542 (bibtex-progress-message 'done)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2543 ;; successful operation --> return `bibtex-reference-keys' |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2544 (setq bibtex-reference-keys ref-keys))))))) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2545 |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2546 (defun bibtex-parse-strings (&optional add abortable) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2547 "Set `bibtex-strings' to the string definitions in the whole buffer. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2548 If ADD is non-nil add the new strings to `bibtex-strings' instead of |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
2549 simply resetting it. If ADD is an alist of strings, also add ADD to |
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
2550 `bibtex-strings'. If ABORTABLE is non-nil abort on user input. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2551 Return alist of strings if parsing was completed, `aborted' otherwise." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2552 (save-excursion |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2553 (save-match-data |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2554 (goto-char (point-min)) |
102038
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
2555 (let ((strings (if (and add (not (functionp bibtex-strings))) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2556 bibtex-strings)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2557 bounds key) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2558 (if (listp add) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2559 (dolist (string add) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
2560 (unless (assoc-string (car string) strings t) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2561 (push string strings)))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2562 (catch 'userkey |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2563 (while (setq bounds (bibtex-search-forward-string)) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2564 (if (and abortable |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2565 (input-pending-p)) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2566 ;; user has aborted by typing a key --> return `aborted' |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2567 (throw 'userkey 'aborted)) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2568 (setq key (bibtex-reference-key-in-string bounds)) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
2569 (unless (assoc-string key strings t) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
2570 (push (cons key (bibtex-text-in-string bounds t)) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
2571 strings)) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2572 (goto-char (bibtex-end-of-text-in-string bounds))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2573 ;; successful operation --> return `bibtex-strings' |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2574 (setq bibtex-strings strings)))))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2575 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2576 (defun bibtex-strings () |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2577 "Return `bibtex-strings'. Initialize this variable if necessary." |
102038
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
2578 (if (functionp bibtex-strings) |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
2579 (bibtex-parse-strings (bibtex-string-files-init)) |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
2580 bibtex-strings)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2581 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2582 (defun bibtex-string-files-init () |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2583 "Return initialization for `bibtex-strings'. |
57815 | 2584 Use `bibtex-predefined-strings' and BibTeX files `bibtex-string-files'." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2585 (save-match-data |
57815 | 2586 (let ((dirlist (split-string (or bibtex-string-file-path default-directory) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2587 ":+")) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2588 (case-fold-search) |
57815 | 2589 string-files fullfilename compl bounds found) |
2590 ;; collect absolute file names of valid string files | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2591 (dolist (filename bibtex-string-files) |
51416
83476384bebd
(bibtex-member-of-regexp, bibtex-assoc-of-regexp, bibtex-format-entry)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
51415
diff
changeset
|
2592 (unless (string-match "\\.bib\\'" filename) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2593 (setq filename (concat filename ".bib"))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2594 ;; test filenames |
57815 | 2595 (if (file-name-absolute-p filename) |
2596 (if (file-readable-p filename) | |
2597 (push filename string-files) | |
2598 (error "BibTeX strings file %s not found" filename)) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2599 (dolist (dir dirlist) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2600 (when (file-readable-p |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2601 (setq fullfilename (expand-file-name filename dir))) |
57815 | 2602 (push fullfilename string-files) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2603 (setq found t))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2604 (unless found |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2605 (error "File %s not in paths defined via bibtex-string-file-path" |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2606 filename)))) |
57815 | 2607 ;; parse string files |
2608 (dolist (filename string-files) | |
2609 (with-temp-buffer | |
2610 (insert-file-contents filename) | |
2611 (goto-char (point-min)) | |
2612 (while (setq bounds (bibtex-search-forward-string)) | |
2613 (push (cons (bibtex-reference-key-in-string bounds) | |
2614 (bibtex-text-in-string bounds t)) | |
2615 compl) | |
2616 (goto-char (bibtex-end-of-string bounds))))) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2617 (append bibtex-predefined-strings (nreverse compl))))) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
2618 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2619 (defun bibtex-parse-buffers-stealthily () |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
2620 "Parse buffer in the background during idle time. |
57815 | 2621 Called by `run-with-idle-timer'. Whenever Emacs has been idle |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2622 for `bibtex-parse-keys-timeout' seconds, parse all BibTeX buffers |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2623 which have been modified after last parsing. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2624 Parsing initializes `bibtex-reference-keys' and `bibtex-strings'." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2625 (save-excursion |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2626 (let ((buffers (buffer-list)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2627 (strings-init (bibtex-string-files-init))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2628 (while (and buffers (not (input-pending-p))) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2629 (set-buffer (car buffers)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2630 (if (and (eq major-mode 'bibtex-mode) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2631 (not (eq (buffer-modified-tick) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2632 bibtex-buffer-last-parsed-tick))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2633 (save-restriction |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2634 (widen) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2635 ;; Output no progress messages in `bibtex-parse-keys' |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2636 ;; because when in `y-or-n-p' that can hide the question. |
57815 | 2637 (if (and (listp (bibtex-parse-keys t)) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2638 ;; update `bibtex-strings' |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2639 (listp (bibtex-parse-strings strings-init t))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2640 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2641 ;; remember that parsing was successful |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2642 (setq bibtex-buffer-last-parsed-tick (buffer-modified-tick))))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2643 (setq buffers (cdr buffers)))))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2644 |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2645 ;;;###autoload |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2646 (defun bibtex-initialize (&optional current force select) |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2647 "(Re)Initialize BibTeX buffers. |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2648 Visit the BibTeX files defined by `bibtex-files' and return a list |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2649 of corresponding buffers. |
57815 | 2650 Initialize in these buffers `bibtex-reference-keys' if not yet set. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2651 List of BibTeX buffers includes current buffer if CURRENT is non-nil. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2652 If FORCE is non-nil, (re)initialize `bibtex-reference-keys' even if |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2653 already set. If SELECT is non-nil interactively select a BibTeX buffer. |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2654 When called interactively, FORCE is t, CURRENT is t if current buffer uses |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2655 `bibtex-mode', and SELECT is t if current buffer does not use `bibtex-mode'," |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2656 (interactive (list (eq major-mode 'bibtex-mode) t |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2657 (not (eq major-mode 'bibtex-mode)))) |
57815 | 2658 (let ((file-path (split-string (or bibtex-file-path default-directory) ":+")) |
2659 file-list dir-list buffer-list) | |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2660 ;; generate list of BibTeX files |
57815 | 2661 (dolist (file bibtex-files) |
2662 (cond ((eq file 'bibtex-file-path) | |
2663 (setq dir-list (append dir-list file-path))) | |
2664 ((file-accessible-directory-p file) | |
2665 (push file dir-list)) | |
2666 ((progn (unless (string-match "\\.bib\\'" file) | |
2667 (setq file (concat file ".bib"))) | |
2668 (file-name-absolute-p file)) | |
2669 (push file file-list)) | |
2670 (t | |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2671 (let (expanded-file-name found) |
57815 | 2672 (dolist (dir file-path) |
2673 (when (file-readable-p | |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2674 (setq expanded-file-name (expand-file-name file dir))) |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2675 (push expanded-file-name file-list) |
57815 | 2676 (setq found t))) |
2677 (unless found | |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2678 (error "File `%s' not in paths defined via bibtex-file-path" |
57815 | 2679 file)))))) |
2680 (dolist (file file-list) | |
2681 (unless (file-readable-p file) | |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2682 (error "BibTeX file `%s' not found" file))) |
57815 | 2683 ;; expand dir-list |
2684 (dolist (dir dir-list) | |
2685 (setq file-list | |
2686 (append file-list (directory-files dir t "\\.bib\\'" t)))) | |
2687 (delete-dups file-list) | |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2688 ;; visit files in FILE-LIST |
57815 | 2689 (dolist (file file-list) |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2690 (if (file-readable-p file) |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2691 (push (find-file-noselect file) buffer-list))) |
102038
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
2692 ;; Include current buffer iff we want it. |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
2693 ;; Exclude current buffer if it doesn't use `bibtex-mode'. |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
2694 ;; Thus calling `bibtex-initialize' gives meaningful results for |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
2695 ;; any current buffer. |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
2696 (unless (and current (eq major-mode 'bibtex-mode)) (setq current nil)) |
57815 | 2697 (cond ((and current (not (memq (current-buffer) buffer-list))) |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2698 (push (current-buffer) buffer-list)) |
57815 | 2699 ((and (not current) (memq (current-buffer) buffer-list)) |
2700 (setq buffer-list (delq (current-buffer) buffer-list)))) | |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2701 ;; parse keys |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2702 (dolist (buffer buffer-list) |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2703 (with-current-buffer buffer |
102038
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
2704 (if (or force (functionp bibtex-reference-keys)) |
106426
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
2705 (bibtex-parse-keys)) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
2706 (unless (functionp bibtex-strings) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
2707 (bibtex-parse-strings (bibtex-string-files-init))))) |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2708 ;; select BibTeX buffer |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2709 (if select |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2710 (if buffer-list |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2711 (switch-to-buffer |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2712 (completing-read "Switch to BibTeX buffer: " |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2713 (mapcar 'buffer-name buffer-list) |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2714 nil t |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2715 (if current (buffer-name (current-buffer))))) |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
2716 (message "No BibTeX buffers defined"))) |
57815 | 2717 buffer-list)) |
2718 | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2719 (defun bibtex-complete-internal (completions) |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
2720 "Complete word fragment before point to longest prefix of COMPLETIONS. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2721 COMPLETIONS is an alist of strings. If point is not after the part |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
2722 of a word, all strings are listed. Return completion." |
67933
679e4542aaa9
(bibtex-mode): Make completion-ignore-case
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67897
diff
changeset
|
2723 ;; Return value is used by cleanup functions. |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2724 ;; Code inspired by `lisp-complete-symbol'. |
106385
cd8b405d57c6
(bibtex-complete-internal): Use completion-in-region.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105813
diff
changeset
|
2725 (let ((beg (save-excursion |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2726 (re-search-backward "[ \t{\"]") |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2727 (forward-char) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2728 (point))) |
106385
cd8b405d57c6
(bibtex-complete-internal): Use completion-in-region.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105813
diff
changeset
|
2729 (end (point))) |
cd8b405d57c6
(bibtex-complete-internal): Use completion-in-region.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105813
diff
changeset
|
2730 (when (completion-in-region beg end completions) |
cd8b405d57c6
(bibtex-complete-internal): Use completion-in-region.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105813
diff
changeset
|
2731 (buffer-substring beg (point))))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2732 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2733 (defun bibtex-complete-string-cleanup (str compl) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2734 "Cleanup after inserting string STR. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2735 Remove enclosing field delimiters for STR. Display message with |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2736 expansion of STR using expansion list COMPL." |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2737 ;; point is at position inside field where completion was requested |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2738 (save-excursion |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2739 (let ((abbr (cdr (if (stringp str) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2740 (assoc-string str compl t))))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2741 (if abbr (message "Abbreviation for `%s'" abbr)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2742 (bibtex-remove-delimiters)))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2743 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2744 (defun bibtex-complete-crossref-cleanup (key) |
57815 | 2745 "Display summary message on entry KEY after completion of a crossref key. |
2746 Use `bibtex-summary-function' to generate summary." | |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
2747 (save-excursion |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2748 (if (and (stringp key) |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2749 (bibtex-search-entry key t)) |
62077
e233a73cbf79
(bibtex-summary): Use current BibTeX entry to avoid calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61439
diff
changeset
|
2750 (message "Ref: %s" (funcall bibtex-summary-function))))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2751 |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2752 (defun bibtex-copy-summary-as-kill (&optional arg) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2753 "Push summery of current BibTeX entry to kill ring. |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2754 Use `bibtex-summary-function' to generate summary. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2755 If prefix ARG is non-nil push BibTeX entry's URL to kill ring |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2756 that is generated by calling `bibtex-url'." |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2757 (interactive "P") |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2758 (if arg (let ((url (bibtex-url nil t))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2759 (if url (kill-new (message "%s" url)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2760 (message "No URL known"))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2761 (save-excursion |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2762 (bibtex-beginning-of-entry) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2763 (if (looking-at bibtex-entry-maybe-empty-head) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2764 (kill-new (message "%s" (funcall bibtex-summary-function))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2765 (error "No entry found"))))) |
62077
e233a73cbf79
(bibtex-summary): Use current BibTeX entry to avoid calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61439
diff
changeset
|
2766 |
e233a73cbf79
(bibtex-summary): Use current BibTeX entry to avoid calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61439
diff
changeset
|
2767 (defun bibtex-summary () |
e233a73cbf79
(bibtex-summary): Use current BibTeX entry to avoid calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61439
diff
changeset
|
2768 "Return summary of current BibTeX entry. |
57815 | 2769 Used as default value of `bibtex-summary-function'." |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2770 ;; It would be neat to make this function customizable. How? |
65776
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2771 (if (looking-at bibtex-entry-maybe-empty-head) |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
2772 (let* ((bibtex-autokey-name-case-convert-function 'identity) |
65776
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2773 (bibtex-autokey-name-length 'infty) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2774 (bibtex-autokey-names 1) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2775 (bibtex-autokey-names-stretch 0) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2776 (bibtex-autokey-name-separator " ") |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2777 (bibtex-autokey-additional-names " etal") |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2778 (names (bibtex-autokey-get-names)) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2779 (bibtex-autokey-year-length 4) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2780 (year (bibtex-autokey-get-year)) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2781 (bibtex-autokey-titlewords 5) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2782 (bibtex-autokey-titlewords-stretch 2) |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
2783 (bibtex-autokey-titleword-case-convert-function 'identity) |
65776
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2784 (bibtex-autokey-titleword-length 5) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2785 (bibtex-autokey-titleword-separator " ") |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2786 (title (bibtex-autokey-get-title)) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2787 (journal (bibtex-autokey-get-field |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2788 "journal" bibtex-autokey-transcriptions)) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2789 (volume (bibtex-autokey-get-field "volume")) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2790 (pages (bibtex-autokey-get-field "pages" '(("-.*\\'" . ""))))) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2791 (mapconcat (lambda (arg) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2792 (if (not (string= "" (cdr arg))) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2793 (concat (car arg) (cdr arg)))) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2794 `((" " . ,names) (" " . ,year) (": " . ,title) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2795 (", " . ,journal) (" " . ,volume) (":" . ,pages)) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2796 "")) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2797 (error "Entry not found"))) |
257 | 2798 |
14789
d68b71228abd
(bibtex-pop): New generic function which unifies the
Richard M. Stallman <rms@gnu.org>
parents:
14410
diff
changeset
|
2799 (defun bibtex-pop (arg direction) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2800 "Fill current field from the ARGth same field's text in DIRECTION. |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
2801 Generic function used by `bibtex-pop-previous' and `bibtex-pop-next'." |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2802 ;; parse current field |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2803 (let* ((bounds (bibtex-enclosing-field t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2804 (start-old-field (bibtex-start-of-field bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2805 (start-old-text (bibtex-start-of-text-in-field bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2806 (end-old-text (bibtex-end-of-text-in-field bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2807 (field-name (bibtex-name-in-field bounds t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2808 failure) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2809 (save-excursion |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2810 ;; if executed several times in a row, start each search where |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2811 ;; the last one was finished |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2812 (cond ((eq last-command 'bibtex-pop) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2813 (goto-char (if (eq direction 'previous) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2814 bibtex-pop-previous-search-point |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2815 bibtex-pop-next-search-point))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2816 ((eq direction 'previous) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2817 (bibtex-beginning-of-entry)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2818 (t (bibtex-end-of-entry))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2819 ;; Search for arg'th previous/next similar field |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2820 (while (and (not failure) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2821 (>= (setq arg (1- arg)) 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2822 ;; The search of BibTeX fields is not bounded by entry boundaries |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2823 (if (eq direction 'previous) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2824 (if (setq bounds (bibtex-search-backward-field field-name)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2825 (goto-char (bibtex-start-of-field bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2826 (setq failure t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2827 (if (setq bounds (bibtex-search-forward-field field-name)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2828 (goto-char (bibtex-end-of-field bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2829 (setq failure t)))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2830 (if failure |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2831 (error "No %s matching BibTeX field" |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2832 (if (eq direction 'previous) "previous" "next")) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2833 ;; Found a matching field. Remember boundaries. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2834 (let ((new-text (bibtex-text-in-field-bounds bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2835 (nbeg (copy-marker (bibtex-start-of-field bounds))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2836 (nend (copy-marker (bibtex-end-of-field bounds)))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2837 (bibtex-flash-head "From: ") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2838 ;; Go back to where we started, delete old text, and pop new. |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2839 (goto-char end-old-text) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2840 (delete-region start-old-text end-old-text) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2841 (if (= nbeg start-old-field) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2842 (insert (bibtex-field-left-delimiter) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2843 (bibtex-field-right-delimiter)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2844 (insert new-text)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2845 (setq bibtex-pop-previous-search-point (marker-position nbeg) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2846 bibtex-pop-next-search-point (marker-position nend)))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2847 (bibtex-find-text nil nil nil t) |
14789
d68b71228abd
(bibtex-pop): New generic function which unifies the
Richard M. Stallman <rms@gnu.org>
parents:
14410
diff
changeset
|
2848 (setq this-command 'bibtex-pop)) |
d68b71228abd
(bibtex-pop): New generic function which unifies the
Richard M. Stallman <rms@gnu.org>
parents:
14410
diff
changeset
|
2849 |
57815 | 2850 (defun bibtex-beginning-of-field () |
2851 "Move point backward to beginning of field. | |
2852 This function uses a simple, fast algorithm assuming that the field | |
2853 begins at the beginning of a line. We use this function for font-locking." | |
2854 (let ((field-reg (concat "^[ \t]*" bibtex-field-name "[ \t]*="))) | |
2855 (beginning-of-line) | |
2856 (unless (looking-at field-reg) | |
2857 (re-search-backward field-reg nil t)))) | |
2858 | |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2859 (defun bibtex-font-lock-url (bound &optional no-button) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2860 "Font-lock for URLs. BOUND limits the search. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2861 If NO-BUTTON is non-nil do not generate buttons." |
57815 | 2862 (let ((case-fold-search t) |
2863 (pnt (point)) | |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2864 name bounds start end found) |
57815 | 2865 (bibtex-beginning-of-field) |
2866 (while (and (not found) | |
66116
cff7c706ba17
(bibtex-font-lock-url): Catch when point past bound of search.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66114
diff
changeset
|
2867 (<= (point) bound) |
57815 | 2868 (prog1 (re-search-forward bibtex-font-lock-url-regexp bound t) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2869 (setq name (match-string-no-properties 1))) |
57815 | 2870 (setq bounds (bibtex-parse-field-text)) |
2871 (progn | |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2872 (setq start (car bounds) end (nth 1 bounds)) |
57815 | 2873 ;; Always ignore field delimiters |
2874 (if (memq (char-before end) '(?\} ?\")) | |
2875 (setq end (1- end))) | |
2876 (if (memq (char-after start) '(?\{ ?\")) | |
2877 (setq start (1+ start))) | |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2878 (if (< start pnt) (setq start (min pnt end))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2879 (<= start bound))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2880 (if (<= pnt start) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2881 (let ((lst bibtex-generate-url-list) url) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2882 (while (and (not found) (setq url (car (pop lst)))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2883 (goto-char start) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2884 (setq found (and (bibtex-string= name (car url)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2885 (re-search-forward (cdr url) end t)))))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2886 (unless found (goto-char end))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2887 (if (and found (not no-button)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2888 (bibtex-button (match-beginning 0) (match-end 0) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2889 'bibtex-url (match-beginning 0))) |
57815 | 2890 found)) |
2891 | |
2892 (defun bibtex-font-lock-crossref (bound) | |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2893 "Font-lock for crossref fields. BOUND limits the search." |
57815 | 2894 (let ((case-fold-search t) |
2895 (pnt (point)) | |
2896 (crossref-reg (concat "^[ \t]*crossref[ \t]*=[ \t\n]*" | |
2897 "\\(\"[^\"]*\"\\|{[^}]*}\\)[ \t\n]*[,})]")) | |
2898 start end found) | |
2899 (bibtex-beginning-of-field) | |
2900 (while (and (not found) | |
2901 (re-search-forward crossref-reg bound t)) | |
2902 (setq start (1+ (match-beginning 1)) | |
2903 end (1- (match-end 1)) | |
2904 found (>= start pnt))) | |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2905 (if found (bibtex-button start end 'bibtex-search-crossref |
57815 | 2906 (buffer-substring-no-properties start end) |
2907 start t)) | |
2908 found)) | |
2909 | |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2910 (defun bibtex-font-lock-cite (matcher bound) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2911 "Font-lock for cited keys. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2912 MATCHER identifies the cited key, see `bibtex-cite-matcher-alist'. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2913 BOUND limits the search." |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2914 (let (case-fold-search) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2915 (if (re-search-forward (car matcher) bound t) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2916 (let ((start (match-beginning (cdr matcher))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2917 (end (match-end (cdr matcher)))) |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2918 (bibtex-button start end 'bibtex-search-crossref |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2919 (buffer-substring-no-properties start end) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2920 start t t) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2921 t)))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
2922 |
57815 | 2923 (defun bibtex-button-action (button) |
2924 "Call BUTTON's BibTeX function." | |
2925 (apply (button-get button 'bibtex-function) | |
2926 (button-get button 'bibtex-args))) | |
2927 | |
2928 (define-button-type 'bibtex-url | |
2929 'action 'bibtex-button-action | |
2930 'bibtex-function 'bibtex-url | |
2931 'help-echo (purecopy "mouse-2, RET: follow URL")) | |
2932 | |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2933 (define-button-type 'bibtex-search-crossref |
57815 | 2934 'action 'bibtex-button-action |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
2935 'bibtex-function 'bibtex-search-crossref |
57815 | 2936 'help-echo (purecopy "mouse-2, RET: follow crossref")) |
2937 | |
2938 (defun bibtex-button (beg end type &rest args) | |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2939 "Make a BibTeX button from BEG to END of type TYPE in the current buffer." |
57815 | 2940 (make-text-button beg end 'type type 'bibtex-args args)) |
2941 | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2942 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2943 ;; Interactive Functions: |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2944 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2945 ;;;###autoload |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2946 (defun bibtex-mode () |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2947 "Major mode for editing BibTeX files. |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2948 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2949 General information on working with BibTeX mode: |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2950 |
101233
680e69b3c8ed
(bibtex-format-entry): For updating field delimiters, allow
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101166
diff
changeset
|
2951 Use commands such as \\<bibtex-mode-map>\\[bibtex-Book] to get a template for a specific entry. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2952 Then fill in all desired fields using \\[bibtex-next-field] to jump from field |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2953 to field. After having filled in all desired fields in the entry, clean the |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2954 new entry with the command \\[bibtex-clean-entry]. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2955 |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2956 Some features of BibTeX mode are available only by setting the variable |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
2957 `bibtex-maintain-sorted-entries' to non-nil. However, then BibTeX mode |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
2958 works only with buffers containing valid (syntactical correct) and sorted |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
2959 entries. This is usually the case, if you have created a buffer completely |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
2960 with BibTeX mode and finished every new entry with \\[bibtex-clean-entry]. |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2961 |
62077
e233a73cbf79
(bibtex-summary): Use current BibTeX entry to avoid calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61439
diff
changeset
|
2962 For third party BibTeX files, call the command \\[bibtex-convert-alien] |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2963 to fully take advantage of all features of BibTeX mode. |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2964 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2965 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2966 Special information: |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2967 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
2968 A command such as \\[bibtex-Book] outlines the fields for a BibTeX book entry. |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2969 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2970 The names of optional fields start with the string OPT, and are thus ignored |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2971 by BibTeX. The names of alternative fields from which only one is required |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2972 start with the string ALT. The OPT or ALT string may be removed from |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2973 the name of a field with \\[bibtex-remove-OPT-or-ALT]. |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2974 \\[bibtex-make-field] inserts a new field after the current one. |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2975 \\[bibtex-kill-field] kills the current field entirely. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2976 \\[bibtex-yank] yanks the last recently killed field after the current field. |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2977 \\[bibtex-remove-delimiters] removes the double-quotes or braces around the text of the current field. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2978 \\[bibtex-empty-field] replaces the text of the current field with the default \"\" or {}. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2979 \\[bibtex-find-text] moves point to the end of the current field. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2980 \\[bibtex-complete] completes word fragment before point according to context. |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2981 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2982 The command \\[bibtex-clean-entry] cleans the current entry, i.e. it removes OPT/ALT |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2983 from the names of all non-empty optional or alternative fields, checks that |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2984 no required fields are empty, and does some formatting dependent on the value |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2985 of `bibtex-entry-format'. Furthermore, it can automatically generate a key |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2986 for the BibTeX entry, see `bibtex-generate-autokey'. |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
2987 Note: some functions in BibTeX mode depend on entries being in a special |
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
2988 format (all fields beginning on separate lines), so it is usually a bad |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2989 idea to remove `realign' from `bibtex-entry-format'. |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2990 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2991 BibTeX mode supports Imenu and hideshow minor mode (`hs-minor-mode'). |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2992 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2993 ---------------------------------------------------------- |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2994 Entry to BibTeX mode calls the value of `bibtex-mode-hook' |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2995 if that value is non-nil. |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2996 |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
2997 \\{bibtex-mode-map}" |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2998 (interactive) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2999 (kill-all-local-variables) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3000 (use-local-map bibtex-mode-map) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3001 (setq major-mode 'bibtex-mode) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3002 (setq mode-name "BibTeX") |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3003 (set-syntax-table bibtex-mode-syntax-table) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3004 (make-local-variable 'bibtex-buffer-last-parsed-tick) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3005 ;; Install stealthy parse function if not already installed |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3006 (unless bibtex-parse-idle-timer |
57815 | 3007 (setq bibtex-parse-idle-timer (run-with-idle-timer |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3008 bibtex-parse-keys-timeout t |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3009 'bibtex-parse-buffers-stealthily))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3010 (set (make-local-variable 'paragraph-start) "[ \f\n\t]*$") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3011 (set (make-local-variable 'comment-start) bibtex-comment-start) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3012 (set (make-local-variable 'comment-start-skip) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3013 (concat (regexp-quote bibtex-comment-start) "\\>[ \t]*")) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3014 (set (make-local-variable 'comment-column) 0) |
61439
267229876c56
(bibtex-autokey-titleword-ignore, bibtex-reference-key)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61247
diff
changeset
|
3015 (set (make-local-variable 'defun-prompt-regexp) "^[ \t]*@[[:alnum:]]+[ \t]*") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3016 (set (make-local-variable 'outline-regexp) "[ \t]*@") |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3017 (set (make-local-variable 'fill-paragraph-function) 'bibtex-fill-field) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3018 (set (make-local-variable 'fill-prefix) (make-string (+ bibtex-entry-offset |
57815 | 3019 bibtex-contline-indentation) |
64054
23a07b9b6687
(bibtex, bibtex-autokey): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents:
63470
diff
changeset
|
3020 ?\s)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3021 (set (make-local-variable 'font-lock-defaults) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3022 '(bibtex-font-lock-keywords |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3023 nil t ((?$ . "\"") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3024 ;; Mathematical expressions should be fontified as strings |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3025 (?\" . ".") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3026 ;; Quotes are field delimiters and quote-delimited |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3027 ;; entries should be fontified in the same way as |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3028 ;; brace-delimited ones |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3029 ) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3030 nil |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3031 (font-lock-syntactic-keywords . bibtex-font-lock-syntactic-keywords) |
57815 | 3032 (font-lock-extra-managed-props . (category)) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3033 (font-lock-mark-block-function |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3034 . (lambda () |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
3035 (set-mark (bibtex-end-of-entry)) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3036 (bibtex-beginning-of-entry))))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3037 (setq imenu-generic-expression |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3038 (list (list nil bibtex-entry-head bibtex-key-in-head)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3039 imenu-case-fold-search t) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3040 (make-local-variable 'choose-completion-string-functions) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3041 ;; XEmacs needs `easy-menu-add', Emacs does not care |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
3042 (easy-menu-add bibtex-edit-menu) |
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
3043 (easy-menu-add bibtex-entry-menu) |
61439
267229876c56
(bibtex-autokey-titleword-ignore, bibtex-reference-key)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61247
diff
changeset
|
3044 (run-mode-hooks 'bibtex-mode-hook)) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3045 |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3046 (defun bibtex-field-list (entry-type) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3047 "Return list of allowed fields for entry ENTRY-TYPE. |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3048 More specifically, the return value is a cons pair (REQUIRED . OPTIONAL), |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3049 where REQUIRED and OPTIONAL are lists of the required and optional field |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3050 names for ENTRY-TYPE according to `bibtex-entry-field-alist', |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3051 `bibtex-include-OPTkey', `bibtex-include-OPTcrossref', |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3052 and `bibtex-user-optional-fields'." |
55730
b4eeb441c089
Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents:
55348
diff
changeset
|
3053 (let ((e (assoc-string entry-type bibtex-entry-field-alist t)) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3054 required optional) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3055 (unless e |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3056 (error "Fields for BibTeX entry type %s not defined" entry-type)) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3057 (if (and (member-ignore-case entry-type bibtex-include-OPTcrossref) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3058 (nth 2 e)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3059 (setq required (nth 0 (nth 2 e)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3060 optional (nth 1 (nth 2 e))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3061 (setq required (nth 0 (nth 1 e)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3062 optional (nth 1 (nth 1 e)))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3063 (if bibtex-include-OPTkey |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3064 (push (list "key" |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3065 "Used for reference key creation if author and editor fields are missing" |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3066 (if (or (stringp bibtex-include-OPTkey) |
77217
f00e4356c78d
(bibtex-field-list): Use functionp.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77206
diff
changeset
|
3067 (functionp bibtex-include-OPTkey)) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3068 bibtex-include-OPTkey)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3069 optional)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3070 (if (member-ignore-case entry-type bibtex-include-OPTcrossref) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3071 (push '("crossref" "Reference key of the cross-referenced entry") |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3072 optional)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3073 (setq optional (append optional bibtex-user-optional-fields)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3074 (cons required optional))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3075 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3076 (defun bibtex-entry (entry-type) |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
3077 "Insert a new BibTeX entry of type ENTRY-TYPE. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3078 After insertion call the value of `bibtex-add-entry-hook' if that value |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3079 is non-nil." |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3080 (interactive |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3081 (let ((completion-ignore-case t)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3082 (list (completing-read "Entry Type: " bibtex-entry-field-alist |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3083 nil t nil 'bibtex-entry-type-history)))) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3084 (let ((key (if bibtex-maintain-sorted-entries |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3085 (bibtex-read-key (format "%s key: " entry-type)))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3086 (field-list (bibtex-field-list entry-type))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3087 (unless (bibtex-prepare-new-entry (list key nil entry-type)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3088 (error "Entry with key `%s' already exists" key)) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3089 (indent-to-column bibtex-entry-offset) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3090 (insert "@" entry-type (bibtex-entry-left-delimiter)) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3091 (if key (insert key)) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3092 (save-excursion |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
3093 (mapc 'bibtex-make-field (car field-list)) |
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
3094 (mapc 'bibtex-make-optional-field (cdr field-list)) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3095 (if bibtex-comma-after-last-field |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3096 (insert ",")) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3097 (insert "\n") |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3098 (indent-to-column bibtex-entry-offset) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3099 (insert (bibtex-entry-right-delimiter) "\n\n")) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3100 (bibtex-next-field t) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3101 (if (member-ignore-case entry-type bibtex-autofill-types) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3102 (bibtex-autofill-entry)) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3103 (run-hooks 'bibtex-add-entry-hook))) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3104 |
69887
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3105 (defun bibtex-entry-update (&optional entry-type) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3106 "Update an existing BibTeX entry. |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3107 In the BibTeX entry at point, make new fields for those items that may occur |
69887
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3108 according to `bibtex-field-list', but are not yet present. |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3109 Also, add field delimiters to numerical fields if they are not present. |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3110 If ENTRY-TYPE is non-nil, change first the entry type to ENTRY-TYPE. |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3111 When called interactively with a prefix arg, query for a value of ENTRY-TYPE." |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3112 (interactive |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3113 (list (if current-prefix-arg |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3114 (let ((completion-ignore-case t)) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3115 (completing-read "New entry type: " bibtex-entry-field-alist |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3116 nil t nil 'bibtex-entry-type-history))))) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3117 (save-excursion |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3118 (bibtex-beginning-of-entry) |
69887
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3119 (when (looking-at bibtex-entry-maybe-empty-head) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3120 (goto-char (match-end 0)) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3121 (if entry-type |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3122 (save-excursion |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3123 (replace-match (concat "@" entry-type) nil nil nil 1)) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3124 (setq entry-type (bibtex-type-in-head))) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3125 (let* ((field-list (bibtex-field-list entry-type)) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3126 (required (copy-tree (car field-list))) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3127 (optional (copy-tree (cdr field-list))) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3128 bounds) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3129 (while (setq bounds (bibtex-parse-field)) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3130 (let ((fname (bibtex-name-in-field bounds t)) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3131 (end (copy-marker (bibtex-end-of-field bounds) t))) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3132 (setq required (delete (assoc-string fname required t) required) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3133 optional (delete (assoc-string fname optional t) optional)) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3134 (when (string-match "\\`[0-9]+\\'" |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3135 (bibtex-text-in-field-bounds bounds)) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3136 (goto-char (bibtex-end-of-text-in-field bounds)) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3137 (insert (bibtex-field-right-delimiter)) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3138 (goto-char (bibtex-start-of-text-in-field bounds)) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3139 (insert (bibtex-field-left-delimiter))) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3140 (goto-char end))) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3141 (skip-chars-backward " \t\n") |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3142 (dolist (field required) (bibtex-make-field field)) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
3143 (dolist (field optional) (bibtex-make-optional-field field)))))) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3144 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3145 (defun bibtex-parse-entry (&optional content) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3146 "Parse entry at point, return an alist. |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3147 The alist elements have the form (FIELD . TEXT), where FIELD can also be |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
3148 the special strings \"=type=\" and \"=key=\". For the FIELD \"=key=\" |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
3149 TEXT may be nil. Remove \"OPT\" and \"ALT\" from FIELD. |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3150 Move point to the end of the last field. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3151 If optional arg CONTENT is non-nil extract content of text fields." |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3152 (let (alist bounds) |
55880
1b2cb608f18e
(bibtex-format-entry): Fix regexps.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55730
diff
changeset
|
3153 (when (looking-at bibtex-entry-maybe-empty-head) |
57815 | 3154 (push (cons "=type=" (bibtex-type-in-head)) alist) |
3155 (push (cons "=key=" (bibtex-key-in-head)) alist) | |
55880
1b2cb608f18e
(bibtex-format-entry): Fix regexps.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55730
diff
changeset
|
3156 (goto-char (match-end 0)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3157 (while (setq bounds (bibtex-parse-field)) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
3158 (push (cons (bibtex-name-in-field bounds t) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3159 (bibtex-text-in-field-bounds bounds content)) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3160 alist) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3161 (goto-char (bibtex-end-of-field bounds)))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3162 alist)) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3163 |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3164 (defun bibtex-autofill-entry () |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3165 "Try to fill fields of current BibTeX entry based on neighboring entries. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3166 The current entry must have a key. Determine the neighboring entry |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3167 \(previouse or next\) whose key is more similar to the key of the current |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3168 entry. For all empty fields of the current entry insert the corresponding |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3169 field contents of the neighboring entry. Finally try to update the text |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3170 based on the difference between the keys of the neighboring and the current |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3171 entry (for example, the year parts of the keys)." |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3172 (interactive) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3173 (bibtex-beginning-of-entry) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3174 (when (looking-at bibtex-entry-head) |
57815 | 3175 (let ((type (bibtex-type-in-head)) |
3176 (key (bibtex-key-in-head)) | |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3177 (key-end (match-end bibtex-key-in-head)) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3178 (case-fold-search t) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3179 (bibtex-sort-ignore-string-entries t) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3180 tmp other-key other bounds) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3181 ;; The fields we want to change start right after the key. |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3182 (goto-char key-end) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3183 ;; First see whether to use the previous or the next entry |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3184 ;; for "inspiration". |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3185 (save-excursion |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3186 (goto-char (1- (match-beginning 0))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3187 (bibtex-beginning-of-entry) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3188 (if (and (looking-at bibtex-entry-head) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3189 (bibtex-string= type (bibtex-type-in-head)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3190 ;; In case we found ourselves :-( |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3191 (not (equal key (setq tmp (bibtex-key-in-head))))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3192 (setq other-key tmp |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3193 other (point)))) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3194 (save-excursion |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3195 (bibtex-end-of-entry) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3196 (bibtex-skip-to-valid-entry) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3197 (if (and (looking-at bibtex-entry-head) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3198 (bibtex-string= type (bibtex-type-in-head)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3199 ;; In case we found ourselves :-( |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3200 (not (equal key (setq tmp (bibtex-key-in-head)))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3201 (or (not other-key) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3202 ;; Check which is the best match. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3203 (< (length (try-completion "" (list key other-key))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3204 (length (try-completion "" (list key tmp)))))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3205 (setq other-key tmp |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3206 other (point)))) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3207 ;; Then fill the new entry's fields with the chosen other entry. |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3208 (when other |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3209 (setq other (save-excursion (goto-char other) (bibtex-parse-entry))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3210 (setq key-end (point)) ;In case parse-entry changed the buffer. |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3211 (while (setq bounds (bibtex-parse-field)) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
3212 (let ((text (assoc-string (bibtex-name-in-field bounds t) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
3213 other t))) |
59733
96d73eb02751
(bibtex-format-entry): Use `bibtex-empty-field-re' only on the text of
Lute Kamstra <lute@gnu.org>
parents:
58772
diff
changeset
|
3214 (if (not (and text |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3215 (equal "" (bibtex-text-in-field-bounds bounds t)))) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3216 (goto-char (bibtex-end-of-field bounds)) |
59733
96d73eb02751
(bibtex-format-entry): Use `bibtex-empty-field-re' only on the text of
Lute Kamstra <lute@gnu.org>
parents:
58772
diff
changeset
|
3217 (goto-char (bibtex-start-of-text-in-field bounds)) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3218 (delete-region (point) (bibtex-end-of-text-in-field bounds)) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3219 (insert (cdr text))))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3220 ;; Finally try to update the text based on the difference between |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3221 ;; the two keys. |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3222 (let* ((prefix (try-completion "" (list key other-key))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3223 ;; If the keys are foo91 and foo92, don't replace 1 for 2 |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3224 ;; but 91 for 92 instead. |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3225 (_ (if (string-match "[0-9]+\\'" prefix) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3226 (setq prefix (substring prefix 0 (match-beginning 0))))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3227 (suffix (substring key (length prefix))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3228 (other-suffix (substring other-key (length prefix)))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3229 (while (re-search-backward (regexp-quote other-suffix) key-end 'move) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3230 (replace-match suffix))))))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3231 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3232 (defun bibtex-print-help-message (&optional field comma) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3233 "Print helpful information about current FIELD in current BibTeX entry. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3234 Optional arg COMMA is as in `bibtex-enclosing-field'. It is t for |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3235 interactive calls." |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3236 (interactive (list nil t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3237 (unless field (setq field (car (bibtex-find-text-internal nil nil comma)))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3238 (if (string-match "@" field) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3239 (cond ((bibtex-string= field "@string") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3240 (message "String definition")) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3241 ((bibtex-string= field "@preamble") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3242 (message "Preamble definition")) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3243 (t (message "Entry key"))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3244 (let* ((case-fold-search t) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3245 (type (save-excursion |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3246 (bibtex-beginning-of-entry) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3247 (looking-at bibtex-entry-maybe-empty-head) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3248 (bibtex-type-in-head))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3249 (field-list (bibtex-field-list type)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3250 (comment (assoc-string field (append (car field-list) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3251 (cdr field-list)) t))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3252 (if comment (message "%s" (nth 1 comment)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3253 (message "No comment available"))))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3254 |
77206
389303f02afc
(bibtex-insert-kill): Pass non-nil NODELIM arg to bibtex-make-field.
Glenn Morris <rgm@gnu.org>
parents:
75356
diff
changeset
|
3255 (defun bibtex-make-field (field &optional move interactive nodelim) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3256 "Make a field named FIELD in current BibTeX entry. |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3257 FIELD is either a string or a list of the form |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3258 \(FIELD-NAME COMMENT-STRING INIT ALTERNATIVE-FLAG) as in |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
3259 `bibtex-entry-field-alist'. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3260 If MOVE is non-nil, move point past the present field before making |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3261 the new field. If INTERACTIVE is non-nil, move point to the end of |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3262 the new field. Otherwise move point past the new field. |
77206
389303f02afc
(bibtex-insert-kill): Pass non-nil NODELIM arg to bibtex-make-field.
Glenn Morris <rgm@gnu.org>
parents:
75356
diff
changeset
|
3263 MOVE and INTERACTIVE are t when called interactively. |
77217
f00e4356c78d
(bibtex-field-list): Use functionp.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77206
diff
changeset
|
3264 INIT is surrounded by field delimiters, unless NODELIM is non-nil." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3265 (interactive |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3266 (list (let ((completion-ignore-case t) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3267 (field-list (bibtex-field-list |
57815 | 3268 (save-excursion |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3269 (bibtex-beginning-of-entry) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3270 (looking-at bibtex-any-entry-maybe-empty-head) |
57815 | 3271 (bibtex-type-in-head))))) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3272 (completing-read "BibTeX field name: " |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3273 (append (car field-list) (cdr field-list)) |
57819
cc6cd5062afb
(bibtex-make-field): Don't use interactive-p.
Richard M. Stallman <rms@gnu.org>
parents:
57815
diff
changeset
|
3274 nil nil nil bibtex-field-history)) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3275 t t)) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3276 (unless (consp field) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3277 (setq field (list field))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3278 (when move |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3279 (bibtex-find-text) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3280 (if (looking-at "[}\"]") |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3281 (forward-char))) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3282 (insert ",\n") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3283 (indent-to-column (+ bibtex-entry-offset bibtex-field-indentation)) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3284 (if (nth 3 field) (insert "ALT")) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3285 (insert (car field) " ") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3286 (if bibtex-align-at-equal-sign |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3287 (indent-to-column (+ bibtex-entry-offset |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3288 (- bibtex-text-indentation 2)))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3289 (insert "= ") |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
3290 (unless bibtex-align-at-equal-sign |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
3291 (indent-to-column (+ bibtex-entry-offset |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
3292 bibtex-text-indentation))) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3293 (let ((init (nth 2 field))) |
77217
f00e4356c78d
(bibtex-field-list): Use functionp.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77206
diff
changeset
|
3294 (if (not init) (setq init "") |
f00e4356c78d
(bibtex-field-list): Use functionp.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77206
diff
changeset
|
3295 (if (functionp init) (setq init (funcall init))) |
f00e4356c78d
(bibtex-field-list): Use functionp.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77206
diff
changeset
|
3296 (unless (stringp init) (error "`%s' is not a string" init))) |
f00e4356c78d
(bibtex-field-list): Use functionp.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77206
diff
changeset
|
3297 ;; NODELIM is required by `bibtex-insert-kill' |
f00e4356c78d
(bibtex-field-list): Use functionp.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77206
diff
changeset
|
3298 (if nodelim (insert init) |
f00e4356c78d
(bibtex-field-list): Use functionp.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77206
diff
changeset
|
3299 (insert (bibtex-field-left-delimiter) init |
77206
389303f02afc
(bibtex-insert-kill): Pass non-nil NODELIM arg to bibtex-make-field.
Glenn Morris <rgm@gnu.org>
parents:
75356
diff
changeset
|
3300 (bibtex-field-right-delimiter)))) |
57833
1a602333ec1d
(bibtex-make-field): Fix typo.
John Paul Wallington <jpw@pobox.com>
parents:
57819
diff
changeset
|
3301 (when interactive |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3302 ;; (bibtex-find-text nil nil bibtex-help-message) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3303 (if (memq (preceding-char) '(?} ?\")) (forward-char -1)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3304 (if bibtex-help-message (bibtex-print-help-message (car field))))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3305 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3306 (defun bibtex-beginning-of-entry () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3307 "Move to beginning of BibTeX entry (beginning of line). |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3308 If inside an entry, move to the beginning of it, otherwise move to the |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
3309 beginning of the previous entry. If point is ahead of all BibTeX entries |
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
3310 move point to the beginning of buffer. Return the new location of point." |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3311 (interactive) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3312 (skip-chars-forward " \t") |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3313 (if (looking-at "@") |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3314 (forward-char)) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3315 (re-search-backward "^[ \t]*@" nil 'move) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3316 (point)) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3317 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3318 (defun bibtex-end-of-entry () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3319 "Move to end of BibTeX entry (past the closing brace). |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3320 If inside an entry, move to the end of it, otherwise move to the end |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
3321 of the previous entry. Do not move if ahead of first entry. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3322 Return the new location of point." |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3323 (interactive) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3324 (let ((case-fold-search t) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3325 (pnt (point)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3326 (_ (bibtex-beginning-of-entry)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3327 (bounds (bibtex-valid-entry t))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3328 (cond (bounds (goto-char (cdr bounds))) ; regular entry |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3329 ;; @String or @Preamble |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3330 ((setq bounds (or (bibtex-parse-string t) (bibtex-parse-preamble))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3331 (goto-char (bibtex-end-of-string bounds))) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3332 ((looking-at bibtex-any-valid-entry-type) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3333 ;; Parsing of entry failed |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3334 (error "Syntactically incorrect BibTeX entry starts here")) |
105372
bd2966850aac
Use `called-interactively-p' instead of `interactive-p'.
Juanma Barranquero <lekktu@gmail.com>
parents:
105170
diff
changeset
|
3335 (t (if (called-interactively-p 'interactive) |
bd2966850aac
Use `called-interactively-p' instead of `interactive-p'.
Juanma Barranquero <lekktu@gmail.com>
parents:
105170
diff
changeset
|
3336 (message "Not on a known BibTeX entry.")) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3337 (goto-char pnt))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3338 (point))) |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
3339 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3340 (defun bibtex-goto-line (arg) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3341 "Goto line ARG, counting from beginning of (narrowed) buffer." |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3342 ;; code adapted from `goto-line' |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3343 (goto-char (point-min)) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3344 (if (eq selective-display t) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3345 (re-search-forward "[\n\C-m]" nil 'end (1- arg)) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3346 (forward-line (1- arg)))) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3347 |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3348 (defun bibtex-reposition-window () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3349 "Make the current BibTeX entry visible. |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3350 If entry is smaller than `window-body-height', entry is centered in window. |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3351 Otherwise display the beginning of entry." |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3352 (interactive) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3353 (let ((pnt (point)) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3354 (beg (line-number-at-pos (bibtex-beginning-of-entry))) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3355 (end (line-number-at-pos (bibtex-end-of-entry)))) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3356 (if (> (window-body-height) (- end beg)) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3357 ;; entry fits in current window |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3358 (progn |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3359 (bibtex-goto-line (/ (+ 1 beg end) 2)) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3360 (recenter) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3361 (goto-char pnt)) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3362 ;; entry too large for current window |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3363 (bibtex-goto-line beg) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3364 (recenter 0) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3365 (if (> (1+ (- (line-number-at-pos pnt) beg)) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3366 (window-body-height)) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3367 (bibtex-goto-line beg) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3368 (goto-char pnt))))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3369 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3370 (defun bibtex-mark-entry () |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3371 "Put mark at beginning, point at end of current BibTeX entry." |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3372 (interactive) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3373 (push-mark (bibtex-beginning-of-entry)) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3374 (bibtex-end-of-entry)) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3375 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3376 (defun bibtex-count-entries (&optional count-string-entries) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3377 "Count number of entries in current buffer or region. |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3378 With prefix argument COUNT-STRING-ENTRIES count all entries, |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3379 otherwise count all entries except @String entries. |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3380 If mark is active count entries in region, if not in whole buffer." |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3381 (interactive "P") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3382 (let ((number 0) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3383 (bibtex-sort-ignore-string-entries (not count-string-entries))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3384 (save-restriction |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3385 (if mark-active (narrow-to-region (region-beginning) (region-end))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3386 (bibtex-map-entries (lambda (key beg end) (setq number (1+ number))))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3387 (message "%s contains %d entries." |
57815 | 3388 (if mark-active "Region" "Buffer") |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3389 number))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3390 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3391 (defun bibtex-ispell-entry () |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3392 "Check BibTeX entry for spelling errors." |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3393 (interactive) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3394 (ispell-region (save-excursion (bibtex-beginning-of-entry)) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3395 (save-excursion (bibtex-end-of-entry)))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3396 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3397 (defun bibtex-ispell-abstract () |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3398 "Check abstract of BibTeX entry for spelling errors." |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3399 (interactive) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3400 (let ((bounds (save-excursion |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3401 (bibtex-beginning-of-entry) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3402 (bibtex-search-forward-field "abstract" t)))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3403 (if bounds |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3404 (ispell-region (bibtex-start-of-text-in-field bounds) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3405 (bibtex-end-of-text-in-field bounds)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3406 (error "No abstract in entry")))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3407 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3408 (defun bibtex-narrow-to-entry () |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3409 "Narrow buffer to current BibTeX entry." |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3410 (interactive) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3411 (save-excursion |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3412 (widen) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3413 (narrow-to-region (bibtex-beginning-of-entry) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3414 (bibtex-end-of-entry)))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3415 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3416 (defun bibtex-entry-index () |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3417 "Return index of BibTeX entry head at or past position of point. |
92218
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
3418 The index is a list (KEY CROSSREF-KEY ENTRY-TYPE) that is used for sorting |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3419 the entries of the BibTeX buffer. CROSSREF-KEY is nil unless the value |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3420 of `bibtex-maintain-sorted-entries' is `crossref'. Move point to the end |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3421 of the head of the entry found. Return nil if no entry found." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3422 (let ((case-fold-search t)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3423 (if (re-search-forward bibtex-entry-maybe-empty-head nil t) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3424 (let ((key (bibtex-key-in-head)) |
92218
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
3425 ;; all entry types should be downcase (for ease of comparison) |
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
3426 (entry-type (downcase (bibtex-type-in-head)))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3427 ;; Don't search CROSSREF-KEY if we don't need it. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3428 (if (eq bibtex-maintain-sorted-entries 'crossref) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3429 (let ((bounds (bibtex-search-forward-field |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3430 "\\(OPT\\)?crossref" t))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3431 (list key |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3432 (if bounds (bibtex-text-in-field-bounds bounds t)) |
92218
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
3433 entry-type)) |
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
3434 (list key nil entry-type)))))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3435 |
71044
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3436 (defun bibtex-init-sort-entry-class-alist () |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3437 "Initialize `bibtex-sort-entry-class-alist' (buffer-local)." |
71044
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3438 (unless (local-variable-p 'bibtex-sort-entry-class-alist) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3439 (set (make-local-variable 'bibtex-sort-entry-class-alist) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3440 (let ((i -1) alist) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3441 (dolist (class bibtex-sort-entry-class alist) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3442 (setq i (1+ i)) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3443 (dolist (entry class) |
92218
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
3444 ;; All entry types should be downcase (for ease of comparison). |
71044
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3445 (push (cons (if (stringp entry) (downcase entry) entry) i) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3446 alist))))))) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3447 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3448 (defun bibtex-lessp (index1 index2) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3449 "Predicate for sorting BibTeX entries with indices INDEX1 and INDEX2. |
92218
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
3450 Each index is a list (KEY CROSSREF-KEY ENTRY-TYPE). |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3451 The predicate depends on the variable `bibtex-maintain-sorted-entries'. |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3452 If its value is nil use plain sorting." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3453 (cond ((not index1) (not index2)) ; indices can be nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3454 ((not index2) nil) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3455 ((eq bibtex-maintain-sorted-entries 'crossref) |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3456 ;; CROSSREF-KEY may be nil or it can point to an entry |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3457 ;; in another BibTeX file. In both cases we ignore CROSSREF-KEY. |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3458 (if (and (nth 1 index1) |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3459 (cdr (assoc-string (nth 1 index1) bibtex-reference-keys))) |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3460 (if (and (nth 1 index2) |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3461 (cdr (assoc-string (nth 1 index2) bibtex-reference-keys))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3462 (or (string-lessp (nth 1 index1) (nth 1 index2)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3463 (and (string-equal (nth 1 index1) (nth 1 index2)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3464 (string-lessp (nth 0 index1) (nth 0 index2)))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3465 (not (string-lessp (nth 0 index2) (nth 1 index1)))) |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3466 (if (and (nth 1 index2) |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3467 (cdr (assoc-string (nth 1 index2) bibtex-reference-keys))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3468 (string-lessp (nth 0 index1) (nth 1 index2)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3469 (string-lessp (nth 0 index1) (nth 0 index2))))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3470 ((eq bibtex-maintain-sorted-entries 'entry-class) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3471 (let ((n1 (cdr (or (assoc (nth 2 index1) bibtex-sort-entry-class-alist) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3472 (assoc 'catch-all bibtex-sort-entry-class-alist) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3473 '(nil . 1000)))) ; if there is nothing else |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3474 (n2 (cdr (or (assoc (nth 2 index2) bibtex-sort-entry-class-alist) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3475 (assoc 'catch-all bibtex-sort-entry-class-alist) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3476 '(nil . 1000))))) ; if there is nothing else |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3477 (or (< n1 n2) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3478 (and (= n1 n2) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3479 (string-lessp (car index1) (car index2)))))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3480 (t ; (eq bibtex-maintain-sorted-entries 'plain) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3481 (string-lessp (car index1) (car index2))))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3482 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3483 (defun bibtex-sort-buffer () |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3484 "Sort BibTeX buffer alphabetically by key. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3485 The predicate for sorting is defined via `bibtex-maintain-sorted-entries'. |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
3486 If its value is nil use plain sorting. Text outside of BibTeX entries is not |
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
3487 affected. If `bibtex-sort-ignore-string-entries' is non-nil, @String entries |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3488 are ignored." |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3489 (interactive) |
71044
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3490 (bibtex-beginning-of-first-entry) ; Needed by `sort-subr' |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3491 (bibtex-init-sort-entry-class-alist) ; Needed by `bibtex-lessp'. |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3492 (if (and (eq bibtex-maintain-sorted-entries 'crossref) |
102038
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
3493 (functionp bibtex-reference-keys)) |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3494 (bibtex-parse-keys)) ; Needed by `bibtex-lessp'. |
71044
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3495 (sort-subr nil |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3496 'bibtex-skip-to-valid-entry ; NEXTREC function |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3497 'bibtex-end-of-entry ; ENDREC function |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3498 'bibtex-entry-index ; STARTKEY function |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3499 nil ; ENDKEY function |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3500 'bibtex-lessp)) ; PREDICATE |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3501 |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3502 (defun bibtex-search-crossref (crossref-key &optional pnt split noerror) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3503 "Move point to the beginning of BibTeX entry CROSSREF-KEY. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3504 If `bibtex-files' is non-nil, search all these files. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3505 Otherwise the search is limited to the current buffer. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3506 Return position of entry if CROSSREF-KEY is found or nil otherwise. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3507 If CROSSREF-KEY is in the same buffer like current entry but before it |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3508 an error is signaled. If NOERRER is non-nil this error is suppressed. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3509 Optional arg PNT is the position of the referencing entry. It defaults |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3510 to position of point. If optional arg SPLIT is non-nil, split window |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3511 so that both the referencing and the crossrefed entry are displayed. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3512 |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3513 If called interactively, CROSSREF-KEY defaults to either the crossref key |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3514 of current entry or a key matched by `bibtex-cite-matcher-alist', |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3515 whatever is nearer to the position of point. SPLIT is t. NOERROR is nil |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3516 for a crossref key, t otherwise." |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3517 (interactive |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3518 (save-excursion |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3519 (let* ((pnt (point)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3520 (_ (bibtex-beginning-of-entry)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3521 (end (cdr (bibtex-valid-entry t))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3522 (_ (unless end (error "Not inside valid entry"))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3523 (beg (match-end 0)) ; set by `bibtex-valid-entry' |
102868
cf16d0f54438
(bibtex-format-entry, bibtex-search-crossref): Allow OPT prefix for
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
102133
diff
changeset
|
3524 (bounds (bibtex-search-forward-field "\\(OPT\\)?crossref" end)) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3525 case-fold-search best temp crossref-key) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3526 (if bounds |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3527 (setq crossref-key (bibtex-text-in-field-bounds bounds t) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3528 best (cons (bibtex-dist pnt (bibtex-end-of-field bounds) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3529 (bibtex-start-of-field bounds)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3530 crossref-key))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3531 (dolist (matcher bibtex-cite-matcher-alist) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3532 (goto-char beg) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3533 (while (re-search-forward (car matcher) end t) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3534 (setq temp (bibtex-dist pnt (match-end (cdr matcher)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3535 (match-beginning (cdr matcher)))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3536 ;; Accept the key closest to the position of point. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3537 (if (or (not best) (< temp (car best))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3538 (setq best (cons temp (match-string-no-properties |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3539 (cdr matcher))))))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3540 (goto-char pnt) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3541 (setq temp (bibtex-read-key "Find crossref key: " (cdr best) t)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3542 (list temp (point) t (not (and crossref-key |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3543 (string= temp crossref-key))))))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3544 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3545 (let (buffer pos eqb) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3546 (save-excursion |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3547 (setq pos (bibtex-search-entry crossref-key t) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3548 buffer (current-buffer))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3549 (setq eqb (eq buffer (current-buffer))) |
57815 | 3550 (cond ((not pos) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3551 (if split (message "Crossref key `%s' not found" crossref-key))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3552 (split ; called (quasi) interactively |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3553 (unless pnt (setq pnt (point))) |
57815 | 3554 (goto-char pnt) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3555 (if (and eqb (= pos (save-excursion (bibtex-beginning-of-entry)))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3556 (message "Key `%s' is current entry" crossref-key) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3557 (if eqb (select-window (split-window)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3558 (pop-to-buffer buffer)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3559 (goto-char pos) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3560 (bibtex-reposition-window) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3561 (beginning-of-line) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3562 (if (and eqb (> pnt pos) (not noerror)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3563 (error "The referencing entry must precede the crossrefed entry!")))) |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3564 ;; `bibtex-search-crossref' is called noninteractively during |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3565 ;; clean-up of an entry. Then it is not possible to check |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3566 ;; whether the current entry and the crossrefed entry have |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3567 ;; the correct sorting order. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3568 (eqb (goto-char pos)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3569 (t (set-buffer buffer) (goto-char pos))) |
57815 | 3570 pos)) |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3571 ;; backward compatibility |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3572 (defalias 'bibtex-find-crossref 'bibtex-search-crossref) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3573 |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3574 (defun bibtex-dist (pos beg end) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3575 "Return distance between POS and region delimited by BEG and END." |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3576 (cond ((and (<= beg pos) (<= pos end)) 0) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3577 ((< pos beg) (- beg pos)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3578 (t (- pos end)))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3579 |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3580 ;;;###autoload |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3581 (defun bibtex-search-entry (key &optional global start display) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3582 "Move point to the beginning of BibTeX entry named KEY. |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
3583 Return position of entry if KEY is found or nil if not found. |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3584 With GLOBAL non-nil, search KEY in `bibtex-files'. Otherwise the search |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3585 is limited to the current buffer. Optional arg START is buffer position |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3586 where the search starts. If it is nil, start search at beginning of buffer. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3587 If DISPLAY is non-nil, display the buffer containing KEY. |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3588 Otherwise, use `set-buffer'. |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3589 When called interactively, GLOBAL is t if there is a prefix arg or the current |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3590 mode is not `bibtex-mode', START is nil, and DISPLAY is t." |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3591 (interactive |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3592 (let ((global (or current-prefix-arg (not (eq major-mode 'bibtex-mode))))) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3593 (list (bibtex-read-key "Find key: " nil global) global nil t))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3594 (if (and global bibtex-files) |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3595 (let ((buffer-list (bibtex-initialize t)) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3596 buffer found) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3597 (while (and (not found) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3598 (setq buffer (pop buffer-list))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3599 (with-current-buffer buffer |
102038
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
3600 (if (cdr (assoc-string key bibtex-reference-keys)) |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3601 ;; `bibtex-search-entry' moves point if key found |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3602 (setq found (bibtex-search-entry key))))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3603 (cond ((and found display) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3604 (let ((same-window-buffer-names |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3605 (cons (buffer-name buffer) same-window-buffer-names))) |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3606 (pop-to-buffer buffer) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3607 (bibtex-reposition-window))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3608 (found (set-buffer buffer)) |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3609 (display (message "Key `%s' not found" key))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3610 found) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3611 |
70210
83aa98a17215
(bibtex-find-entry): Don't demand matching case for @Article, etc.
J.D. Smith <jdsmith@as.arizona.edu>
parents:
69887
diff
changeset
|
3612 (let* ((case-fold-search t) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3613 (pnt (save-excursion |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3614 (goto-char (or start (point-min))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3615 (if (re-search-forward (concat "^[ \t]*\\(" |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3616 bibtex-entry-type |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3617 "\\)[ \t]*[({][ \t\n]*\\(" |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3618 (regexp-quote key) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3619 "\\)[ \t\n]*[,=]") |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3620 nil t) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3621 (match-beginning 0))))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3622 (cond (pnt |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3623 (goto-char pnt) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3624 (if display (bibtex-reposition-window))) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3625 (display (message "Key `%s' not found" key))) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3626 pnt))) |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3627 ;; backward compatibility |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3628 (defalias 'bibtex-find-entry 'bibtex-search-entry) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3629 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3630 (defun bibtex-prepare-new-entry (index) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3631 "Prepare a new BibTeX entry with index INDEX. |
92218
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
3632 INDEX is a list (KEY CROSSREF-KEY ENTRY-TYPE). |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3633 Move point where the entry KEY should be placed. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3634 If `bibtex-maintain-sorted-entries' is non-nil, perform a binary |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3635 search to look for place for KEY. This requires that buffer is sorted, |
62077
e233a73cbf79
(bibtex-summary): Use current BibTeX entry to avoid calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61439
diff
changeset
|
3636 see `bibtex-validate'. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3637 Return t if preparation was successful or nil if entry KEY already exists." |
71044
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3638 (bibtex-init-sort-entry-class-alist) ; Needed by `bibtex-lessp'. |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3639 (if (and (eq bibtex-maintain-sorted-entries 'crossref) |
102038
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
3640 (functionp bibtex-reference-keys)) |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3641 (bibtex-parse-keys)) ; Needed by `bibtex-lessp'. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3642 (let ((key (nth 0 index)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3643 key-exist) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3644 (cond ((or (null key) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3645 (and (stringp key) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3646 (string-equal key "")) |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3647 (and (not (setq key-exist (bibtex-search-entry key))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3648 (not bibtex-maintain-sorted-entries))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3649 (bibtex-move-outside-of-entry)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3650 ;; if key-exist is non-nil due to the previous cond clause |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3651 ;; then point will be at beginning of entry named key. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3652 (key-exist) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
3653 (t ; `bibtex-maintain-sorted-entries' is non-nil |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3654 (let* ((case-fold-search t) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3655 (left (save-excursion (bibtex-beginning-of-first-entry))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3656 (bounds (save-excursion (goto-char (point-max)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3657 (bibtex-skip-to-valid-entry t))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3658 (right (if bounds (cdr bounds) (point-min))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3659 (found (if (>= left right) left)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3660 actual-index new) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3661 (save-excursion |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3662 ;; Binary search |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3663 (while (not found) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3664 (goto-char (/ (+ left right) 2)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3665 (bibtex-skip-to-valid-entry t) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3666 (setq actual-index (bibtex-entry-index)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3667 (cond ((bibtex-lessp index actual-index) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3668 (setq new (bibtex-beginning-of-entry)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3669 (if (equal right new) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3670 (setq found right) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3671 (setq right new))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3672 (t |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3673 (bibtex-end-of-entry) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3674 (bibtex-skip-to-valid-entry) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3675 (setq new (point)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3676 (if (equal left new) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3677 (setq found right) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3678 (setq left new)))))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3679 (goto-char found) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3680 (bibtex-beginning-of-entry) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3681 (setq actual-index (save-excursion (bibtex-entry-index))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3682 (when (or (not actual-index) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3683 (bibtex-lessp actual-index index)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3684 ;; buffer contains no valid entries or |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3685 ;; greater than last entry --> append |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3686 (bibtex-end-of-entry) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
3687 (unless (bobp) (newline (forward-line 2))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3688 (beginning-of-line))))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3689 (unless key-exist t))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3690 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3691 (defun bibtex-validate (&optional test-thoroughly) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3692 "Validate if buffer or region is syntactically correct. |
57815 | 3693 Check also for duplicate keys and correct sort order provided |
3694 `bibtex-maintain-sorted-entries' is non-nil. | |
3695 With optional argument TEST-THOROUGHLY non-nil check also for | |
3696 the absence of required fields and for questionable month fields. | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3697 If mark is active, validate current region, if not the whole buffer. |
57815 | 3698 Only check known entry types, so you can put comments outside of entries. |
3699 Return t if test was successful, nil otherwise." | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3700 (interactive "P") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3701 (let* ((case-fold-search t) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3702 error-list syntax-error) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3703 (save-excursion |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3704 (save-restriction |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3705 (if mark-active (narrow-to-region (region-beginning) (region-end))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3706 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3707 ;; Check syntactical structure of entries |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3708 (goto-char (point-min)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3709 (bibtex-progress-message "Checking syntactical structure") |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3710 (let (bounds end) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3711 (while (setq end (re-search-forward "^[ \t]*@" nil t)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3712 (bibtex-progress-message) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3713 (goto-char (match-beginning 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3714 (cond ((setq bounds (bibtex-valid-entry)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3715 (goto-char (cdr bounds))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3716 ((setq bounds (or (bibtex-parse-string) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3717 (bibtex-parse-preamble))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3718 (goto-char (bibtex-end-of-string bounds))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3719 ((looking-at bibtex-any-valid-entry-type) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3720 (push (cons (bibtex-current-line) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3721 "Syntax error (check esp. commas, braces, and quotes)") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3722 error-list) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3723 (goto-char (match-end 0))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3724 (t (goto-char end))))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3725 (bibtex-progress-message 'done) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3726 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3727 (if error-list |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3728 ;; Continue only if there were no syntax errors. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3729 (setq syntax-error t) |
57815 | 3730 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3731 ;; Check for duplicate keys and correct sort order |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3732 (bibtex-init-sort-entry-class-alist) ; Needed by `bibtex-lessp'. |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3733 (bibtex-parse-keys) ; Possibly needed by `bibtex-lessp'. |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3734 ; Always needed by subsequent global key check. |
57815 | 3735 (let (previous current key-list) |
3736 (bibtex-progress-message "Checking for duplicate keys") | |
3737 (bibtex-map-entries | |
3738 (lambda (key beg end) | |
3739 (bibtex-progress-message) | |
3740 (setq current (bibtex-entry-index)) | |
3741 (cond ((not previous)) | |
3742 ((member key key-list) | |
3743 (push (cons (bibtex-current-line) | |
3744 (format "Duplicate key `%s'" key)) | |
3745 error-list)) | |
3746 ((and bibtex-maintain-sorted-entries | |
3747 (not (bibtex-lessp previous current))) | |
3748 (push (cons (bibtex-current-line) | |
3749 "Entries out of order") | |
3750 error-list))) | |
3751 (push key key-list) | |
3752 (setq previous current))) | |
3753 (bibtex-progress-message 'done)) | |
3754 | |
3755 ;; Check for duplicate keys in `bibtex-files'. | |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3756 ;; `bibtex-validate' only compares keys in current buffer with keys |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3757 ;; in `bibtex-files'. `bibtex-validate-globally' compares keys for |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3758 ;; each file in `bibtex-files' with keys of all other files in |
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3759 ;; `bibtex-files'. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3760 ;; We don't want to be fooled by outdated `bibtex-reference-keys'. |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3761 (dolist (buffer (bibtex-initialize nil t)) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3762 (dolist (key (with-current-buffer buffer bibtex-reference-keys)) |
57815 | 3763 (when (and (cdr key) |
3764 (cdr (assoc-string (car key) bibtex-reference-keys))) | |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3765 (bibtex-search-entry (car key)) |
57815 | 3766 (push (cons (bibtex-current-line) |
3767 (format "Duplicate key `%s' in %s" (car key) | |
3768 (abbreviate-file-name (buffer-file-name buffer)))) | |
3769 error-list)))) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3770 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3771 (when test-thoroughly |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3772 (bibtex-progress-message |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3773 "Checking required fields and month fields") |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
3774 (let ((bibtex-sort-ignore-string-entries t)) |
18247
ae094c1a4334
(bibtex-delete-whitespace, bibtex-current-line)
Richard M. Stallman <rms@gnu.org>
parents:
18212
diff
changeset
|
3775 (bibtex-map-entries |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3776 (lambda (key beg end) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3777 (bibtex-progress-message) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3778 (let* ((entry-list (assoc-string (bibtex-type-in-head) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3779 bibtex-entry-field-alist t)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3780 (req (copy-sequence (elt (elt entry-list 1) 0))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3781 (creq (copy-sequence (elt (elt entry-list 2) 0))) |
57815 | 3782 crossref-there bounds alt-there field) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3783 (bibtex-beginning-first-field beg) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3784 (while (setq bounds (bibtex-parse-field)) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
3785 (let ((field-name (bibtex-name-in-field bounds))) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
3786 (if (and (bibtex-string= field-name "month") |
57815 | 3787 ;; Check only abbreviated month fields. |
3788 (let ((month (bibtex-text-in-field-bounds bounds))) | |
3789 (not (or (string-match "\\`[\"{].+[\"}]\\'" month) | |
3790 (assoc-string | |
3791 month | |
3792 bibtex-predefined-month-strings t))))) | |
3793 (push (cons (bibtex-current-line) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3794 "Questionable month field") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3795 error-list)) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3796 (setq field (assoc-string field-name req t) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3797 req (delete field req) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3798 creq (delete (assoc-string field-name creq t) creq)) |
57815 | 3799 (if (nth 3 field) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3800 (if alt-there |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3801 (push (cons (bibtex-current-line) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3802 "More than one non-empty alternative") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3803 error-list) |
57815 | 3804 (setq alt-there t))) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
3805 (if (bibtex-string= field-name "crossref") |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3806 (setq crossref-there t))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3807 (goto-char (bibtex-end-of-field bounds))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3808 (if crossref-there (setq req creq)) |
57815 | 3809 (let (alt) |
3810 (dolist (field req) | |
3811 (if (nth 3 field) | |
3812 (push (car field) alt) | |
3813 (push (cons (save-excursion (goto-char beg) | |
3814 (bibtex-current-line)) | |
3815 (format "Required field `%s' missing" | |
3816 (car field))) | |
3817 error-list))) | |
3818 ;; The following fails if there are more than two | |
3819 ;; alternatives in a BibTeX entry, which isn't | |
3820 ;; the case momentarily. | |
3821 (if (cdr alt) | |
3822 (push (cons (save-excursion (goto-char beg) | |
3823 (bibtex-current-line)) | |
3824 (format "Alternative fields `%s'/`%s' missing" | |
3825 (car alt) (cadr alt))) | |
3826 error-list))))))) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3827 (bibtex-progress-message 'done))))) |
57815 | 3828 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3829 (if error-list |
57815 | 3830 (let ((file (file-name-nondirectory (buffer-file-name))) |
3831 (dir default-directory) | |
3832 (err-buf "*BibTeX validation errors*")) | |
3833 (setq error-list (sort error-list 'car-less-than-car)) | |
3834 (with-current-buffer (get-buffer-create err-buf) | |
3835 (setq default-directory dir) | |
3836 (unless (eq major-mode 'compilation-mode) (compilation-mode)) | |
111257
516f3d80dac6
Replace some inappropriate uses of toggle-read-only. (Bug#7292)
Glenn Morris <rgm@gnu.org>
parents:
110227
diff
changeset
|
3837 (let ((inhibit-read-only t)) |
516f3d80dac6
Replace some inappropriate uses of toggle-read-only. (Bug#7292)
Glenn Morris <rgm@gnu.org>
parents:
110227
diff
changeset
|
3838 (delete-region (point-min) (point-max)) |
516f3d80dac6
Replace some inappropriate uses of toggle-read-only. (Bug#7292)
Glenn Morris <rgm@gnu.org>
parents:
110227
diff
changeset
|
3839 (insert "BibTeX mode command `bibtex-validate'\n" |
516f3d80dac6
Replace some inappropriate uses of toggle-read-only. (Bug#7292)
Glenn Morris <rgm@gnu.org>
parents:
110227
diff
changeset
|
3840 (if syntax-error |
516f3d80dac6
Replace some inappropriate uses of toggle-read-only. (Bug#7292)
Glenn Morris <rgm@gnu.org>
parents:
110227
diff
changeset
|
3841 "Maybe undetected errors due to syntax errors. \ |
516f3d80dac6
Replace some inappropriate uses of toggle-read-only. (Bug#7292)
Glenn Morris <rgm@gnu.org>
parents:
110227
diff
changeset
|
3842 Correct and validate again.\n" |
516f3d80dac6
Replace some inappropriate uses of toggle-read-only. (Bug#7292)
Glenn Morris <rgm@gnu.org>
parents:
110227
diff
changeset
|
3843 "\n")) |
516f3d80dac6
Replace some inappropriate uses of toggle-read-only. (Bug#7292)
Glenn Morris <rgm@gnu.org>
parents:
110227
diff
changeset
|
3844 (dolist (err error-list) |
516f3d80dac6
Replace some inappropriate uses of toggle-read-only. (Bug#7292)
Glenn Morris <rgm@gnu.org>
parents:
110227
diff
changeset
|
3845 (insert (format "%s:%d: %s\n" file (car err) (cdr err)))) |
516f3d80dac6
Replace some inappropriate uses of toggle-read-only. (Bug#7292)
Glenn Morris <rgm@gnu.org>
parents:
110227
diff
changeset
|
3846 (set-buffer-modified-p nil)) |
104774
468b7fa34d2c
Use forward-line rather than goto-line.
Glenn Morris <rgm@gnu.org>
parents:
102868
diff
changeset
|
3847 (goto-char (point-min)) |
468b7fa34d2c
Use forward-line rather than goto-line.
Glenn Morris <rgm@gnu.org>
parents:
102868
diff
changeset
|
3848 (forward-line 2)) ; first error message |
57815 | 3849 (display-buffer err-buf) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3850 nil) ; return `nil' (i.e., buffer is invalid) |
57815 | 3851 (message "%s is syntactically correct" |
3852 (if mark-active "Region" "Buffer")) | |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3853 t))) ; return `t' (i.e., buffer is valid) |
57815 | 3854 |
3855 (defun bibtex-validate-globally (&optional strings) | |
3856 "Check for duplicate keys in `bibtex-files'. | |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3857 With optional prefix arg STRINGS, check for duplicate strings, too. |
57815 | 3858 Return t if test was successful, nil otherwise." |
3859 (interactive "P") | |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
3860 (let ((buffer-list (bibtex-initialize t)) |
57815 | 3861 buffer-key-list current-buf current-keys error-list) |
3862 ;; Check for duplicate keys within BibTeX buffer | |
3863 (dolist (buffer buffer-list) | |
105813
df4934f25eef
* textmodes/two-column.el (2C-split):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105601
diff
changeset
|
3864 (with-current-buffer buffer |
57815 | 3865 (let (entry-type key key-list) |
3866 (goto-char (point-min)) | |
3867 (while (re-search-forward bibtex-entry-head nil t) | |
3868 (setq entry-type (bibtex-type-in-head) | |
3869 key (bibtex-key-in-head)) | |
3870 (if (or (and strings (bibtex-string= entry-type "string")) | |
3871 (assoc-string entry-type bibtex-entry-field-alist t)) | |
3872 (if (member key key-list) | |
3873 (push (format "%s:%d: Duplicate key `%s'\n" | |
3874 (buffer-file-name) | |
3875 (bibtex-current-line) key) | |
3876 error-list) | |
3877 (push key key-list)))) | |
3878 (push (cons buffer key-list) buffer-key-list)))) | |
3879 | |
3880 ;; Check for duplicate keys among BibTeX buffers | |
3881 (while (setq current-buf (pop buffer-list)) | |
3882 (setq current-keys (cdr (assq current-buf buffer-key-list))) | |
3883 (with-current-buffer current-buf | |
3884 (dolist (buffer buffer-list) | |
3885 (dolist (key (cdr (assq buffer buffer-key-list))) | |
3886 (when (assoc-string key current-keys) | |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
3887 (bibtex-search-entry key) |
68065
0624a54493b5
(bibtex-validate-globally): Fix typo in a message text:
Eli Zaretskii <eliz@gnu.org>
parents:
67933
diff
changeset
|
3888 (push (format "%s:%d: Duplicate key `%s' in %s\n" |
57815 | 3889 (buffer-file-name) (bibtex-current-line) key |
3890 (abbreviate-file-name (buffer-file-name buffer))) | |
3891 error-list)))))) | |
3892 | |
3893 ;; Process error list | |
3894 (if error-list | |
3895 (let ((err-buf "*BibTeX validation errors*")) | |
3896 (with-current-buffer (get-buffer-create err-buf) | |
3897 (unless (eq major-mode 'compilation-mode) (compilation-mode)) | |
111257
516f3d80dac6
Replace some inappropriate uses of toggle-read-only. (Bug#7292)
Glenn Morris <rgm@gnu.org>
parents:
110227
diff
changeset
|
3898 (let ((inhibit-read-only t)) |
516f3d80dac6
Replace some inappropriate uses of toggle-read-only. (Bug#7292)
Glenn Morris <rgm@gnu.org>
parents:
110227
diff
changeset
|
3899 (delete-region (point-min) (point-max)) |
516f3d80dac6
Replace some inappropriate uses of toggle-read-only. (Bug#7292)
Glenn Morris <rgm@gnu.org>
parents:
110227
diff
changeset
|
3900 (insert "BibTeX mode command `bibtex-validate-globally'\n\n") |
516f3d80dac6
Replace some inappropriate uses of toggle-read-only. (Bug#7292)
Glenn Morris <rgm@gnu.org>
parents:
110227
diff
changeset
|
3901 (dolist (err (sort error-list 'string-lessp)) (insert err)) |
516f3d80dac6
Replace some inappropriate uses of toggle-read-only. (Bug#7292)
Glenn Morris <rgm@gnu.org>
parents:
110227
diff
changeset
|
3902 (set-buffer-modified-p nil)) |
104774
468b7fa34d2c
Use forward-line rather than goto-line.
Glenn Morris <rgm@gnu.org>
parents:
102868
diff
changeset
|
3903 (goto-char (point-min)) |
468b7fa34d2c
Use forward-line rather than goto-line.
Glenn Morris <rgm@gnu.org>
parents:
102868
diff
changeset
|
3904 (forward-line 2)) ; first error message |
57815 | 3905 (display-buffer err-buf) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3906 nil) ; return `nil' (i.e., buffer is invalid) |
57815 | 3907 (message "No duplicate keys.") |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3908 t))) ; return `t' (i.e., buffer is valid) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3909 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3910 (defun bibtex-next-field (begin &optional comma) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3911 "Move point to end of text of next BibTeX field or entry head. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3912 With prefix BEGIN non-nil, move point to its beginning. Optional arg COMMA |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3913 is as in `bibtex-enclosing-field'. It is t for interactive calls." |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3914 (interactive (list current-prefix-arg t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3915 (let ((bounds (bibtex-find-text-internal t nil comma)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3916 end-of-entry) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3917 (if (not bounds) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3918 (setq end-of-entry t) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3919 (goto-char (nth 3 bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3920 (if (assoc-string (car bounds) '("@String" "@Preamble") t) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3921 (setq end-of-entry t) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3922 ;; BibTeX key or field |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3923 (if (looking-at ",[ \t\n]*") (goto-char (match-end 0))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3924 ;; end of entry |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3925 (if (looking-at "[)}][ \t\n]*") (setq end-of-entry t)))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3926 (if (and end-of-entry |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3927 (re-search-forward bibtex-any-entry-maybe-empty-head nil t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3928 (goto-char (match-beginning 0))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3929 (bibtex-find-text begin nil bibtex-help-message))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3930 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3931 (defun bibtex-find-text (&optional begin noerror help comma) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3932 "Move point to end of text of current BibTeX field or entry head. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3933 With optional prefix BEGIN non-nil, move point to its beginning. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3934 Unless NOERROR is non-nil, an error is signaled if point is not |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3935 on a BibTeX field. If optional arg HELP is non-nil print help message. |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3936 When called interactively, the value of HELP is `bibtex-help-message'. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3937 Optional arg COMMA is as in `bibtex-enclosing-field'. It is t for |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3938 interactive calls." |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3939 (interactive (list current-prefix-arg nil bibtex-help-message t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3940 (let ((bounds (bibtex-find-text-internal t nil comma))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3941 (cond (bounds |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3942 (if begin |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3943 (progn (goto-char (nth 1 bounds)) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3944 (if (looking-at "[{\"]") |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3945 (forward-char))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3946 (goto-char (nth 2 bounds)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3947 (if (memq (preceding-char) '(?} ?\")) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3948 (forward-char -1))) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3949 (if help (bibtex-print-help-message (car bounds)))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3950 ((not noerror) (error "Not on BibTeX field"))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3951 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3952 (defun bibtex-find-text-internal (&optional noerror subfield comma) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3953 "Find text part of current BibTeX field or entry head. |
92218
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
3954 Return list (NAME START-TEXT END-TEXT END STRING-CONST) with field name |
1d8a03656f39
(bibtex-format-entry): Handle error message refering to a missing
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
92217
diff
changeset
|
3955 or entry type, start and end of text, and end of field or entry head. |
69886
0da18bcb2c37
(bibtex-find-text-internal): Add new element string-const to return value.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69581
diff
changeset
|
3956 STRING-CONST is a flag which is non-nil if current subfield delimited by # |
0da18bcb2c37
(bibtex-find-text-internal): Add new element string-const to return value.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69581
diff
changeset
|
3957 is a BibTeX string constant. Return value is nil if field or entry head |
0da18bcb2c37
(bibtex-find-text-internal): Add new element string-const to return value.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69581
diff
changeset
|
3958 are not found. |
0da18bcb2c37
(bibtex-find-text-internal): Add new element string-const to return value.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69581
diff
changeset
|
3959 If optional arg NOERROR is non-nil, an error message is suppressed |
0da18bcb2c37
(bibtex-find-text-internal): Add new element string-const to return value.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69581
diff
changeset
|
3960 if text is not found. If optional arg SUBFIELD is non-nil START-TEXT |
0da18bcb2c37
(bibtex-find-text-internal): Add new element string-const to return value.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69581
diff
changeset
|
3961 and END-TEXT correspond to the current subfield delimited by #. |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3962 Optional arg COMMA is as in `bibtex-enclosing-field'." |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3963 (save-excursion |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3964 (let ((pnt (point)) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3965 (bounds (bibtex-enclosing-field comma t)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3966 (case-fold-search t) |
69886
0da18bcb2c37
(bibtex-find-text-internal): Add new element string-const to return value.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69581
diff
changeset
|
3967 name start-text end-text end failure done no-sub string-const) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3968 (bibtex-beginning-of-entry) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3969 (cond (bounds |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3970 (setq name (bibtex-name-in-field bounds t) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3971 start-text (bibtex-start-of-text-in-field bounds) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3972 end-text (bibtex-end-of-text-in-field bounds) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3973 end (bibtex-end-of-field bounds))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3974 ;; @String |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3975 ((setq bounds (bibtex-parse-string t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3976 (if (<= pnt (bibtex-end-of-string bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3977 (setq name "@String" ;; not a field name! |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3978 start-text (bibtex-start-of-text-in-string bounds) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3979 end-text (bibtex-end-of-text-in-string bounds) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3980 end (bibtex-end-of-string bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3981 (setq failure t))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3982 ;; @Preamble |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3983 ((setq bounds (bibtex-parse-preamble)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3984 (if (<= pnt (bibtex-end-of-string bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3985 (setq name "@Preamble" ;; not a field name! |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3986 start-text (bibtex-start-of-text-in-string bounds) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3987 end-text (bibtex-end-of-text-in-string bounds) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3988 end (bibtex-end-of-string bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3989 (setq failure t))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3990 ;; BibTeX head |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3991 ((looking-at bibtex-entry-maybe-empty-head) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3992 (goto-char (match-end 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3993 (if comma (save-match-data |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3994 (re-search-forward "\\=[ \t\n]*," nil t))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3995 (if (<= pnt (point)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3996 (setq name (match-string-no-properties bibtex-type-in-head) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3997 start-text (or (match-beginning bibtex-key-in-head) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3998 (match-end 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3999 end-text (or (match-end bibtex-key-in-head) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4000 (match-end 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4001 end end-text |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4002 no-sub t) ; subfields do not make sense |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4003 (setq failure t))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4004 (t (setq failure t))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4005 (when (and subfield (not failure)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4006 (setq failure no-sub) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4007 (unless failure |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4008 (goto-char start-text) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4009 (while (not done) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4010 (if (or (prog1 (looking-at bibtex-field-const) |
69886
0da18bcb2c37
(bibtex-find-text-internal): Add new element string-const to return value.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69581
diff
changeset
|
4011 (setq end-text (match-end 0) |
0da18bcb2c37
(bibtex-find-text-internal): Add new element string-const to return value.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69581
diff
changeset
|
4012 string-const t)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4013 (prog1 (setq bounds (bibtex-parse-field-string)) |
69886
0da18bcb2c37
(bibtex-find-text-internal): Add new element string-const to return value.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69581
diff
changeset
|
4014 (setq end-text (cdr bounds) |
0da18bcb2c37
(bibtex-find-text-internal): Add new element string-const to return value.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69581
diff
changeset
|
4015 string-const nil))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4016 (progn |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4017 (if (and (<= start-text pnt) (<= pnt end-text)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4018 (setq done t) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4019 (goto-char end-text)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4020 (if (looking-at "[ \t\n]*#[ \t\n]*") |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4021 (setq start-text (goto-char (match-end 0))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4022 (setq done t failure t))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4023 (cond ((not failure) |
69886
0da18bcb2c37
(bibtex-find-text-internal): Add new element string-const to return value.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69581
diff
changeset
|
4024 (list name start-text end-text end string-const)) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4025 ((and no-sub (not noerror)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4026 (error "Not on text part of BibTeX field")) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4027 ((not noerror) (error "Not on BibTeX field")))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4028 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4029 (defun bibtex-remove-OPT-or-ALT (&optional comma) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4030 "Remove the string starting optional/alternative fields. |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4031 Align text and go thereafter to end of text. Optional arg COMMA |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4032 is as in `bibtex-enclosing-field'. It is t for interactive calls." |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4033 (interactive (list t)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4034 (let ((case-fold-search t) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4035 (bounds (bibtex-enclosing-field comma))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4036 (save-excursion |
27701
5e135f0faf1d
(bibtex-mode): Replaced manual splitting of path
Gerd Moellmann <gerd@gnu.org>
parents:
26711
diff
changeset
|
4037 (goto-char (bibtex-start-of-name-in-field bounds)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4038 (when (looking-at "OPT\\|ALT") |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4039 (delete-region (match-beginning 0) (match-end 0)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4040 ;; make field non-OPT |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4041 (search-forward "=") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4042 (forward-char -1) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4043 (delete-horizontal-space) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4044 (if bibtex-align-at-equal-sign |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4045 (indent-to-column (- bibtex-text-indentation 2)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4046 (insert " ")) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4047 (search-forward "=") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4048 (delete-horizontal-space) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4049 (if bibtex-align-at-equal-sign |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4050 (insert " ") |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4051 (indent-to-column bibtex-text-indentation)))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4052 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4053 (defun bibtex-remove-delimiters (&optional comma) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4054 "Remove \"\" or {} around current BibTeX field text. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4055 Optional arg COMMA is as in `bibtex-enclosing-field'. It is t for |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4056 interactive calls." |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4057 (interactive (list t)) |
69886
0da18bcb2c37
(bibtex-find-text-internal): Add new element string-const to return value.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69581
diff
changeset
|
4058 (let ((bounds (bibtex-find-text-internal nil t comma))) |
0da18bcb2c37
(bibtex-find-text-internal): Add new element string-const to return value.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69581
diff
changeset
|
4059 (unless (nth 4 bounds) |
0da18bcb2c37
(bibtex-find-text-internal): Add new element string-const to return value.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69581
diff
changeset
|
4060 (delete-region (1- (nth 2 bounds)) (nth 2 bounds)) |
0da18bcb2c37
(bibtex-find-text-internal): Add new element string-const to return value.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69581
diff
changeset
|
4061 (delete-region (nth 1 bounds) (1+ (nth 1 bounds)))))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4062 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4063 (defun bibtex-kill-field (&optional copy-only comma) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4064 "Kill the entire enclosing BibTeX field. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4065 With prefix arg COPY-ONLY, copy the current field to `bibtex-field-kill-ring', |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4066 but do not actually kill it. Optional arg COMMA is as in |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4067 `bibtex-enclosing-field'. It is t for interactive calls." |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4068 (interactive (list current-prefix-arg t)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4069 (save-excursion |
27701
5e135f0faf1d
(bibtex-mode): Replaced manual splitting of path
Gerd Moellmann <gerd@gnu.org>
parents:
26711
diff
changeset
|
4070 (let* ((case-fold-search t) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4071 (bounds (bibtex-enclosing-field comma)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4072 (end (bibtex-end-of-field bounds)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4073 (beg (bibtex-start-of-field bounds))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4074 (goto-char end) |
106426
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4075 ;; Preserve white space at end of BibTeX entry |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4076 (if (looking-at "[ \t\n]*[)}]") |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4077 (progn (skip-chars-backward " \t\n") |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4078 (setq end (point))) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4079 (skip-chars-forward ",")) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4080 (push (list (bibtex-name-in-field bounds) nil |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4081 (bibtex-text-in-field-bounds bounds)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4082 bibtex-field-kill-ring) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4083 (if (> (length bibtex-field-kill-ring) bibtex-field-kill-ring-max) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4084 (setcdr (nthcdr (1- bibtex-field-kill-ring-max) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4085 bibtex-field-kill-ring) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4086 nil)) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4087 (setq bibtex-field-kill-ring-yank-pointer bibtex-field-kill-ring) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4088 (unless copy-only |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4089 (delete-region beg end)))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4090 (setq bibtex-last-kill-command 'field)) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4091 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4092 (defun bibtex-copy-field-as-kill (&optional comma) |
101166
bd632099967a
(bibtex-copy-field-as-kill): Doc fix.
Glenn Morris <rgm@gnu.org>
parents:
100908
diff
changeset
|
4093 "Copy the BibTeX field at point to `bibtex-field-kill-ring'. |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4094 Optional arg COMMA is as in `bibtex-enclosing-field'. It is t for |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4095 interactive calls." |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4096 (interactive (list t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4097 (bibtex-kill-field t comma)) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4098 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4099 (defun bibtex-kill-entry (&optional copy-only) |
27701
5e135f0faf1d
(bibtex-mode): Replaced manual splitting of path
Gerd Moellmann <gerd@gnu.org>
parents:
26711
diff
changeset
|
4100 "Kill the entire enclosing BibTeX entry. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4101 With prefix arg COPY-ONLY, copy the current entry to `bibtex-entry-kill-ring', |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4102 but do not actually kill it." |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4103 (interactive "P") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4104 (save-excursion |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4105 (let* ((case-fold-search t) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4106 (beg (bibtex-beginning-of-entry)) |
106426
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4107 (key (progn (looking-at bibtex-any-entry-maybe-empty-head) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4108 (bibtex-key-in-head))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4109 (end (progn (bibtex-end-of-entry) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4110 (if (re-search-forward |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4111 bibtex-any-entry-maybe-empty-head nil 'move) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4112 (goto-char (match-beginning 0))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4113 (point)))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4114 (push (buffer-substring-no-properties beg end) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4115 bibtex-entry-kill-ring) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4116 (if (> (length bibtex-entry-kill-ring) bibtex-entry-kill-ring-max) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4117 (setcdr (nthcdr (1- bibtex-entry-kill-ring-max) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4118 bibtex-entry-kill-ring) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4119 nil)) |
57815 | 4120 (setq bibtex-entry-kill-ring-yank-pointer bibtex-entry-kill-ring) |
4121 (unless copy-only | |
106426
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4122 (delete-region beg end) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4123 ;; remove key from `bibtex-reference-keys'. |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4124 (unless (functionp bibtex-reference-keys) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4125 (setq bibtex-reference-keys |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4126 (delete (cons key t) bibtex-reference-keys)))))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4127 (setq bibtex-last-kill-command 'entry)) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4128 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4129 (defun bibtex-copy-entry-as-kill () |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4130 "Copy the entire enclosing BibTeX entry to `bibtex-entry-kill-ring'." |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4131 (interactive) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4132 (bibtex-kill-entry t)) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4133 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4134 (defun bibtex-yank (&optional n) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4135 "Reinsert the last BibTeX item. |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4136 More precisely, reinsert the field or entry killed or yanked most recently. |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4137 With argument N, reinsert the Nth most recently killed BibTeX item. |
62077
e233a73cbf79
(bibtex-summary): Use current BibTeX entry to avoid calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61439
diff
changeset
|
4138 See also the command \\[bibtex-yank-pop]." |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4139 (interactive "*p") |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4140 (bibtex-insert-kill (1- n) t) |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4141 (setq this-command 'bibtex-yank)) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4142 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4143 (defun bibtex-yank-pop (n) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4144 "Replace just-yanked killed BibTeX item with a different item. |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4145 This command is allowed only immediately after a `bibtex-yank' or a |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4146 `bibtex-yank-pop'. In this case, the region contains a reinserted |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4147 previously killed BibTeX item. `bibtex-yank-pop' deletes that item |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4148 and inserts in its place a different killed BibTeX item. |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4149 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4150 With no argument, the previous kill is inserted. |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4151 With argument N, insert the Nth previous kill. |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4152 If N is negative, this is a more recent kill. |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4153 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4154 The sequence of kills wraps around, so that after the oldest one |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4155 comes the newest one." |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4156 (interactive "*p") |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4157 (unless (eq last-command 'bibtex-yank) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4158 (error "Previous command was not a BibTeX yank")) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4159 (setq this-command 'bibtex-yank) |
106426
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4160 (let ((inhibit-read-only t) key) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4161 ;; point is at end of yanked entry |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4162 (unless (functionp bibtex-reference-keys) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4163 ;; remove key of yanked entry from `bibtex-reference-keys' |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4164 (save-excursion |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4165 (goto-char (mark t)) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4166 (if (and (looking-at bibtex-any-entry-maybe-empty-head) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4167 (setq key (bibtex-key-in-head))) |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4168 (setq bibtex-reference-keys |
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4169 (delete (cons key t) bibtex-reference-keys))))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4170 (delete-region (point) (mark t)) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4171 (bibtex-insert-kill n t))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4172 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4173 (defun bibtex-empty-field (&optional comma) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4174 "Delete the text part of the current field, replace with empty text. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4175 Optional arg COMMA is as in `bibtex-enclosing-field'. It is t for |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4176 interactive calls." |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4177 (interactive (list t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4178 (let ((bounds (bibtex-enclosing-field comma))) |
27701
5e135f0faf1d
(bibtex-mode): Replaced manual splitting of path
Gerd Moellmann <gerd@gnu.org>
parents:
26711
diff
changeset
|
4179 (goto-char (bibtex-start-of-text-in-field bounds)) |
5e135f0faf1d
(bibtex-mode): Replaced manual splitting of path
Gerd Moellmann <gerd@gnu.org>
parents:
26711
diff
changeset
|
4180 (delete-region (point) (bibtex-end-of-text-in-field bounds)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4181 (insert (bibtex-field-left-delimiter) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4182 (bibtex-field-right-delimiter)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4183 (bibtex-find-text t nil bibtex-help-message))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4184 |
14789
d68b71228abd
(bibtex-pop): New generic function which unifies the
Richard M. Stallman <rms@gnu.org>
parents:
14410
diff
changeset
|
4185 (defun bibtex-pop-previous (arg) |
19461 | 4186 "Replace text of current field with the similar field in previous entry. |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4187 With arg, goes up ARG entries. Repeated, goes up so many times. May be |
14789
d68b71228abd
(bibtex-pop): New generic function which unifies the
Richard M. Stallman <rms@gnu.org>
parents:
14410
diff
changeset
|
4188 intermixed with \\[bibtex-pop-next] (bibtex-pop-next)." |
d68b71228abd
(bibtex-pop): New generic function which unifies the
Richard M. Stallman <rms@gnu.org>
parents:
14410
diff
changeset
|
4189 (interactive "p") |
d68b71228abd
(bibtex-pop): New generic function which unifies the
Richard M. Stallman <rms@gnu.org>
parents:
14410
diff
changeset
|
4190 (bibtex-pop arg 'previous)) |
257 | 4191 |
4192 (defun bibtex-pop-next (arg) | |
4193 "Replace text of current field with the text of similar field in next entry. | |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4194 With arg, goes down ARG entries. Repeated, goes down so many times. May be |
257 | 4195 intermixed with \\[bibtex-pop-previous] (bibtex-pop-previous)." |
4196 (interactive "p") | |
14789
d68b71228abd
(bibtex-pop): New generic function which unifies the
Richard M. Stallman <rms@gnu.org>
parents:
14410
diff
changeset
|
4197 (bibtex-pop arg 'next)) |
257 | 4198 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4199 (defun bibtex-clean-entry (&optional new-key called-by-reformat) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4200 "Finish editing the current BibTeX entry and clean it up. |
97521
c383ec0fd021
(bibtex-entry-format): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
94670
diff
changeset
|
4201 Check that no required fields are empty and format entry dependent |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4202 on the value of `bibtex-entry-format'. |
27701
5e135f0faf1d
(bibtex-mode): Replaced manual splitting of path
Gerd Moellmann <gerd@gnu.org>
parents:
26711
diff
changeset
|
4203 If the reference key of the entry is empty or a prefix argument is given, |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
4204 calculate a new reference key. (Note: this works only if fields in entry |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4205 begin on separate lines prior to calling `bibtex-clean-entry' or if |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4206 'realign is contained in `bibtex-entry-format'.) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4207 Don't call `bibtex-clean-entry' on @Preamble entries. |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4208 At end of the cleaning process, the functions in |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4209 `bibtex-clean-entry-hook' are called with region narrowed to entry." |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4210 ;; Opt. arg CALLED-BY-REFORMAT is t if `bibtex-clean-entry' |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4211 ;; is called by `bibtex-reformat' |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4212 (interactive "P") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4213 (let ((case-fold-search t) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4214 (start (bibtex-beginning-of-entry)) |
70841
2a874a2efaf4
(bibtex-format-entry, bibtex-clean-entry):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70837
diff
changeset
|
4215 (_ (or (looking-at bibtex-any-entry-maybe-empty-head) |
2a874a2efaf4
(bibtex-format-entry, bibtex-clean-entry):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70837
diff
changeset
|
4216 (error "Not inside a BibTeX entry"))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4217 (entry-type (bibtex-type-in-head)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4218 (key (bibtex-key-in-head))) |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
4219 (cond ((bibtex-string= entry-type "preamble") |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
4220 ;; (bibtex-format-preamble) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
4221 (error "No clean up of @Preamble entries")) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
4222 ((bibtex-string= entry-type "string") |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
4223 (setq entry-type 'string)) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
4224 ;; (bibtex-format-string) |
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
4225 (t (bibtex-format-entry))) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4226 ;; set key |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4227 (when (or new-key (not key)) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4228 (setq key (bibtex-generate-autokey)) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4229 ;; Sometimes `bibtex-generate-autokey' returns an empty string |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4230 (if (or bibtex-autokey-edit-before-use (string= "" key)) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4231 (setq key (if (eq entry-type 'string) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4232 (bibtex-read-string-key key) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4233 (bibtex-read-key "Key to use: " key)))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4234 (save-excursion |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4235 (re-search-forward (if (eq entry-type 'string) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4236 bibtex-string-maybe-empty-head |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4237 bibtex-entry-maybe-empty-head)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4238 (if (match-beginning bibtex-key-in-head) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4239 (delete-region (match-beginning bibtex-key-in-head) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4240 (match-end bibtex-key-in-head))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4241 (insert key))) |
57815 | 4242 |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4243 (unless called-by-reformat |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4244 (let* ((end (save-excursion |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4245 (bibtex-end-of-entry) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4246 (if (re-search-forward |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4247 bibtex-entry-maybe-empty-head nil 'move) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4248 (goto-char (match-beginning 0))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4249 (point))) |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4250 (entry (buffer-substring start end)) |
57815 | 4251 ;; include the crossref key in index |
4252 (index (let ((bibtex-maintain-sorted-entries 'crossref)) | |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4253 (bibtex-entry-index))) ; moves point to end of head |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4254 error) |
57815 | 4255 ;; sorting |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4256 (if (and bibtex-maintain-sorted-entries |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4257 (not (and bibtex-sort-ignore-string-entries |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4258 (eq entry-type 'string)))) |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4259 (progn |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4260 (delete-region start end) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4261 (setq error (not (bibtex-prepare-new-entry index)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4262 start (point)) ; update start |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4263 (save-excursion (insert entry))) |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
4264 (bibtex-search-entry key) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4265 (setq error (or (/= (point) start) |
91913
ec78aa675c78
(bibtex-search-entry): Rename from bibtex-find-entry.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87650
diff
changeset
|
4266 (bibtex-search-entry key nil end)))) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4267 (if error |
57815 | 4268 (error "New inserted entry yields duplicate key")) |
87650
29fbecdf9527
(bibtex-initialize): New autoloaded command. Rename from function
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
87649
diff
changeset
|
4269 (dolist (buffer (bibtex-initialize)) |
57815 | 4270 (with-current-buffer buffer |
4271 (if (cdr (assoc-string key bibtex-reference-keys)) | |
4272 (error "Duplicate key in %s" (buffer-file-name))))) | |
4273 | |
102038
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
4274 ;; Only update `bibtex-strings' and `bibtex-reference-keys' |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
4275 ;; if they have been built already. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4276 (cond ((eq entry-type 'string) |
102038
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
4277 ;; We have a @String entry. |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
4278 (unless (or (functionp bibtex-strings) |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
4279 (assoc key bibtex-strings)) |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
4280 (push (cons key (bibtex-text-in-string |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
4281 (bibtex-parse-string) t)) |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
4282 bibtex-strings))) |
57815 | 4283 ;; We have a normal entry. |
102038
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
4284 ((not (functionp bibtex-reference-keys)) |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
4285 (let ((found (assoc key bibtex-reference-keys))) |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
4286 (cond ((not found) |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
4287 (push (cons key t) bibtex-reference-keys)) |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
4288 ((not (cdr found)) |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
4289 ;; Turn a crossref key into a header key |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
4290 (setq bibtex-reference-keys |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
4291 (cons (cons key t) |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
4292 (delete (list key) bibtex-reference-keys)))))) |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
4293 ;; If entry has a crossref key, it goes into the list |
b91b8e9fcb55
(bibtex-global-key-alist, bibtex-initialize): Exclude current buffer
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
101248
diff
changeset
|
4294 ;; `bibtex-reference-keys', too. |
57815 | 4295 (if (and (nth 1 index) |
4296 (not (assoc (nth 1 index) bibtex-reference-keys))) | |
4297 (push (list (nth 1 index)) bibtex-reference-keys))))) | |
4298 | |
4299 ;; final clean up | |
4300 (if bibtex-clean-entry-hook | |
4301 (save-excursion | |
4302 (save-restriction | |
4303 (bibtex-narrow-to-entry) | |
4304 (run-hooks 'bibtex-clean-entry-hook))))))) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4305 |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4306 (defun bibtex-fill-field-bounds (bounds justify &optional move) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4307 "Fill BibTeX field delimited by BOUNDS. |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4308 If JUSTIFY is non-nil justify as well. |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4309 If optional arg MOVE is non-nil move point to end of field." |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4310 (let ((end-field (copy-marker (bibtex-end-of-field bounds)))) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4311 (if (not justify) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4312 (goto-char (bibtex-start-of-text-in-field bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4313 (goto-char (bibtex-start-of-field bounds)) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4314 (forward-char) ; leading comma |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4315 (bibtex-delete-whitespace) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4316 (open-line 1) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4317 (forward-char) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4318 (indent-to-column (+ bibtex-entry-offset |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4319 bibtex-field-indentation)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4320 (re-search-forward "[ \t\n]*=" end-field) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4321 (replace-match "=") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4322 (forward-char -1) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4323 (if bibtex-align-at-equal-sign |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4324 (indent-to-column |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4325 (+ bibtex-entry-offset (- bibtex-text-indentation 2))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4326 (insert " ")) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4327 (forward-char) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4328 (bibtex-delete-whitespace) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4329 (if bibtex-align-at-equal-sign |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4330 (insert " ") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4331 (indent-to-column bibtex-text-indentation))) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4332 ;; Paragraphs within fields are not preserved. Bother? |
65776
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
4333 (fill-region-as-paragraph (line-beginning-position) end-field |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
4334 default-justification nil (point)) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4335 (if move (goto-char end-field)))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4336 |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4337 (defun bibtex-fill-field (&optional justify) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4338 "Like \\[fill-paragraph], but fill current BibTeX field. |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4339 If optional prefix JUSTIFY is non-nil justify as well. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4340 In BibTeX mode this function is bound to `fill-paragraph-function'." |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4341 (interactive "*P") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4342 (let ((pnt (copy-marker (point))) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4343 (bounds (bibtex-enclosing-field t))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4344 (bibtex-fill-field-bounds bounds justify) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4345 (goto-char pnt))) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4346 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4347 (defun bibtex-fill-entry () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4348 "Fill current BibTeX entry. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4349 Realign entry, so that every field starts on a separate line. Field |
19461 | 4350 names appear in column `bibtex-field-indentation', field text starts in |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4351 column `bibtex-text-indentation' and continuation lines start here, too. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4352 If `bibtex-align-at-equal-sign' is non-nil, align equal signs, too." |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4353 (interactive "*") |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4354 (let ((pnt (copy-marker (point))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4355 (end (copy-marker (bibtex-end-of-entry))) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4356 (beg (bibtex-beginning-of-entry)) ; move point |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4357 bounds) |
18247
ae094c1a4334
(bibtex-delete-whitespace, bibtex-current-line)
Richard M. Stallman <rms@gnu.org>
parents:
18212
diff
changeset
|
4358 (bibtex-delete-whitespace) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4359 (indent-to-column bibtex-entry-offset) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4360 (bibtex-beginning-first-field beg) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4361 (while (setq bounds (bibtex-parse-field)) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4362 (bibtex-fill-field-bounds bounds t t)) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4363 (if (looking-at ",") |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4364 (forward-char)) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4365 (skip-chars-backward " \t\n") |
18247
ae094c1a4334
(bibtex-delete-whitespace, bibtex-current-line)
Richard M. Stallman <rms@gnu.org>
parents:
18212
diff
changeset
|
4366 (bibtex-delete-whitespace) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4367 (open-line 1) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4368 (forward-char) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4369 (indent-to-column bibtex-entry-offset) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4370 (goto-char pnt))) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4371 |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4372 (defun bibtex-realign () |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4373 "Realign BibTeX entries such that they are separated by one blank line." |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4374 (goto-char (point-min)) |
65776
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
4375 (let ((case-fold-search t) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4376 (entry-type (concat "[ \t\n]*\\(" bibtex-entry-type "\\)"))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4377 ;; No blank lines prior to the first entry if there no |
57815 | 4378 ;; non-white characters in front of it. |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4379 (when (looking-at entry-type) |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4380 (replace-match "\\1")) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4381 ;; Entries are separated by one blank line. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4382 (while (re-search-forward entry-type nil t) |
57815 | 4383 (replace-match "\n\n\\1")) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4384 ;; One blank line past the last entry if it is followed by |
57815 | 4385 ;; non-white characters, no blank line otherwise. |
4386 (beginning-of-line) | |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4387 (when (re-search-forward bibtex-entry-type nil t) |
57815 | 4388 (bibtex-end-of-entry) |
4389 (bibtex-delete-whitespace) | |
4390 (open-line (if (eobp) 1 2))))) | |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4391 |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4392 (defun bibtex-reformat (&optional read-options) |
19461 | 4393 "Reformat all BibTeX entries in buffer or region. |
57815 | 4394 Without prefix argument, reformatting is based on `bibtex-entry-format'. |
19461 | 4395 With prefix argument, read options for reformatting from minibuffer. |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4396 With \\[universal-argument] \\[universal-argument] prefix argument, reuse previous answers (if any) again. |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4397 If mark is active reformat entries in region, if not in whole buffer." |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4398 (interactive "*P") |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4399 (let* ((pnt (point)) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4400 (use-previous-options |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4401 (and (equal (prefix-numeric-value read-options) 16) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4402 (or bibtex-reformat-previous-options |
27701
5e135f0faf1d
(bibtex-mode): Replaced manual splitting of path
Gerd Moellmann <gerd@gnu.org>
parents:
26711
diff
changeset
|
4403 bibtex-reformat-previous-reference-keys))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4404 (bibtex-entry-format |
57815 | 4405 (cond (read-options |
4406 (if use-previous-options | |
4407 bibtex-reformat-previous-options | |
4408 (setq bibtex-reformat-previous-options | |
4409 (mapcar (lambda (option) | |
4410 (if (y-or-n-p (car option)) (cdr option))) | |
4411 `(("Realign entries (recommended)? " . 'realign) | |
4412 ("Remove empty optional and alternative fields? " . 'opts-or-alts) | |
4413 ("Remove delimiters around pure numerical fields? " . 'numerical-fields) | |
4414 (,(concat (if bibtex-comma-after-last-field "Insert" "Remove") | |
4415 " comma at end of entry? ") . 'last-comma) | |
4416 ("Replace double page dashes by single ones? " . 'page-dashes) | |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4417 ("Delete whitespace at the beginning and end of fields? " . 'whitespace) |
57815 | 4418 ("Inherit booktitle? " . 'inherit-booktitle) |
4419 ("Force delimiters? " . 'delimiters) | |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4420 ("Unify case of entry types and field names? " . 'unify-case) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4421 ("Enclose parts of field entries by braces? " . 'braces) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4422 ("Replace parts of field entries by string constants? " . 'strings)))))) |
57815 | 4423 ;; Do not include required-fields because `bibtex-reformat' |
4424 ;; cannot handle the error messages of `bibtex-format-entry'. | |
4425 ;; Use `bibtex-validate' to check for required fields. | |
4426 ((eq t bibtex-entry-format) | |
4427 '(realign opts-or-alts numerical-fields delimiters | |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4428 last-comma page-dashes unify-case inherit-booktitle |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4429 whitespace braces strings)) |
57815 | 4430 (t |
106426
9e50cc22823c
(bibtex-map-entries): Use marker to keep
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
106385
diff
changeset
|
4431 (cons 'realign (remove 'required-fields bibtex-entry-format))))) |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4432 (reformat-reference-keys |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4433 (if read-options |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4434 (if use-previous-options |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4435 bibtex-reformat-previous-reference-keys |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4436 (setq bibtex-reformat-previous-reference-keys |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4437 (y-or-n-p "Generate new reference keys automatically? "))))) |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4438 (bibtex-sort-ignore-string-entries t) |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4439 bibtex-autokey-edit-before-use) |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4440 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4441 (save-restriction |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4442 (if mark-active (narrow-to-region (region-beginning) (region-end))) |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4443 (if (memq 'realign bibtex-entry-format) |
57815 | 4444 (bibtex-realign)) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4445 (bibtex-progress-message "Formatting" 1) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4446 (bibtex-map-entries (lambda (key beg end) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4447 (bibtex-progress-message) |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4448 (bibtex-clean-entry reformat-reference-keys t))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4449 (bibtex-progress-message 'done)) |
57815 | 4450 (when reformat-reference-keys |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4451 (kill-local-variable 'bibtex-reference-keys) |
57815 | 4452 (when bibtex-maintain-sorted-entries |
4453 (bibtex-progress-message "Sorting" 1) | |
4454 (bibtex-sort-buffer) | |
4455 (bibtex-progress-message 'done))) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4456 (goto-char pnt))) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4457 |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4458 (defun bibtex-convert-alien (&optional read-options) |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
4459 "Make an alien BibTeX buffer fully usable by BibTeX mode. |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4460 If a file does not conform with all standards used by BibTeX mode, |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
4461 some of the high-level features of BibTeX mode are not available. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4462 This function tries to convert current buffer to conform with these standards. |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4463 With prefix argument READ-OPTIONS non-nil, read options for reformatting |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4464 entries from minibuffer." |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4465 (interactive "*P") |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4466 (message "Starting to validate buffer...") |
91992
d490a1f4c1b9
(bibtex-convert-alien): Do not use optional args in calls of sit-for.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
91913
diff
changeset
|
4467 (sit-for 1) |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4468 (bibtex-realign) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4469 (deactivate-mark) ; So `bibtex-validate' works on the whole buffer. |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4470 (if (not (let (bibtex-maintain-sorted-entries) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4471 (bibtex-validate))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4472 (message "Correct errors and call `bibtex-convert-alien' again") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4473 (message "Starting to reformat entries...") |
91992
d490a1f4c1b9
(bibtex-convert-alien): Do not use optional args in calls of sit-for.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
91913
diff
changeset
|
4474 (sit-for 2) |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4475 (bibtex-reformat read-options) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4476 (goto-char (point-max)) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4477 (message "Buffer is now parsable. Please save it."))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4478 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4479 (defun bibtex-complete () |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4480 "Complete word fragment before point according to context. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4481 If point is inside key or crossref field perform key completion based on |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4482 `bibtex-reference-keys'. Inside a month field perform key completion |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4483 based on `bibtex-predefined-month-strings'. Inside any other field |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4484 \(including a String or Preamble definition) perform string completion |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4485 based on `bibtex-strings'. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4486 An error is signaled if point is outside key or BibTeX field." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4487 (interactive) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4488 (let ((pnt (point)) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4489 (case-fold-search t) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4490 bounds name compl) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4491 (save-excursion |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4492 (if (and (setq bounds (bibtex-enclosing-field nil t)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4493 (>= pnt (bibtex-start-of-text-in-field bounds)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4494 (<= pnt (bibtex-end-of-text-in-field bounds))) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4495 (setq name (bibtex-name-in-field bounds t) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4496 compl (cond ((bibtex-string= name "crossref") |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4497 ;; point is in crossref field |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4498 'crossref-key) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4499 ((bibtex-string= name "month") |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4500 ;; point is in month field |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4501 bibtex-predefined-month-strings) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4502 ;; point is in other field |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4503 (t (bibtex-strings)))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4504 (bibtex-beginning-of-entry) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4505 (cond ((setq bounds (bibtex-parse-string t)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4506 ;; point is inside a @String key |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4507 (cond ((and (>= pnt (nth 1 (car bounds))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4508 (<= pnt (nth 2 (car bounds)))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4509 (setq compl 'string)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4510 ;; point is inside a @String field |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4511 ((and (>= pnt (bibtex-start-of-text-in-string bounds)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4512 (<= pnt (bibtex-end-of-text-in-string bounds))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4513 (setq compl (bibtex-strings))))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4514 ;; point is inside a @Preamble field |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4515 ((setq bounds (bibtex-parse-preamble)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4516 (if (and (>= pnt (bibtex-start-of-text-in-string bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4517 (<= pnt (bibtex-end-of-text-in-string bounds))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4518 (setq compl (bibtex-strings)))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4519 ((and (looking-at bibtex-entry-maybe-empty-head) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4520 ;; point is inside a key |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4521 (or (and (match-beginning bibtex-key-in-head) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4522 (>= pnt (match-beginning bibtex-key-in-head)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4523 (<= pnt (match-end bibtex-key-in-head))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4524 ;; or point is on empty key |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4525 (and (not (match-beginning bibtex-key-in-head)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4526 (= pnt (match-end 0))))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4527 (setq compl 'key))))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4528 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4529 (cond ((eq compl 'key) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4530 ;; key completion: no cleanup needed |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4531 (setq choose-completion-string-functions nil) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4532 (let (completion-ignore-case) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4533 (bibtex-complete-internal (bibtex-global-key-alist)))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4534 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4535 ((eq compl 'crossref-key) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4536 ;; crossref key completion |
67933
679e4542aaa9
(bibtex-mode): Make completion-ignore-case
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67897
diff
changeset
|
4537 ;; |
679e4542aaa9
(bibtex-mode): Make completion-ignore-case
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67897
diff
changeset
|
4538 ;; If we quit the *Completions* buffer without requesting |
679e4542aaa9
(bibtex-mode): Make completion-ignore-case
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67897
diff
changeset
|
4539 ;; a completion, `choose-completion-string-functions' is still |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4540 ;; non-nil. Therefore, `choose-completion-string-functions' is |
67933
679e4542aaa9
(bibtex-mode): Make completion-ignore-case
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67897
diff
changeset
|
4541 ;; always set (either to non-nil or nil) when a new completion |
679e4542aaa9
(bibtex-mode): Make completion-ignore-case
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67897
diff
changeset
|
4542 ;; is requested. |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4543 (let (completion-ignore-case) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4544 (setq choose-completion-string-functions |
105601
68686d39c93a
Replace completion-base-size by completion-base-position to fix bugs
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105372
diff
changeset
|
4545 (lambda (choice buffer base-position &rest ignored) |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4546 (setq choose-completion-string-functions nil) |
105601
68686d39c93a
Replace completion-base-size by completion-base-position to fix bugs
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105372
diff
changeset
|
4547 (choose-completion-string choice buffer base-position) |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4548 (bibtex-complete-crossref-cleanup choice) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4549 t)) ; needed by choose-completion-string-functions |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4550 (bibtex-complete-crossref-cleanup |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4551 (bibtex-complete-internal (bibtex-global-key-alist))))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4552 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4553 ((eq compl 'string) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4554 ;; string key completion: no cleanup needed |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4555 (setq choose-completion-string-functions nil) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4556 (let ((completion-ignore-case t)) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4557 (bibtex-complete-internal bibtex-strings))) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4558 |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4559 (compl |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4560 ;; string completion |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4561 (let ((completion-ignore-case t)) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4562 (setq choose-completion-string-functions |
105601
68686d39c93a
Replace completion-base-size by completion-base-position to fix bugs
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105372
diff
changeset
|
4563 `(lambda (choice buffer base-position &rest ignored) |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4564 (setq choose-completion-string-functions nil) |
105601
68686d39c93a
Replace completion-base-size by completion-base-position to fix bugs
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
105372
diff
changeset
|
4565 (choose-completion-string choice buffer base-position) |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4566 (bibtex-complete-string-cleanup choice ',compl) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4567 t)) ; needed by `choose-completion-string-functions' |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4568 (bibtex-complete-string-cleanup (bibtex-complete-internal compl) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4569 compl))) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4570 |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4571 (t (setq choose-completion-string-functions nil) |
67933
679e4542aaa9
(bibtex-mode): Make completion-ignore-case
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67897
diff
changeset
|
4572 (error "Point outside key or BibTeX field"))))) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4573 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4574 (defun bibtex-Article () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4575 "Insert a new BibTeX @Article entry; see also `bibtex-entry'." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4576 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4577 (bibtex-entry "Article")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4578 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4579 (defun bibtex-Book () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4580 "Insert a new BibTeX @Book entry; see also `bibtex-entry'." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4581 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4582 (bibtex-entry "Book")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4583 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4584 (defun bibtex-Booklet () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4585 "Insert a new BibTeX @Booklet entry; see also `bibtex-entry'." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4586 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4587 (bibtex-entry "Booklet")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4588 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4589 (defun bibtex-InBook () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4590 "Insert a new BibTeX @InBook entry; see also `bibtex-entry'." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4591 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4592 (bibtex-entry "InBook")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4593 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4594 (defun bibtex-InCollection () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4595 "Insert a new BibTeX @InCollection entry; see also `bibtex-entry'." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4596 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4597 (bibtex-entry "InCollection")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4598 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4599 (defun bibtex-InProceedings () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4600 "Insert a new BibTeX @InProceedings entry; see also `bibtex-entry'." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4601 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4602 (bibtex-entry "InProceedings")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4603 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4604 (defun bibtex-Manual () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4605 "Insert a new BibTeX @Manual entry; see also `bibtex-entry'." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4606 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4607 (bibtex-entry "Manual")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4608 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4609 (defun bibtex-MastersThesis () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4610 "Insert a new BibTeX @MastersThesis entry; see also `bibtex-entry'." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4611 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4612 (bibtex-entry "MastersThesis")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4613 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4614 (defun bibtex-Misc () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4615 "Insert a new BibTeX @Misc entry; see also `bibtex-entry'." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4616 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4617 (bibtex-entry "Misc")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4618 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4619 (defun bibtex-PhdThesis () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4620 "Insert a new BibTeX @PhdThesis entry; see also `bibtex-entry'." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4621 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4622 (bibtex-entry "PhdThesis")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4623 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4624 (defun bibtex-Proceedings () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4625 "Insert a new BibTeX @Proceedings entry; see also `bibtex-entry'." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4626 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4627 (bibtex-entry "Proceedings")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4628 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4629 (defun bibtex-TechReport () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4630 "Insert a new BibTeX @TechReport entry; see also `bibtex-entry'." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4631 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4632 (bibtex-entry "TechReport")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4633 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4634 (defun bibtex-Unpublished () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4635 "Insert a new BibTeX @Unpublished entry; see also `bibtex-entry'." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4636 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4637 (bibtex-entry "Unpublished")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4638 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4639 (defun bibtex-String (&optional key) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4640 "Insert a new BibTeX @String entry with key KEY." |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4641 (interactive (list (bibtex-read-string-key))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4642 (let ((bibtex-maintain-sorted-entries |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4643 (unless bibtex-sort-ignore-string-entries |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4644 bibtex-maintain-sorted-entries)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4645 endpos) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4646 (unless (bibtex-prepare-new-entry (list key nil "String")) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4647 (error "Entry with key `%s' already exists" key)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4648 (if (zerop (length key)) (setq key nil)) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4649 (indent-to-column bibtex-entry-offset) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4650 (insert "@String" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4651 (bibtex-entry-left-delimiter)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4652 (if key |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4653 (insert key) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4654 (setq endpos (point))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4655 (insert " = " |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4656 (bibtex-field-left-delimiter)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4657 (if key |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4658 (setq endpos (point))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4659 (insert (bibtex-field-right-delimiter) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4660 (bibtex-entry-right-delimiter) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4661 "\n") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4662 (goto-char endpos))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4663 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4664 (defun bibtex-Preamble () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4665 "Insert a new BibTeX @Preamble entry." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4666 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4667 (bibtex-move-outside-of-entry) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4668 (indent-to-column bibtex-entry-offset) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4669 (insert "@Preamble" |
63470
c318ec40e95f
(bibtex-Preamble): Enclose BibTeX preamble by field delimiters.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62077
diff
changeset
|
4670 (bibtex-entry-left-delimiter) |
c318ec40e95f
(bibtex-Preamble): Enclose BibTeX preamble by field delimiters.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62077
diff
changeset
|
4671 (bibtex-field-left-delimiter)) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4672 (let ((endpos (point))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4673 (insert (bibtex-field-right-delimiter) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4674 (bibtex-entry-right-delimiter) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4675 "\n") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4676 (goto-char endpos))) |
257 | 4677 |
70250
5d4423d8a6f5
(bibtex-url): New optional arg no-browse. Return the URL or nil if
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
70249
diff
changeset
|
4678 (defun bibtex-url (&optional pos no-browse) |
57815 | 4679 "Browse a URL for the BibTeX entry at point. |
4680 Optional POS is the location of the BibTeX entry. | |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4681 The URL is generated using the schemes defined in `bibtex-generate-url-list' |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4682 \(see there\). If multiple schemes match for this entry, or the same scheme |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4683 matches more than once, use the one for which the first step's match is the |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4684 closest to POS. The URL is passed to `browse-url' unless NO-BROWSE is t. |
70250
5d4423d8a6f5
(bibtex-url): New optional arg no-browse. Return the URL or nil if
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
70249
diff
changeset
|
4685 Return the URL or nil if none can be generated." |
57815 | 4686 (interactive) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4687 (unless pos (setq pos (point))) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4688 (save-excursion |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4689 (goto-char pos) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4690 (bibtex-beginning-of-entry) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4691 (let ((end (save-excursion (bibtex-end-of-entry))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4692 (fields-alist (save-excursion (bibtex-parse-entry t))) |
57815 | 4693 ;; Always ignore case, |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4694 (case-fold-search t) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4695 text url scheme obj fmt fl-match step) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4696 ;; The return value of `bibtex-parse-entry' (i.e., FIELDS-ALIST) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4697 ;; is always used to generate the URL. However, if the BibTeX |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4698 ;; entry contains more than one URL, we have multiple matches |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4699 ;; for the first step defining the generation of the URL. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4700 ;; Therefore, we try to initiate the generation of the URL |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4701 ;; based on the match of `bibtex-font-lock-url' that is the |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4702 ;; closest to POS. If that fails (no match found) we try to |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4703 ;; initiate the generation of the URL based on the properly |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4704 ;; concatenated CONTENT of the field as returned by |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4705 ;; `bibtex-text-in-field-bounds'. The latter approach can |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4706 ;; differ from the former because `bibtex-font-lock-url' uses |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4707 ;; the buffer itself. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4708 (while (bibtex-font-lock-url end t) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4709 (push (list (bibtex-dist pos (match-beginning 0) (match-end 0)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4710 (match-beginning 0) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4711 (buffer-substring-no-properties |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4712 (match-beginning 0) (match-end 0))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4713 fl-match) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4714 ;; `bibtex-font-lock-url' moves point to end of match. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4715 (forward-char)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4716 (when fl-match |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4717 (setq fl-match (car (sort fl-match (lambda (x y) (< (car x) (car y)))))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4718 (goto-char (nth 1 fl-match)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4719 (bibtex-beginning-of-field) (re-search-backward ",") |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4720 (let* ((bounds (bibtex-parse-field)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4721 (name (bibtex-name-in-field bounds)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4722 (content (bibtex-text-in-field-bounds bounds t)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4723 (lst bibtex-generate-url-list)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4724 ;; This match can fail when CONTENT differs from text in buffer. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4725 (when (string-match (regexp-quote (nth 2 fl-match)) content) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4726 ;; TEXT is the part of CONTENT that starts with the match |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4727 ;; of `bibtex-font-lock-url' we are looking for. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4728 (setq text (substring content (match-beginning 0))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4729 (while (and (not url) (setq scheme (pop lst))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4730 ;; Verify the match of `bibtex-font-lock-url' by |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4731 ;; comparing with TEXT. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4732 (when (and (bibtex-string= (caar scheme) name) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4733 (string-match (cdar scheme) text)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4734 (setq url t scheme (cdr scheme))))))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4735 |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4736 ;; If the match of `bibtex-font-lock-url' was not approved |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4737 ;; parse FIELDS-ALIST, i.e., the output of `bibtex-parse-entry'. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4738 (unless url |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4739 (let ((lst bibtex-generate-url-list)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4740 (while (and (not url) (setq scheme (pop lst))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4741 (when (and (setq text (cdr (assoc-string (caar scheme) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4742 fields-alist t))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4743 (string-match (cdar scheme) text)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4744 (setq url t scheme (cdr scheme)))))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4745 |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4746 (when url |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4747 (setq url (if (null scheme) (match-string 0 text) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4748 (if (stringp (car scheme)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4749 (setq fmt (pop scheme))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4750 (dotimes (i (length scheme)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4751 (setq step (nth i scheme)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4752 ;; The first step shall use TEXT as obtained earlier. |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4753 (unless (= i 0) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4754 (setq text (cdr (assoc-string (car step) fields-alist t)))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4755 (if (string-match (nth 1 step) text) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4756 (push (cond ((functionp (nth 2 step)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4757 (funcall (nth 2 step) text)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4758 ((numberp (nth 2 step)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4759 (match-string (nth 2 step) text)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4760 (t |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4761 (replace-match (nth 2 step) t nil text))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4762 obj) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4763 ;; If SCHEME is set up correctly, |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4764 ;; we should never reach this point |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4765 (error "Match failed: %s" text))) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4766 (if fmt (apply 'format fmt (nreverse obj)) |
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4767 (apply 'concat (nreverse obj))))) |
105372
bd2966850aac
Use `called-interactively-p' instead of `interactive-p'.
Juanma Barranquero <lekktu@gmail.com>
parents:
105170
diff
changeset
|
4768 (if (called-interactively-p 'interactive) (message "%s" url)) |
81591
33952a25e52a
(bibtex-entry-format): New options `whitespace', `braces', and `string'.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
77281
diff
changeset
|
4769 (unless no-browse (browse-url url))) |
105372
bd2966850aac
Use `called-interactively-p' instead of `interactive-p'.
Juanma Barranquero <lekktu@gmail.com>
parents:
105170
diff
changeset
|
4770 (if (and (not url) (called-interactively-p 'interactive)) |
bd2966850aac
Use `called-interactively-p' instead of `interactive-p'.
Juanma Barranquero <lekktu@gmail.com>
parents:
105170
diff
changeset
|
4771 (message "No URL known.")) |
70250
5d4423d8a6f5
(bibtex-url): New optional arg no-browse. Return the URL or nil if
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
70249
diff
changeset
|
4772 url))) |
57054
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4773 |
257 | 4774 |
12700
b3a8ee2da96a
Add keywords and comments as per conventions.
Richard M. Stallman <rms@gnu.org>
parents:
12028
diff
changeset
|
4775 ;; Make BibTeX a Feature |
257 | 4776 |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4777 (provide 'bibtex) |
2602
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
4778 |
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
4779 ;;; bibtex.el ends here |