Mercurial > emacs
annotate lisp/textmodes/bibtex.el @ 71710:dbbc0b93cfeb
(Forcing Redisplay, Displaying Messages, Temporary Displays, Font Selection,
Auto Faces, Font Lookup, Fringe Indicators, Display Margins, Image Descriptors,
Showing Images, Image Cache, Button Types, Making Buttons, Manipulating
Buttons, Button Buffer Commands, Display Table Format, Glyphs): Remove
@tindex.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Sat, 08 Jul 2006 18:11:49 +0000 |
parents | da5fa425123d |
children | 9429d986b2d1 a8190f7e546e |
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 |
64751
5b1a238fcbb4
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64084
diff
changeset
|
3 ;; Copyright (C) 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2002, 2003, |
68648
067115a6e738
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
68265
diff
changeset
|
4 ;; 2004, 2005, 2006 Free Software Foundation, Inc. |
845 | 5 |
14789
d68b71228abd
(bibtex-pop): New generic function which unifies the
Richard M. Stallman <rms@gnu.org>
parents:
14410
diff
changeset
|
6 ;; Author: Stefan Schoef <schoef@offis.uni-oldenburg.de> |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
7 ;; Bengt Martensson <bengt@mathematik.uni-Bremen.de> |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
8 ;; Mark Shapiro <shapiro@corto.inria.fr> |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
9 ;; Mike Newton <newton@gumby.cs.caltech.edu> |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
10 ;; Aaron Larson <alarson@src.honeywell.com> |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
11 ;; Dirk Herrmann <D.Herrmann@tu-bs.de> |
45849 | 12 ;; Maintainer: Roland Winkler <roland.winkler@physik.uni-erlangen.de> |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
13 ;; Keywords: BibTeX, LaTeX, TeX |
810
80303373daae
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
807
diff
changeset
|
14 |
257 | 15 ;; This file is part of GNU Emacs. |
16 | |
17 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
18 ;; it under the terms of the GNU General Public License as published by | |
1851 | 19 ;; the Free Software Foundation; either version 2, or (at your option) |
257 | 20 ;; any later version. |
21 | |
22 ;; GNU Emacs is distributed in the hope that it will be useful, | |
23 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
24 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
25 ;; GNU General Public License for more details. | |
26 | |
27 ;; You should have received a copy of the GNU General Public License | |
14169 | 28 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
64084 | 29 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
30 ;; Boston, MA 02110-1301, USA. | |
257 | 31 |
12700
b3a8ee2da96a
Add keywords and comments as per conventions.
Richard M. Stallman <rms@gnu.org>
parents:
12028
diff
changeset
|
32 ;;; Commentary: |
14169 | 33 |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
34 ;; Major mode for editing and validating BibTeX files. |
257 | 35 |
12700
b3a8ee2da96a
Add keywords and comments as per conventions.
Richard M. Stallman <rms@gnu.org>
parents:
12028
diff
changeset
|
36 ;; Usage: |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
37 ;; See documentation for function bibtex-mode or type "\M-x describe-mode" |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
38 ;; 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
|
39 |
12700
b3a8ee2da96a
Add keywords and comments as per conventions.
Richard M. Stallman <rms@gnu.org>
parents:
12028
diff
changeset
|
40 ;; Todo: |
b3a8ee2da96a
Add keywords and comments as per conventions.
Richard M. Stallman <rms@gnu.org>
parents:
12028
diff
changeset
|
41 ;; Distribute texinfo file. |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
42 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
43 ;;; Code: |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
44 |
57815 | 45 (require 'button) |
46 | |
26711
eac840d283b6
(bibtex-hs-forward-sexp): Added to support
Gerd Moellmann <gerd@gnu.org>
parents:
25444
diff
changeset
|
47 |
12700
b3a8ee2da96a
Add keywords and comments as per conventions.
Richard M. Stallman <rms@gnu.org>
parents:
12028
diff
changeset
|
48 ;; User Options: |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
49 |
19460 | 50 (defgroup bibtex nil |
64054
23a07b9b6687
(bibtex, bibtex-autokey): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents:
63470
diff
changeset
|
51 "BibTeX mode." |
19460 | 52 :group 'tex |
53 :prefix "bibtex-") | |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
54 |
19460 | 55 (defgroup bibtex-autokey nil |
64054
23a07b9b6687
(bibtex, bibtex-autokey): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents:
63470
diff
changeset
|
56 "Generate automatically a key from the author/editor and the title field." |
19460 | 57 :group 'bibtex |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
58 :prefix "bibtex-autokey-") |
19460 | 59 |
60 (defcustom bibtex-mode-hook nil | |
61 "List of functions to call on entry to BibTeX mode." | |
62 :group 'bibtex | |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
63 :type 'hook) |
19460 | 64 |
65 (defcustom bibtex-field-delimiters 'braces | |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
66 "Type of field delimiters. Allowed values are `braces' or `double-quotes'." |
19460 | 67 :group 'bibtex |
68 :type '(choice (const braces) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
69 (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
|
70 |
19460 | 71 (defcustom bibtex-entry-delimiters 'braces |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
72 "Type of entry delimiters. Allowed values are `braces' or `parentheses'." |
19460 | 73 :group 'bibtex |
74 :type '(choice (const braces) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
75 (const parentheses))) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
76 |
19460 | 77 (defcustom bibtex-include-OPTcrossref '("InProceedings" "InCollection") |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
78 "List of BibTeX entries that get an OPTcrossref field." |
19460 | 79 :group 'bibtex |
80 :type '(repeat string)) | |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
81 |
19460 | 82 (defcustom bibtex-include-OPTkey t |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
83 "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
|
84 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
|
85 If this is a function, call it to generate the initial field text." |
19460 | 86 :group 'bibtex |
87 :type '(choice (const :tag "None" nil) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
88 (string :tag "Initial text") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
89 (function :tag "Initialize Function" :value fun) |
70808
0c087a8f2e1c
(bibtex-maintain-sorted-entries): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
70250
diff
changeset
|
90 (const :tag "Default" t))) |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
91 (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
|
92 |
19460 | 93 (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
|
94 '(("annote" "Personal annotation (ignored)")) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
95 "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
|
96 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
|
97 CROSSREF-OPTIONAL lists in `bibtex-entry-field-alist' (which see)." |
19460 | 98 :group 'bibtex |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
99 :type '(repeat (group (string :tag "Field") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
100 (string :tag "Comment") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
101 (option (group :inline t |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
102 :extra-offset -4 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
103 (choice :tag "Init" :value "" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
104 string |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
105 function)))))) |
70249
eb2b6bd1c6f0
(bibtex-user-optional-fields): Mark as risky.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
70210
diff
changeset
|
106 (put 'bibtex-user-optional-fields 'risky-local-variable t) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
107 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
108 (defcustom bibtex-entry-format |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
109 '(opts-or-alts required-fields numerical-fields) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
110 "Type of formatting performed by `bibtex-clean-entry'. |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
111 It may be t, nil, or a list of symbols out of the following: |
19461 | 112 opts-or-alts Delete empty optional and alternative fields and |
113 remove OPT and ALT prefixes from used fields. | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
114 required-fields Signal an error if a required field is missing. |
19461 | 115 numerical-fields Delete delimiters around numeral fields. |
116 page-dashes Change double dashes in page field to single dash | |
117 (for scribe compatibility). | |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
118 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
|
119 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
|
120 of the title field of the crossreferenced entry. |
19461 | 121 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
|
122 signs (depending on the value of |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
123 `bibtex-align-at-equal-sign') begin in the same column. |
19461 | 124 last-comma Add or delete comma on end of last field in entry, |
125 according to value of `bibtex-comma-after-last-field'. | |
126 delimiters Change delimiters according to variables | |
127 `bibtex-field-delimiters' and `bibtex-entry-delimiters'. | |
128 unify-case Change case of entry and field names. | |
129 | |
130 The value t means do all of the above formatting actions. | |
131 The value nil means do no formatting at all." | |
19460 | 132 :group 'bibtex |
133 :type '(choice (const :tag "None" nil) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
134 (const :tag "All" t) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
135 (set :menu-tag "Some" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
136 (const opts-or-alts) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
137 (const required-fields) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
138 (const numerical-fields) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
139 (const page-dashes) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
140 (const inherit-booktitle) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
141 (const realign) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
142 (const last-comma) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
143 (const delimiters) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
144 (const unify-case)))) |
257 | 145 |
19460 | 146 (defcustom bibtex-clean-entry-hook nil |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
147 "List of functions to call when entry has been cleaned. |
19461 | 148 Functions are called with point inside the cleaned entry, and the buffer |
19460 | 149 narrowed to just the entry." |
150 :group 'bibtex | |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
151 :type 'hook) |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
152 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
153 (defcustom bibtex-maintain-sorted-entries nil |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
154 "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
|
155 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
|
156 plain or t All entries are sorted alphabetically. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
157 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
|
158 crossref field. These crossrefed entries are placed in |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
159 alphabetical order immediately preceding the main entry. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
160 entry-class The entries are divided into classes according to their |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
161 entry name, see `bibtex-sort-entry-class'. Within each class |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
162 the entries are sorted alphabetically. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
163 See also `bibtex-sort-ignore-string-entries'." |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
164 :group 'bibtex |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
165 :type '(choice (const nil) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
166 (const plain) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
167 (const crossref) |
70808
0c087a8f2e1c
(bibtex-maintain-sorted-entries): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
70250
diff
changeset
|
168 (const entry-class) |
0c087a8f2e1c
(bibtex-maintain-sorted-entries): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
70250
diff
changeset
|
169 (const t))) |
0c087a8f2e1c
(bibtex-maintain-sorted-entries): Mark as safe.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
70250
diff
changeset
|
170 (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
|
171 '(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
|
172 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
173 (defcustom bibtex-sort-entry-class |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
174 '(("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
|
175 (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
|
176 ("Book" "Proceedings")) |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
177 "List of classes of BibTeX entry names, 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
|
178 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
|
179 entries are ordered according to the classes they belong to. Each |
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
180 class contains a list of entry names. 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
|
181 to all entries not explicitly mentioned." |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
182 :group 'BibTeX |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
183 :type '(repeat (choice :tag "Class" |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
184 (const :tag "catch-all" (catch-all)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
185 (repeat :tag "Entry name" string)))) |
71044
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
186 (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
|
187 (lambda (x) (let ((OK t)) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
188 (while (consp x) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
189 (let ((y (pop x))) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
190 (while (consp y) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
191 (let ((z (pop y))) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
192 (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
|
193 (setq OK nil)))) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
194 (unless (null y) (setq OK nil)))) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
195 (unless (null x) (setq OK nil)) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
196 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
|
197 |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
198 (defcustom bibtex-sort-ignore-string-entries t |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
199 "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
|
200 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
|
201 \(e.g., sorting, locating alphabetical position for new entries, etc.)." |
19460 | 202 :group 'bibtex |
203 :type 'boolean) | |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
204 |
19460 | 205 (defcustom bibtex-field-kill-ring-max 20 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
206 "Max length of `bibtex-field-kill-ring' before discarding oldest elements." |
19460 | 207 :group 'bibtex |
208 :type 'integer) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
209 |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
210 (defcustom bibtex-entry-kill-ring-max 20 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
211 "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
|
212 :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
|
213 :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
|
214 |
19460 | 215 (defcustom bibtex-parse-keys-timeout 60 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
216 "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
|
217 Parsing initializes `bibtex-reference-keys' and `bibtex-strings'." |
19460 | 218 :group 'bibtex |
219 :type 'integer) | |
15637
405b1ecbf8ba
(bibtex-reference-head): Allow spaces and tabs between
Karl Heuer <kwzh@gnu.org>
parents:
15565
diff
changeset
|
220 |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
221 (defcustom bibtex-parse-keys-fast t |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
222 "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
|
223 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
|
224 :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
|
225 :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
|
226 |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
227 (defvar bibtex-entry-field-alist |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
228 '(("Article" |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
229 ((("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
|
230 ("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
|
231 ("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
|
232 ("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
|
233 (("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
|
234 ("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
|
235 ("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
|
236 ("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
|
237 ("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
|
238 ((("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
|
239 ("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
|
240 (("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
|
241 ("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
|
242 ("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
|
243 ("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
|
244 ("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
|
245 ("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
|
246 ("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
|
247 ("Book" |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
248 ((("author" "Author1 [and Author2 ...] [and others]" nil t) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
249 ("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
|
250 ("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
|
251 ("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
|
252 ("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
|
253 (("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
|
254 ("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
|
255 ("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
|
256 ("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
|
257 ("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
|
258 ("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
|
259 ("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
|
260 ((("author" "Author1 [and Author2 ...] [and others]" nil t) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
261 ("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
|
262 ("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
|
263 (("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
|
264 ("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
|
265 ("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
|
266 ("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
|
267 ("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
|
268 ("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
|
269 ("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
|
270 ("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
|
271 ("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
|
272 ("Booklet" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
273 ((("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
|
274 (("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
|
275 ("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
|
276 ("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
|
277 ("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
|
278 ("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
|
279 ("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
|
280 ("InBook" |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
281 ((("author" "Author1 [and Author2 ...] [and others]" nil t) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
282 ("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
|
283 ("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
|
284 ("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
|
285 ("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
|
286 ("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
|
287 (("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
|
288 ("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
|
289 ("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
|
290 ("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
|
291 ("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
|
292 ("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
|
293 ("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
|
294 ("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
|
295 ("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
|
296 ((("author" "Author1 [and Author2 ...] [and others]" nil t) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
297 ("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
|
298 ("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
|
299 ("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
|
300 (("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
|
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 ("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
|
307 ("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
|
308 ("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
|
309 ("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
|
310 ("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
|
311 ("InCollection" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
312 ((("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
|
313 ("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
|
314 ("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
|
315 ("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
|
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 (("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
|
318 ("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
|
319 ("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
|
320 ("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
|
321 ("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
|
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 ("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
|
324 ("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
|
325 ("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
|
326 ("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
|
327 ("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
|
328 ((("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
|
329 ("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
|
330 ("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
|
331 (("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
|
332 ("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
|
333 ("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
|
334 ("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
|
335 ("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
|
336 ("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
|
337 ("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
|
338 ("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
|
339 ("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
|
340 ("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
|
341 ("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
|
342 ("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
|
343 ("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
|
344 ("InProceedings" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
345 ((("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
|
346 ("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
|
347 ("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
|
348 ("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
|
349 (("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
|
350 ("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
|
351 ("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
|
352 ("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
|
353 ("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
|
354 ("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
|
355 ("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
|
356 ("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
|
357 ("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
|
358 ("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
|
359 ((("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
|
360 ("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
|
361 (("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
|
362 ("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
|
363 ("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
|
364 ("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
|
365 ("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
|
366 ("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
|
367 ("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
|
368 ("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
|
369 ("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
|
370 ("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
|
371 ("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
|
372 ("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
|
373 ("Manual" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
374 ((("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
|
375 (("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
|
376 ("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
|
377 ("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
|
378 ("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
|
379 ("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
|
380 ("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
|
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 ("MastersThesis" |
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 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
|
385 ("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
|
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 (("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
|
388 ("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
|
389 ("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
|
390 ("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
|
391 ("Misc" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
392 (() |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
393 (("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
|
394 ("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
|
395 ("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
|
396 ("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
|
397 ("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
|
398 ("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
|
399 ("PhdThesis" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
400 ((("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
|
401 ("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
|
402 ("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
|
403 ("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
|
404 (("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
|
405 ("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
|
406 ("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
|
407 ("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
|
408 ("Proceedings" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
409 ((("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
|
410 ("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
|
411 (("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
|
412 ("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
|
413 ("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
|
414 ("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
|
415 ("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
|
416 ("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
|
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 ("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
|
419 ("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
|
420 ("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
|
421 ("TechReport" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
422 ((("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
|
423 ("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
|
424 ("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
|
425 ("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
|
426 (("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
|
427 ("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
|
428 ("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
|
429 ("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
|
430 ("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
|
431 ("Unpublished" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
432 ((("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
|
433 ("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
|
434 ("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
|
435 (("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
|
436 ("year" "Year of publication"))))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
437 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
438 "List of BibTeX entry types and their associated fields. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
439 List elements are triples |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
440 \(ENTRY-NAME (REQUIRED OPTIONAL) (CROSSREF-REQUIRED CROSSREF-OPTIONAL)). |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
441 ENTRY-NAME is the name of a BibTeX entry. The remaining pairs contain |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
442 the required and optional fields of the BibTeX entry. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
443 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
|
444 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
|
445 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
|
446 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
|
447 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
|
448 \(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
|
449 COMMENT-STRING, INIT, and ALTERNATIVE-FLAG are optional. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
450 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
|
451 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
|
452 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
|
453 of the field, and ALTERNATIVE-FLAG (either nil or t) marks if the |
19461 | 454 field is an alternative. ALTERNATIVE-FLAG may be t only in the |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
455 REQUIRED or CROSSREF-REQUIRED lists.") |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
456 (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
|
457 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
458 (defcustom bibtex-comment-start "@Comment" |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
459 "String starting a BibTeX comment." |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
460 :group 'bibtex |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
461 :type 'string) |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
462 |
19460 | 463 (defcustom bibtex-add-entry-hook nil |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
464 "List of functions to call when BibTeX entry has been inserted." |
19460 | 465 :group 'bibtex |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
466 :type 'hook) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
467 |
19460 | 468 (defcustom bibtex-predefined-month-strings |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
469 '(("jan" . "January") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
470 ("feb" . "February") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
471 ("mar" . "March") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
472 ("apr" . "April") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
473 ("may" . "May") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
474 ("jun" . "June") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
475 ("jul" . "July") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
476 ("aug" . "August") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
477 ("sep" . "September") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
478 ("oct" . "October") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
479 ("nov" . "November") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
480 ("dec" . "December")) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
481 "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
|
482 Each element is a pair of strings (ABBREVIATION . EXPANSION)." |
19460 | 483 :group 'bibtex |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
484 :type '(repeat (cons (string :tag "Month abbreviation") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
485 (string :tag "Month expansion")))) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
486 |
19460 | 487 (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
|
488 (append |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
489 bibtex-predefined-month-strings |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
490 '(("acmcs" . "ACM Computing Surveys") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
491 ("acta" . "Acta Informatica") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
492 ("cacm" . "Communications of the ACM") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
493 ("ibmjrd" . "IBM Journal of Research and Development") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
494 ("ibmsj" . "IBM Systems Journal") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
495 ("ieeese" . "IEEE Transactions on Software Engineering") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
496 ("ieeetc" . "IEEE Transactions on Computers") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
497 ("ieeetcad" . "IEEE Transactions on Computer-Aided Design of Integrated Circuits") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
498 ("ipl" . "Information Processing Letters") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
499 ("jacm" . "Journal of the ACM") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
500 ("jcss" . "Journal of Computer and System Sciences") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
501 ("scp" . "Science of Computer Programming") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
502 ("sicomp" . "SIAM Journal on Computing") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
503 ("tcs" . "Theoretical Computer Science") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
504 ("tocs" . "ACM Transactions on Computer Systems") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
505 ("tods" . "ACM Transactions on Database Systems") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
506 ("tog" . "ACM Transactions on Graphics") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
507 ("toms" . "ACM Transactions on Mathematical Software") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
508 ("toois" . "ACM Transactions on Office Information Systems") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
509 ("toplas" . "ACM Transactions on Programming Languages and Systems"))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
510 "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
|
511 Each element is a pair of strings (ABBREVIATION . EXPANSION)." |
19460 | 512 :group 'bibtex |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
513 :type '(repeat (cons (string :tag "String") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
514 (string :tag "String expansion")))) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
515 |
19460 | 516 (defcustom bibtex-string-files nil |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
517 "List of BibTeX files containing string definitions. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
518 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
|
519 to the directories specified in `bibtex-string-file-path'." |
19460 | 520 :group 'bibtex |
521 :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
|
522 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
523 (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
|
524 "*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
|
525 |
57815 | 526 (defcustom bibtex-files nil |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
527 "List of BibTeX files that are searched for entry keys. |
57815 | 528 List elements can be absolute file names or file names relative to the |
529 directories specified in `bibtex-file-path'. If an element is a directory, | |
530 check all BibTeX files in this directory. If an element is the symbol | |
531 `bibtex-file-path', check all BibTeX files in `bibtex-file-path'." | |
532 :group 'bibtex | |
533 :type '(repeat file)) | |
534 | |
535 (defvar bibtex-file-path (getenv "BIBINPUTS") | |
536 "*Colon separated list of paths to search for `bibtex-files'.") | |
537 | |
19460 | 538 (defcustom bibtex-help-message t |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
539 "If non-nil print help messages in the echo area on entering a new field." |
19460 | 540 :group 'bibtex |
541 :type 'boolean) | |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
542 |
19460 | 543 (defcustom bibtex-autokey-prefix-string "" |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
544 "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
|
545 See `bibtex-generate-autokey' for details." |
19460 | 546 :group 'bibtex-autokey |
547 :type 'string) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
548 |
19460 | 549 (defcustom bibtex-autokey-names 1 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
550 "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
|
551 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
|
552 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
|
553 See `bibtex-generate-autokey' for details." |
19460 | 554 :group 'bibtex-autokey |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
555 :type '(choice (const :tag "All" infty) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
556 integer)) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
557 |
19460 | 558 (defcustom bibtex-autokey-names-stretch 0 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
559 "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
|
560 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
|
561 See `bibtex-generate-autokey' for details." |
19460 | 562 :group 'bibtex-autokey |
563 :type 'integer) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
564 |
19460 | 565 (defcustom bibtex-autokey-additional-names "" |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
566 "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
|
567 See `bibtex-generate-autokey' for details." |
19460 | 568 :group 'bibtex-autokey |
569 :type 'string) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
570 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
571 (defcustom bibtex-autokey-expand-strings nil |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
572 "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
|
573 See `bibtex-generate-autokey' for details." |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
574 :group 'bibtex-autokey |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
575 :type 'boolean) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
576 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
577 (defvar bibtex-autokey-transcriptions |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
578 '(;; language specific characters |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
579 ("\\\\aa" . "a") ; \aa -> a |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
580 ("\\\\AA" . "A") ; \AA -> A |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
581 ("\\\"a\\|\\\\\\\"a\\|\\\\ae" . "ae") ; "a,\"a,\ae -> ae |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
582 ("\\\"A\\|\\\\\\\"A\\|\\\\AE" . "Ae") ; "A,\"A,\AE -> Ae |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
583 ("\\\\i" . "i") ; \i -> i |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
584 ("\\\\j" . "j") ; \j -> j |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
585 ("\\\\l" . "l") ; \l -> l |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
586 ("\\\\L" . "L") ; \L -> L |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
587 ("\\\"o\\|\\\\\\\"o\\|\\\\o\\|\\\\oe" . "oe") ; "o,\"o,\o,\oe -> oe |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
588 ("\\\"O\\|\\\\\\\"O\\|\\\\O\\|\\\\OE" . "Oe") ; "O,\"O,\O,\OE -> Oe |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
589 ("\\\"s\\|\\\\\\\"s\\|\\\\3" . "ss") ; "s,\"s,\3 -> ss |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
590 ("\\\"u\\|\\\\\\\"u" . "ue") ; "u,\"u -> ue |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
591 ("\\\"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
|
592 ;; accents |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
593 ("\\\\`\\|\\\\'\\|\\\\\\^\\|\\\\~\\|\\\\=\\|\\\\\\.\\|\\\\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
|
594 ;; 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
|
595 ("[`'\"{}#]" . "") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
596 ;; spaces |
57815 | 597 ("\\\\?[ \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
|
598 "Alist of (OLD-REGEXP . NEW-STRING) pairs. |
19461 | 599 Used by the default values of `bibtex-autokey-name-change-strings' and |
600 `bibtex-autokey-titleword-change-strings'. Defaults to translating some | |
601 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
|
602 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
|
603 |
19460 | 604 (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
|
605 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
|
606 "Alist of (OLD-REGEXP . NEW-STRING) pairs. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
607 Any part of a name matching OLD-REGEXP is replaced by NEW-STRING. |
19461 | 608 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
|
609 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
|
610 See `bibtex-generate-autokey' for details." |
19460 | 611 :group 'bibtex-autokey |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
612 :type '(repeat (cons (regexp :tag "Old") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
613 (string :tag "New")))) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
614 |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
615 (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
|
616 "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
|
617 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
|
618 :group 'bibtex-autokey |
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
619 :type '(choice (const :tag "Preserve case" identity) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
620 (const :tag "Downcase" downcase) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
621 (const :tag "Capitalize" capitalize) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
622 (const :tag "Upcase" upcase) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
623 (function :tag "Conversion function"))) |
71044
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
624 (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
|
625 (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
|
626 (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
|
627 '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
|
628 |
19460 | 629 (defcustom bibtex-autokey-name-length 'infty |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
630 "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
|
631 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
|
632 See `bibtex-generate-autokey' for details." |
19460 | 633 :group 'bibtex-autokey |
634 :type '(choice (const :tag "All" infty) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
635 integer)) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
636 |
19460 | 637 (defcustom bibtex-autokey-name-separator "" |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
638 "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
|
639 See `bibtex-generate-autokey' for details." |
19460 | 640 :group 'bibtex-autokey |
641 :type 'string) | |
642 | |
643 (defcustom bibtex-autokey-year-length 2 | |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
644 "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
|
645 See `bibtex-generate-autokey' for details." |
19460 | 646 :group 'bibtex-autokey |
647 :type 'integer) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
648 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
649 (defcustom bibtex-autokey-use-crossref t |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
650 "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
|
651 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
|
652 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
|
653 See `bibtex-generate-autokey' for details." |
19460 | 654 :group 'bibtex-autokey |
655 :type 'boolean) | |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
656 |
19460 | 657 (defcustom bibtex-autokey-titlewords 5 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
658 "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
|
659 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
|
660 Possibly more words from the title are used according to |
19461 | 661 `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
|
662 See `bibtex-generate-autokey' for details." |
19460 | 663 :group 'bibtex-autokey |
664 :type '(choice (const :tag "All" infty) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
665 integer)) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
666 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
667 (defcustom bibtex-autokey-title-terminators "[.!?:;]\\|--" |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
668 "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
|
669 Case of the regexps is ignored. See `bibtex-generate-autokey' for details." |
19460 | 670 :group 'bibtex-autokey |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
671 :type 'regexp) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
672 |
19460 | 673 (defcustom bibtex-autokey-titlewords-stretch 2 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
674 "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
|
675 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
|
676 See `bibtex-generate-autokey' for details." |
19460 | 677 :group 'bibtex-autokey |
678 :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
|
679 |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
680 (defcustom bibtex-autokey-titleword-ignore |
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
681 '("A" "An" "On" "The" "Eine?" "Der" "Die" "Das" |
61439
267229876c56
(bibtex-autokey-titleword-ignore, bibtex-reference-key)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61247
diff
changeset
|
682 "[^[:upper:]].*" ".*[^[:upper:]0-9].*") |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
683 "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
|
684 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
|
685 regexp from that list, it is not included in the title part of 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
|
686 See `bibtex-generate-autokey' for details." |
19460 | 687 :group 'bibtex-autokey |
688 :type '(repeat regexp)) | |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
689 |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
690 (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
|
691 "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
|
692 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
|
693 :group 'bibtex-autokey |
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
694 :type '(choice (const :tag "Preserve case" identity) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
695 (const :tag "Downcase" downcase) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
696 (const :tag "Capitalize" capitalize) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
697 (const :tag "Upcase" upcase) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
698 (function :tag "Conversion function"))) |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
699 (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
|
700 '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
|
701 |
19460 | 702 (defcustom bibtex-autokey-titleword-abbrevs nil |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
703 "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
|
704 An alist of (OLD-REGEXP . NEW-STRING) pairs. Case is ignored |
19461 | 705 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
|
706 See `bibtex-generate-autokey' for details." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
707 :group 'bibtex-autokey |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
708 :type '(repeat (cons (regexp :tag "Old") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
709 (string :tag "New")))) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
710 |
19460 | 711 (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
|
712 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
|
713 "Alist of (OLD-REGEXP . NEW-STRING) pairs. |
19461 | 714 Any part of title word matching a OLD-REGEXP is replaced by NEW-STRING. |
715 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
|
716 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
|
717 See `bibtex-generate-autokey' for details." |
19460 | 718 :group 'bibtex-autokey |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
719 :type '(repeat (cons (regexp :tag "Old") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
720 (string :tag "New")))) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
721 |
19460 | 722 (defcustom bibtex-autokey-titleword-length 5 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
723 "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
|
724 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
|
725 See `bibtex-generate-autokey' for details." |
19460 | 726 :group 'bibtex-autokey |
727 :type '(choice (const :tag "All" infty) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
728 integer)) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
729 |
19460 | 730 (defcustom bibtex-autokey-titleword-separator "_" |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
731 "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
|
732 See `bibtex-generate-autokey' for details." |
19460 | 733 :group 'bibtex-autokey |
734 :type 'string) | |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
735 |
19460 | 736 (defcustom bibtex-autokey-name-year-separator "" |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
737 "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
|
738 See `bibtex-generate-autokey' for details." |
19460 | 739 :group 'bibtex-autokey |
740 :type 'string) | |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
741 |
19460 | 742 (defcustom bibtex-autokey-year-title-separator ":_" |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
743 "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
|
744 See `bibtex-generate-autokey' for details." |
19460 | 745 :group 'bibtex-autokey |
746 :type 'string) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
747 |
19460 | 748 (defcustom bibtex-autokey-edit-before-use t |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
749 "If non-nil, user is allowed to edit the generated key before it is used." |
19460 | 750 :group 'bibtex-autokey |
751 :type 'boolean) | |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
752 |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
753 (defcustom bibtex-autokey-before-presentation-function nil |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
754 "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
|
755 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
|
756 and must return a string (the key to use)." |
19460 | 757 :group 'bibtex-autokey |
35962
ad7104908c16
(bibtex-autokey-before-presentation-function): Fix :type.
Dave Love <fx@gnu.org>
parents:
27701
diff
changeset
|
758 :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
|
759 |
19460 | 760 (defcustom bibtex-entry-offset 0 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
761 "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
|
762 Added to the value of all other variables which determine columns." |
19460 | 763 :group 'bibtex |
764 :type 'integer) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
765 |
19460 | 766 (defcustom bibtex-field-indentation 2 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
767 "Starting column for the name part in BibTeX fields." |
19460 | 768 :group 'bibtex |
769 :type 'integer) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
770 |
19460 | 771 (defcustom bibtex-text-indentation |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
772 (+ bibtex-field-indentation |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
773 (length "organization = ")) |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
774 "Starting column for the text part in BibTeX fields. |
19460 | 775 Should be equal to the space needed for the longest name part." |
776 :group 'bibtex | |
777 :type 'integer) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
778 |
19460 | 779 (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
|
780 (+ bibtex-text-indentation 1) |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
781 "Starting column for continuation lines of BibTeX fields." |
19460 | 782 :group 'bibtex |
783 :type 'integer) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
784 |
19460 | 785 (defcustom bibtex-align-at-equal-sign nil |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
786 "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
|
787 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
|
788 `bibtex-text-indentation', minus 2." |
19460 | 789 :group 'bibtex |
790 :type 'boolean) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
791 |
19460 | 792 (defcustom bibtex-comma-after-last-field nil |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
793 "If non-nil, a comma is put at end of last field in the entry template." |
19460 | 794 :group 'bibtex |
795 :type 'boolean) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
796 |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
797 (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
|
798 "If non-nil automatically add missing commas at end of BibTeX fields." |
57815 | 799 :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
|
800 :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
|
801 |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
802 (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
|
803 "Automatically fill fields if possible for those BibTeX entry types." |
57815 | 804 :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
|
805 :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
|
806 |
57815 | 807 (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
|
808 "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
|
809 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
|
810 Used by `bibtex-complete-crossref-cleanup' and `bibtex-copy-summary-as-kill'." |
57815 | 811 :group 'bibtex |
812 :type '(choice (const :tag "Default" bibtex-summary) | |
813 (function :tag "Personalized function"))) | |
814 | |
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
|
815 (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
|
816 '((("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
|
817 "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
|
818 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
|
819 |
61247
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
820 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
|
821 |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
822 ((FIELD . REGEXP)) |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
823 ((FIELD . REGEXP) STEP...) |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
824 ((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
|
825 |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
826 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
|
827 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
|
828 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
|
829 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
|
830 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
|
831 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
|
832 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
|
833 |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
834 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
|
835 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
|
836 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
|
837 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
|
838 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
|
839 |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
840 Case is always ignored. Always remove the field delimiters. |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
841 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
|
842 for generating the URL. |
61247
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
843 |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
844 The following is a complex example, see http://link.aps.org/linkfaq.html. |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
845 |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
846 (((\"journal\" . \"\\\\=<\\(PR[ABCDEL]?\\|RMP\\)\\\\=>\") |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
847 \"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
|
848 (\"journal\" \".*\" downcase) |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
849 (\"volume\" \".*\" 0) |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
850 (\"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
|
851 :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
|
852 :type '(repeat |
61247
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
853 (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
|
854 (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
|
855 (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
|
856 (regexp :tag "Regexp")) |
61247
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
857 (choice |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
858 (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
|
859 (cons :tag "Formatted" |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
860 (string :tag "Format control string") |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
861 (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
|
862 (list (string :tag "BibTeX field") |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
863 (regexp :tag "Regexp") |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
864 (choice (string :tag "Replacement") |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
865 (integer :tag "Sub-match") |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
866 (function :tag "Filter"))))) |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
867 (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
|
868 (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
|
869 (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
|
870 (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
|
871 (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
|
872 (function :tag "Filter")))))))) |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
873 (put 'bibtex-generate-url-list 'risky-local-variable t) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
874 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
875 (defcustom bibtex-expand-strings nil |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
876 "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
|
877 :group 'bibtex |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
878 :type 'boolean) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
879 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
880 ;; `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
|
881 ;; 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
|
882 ;; 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
|
883 |
eac840d283b6
(bibtex-hs-forward-sexp): Added to support
Gerd Moellmann <gerd@gnu.org>
parents:
25444
diff
changeset
|
884 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
885 ;; 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
|
886 (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
|
887 (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
|
888 (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
|
889 (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
|
890 (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
|
891 (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
|
892 (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
|
893 (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
|
894 (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
|
895 (modify-syntax-entry ?\n "> " st) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
896 ;; 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
|
897 (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
|
898 (modify-syntax-entry ?~ " " st) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
899 st) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
900 "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
|
901 |
2465861025cd
Installed Aaron Larson's new bibtex.el. See the header comment for
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2307
diff
changeset
|
902 (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
|
903 (let ((km (make-sparse-keymap))) |
26711
eac840d283b6
(bibtex-hs-forward-sexp): Added to support
Gerd Moellmann <gerd@gnu.org>
parents:
25444
diff
changeset
|
904 ;; 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
|
905 (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
|
906 (define-key km "\n" 'bibtex-next-field) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
907 (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
|
908 (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
|
909 (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
|
910 (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
|
911 (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
|
912 (define-key km "\C-c\C-q" 'bibtex-fill-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
|
913 (define-key km "\C-c\C-s" 'bibtex-find-entry) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
914 (define-key km "\C-c\C-x" 'bibtex-find-crossref) |
57815 | 915 (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
|
916 (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
|
917 (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
|
918 (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
|
919 (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
|
920 (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
|
921 (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
|
922 (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
|
923 (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
|
924 (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
|
925 (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
|
926 (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
|
927 (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
|
928 (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
|
929 (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
|
930 (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
|
931 (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
|
932 (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
|
933 (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
|
934 (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
|
935 (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
|
936 (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
|
937 (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
|
938 (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
|
939 (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
|
940 (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
|
941 (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
|
942 (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
|
943 (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
|
944 (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
|
945 (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
|
946 (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
|
947 (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
|
948 (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
|
949 (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
|
950 (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
|
951 (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
|
952 (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
|
953 (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
|
954 (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
|
955 (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
|
956 km) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
957 "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
|
958 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
959 (easy-menu-define |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
960 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
|
961 '("BibTeX-Edit" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
962 ("Moving inside an Entry" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
963 ["End of Field" bibtex-find-text t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
964 ["Next Field" bibtex-next-field t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
965 ["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
|
966 ["End of Entry" bibtex-end-of-entry t] |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
967 "--" |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
968 ["Make Entry Visible" bibtex-reposition-window t]) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
969 ("Moving in BibTeX Buffers" |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
970 ["Find Entry" bibtex-find-entry t] |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
971 ["Find Crossref Entry" bibtex-find-crossref t]) |
57815 | 972 "--" |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
973 ("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
|
974 ["Fill Field" fill-paragraph t] |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
975 ["Remove Delimiters" bibtex-remove-delimiters t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
976 ["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
|
977 ["Clear Field" bibtex-empty-field t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
978 "--" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
979 ["Kill Field" bibtex-kill-field t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
980 ["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
|
981 ["Paste Most Recently Killed Field" bibtex-yank t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
982 ["Paste Previously Killed Field" bibtex-yank-pop t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
983 "--" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
984 ["Make New Field" bibtex-make-field t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
985 "--" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
986 ["Snatch from Similar Following Field" bibtex-pop-next t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
987 ["Snatch from Similar Preceding Field" bibtex-pop-previous t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
988 "--" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
989 ["String or Key Complete" bibtex-complete t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
990 "--" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
991 ["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
|
992 ("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
|
993 ["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
|
994 ["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
|
995 ["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
|
996 "--" |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
997 ["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
|
998 ["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
|
999 ["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
|
1000 ["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
|
1001 "--" |
57815 | 1002 ["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
|
1003 ["Browse URL" bibtex-url t] |
57815 | 1004 "--" |
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
|
1005 ["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
|
1006 ["Ispell Entry Abstract" bibtex-ispell-abstract t] |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1007 "--" |
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
|
1008 ["Narrow to Entry" bibtex-narrow-to-entry t] |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1009 ["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
|
1010 "--" |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
1011 ["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
|
1012 (fboundp 'reftex-view-crossref-from-bibtex)]) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1013 ("Operating on Buffer or Region" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1014 ["Validate Entries" bibtex-validate t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1015 ["Sort Entries" bibtex-sort-buffer t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1016 ["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
|
1017 ["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
|
1018 "--" |
57815 | 1019 ["Convert Alien Buffer" bibtex-convert-alien t]) |
1020 ("Operating on Multiple Buffers" | |
1021 ["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
|
1022 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1023 (easy-menu-define |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1024 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
|
1025 (list "Entry-Types" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1026 ["Article in Journal" bibtex-Article t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1027 ["Article in Conference Proceedings" bibtex-InProceedings t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1028 ["Article in a Collection" bibtex-InCollection t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1029 ["Chapter or Pages in a Book" bibtex-InBook t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1030 ["Conference Proceedings" bibtex-Proceedings t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1031 ["Book" bibtex-Book t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1032 ["Booklet (Bound, but no Publisher/Institution)" bibtex-Booklet t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1033 ["PhD. Thesis" bibtex-PhdThesis t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1034 ["Master's Thesis" bibtex-MastersThesis t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1035 ["Technical Report" bibtex-TechReport t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1036 ["Technical Manual" bibtex-Manual t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1037 ["Unpublished" bibtex-Unpublished t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1038 ["Miscellaneous" bibtex-Misc t] |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1039 "--" |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1040 ["String" bibtex-String t] |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1041 ["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
|
1042 |
14789
d68b71228abd
(bibtex-pop): New generic function which unifies the
Richard M. Stallman <rms@gnu.org>
parents:
14410
diff
changeset
|
1043 |
12700
b3a8ee2da96a
Add keywords and comments as per conventions.
Richard M. Stallman <rms@gnu.org>
parents:
12028
diff
changeset
|
1044 ;; 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
|
1045 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1046 (defvar bibtex-pop-previous-search-point nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1047 "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
|
1048 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1049 (defvar bibtex-pop-next-search-point nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1050 "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
|
1051 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1052 (defvar bibtex-field-kill-ring nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1053 "Ring of least recently killed fields. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1054 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
|
1055 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1056 (defvar bibtex-field-kill-ring-yank-pointer nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1057 "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
|
1058 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1059 (defvar bibtex-entry-kill-ring nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1060 "Ring of least recently killed entries. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1061 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
|
1062 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1063 (defvar bibtex-entry-kill-ring-yank-pointer nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1064 "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
|
1065 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1066 (defvar bibtex-last-kill-command nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1067 "Type of the last kill command (either 'field or 'entry).") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1068 |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1069 (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
|
1070 (lazy-completion-table bibtex-strings |
67816
d195eef388b8
(bibtex-strings, bibtex-reference-keys):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67575
diff
changeset
|
1071 (lambda () |
d195eef388b8
(bibtex-strings, bibtex-reference-keys):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67575
diff
changeset
|
1072 (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
|
1073 "Completion table for BibTeX string keys. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1074 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
|
1075 (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
|
1076 (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
|
1077 |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1078 (defvar bibtex-reference-keys |
67816
d195eef388b8
(bibtex-strings, bibtex-reference-keys):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67575
diff
changeset
|
1079 (lazy-completion-table bibtex-reference-keys |
d195eef388b8
(bibtex-strings, bibtex-reference-keys):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
67575
diff
changeset
|
1080 (lambda () (bibtex-parse-keys nil t))) |
57815 | 1081 "Completion table for BibTeX reference keys. |
1082 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
|
1083 (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
|
1084 (put 'bibtex-reference-keys 'risky-local-variable t) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1085 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1086 (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
|
1087 "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
|
1088 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1089 (defvar bibtex-parse-idle-timer nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1090 "Stores if timer is already installed.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1091 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1092 (defvar bibtex-progress-lastperc nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1093 "Last reported percentage for the progress message.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1094 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1095 (defvar bibtex-progress-lastmes nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1096 "Last reported progress message.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1097 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1098 (defvar bibtex-progress-interval nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1099 "Interval for progress messages.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1100 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1101 (defvar bibtex-key-history nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1102 "History list for reading keys.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1103 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1104 (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
|
1105 "History list for reading entry types.") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1106 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1107 (defvar bibtex-field-history nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1108 "History list for reading field names.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1109 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1110 (defvar bibtex-reformat-previous-options nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1111 "Last reformat options given.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1112 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1113 (defvar bibtex-reformat-previous-reference-keys nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1114 "Last reformat reference keys option given.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1115 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1116 (defconst bibtex-field-name "[^\"#%'(),={} \t\n0-9][^\"#%'(),={} \t\n]*" |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1117 "Regexp matching the name of a BibTeX field.") |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1118 |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1119 (defconst bibtex-name-part |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1120 (concat ",[ \t\n]*\\(" bibtex-field-name "\\)") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1121 "Regexp matching the name part of a BibTeX field.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1122 |
61439
267229876c56
(bibtex-autokey-titleword-ignore, bibtex-reference-key)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61247
diff
changeset
|
1123 (defconst bibtex-reference-key "[][[:alnum:].:;?!`'/*@+|()<>&_^$-]+" |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1124 "Regexp matching the reference key part of a BibTeX entry.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1125 |
61439
267229876c56
(bibtex-autokey-titleword-ignore, bibtex-reference-key)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61247
diff
changeset
|
1126 (defconst bibtex-field-const "[][[:alnum:].:;?!`'/*@+=|<>&_^$-]+" |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1127 "Regexp matching a BibTeX field constant.") |
27701
5e135f0faf1d
(bibtex-mode): Replaced manual splitting of path
Gerd Moellmann <gerd@gnu.org>
parents:
26711
diff
changeset
|
1128 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1129 (defvar bibtex-entry-type |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1130 (concat "@[ \t]*\\(?:" |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1131 (regexp-opt (mapcar 'car bibtex-entry-field-alist)) "\\)") |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1132 "Regexp matching the name of a BibTeX entry.") |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1133 |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1134 (defvar bibtex-entry-head |
15637
405b1ecbf8ba
(bibtex-reference-head): Allow spaces and tabs between
Karl Heuer <kwzh@gnu.org>
parents:
15565
diff
changeset
|
1135 (concat "^[ \t]*\\(" |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1136 bibtex-entry-type |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1137 "\\)[ \t]*[({][ \t\n]*\\(" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1138 bibtex-reference-key |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1139 "\\)") |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1140 "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
|
1141 |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1142 (defvar bibtex-entry-maybe-empty-head |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1143 (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
|
1144 "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
|
1145 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1146 (defconst bibtex-any-entry-maybe-empty-head |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1147 (concat "^[ \t]*\\(@[ \t]*" bibtex-field-name "\\)[ \t]*[({][ \t\n]*\\(" |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1148 bibtex-reference-key "\\)?") |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1149 "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
|
1150 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1151 (defvar bibtex-any-valid-entry-type |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1152 (concat "^[ \t]*@[ \t]*\\(?:" |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1153 (regexp-opt (append '("String" "Preamble") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1154 (mapcar 'car bibtex-entry-field-alist))) "\\)") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1155 "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
|
1156 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1157 (defconst bibtex-type-in-head 1 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1158 "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
|
1159 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1160 (defconst bibtex-key-in-head 2 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1161 "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
|
1162 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1163 (defconst bibtex-string-type "^[ \t]*\\(@[ \t]*String\\)[ \t]*[({][ \t\n]*" |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1164 "Regexp matching the name of a BibTeX String entry.") |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1165 |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1166 (defconst bibtex-string-maybe-empty-head |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1167 (concat bibtex-string-type "\\(" bibtex-reference-key "\\)?") |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1168 "Regexp matching the header line of a BibTeX String entry.") |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1169 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1170 (defconst bibtex-preamble-prefix |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1171 "[ \t]*\\(@[ \t]*Preamble\\)[ \t]*[({][ \t\n]*" |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1172 "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
|
1173 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1174 (defconst bibtex-font-lock-syntactic-keywords |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1175 `((,(concat "^[ \t]*\\(" (substring bibtex-comment-start 0 1) "\\)" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1176 (substring bibtex-comment-start 1) "\\>") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1177 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
|
1178 |
14789
d68b71228abd
(bibtex-pop): New generic function which unifies the
Richard M. Stallman <rms@gnu.org>
parents:
14410
diff
changeset
|
1179 (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
|
1180 ;; entry type and reference key |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1181 `((,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
|
1182 (,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
|
1183 (,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
|
1184 ;; 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
|
1185 (,(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
|
1186 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
|
1187 ;; 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
|
1188 (,(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
|
1189 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
|
1190 ;; url |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
1191 (bibtex-font-lock-url) (bibtex-font-lock-crossref)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1192 "*Default expressions to highlight in BibTeX mode.") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1193 |
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
|
1194 (defvar bibtex-font-lock-url-regexp |
57815 | 1195 ;; 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
|
1196 (concat "^[ \t]*" |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
1197 (regexp-opt (delete-dups (mapcar 'caar bibtex-generate-url-list)) t) |
57815 | 1198 "[ \t]*=[ \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
|
1199 "Regexp for `bibtex-font-lock-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
|
1200 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1201 (defvar bibtex-string-empty-key nil |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1202 "If non-nil, `bibtex-parse-string' accepts empty key.") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1203 |
71044
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
1204 (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
|
1205 "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
|
1206 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
|
1207 Used when `bibtex-maintain-sorted-entries' is `entry-class'.") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1208 |
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 ;; Support for hideshow minor mode |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1211 (defun bibtex-hs-forward-sexp (arg) |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
1212 "Replacement for `forward-sexp' to be used by `hs-minor-mode'. |
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
1213 ARG is ignored." |
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
1214 (if (looking-at "@\\S(*\\s(") |
57815 | 1215 (goto-char (1- (match-end 0)))) |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
1216 (forward-sexp 1)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1217 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1218 (add-to-list |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1219 'hs-special-modes-alist |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1220 '(bibtex-mode "@\\S(*\\s(" "\\s)" nil bibtex-hs-forward-sexp nil)) |
27701
5e135f0faf1d
(bibtex-mode): Replaced manual splitting of path
Gerd Moellmann <gerd@gnu.org>
parents:
26711
diff
changeset
|
1221 |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
1222 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1223 (defun bibtex-parse-association (parse-lhs parse-rhs) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1224 "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
|
1225 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
|
1226 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
|
1227 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
|
1228 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
|
1229 (save-match-data |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1230 (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
|
1231 (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
|
1232 right) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1233 (if (and left |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1234 (looking-at "[ \t\n]*=[ \t\n]*") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1235 (goto-char (match-end 0)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1236 (setq right (funcall parse-rhs))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1237 (cons left right)))))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1238 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1239 (defun bibtex-parse-field-name () |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1240 "Parse the name part of a BibTeX field. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1241 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
|
1242 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
|
1243 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
|
1244 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
|
1245 BibTeX field as necessary." |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1246 (cond ((looking-at bibtex-name-part) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1247 (goto-char (match-end 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1248 (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
|
1249 ;; 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
|
1250 ((and bibtex-autoadd-commas |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1251 (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
|
1252 "\\)[ \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
|
1253 (skip-chars-backward " \t\n") |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1254 ;; It can be confusing if non-editing commands try to |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1255 ;; modify the buffer. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1256 (if buffer-read-only |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1257 (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
|
1258 (insert ",") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1259 (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
|
1260 ;; 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
|
1261 (bibtex-parse-field-name)))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1262 |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1263 (defconst bibtex-braced-string-syntax-table |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1264 (let ((st (make-syntax-table))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1265 (modify-syntax-entry ?\{ "(}" st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1266 (modify-syntax-entry ?\} "){" st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1267 (modify-syntax-entry ?\[ "." st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1268 (modify-syntax-entry ?\] "." st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1269 (modify-syntax-entry ?\( "." st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1270 (modify-syntax-entry ?\) "." st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1271 (modify-syntax-entry ?\\ "." st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1272 (modify-syntax-entry ?\" "." st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1273 st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1274 "Syntax-table to parse matched braces.") |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1275 |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1276 (defconst bibtex-quoted-string-syntax-table |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1277 (let ((st (make-syntax-table))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1278 (modify-syntax-entry ?\\ "\\" st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1279 (modify-syntax-entry ?\" "\"" st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1280 st) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1281 "Syntax-table to parse matched quotes.") |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1282 |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1283 (defun bibtex-parse-field-string () |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1284 "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
|
1285 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
|
1286 end position of the field string is returned, nil otherwise. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1287 Do not move point." |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1288 (let ((end-point |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1289 (or (and (eq (following-char) ?\") |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1290 (save-excursion |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1291 (with-syntax-table bibtex-quoted-string-syntax-table |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1292 (forward-sexp 1)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1293 (point))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1294 (and (eq (following-char) ?\{) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1295 (save-excursion |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1296 (with-syntax-table bibtex-braced-string-syntax-table |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1297 (forward-sexp 1)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1298 (point)))))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1299 (if end-point |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1300 (cons (point) end-point)))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1301 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1302 (defun bibtex-parse-field-text () |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1303 "Parse the text part of a BibTeX field. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1304 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
|
1305 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
|
1306 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
|
1307 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
|
1308 (let ((starting-point (point)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1309 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
|
1310 (while (not (or end-point failure)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1311 (cond ((looking-at bibtex-field-const) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1312 (goto-char (match-end 0))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1313 ((setq boundaries (bibtex-parse-field-string)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1314 (goto-char (cdr boundaries))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1315 ((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
|
1316 (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
|
1317 (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
|
1318 (setq end-point (point)))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1319 (skip-chars-forward " \t\n") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1320 (if (and (not failure) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1321 end-point) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1322 (list starting-point end-point (point))))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1323 |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1324 (defun bibtex-parse-field () |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1325 "Parse the BibTeX field beginning at the position of point. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1326 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
|
1327 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
|
1328 (bibtex-parse-association 'bibtex-parse-field-name |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1329 'bibtex-parse-field-text)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1330 |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1331 (defsubst bibtex-start-of-field (bounds) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1332 (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
|
1333 (defsubst bibtex-start-of-name-in-field (bounds) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1334 (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
|
1335 (defsubst bibtex-end-of-name-in-field (bounds) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1336 (nth 2 (car bounds))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1337 (defsubst bibtex-start-of-text-in-field (bounds) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1338 (nth 1 bounds)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1339 (defsubst bibtex-end-of-text-in-field (bounds) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1340 (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
|
1341 (defsubst bibtex-end-of-field (bounds) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1342 (nth 3 bounds)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1343 |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1344 (defun bibtex-search-forward-field (name &optional bound) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1345 "Search forward to find a BibTeX field of name NAME. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1346 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
|
1347 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
|
1348 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
|
1349 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
|
1350 (save-match-data |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1351 (save-excursion |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1352 (if (eq bound t) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1353 (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
|
1354 bibtex-any-entry-maybe-empty-head)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1355 (case-fold-search t) bounds) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1356 (catch 'done |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1357 (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
|
1358 (while (and (not bounds) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1359 (re-search-forward regexp nil t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1360 (if (match-beginning 2) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1361 ;; We found a new entry |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1362 (throw 'done nil) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1363 ;; We found a field |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1364 (goto-char (match-beginning 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1365 (setq bounds (bibtex-parse-field)))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1366 ;; 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
|
1367 (while bounds |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1368 (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
|
1369 (if (looking-at name) (throw 'done bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1370 (goto-char (bibtex-end-of-field bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1371 (setq bounds (bibtex-parse-field))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1372 ;; 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
|
1373 ;; 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
|
1374 ;; 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
|
1375 (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
|
1376 (case-fold-search t) left right) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1377 (while (and (not right) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1378 (re-search-forward name-part bound t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1379 (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
|
1380 (match-end 1)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1381 ;; 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
|
1382 right (bibtex-parse-field-text))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1383 (if right (cons left right))))))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1384 |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1385 (defun bibtex-search-backward-field (name &optional bound) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1386 "Search backward to find a BibTeX field of name NAME. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1387 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
|
1388 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
|
1389 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
|
1390 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
|
1391 (save-match-data |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1392 (if (eq bound t) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1393 (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
|
1394 (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
|
1395 (case-fold-search t) left right) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1396 (save-excursion |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1397 ;; 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
|
1398 (when (search-backward "," bound t) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1399 (or (save-excursion |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1400 (when (looking-at name-part) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1401 (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
|
1402 (match-end 1))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1403 (goto-char (match-end 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1404 (setq right (bibtex-parse-field-text)))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1405 (while (and (not right) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1406 (re-search-backward name-part bound t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1407 (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
|
1408 (match-end 1))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1409 (save-excursion |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1410 (goto-char (match-end 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1411 (setq right (bibtex-parse-field-text))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1412 (if right (cons left right))))))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1413 |
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
|
1414 (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
|
1415 "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
|
1416 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
|
1417 (let ((name (buffer-substring-no-properties |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1418 (bibtex-start-of-name-in-field bounds) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1419 (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
|
1420 (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
|
1421 (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
|
1422 (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
|
1423 name))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1424 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1425 (defun bibtex-text-in-field-bounds (bounds &optional content) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1426 "Get text in BibTeX field defined via BOUNDS. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1427 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
|
1428 by removing field delimiters and concatenating the resulting string. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1429 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
|
1430 (if content |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1431 (save-excursion |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1432 (goto-char (bibtex-start-of-text-in-field bounds)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1433 (let ((epoint (bibtex-end-of-text-in-field bounds)) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1434 content opoint) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1435 (while (< (setq opoint (point)) epoint) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1436 (if (looking-at bibtex-field-const) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1437 (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
|
1438 (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
|
1439 (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
|
1440 mtch) content) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1441 (goto-char (match-end 0))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1442 (let ((bounds (bibtex-parse-field-string))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1443 (push (buffer-substring-no-properties |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1444 (1+ (car bounds)) (1- (cdr bounds))) content) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1445 (goto-char (cdr bounds)))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1446 (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
|
1447 (apply 'concat (nreverse content)))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1448 (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
|
1449 (bibtex-end-of-text-in-field bounds)))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1450 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1451 (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
|
1452 "Get content of field FIELD of current BibTeX entry. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1453 Return nil if not found. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1454 If optional arg FOLLOW-CROSSREF is non-nil, follow crossref." |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1455 (save-excursion |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1456 (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
|
1457 (beg (bibtex-beginning-of-entry)) ; move point |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1458 (bounds (bibtex-search-forward-field field end))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1459 (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
|
1460 ((and follow-crossref |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1461 (progn (goto-char beg) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1462 (setq bounds (bibtex-search-forward-field |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1463 "\\(OPT\\)?crossref" end)))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1464 (let ((crossref-field (bibtex-text-in-field-bounds bounds t))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1465 (if (bibtex-find-crossref crossref-field) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1466 ;; Do not pass FOLLOW-CROSSREF because we want |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1467 ;; to follow crossrefs only one level of recursion. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1468 (bibtex-text-in-field field)))))))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1469 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1470 (defun bibtex-parse-string-prefix () |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1471 "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
|
1472 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
|
1473 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
|
1474 reference key and the end position of the match. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1475 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
|
1476 (let ((case-fold-search t)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1477 (if (looking-at bibtex-string-type) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1478 (let ((start (point))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1479 (goto-char (match-end 0)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1480 (cond ((looking-at bibtex-reference-key) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1481 (goto-char (match-end 0)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1482 (list start |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1483 (match-beginning 0) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1484 (match-end 0))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1485 ((and bibtex-string-empty-key |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1486 (looking-at "=")) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1487 (skip-chars-backward " \t\n") |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1488 (list start (point) (point)))))))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1489 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1490 (defun bibtex-parse-string-postfix () |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1491 "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
|
1492 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
|
1493 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
|
1494 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
|
1495 (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
|
1496 (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
|
1497 (when bounds |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1498 (goto-char (nth 1 bounds)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1499 (when (looking-at "[ \t\n]*[})]") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1500 (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
|
1501 (list (car bounds) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1502 (nth 1 bounds) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1503 (match-end 0)))))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1504 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1505 (defun bibtex-parse-string (&optional empty-key) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1506 "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
|
1507 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
|
1508 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
|
1509 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
|
1510 (let ((bibtex-string-empty-key empty-key)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1511 (bibtex-parse-association 'bibtex-parse-string-prefix |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1512 'bibtex-parse-string-postfix))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1513 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1514 (defun bibtex-search-forward-string (&optional empty-key) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1515 "Search forward to find a BibTeX string entry. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1516 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
|
1517 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
|
1518 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
|
1519 (save-excursion |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1520 (save-match-data |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1521 (let ((case-fold-search t) bounds) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1522 (while (and (not bounds) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1523 (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
|
1524 (save-excursion (goto-char (match-beginning 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1525 (setq bounds (bibtex-parse-string empty-key)))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1526 bounds)))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1527 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1528 (defun bibtex-reference-key-in-string (bounds) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1529 "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
|
1530 (buffer-substring-no-properties (nth 1 (car bounds)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1531 (nth 2 (car bounds)))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1532 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1533 (defun bibtex-text-in-string (bounds &optional content) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1534 "Get text in BibTeX string field defined via BOUNDS. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1535 If optional arg CONTENT is non-nil extract content |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1536 by removing field delimiters and concatenating the resulting string. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1537 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
|
1538 (bibtex-text-in-field-bounds bounds content)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1539 |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1540 (defsubst bibtex-start-of-text-in-string (bounds) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1541 (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
|
1542 (defsubst bibtex-end-of-text-in-string (bounds) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1543 (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
|
1544 (defsubst bibtex-end-of-string (bounds) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1545 (nth 2 (cdr bounds))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1546 |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1547 (defsubst bibtex-type-in-head () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1548 "Extract BibTeX type in head." |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1549 ;; ignore @ |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1550 (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
|
1551 (match-end bibtex-type-in-head))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1552 |
57815 | 1553 (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
|
1554 "Extract BibTeX key in head. Return optional arg EMPTY if key is empty." |
57815 | 1555 (or (match-string-no-properties bibtex-key-in-head) |
1556 empty)) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1557 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1558 (defun bibtex-parse-preamble () |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1559 "Parse BibTeX preamble. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1560 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
|
1561 (let ((case-fold-search t)) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1562 (when (looking-at bibtex-preamble-prefix) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1563 (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
|
1564 (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
|
1565 (bibtex-parse-string-postfix)))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1566 (if bounds (cons (list start pref-start) bounds)))))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1567 |
12700
b3a8ee2da96a
Add keywords and comments as per conventions.
Richard M. Stallman <rms@gnu.org>
parents:
12028
diff
changeset
|
1568 ;; 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
|
1569 |
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
|
1570 (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
|
1571 "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
|
1572 (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
|
1573 |
18247
ae094c1a4334
(bibtex-delete-whitespace, bibtex-current-line)
Richard M. Stallman <rms@gnu.org>
parents:
18212
diff
changeset
|
1574 (defun bibtex-delete-whitespace () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1575 "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
|
1576 (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
|
1577 (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
|
1578 |
18247
ae094c1a4334
(bibtex-delete-whitespace, bibtex-current-line)
Richard M. Stallman <rms@gnu.org>
parents:
18212
diff
changeset
|
1579 (defun bibtex-current-line () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1580 "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
|
1581 (+ (count-lines 1 (point)) |
57815 | 1582 (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
|
1583 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1584 (defun bibtex-valid-entry (&optional empty-key) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1585 "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
|
1586 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
|
1587 `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
|
1588 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
|
1589 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
|
1590 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
|
1591 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
|
1592 (let ((case-fold-search t) end) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1593 (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
|
1594 bibtex-entry-head)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1595 (save-excursion |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1596 (save-match-data |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1597 (goto-char (match-end 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1598 (let ((entry-closer |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1599 (if (save-excursion |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1600 (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
|
1601 (looking-at "[ \t]*(")) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1602 ",?[ \t\n]*)" ;; entry opened with `(' |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1603 ",?[ \t\n]*}")) ;; entry opened with `{' |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1604 bounds) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1605 (skip-chars-forward " \t\n") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1606 ;; loop over all BibTeX fields |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1607 (while (setq bounds (bibtex-parse-field)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1608 (goto-char (bibtex-end-of-field bounds))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1609 ;; This matches the infix* part. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1610 (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
|
1611 (if end (cons (match-beginning 0) end)))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1612 |
18247
ae094c1a4334
(bibtex-delete-whitespace, bibtex-current-line)
Richard M. Stallman <rms@gnu.org>
parents:
18212
diff
changeset
|
1613 (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
|
1614 "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
|
1615 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
|
1616 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
|
1617 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
|
1618 with type contained in `bibtex-entry-field-alist' or, if |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1619 `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
|
1620 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
|
1621 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
|
1622 (interactive "P") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1623 (let ((case-fold-search t) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1624 found bounds) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1625 (beginning-of-line) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1626 ;; 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
|
1627 (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
|
1628 (cond ((setq found (or (bibtex-valid-entry) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1629 (and (not bibtex-sort-ignore-string-entries) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1630 (setq bounds (bibtex-parse-string)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1631 (cons (bibtex-start-of-field bounds) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1632 (bibtex-end-of-string bounds)))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1633 (backward (re-search-backward "^[ \t]*@" nil 'move)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1634 (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
|
1635 (goto-char (match-beginning 1)))))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1636 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
|
1637 |
18247
ae094c1a4334
(bibtex-delete-whitespace, bibtex-current-line)
Richard M. Stallman <rms@gnu.org>
parents:
18212
diff
changeset
|
1638 (defun bibtex-map-entries (fun) |
57815 | 1639 "Call FUN for each BibTeX entry in buffer (possibly narrowed). |
1640 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
|
1641 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
|
1642 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
|
1643 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
|
1644 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
|
1645 (let ((case-fold-search t) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1646 found) |
57815 | 1647 (save-excursion |
1648 (goto-char (point-min)) | |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1649 (while (setq found (bibtex-skip-to-valid-entry)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1650 (looking-at bibtex-any-entry-maybe-empty-head) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1651 (funcall fun (bibtex-key-in-head "") (car found) (cdr found)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1652 (goto-char (cdr found)))))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1653 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1654 (defun bibtex-progress-message (&optional flag interval) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1655 "Echo a message about progress of current buffer. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1656 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
|
1657 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
|
1658 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
|
1659 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
|
1660 `bibtex-progress-interval' percent since last message was echoed." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1661 (cond ((stringp flag) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1662 (setq bibtex-progress-lastmes flag |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1663 bibtex-progress-interval (or interval 5) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1664 bibtex-progress-lastperc 0)) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1665 ((eq flag 'done) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1666 (message "%s (done)" bibtex-progress-lastmes) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1667 (setq bibtex-progress-lastmes nil)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1668 (t |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1669 (let* ((size (- (point-max) (point-min))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1670 (perc (if (= size 0) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1671 100 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1672 (/ (* 100 (- (point) (point-min))) size)))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1673 (when (>= perc (+ bibtex-progress-lastperc |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1674 bibtex-progress-interval)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1675 (setq bibtex-progress-lastperc perc) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1676 (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
|
1677 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1678 (defun bibtex-field-left-delimiter () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1679 "Return a string dependent on `bibtex-field-delimiters'." |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1680 (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
|
1681 "{" |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1682 "\"")) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1683 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1684 (defun bibtex-field-right-delimiter () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1685 "Return a string dependent on `bibtex-field-delimiters'." |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1686 (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
|
1687 "}" |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1688 "\"")) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1689 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1690 (defun bibtex-entry-left-delimiter () |
57815 | 1691 "Return a string dependent on `bibtex-entry-delimiters'." |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1692 (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
|
1693 "{" |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1694 "(")) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1695 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1696 (defun bibtex-entry-right-delimiter () |
57815 | 1697 "Return a string dependent on `bibtex-entry-delimiters'." |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1698 (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
|
1699 "}" |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1700 ")")) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1701 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1702 (defun bibtex-flash-head (prompt) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1703 "Flash at BibTeX entry head before point, if exists." |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1704 (let ((case-fold-search t) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1705 (pnt (point))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1706 (save-excursion |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1707 (bibtex-beginning-of-entry) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1708 (when (and (looking-at bibtex-any-entry-maybe-empty-head) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1709 (< (point) pnt)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1710 (goto-char (match-beginning bibtex-type-in-head)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1711 (if (pos-visible-in-window-p (point)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1712 (sit-for 1) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1713 (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
|
1714 (point) (match-end bibtex-key-in-head)))))))) |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
1715 |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1716 (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
|
1717 "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
|
1718 (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
|
1719 (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
|
1720 (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
|
1721 |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
1722 (defun bibtex-move-outside-of-entry () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1723 "Make sure point is outside of a BibTeX entry." |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
1724 (let ((orig-point (point))) |
26711
eac840d283b6
(bibtex-hs-forward-sexp): Added to support
Gerd Moellmann <gerd@gnu.org>
parents:
25444
diff
changeset
|
1725 (bibtex-end-of-entry) |
52891
a6806242012a
(bibtex-move-outside-of-entry):
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
1726 (when (< (point) orig-point) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1727 ;; 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
|
1728 ;; Leave point at the beginning of a line, and preferably |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1729 ;; at the beginning of a paragraph. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1730 (goto-char orig-point) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1731 (beginning-of-line 1) |
52891
a6806242012a
(bibtex-move-outside-of-entry):
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
1732 (unless (= ?\n (char-before (1- (point)))) |
a6806242012a
(bibtex-move-outside-of-entry):
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
1733 (re-search-forward "^[ \t]*[@\n]" nil 'move) |
a6806242012a
(bibtex-move-outside-of-entry):
Richard M. Stallman <rms@gnu.org>
parents:
52401
diff
changeset
|
1734 (backward-char 1))) |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
1735 (skip-chars-forward " \t\n"))) |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
1736 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1737 (defun bibtex-beginning-of-first-entry () |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1738 "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
|
1739 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
|
1740 are ignored. Return point" |
807
4f28bd14272c
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
662
diff
changeset
|
1741 (goto-char (point-min)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1742 (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
|
1743 (point)) |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
1744 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1745 (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
|
1746 "Search for BibTeX field enclosing point. |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1747 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
|
1748 following the preceding field. Usually, this is not what the user expects. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1749 Thus if COMMA is non-nil, the \"current field\" includes the terminating comma. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1750 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
|
1751 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
|
1752 (save-excursion |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1753 (when comma |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1754 (end-of-line) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1755 (skip-chars-backward " \t") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1756 (if (= (preceding-char) ?,) (forward-char -1))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1757 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1758 (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
|
1759 (cond ((and bounds |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1760 (<= (bibtex-start-of-field bounds) (point)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1761 (>= (bibtex-end-of-field bounds) (point))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1762 bounds) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1763 ((not noerr) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1764 (error "Can't find enclosing BibTeX field")))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1765 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1766 (defun bibtex-beginning-first-field (&optional beg) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1767 "Move point to beginning of first field. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1768 Optional arg BEG is beginning of entry." |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1769 (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
|
1770 (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
|
1771 (goto-char (match-end 0))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1772 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1773 (defun bibtex-insert-kill (n &optional comma) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1774 "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
|
1775 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
|
1776 (unless bibtex-last-kill-command (error "BibTeX kill ring is empty")) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1777 (let ((fun (lambda (kryp kr) ;; adapted from `current-kill' |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1778 (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
|
1779 (length kr)) kr)))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1780 (if (eq bibtex-last-kill-command 'field) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1781 (progn |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1782 ;; insert past the current field |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1783 (goto-char (bibtex-end-of-field (bibtex-enclosing-field comma))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1784 (set-mark (point)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1785 (message "Mark set") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1786 (bibtex-make-field (funcall fun 'bibtex-field-kill-ring-yank-pointer |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1787 bibtex-field-kill-ring) t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1788 ;; insert past the current entry |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1789 (bibtex-skip-to-valid-entry) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1790 (set-mark (point)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1791 (message "Mark set") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1792 (insert (funcall fun 'bibtex-entry-kill-ring-yank-pointer |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1793 bibtex-entry-kill-ring))))) |
27701
5e135f0faf1d
(bibtex-mode): Replaced manual splitting of path
Gerd Moellmann <gerd@gnu.org>
parents:
26711
diff
changeset
|
1794 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1795 (defun bibtex-format-entry () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1796 "Helper function for `bibtex-clean-entry'. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1797 Formats current entry according to variable `bibtex-entry-format'." |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1798 (save-excursion |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1799 (save-restriction |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1800 (bibtex-narrow-to-entry) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1801 (let ((case-fold-search t) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1802 (format (if (eq bibtex-entry-format t) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1803 '(realign opts-or-alts required-fields |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1804 numerical-fields |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1805 last-comma page-dashes delimiters |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1806 unify-case inherit-booktitle) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1807 bibtex-entry-format)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1808 crossref-key bounds alternatives-there non-empty-alternative |
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
|
1809 entry-list req-field-list field-list) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1810 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1811 ;; identify entry type |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1812 (goto-char (point-min)) |
70841
2a874a2efaf4
(bibtex-format-entry, bibtex-clean-entry):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70837
diff
changeset
|
1813 (or (re-search-forward bibtex-entry-type nil t) |
2a874a2efaf4
(bibtex-format-entry, bibtex-clean-entry):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70837
diff
changeset
|
1814 (error "Not inside a BibTeX entry")) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1815 (let ((beg-type (1+ (match-beginning 0))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1816 (end-type (match-end 0))) |
55730
b4eeb441c089
Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents:
55348
diff
changeset
|
1817 (setq entry-list (assoc-string (buffer-substring-no-properties |
b4eeb441c089
Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents:
55348
diff
changeset
|
1818 beg-type end-type) |
b4eeb441c089
Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents:
55348
diff
changeset
|
1819 bibtex-entry-field-alist |
b4eeb441c089
Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents:
55348
diff
changeset
|
1820 t)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1821 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1822 ;; unify case of entry name |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1823 (when (memq 'unify-case format) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1824 (delete-region beg-type end-type) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1825 (insert (car entry-list))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1826 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1827 ;; update left entry delimiter |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1828 (when (memq 'delimiters format) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1829 (goto-char end-type) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1830 (skip-chars-forward " \t\n") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1831 (delete-char 1) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1832 (insert (bibtex-entry-left-delimiter)))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1833 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1834 ;; determine if entry has crossref field and if at least |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1835 ;; one alternative is non-empty |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1836 (goto-char (point-min)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1837 (let* ((fields-alist (bibtex-parse-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
|
1838 (field (assoc-string "crossref" fields-alist t))) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1839 (setq crossref-key (and field |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1840 (not (equal "" (cdr field))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1841 (cdr field)) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1842 req-field-list (if crossref-key |
57815 | 1843 (nth 0 (nth 2 entry-list)) ; crossref part |
1844 (nth 0 (nth 1 entry-list)))) ; required part | |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1845 |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1846 (dolist (rfield req-field-list) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1847 (when (nth 3 rfield) ; we should have an alternative |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1848 (setq alternatives-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
|
1849 field (assoc-string (car rfield) fields-alist t)) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1850 (if (and field |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1851 (not (equal "" (cdr field)))) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1852 (cond ((not non-empty-alternative) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1853 (setq non-empty-alternative t)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1854 ((memq 'required-fields format) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1855 (error "More than one non-empty alternative"))))))) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1856 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
1857 (if (and alternatives-there |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1858 (not non-empty-alternative) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1859 (memq 'required-fields format)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1860 (error "All alternatives are empty")) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1861 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1862 ;; process all fields |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1863 (bibtex-beginning-first-field (point-min)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
1864 (while (setq bounds (bibtex-parse-field)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1865 (let* ((beg-field (copy-marker (bibtex-start-of-field bounds))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1866 (end-field (copy-marker (bibtex-end-of-field bounds) t)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1867 (beg-name (copy-marker (bibtex-start-of-name-in-field bounds))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1868 (end-name (copy-marker (bibtex-end-of-name-in-field bounds))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1869 (beg-text (copy-marker (bibtex-start-of-text-in-field bounds))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1870 (end-text (copy-marker (bibtex-end-of-text-in-field bounds) t)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1871 (opt-alt (string-match "OPT\\|ALT" |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1872 (buffer-substring-no-properties |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1873 beg-name (+ beg-name 3)))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1874 (field-name (buffer-substring-no-properties |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1875 (if opt-alt (+ beg-name 3) beg-name) end-name)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
1876 (empty-field (equal "" (bibtex-text-in-field-bounds bounds t))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1877 deleted) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1878 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1879 ;; We have more elegant high-level functions for several |
57815 | 1880 ;; tasks done by bibtex-format-entry. However, they contain |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1881 ;; quite some redundancy compared with what we need to do |
57815 | 1882 ;; anyway. So for speed-up we avoid using them. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1883 |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1884 (if (memq 'opts-or-alts format) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1885 (cond ((and empty-field |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1886 (or opt-alt |
55730
b4eeb441c089
Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents:
55348
diff
changeset
|
1887 (let ((field (assoc-string |
b4eeb441c089
Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents:
55348
diff
changeset
|
1888 field-name req-field-list t))) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1889 (or (not field) ; OPT field |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1890 (nth 3 field))))) ; ALT field |
57815 | 1891 ;; Either it is an empty ALT field. Then we have checked |
1892 ;; already that we have one non-empty alternative. Or it | |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1893 ;; is an empty OPT field that we do not miss anyway. |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1894 ;; So we can safely delete this field. |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1895 (delete-region beg-field end-field) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1896 (setq deleted t)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1897 ;; otherwise: not empty, delete "OPT" or "ALT" |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1898 (opt-alt |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1899 (goto-char beg-name) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1900 (delete-char 3)))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1901 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1902 (unless deleted |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1903 (push field-name field-list) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1904 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1905 ;; remove delimiters from purely numerical fields |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1906 (when (and (memq 'numerical-fields format) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1907 (progn (goto-char beg-text) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1908 (looking-at "\\(\"[0-9]+\"\\)\\|\\({[0-9]+}\\)"))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1909 (goto-char end-text) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1910 (delete-char -1) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1911 (goto-char beg-text) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1912 (delete-char 1)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1913 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1914 ;; update delimiters |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1915 (when (memq 'delimiters format) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1916 (goto-char beg-text) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1917 (when (looking-at "[{\"]") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1918 (delete-char 1) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1919 (insert (bibtex-field-left-delimiter))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1920 (goto-char (1- (marker-position end-text))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1921 (when (looking-at "[}\"]") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1922 (delete-char 1) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1923 (insert (bibtex-field-right-delimiter)))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1924 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1925 ;; update page dashes |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1926 (if (and (memq 'page-dashes format) |
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
|
1927 (bibtex-string= field-name "pages") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1928 (progn (goto-char beg-text) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1929 (looking-at |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1930 "\\([\"{][0-9]+\\)[ \t\n]*--?[ \t\n]*\\([0-9]+[\"}]\\)"))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1931 (replace-match "\\1-\\2")) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1932 |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1933 ;; use book title of crossref'd entry |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1934 (if (and (memq 'inherit-booktitle 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
|
1935 empty-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
|
1936 (bibtex-string= field-name "booktitle") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1937 crossref-key) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1938 (let ((title (save-excursion |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1939 (save-restriction |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1940 (widen) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1941 (if (bibtex-find-entry crossref-key t) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
1942 (bibtex-text-in-field "title")))))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1943 (when title |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1944 (setq empty-field nil) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1945 (goto-char (1+ beg-text)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1946 (insert title)))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1947 |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1948 ;; Use booktitle to set a missing title. |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1949 (if (and empty-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
|
1950 (bibtex-string= field-name "title")) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1951 (let ((booktitle (bibtex-text-in-field "booktitle"))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1952 (when booktitle |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1953 (setq empty-field nil) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1954 (goto-char (1+ beg-text)) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
1955 (insert booktitle)))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1956 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1957 ;; if empty field, complain |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1958 (if (and empty-field |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1959 (memq 'required-fields format) |
55730
b4eeb441c089
Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents:
55348
diff
changeset
|
1960 (assoc-string field-name req-field-list t)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1961 (error "Mandatory field `%s' is empty" field-name)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1962 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1963 ;; unify case of field name |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1964 (if (memq 'unify-case format) |
55730
b4eeb441c089
Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents:
55348
diff
changeset
|
1965 (let ((fname (car (assoc-string |
b4eeb441c089
Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents:
55348
diff
changeset
|
1966 field-name |
b4eeb441c089
Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents:
55348
diff
changeset
|
1967 (append (nth 0 (nth 1 entry-list)) |
b4eeb441c089
Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents:
55348
diff
changeset
|
1968 (nth 1 (nth 1 entry-list)) |
b4eeb441c089
Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents:
55348
diff
changeset
|
1969 bibtex-user-optional-fields) |
b4eeb441c089
Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents:
55348
diff
changeset
|
1970 t)))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1971 (if fname |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1972 (progn |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1973 (delete-region beg-name end-name) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1974 (goto-char beg-name) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1975 (insert fname)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1976 ;; there are no rules we could follow |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1977 (downcase-region beg-name end-name)))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1978 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1979 ;; update point |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1980 (goto-char end-field)))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1981 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1982 ;; check whether all required fields are present |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1983 (if (memq 'required-fields format) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1984 (let ((found 0) altlist) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1985 (dolist (fname req-field-list) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1986 (if (nth 3 fname) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1987 (push (car fname) altlist)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1988 (unless (or (member (car fname) field-list) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1989 (nth 3 fname)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1990 (error "Mandatory field `%s' is missing" (car fname)))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1991 (when altlist |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1992 (dolist (fname altlist) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1993 (if (member fname field-list) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1994 (setq found (1+ found)))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1995 (cond ((= found 0) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1996 (error "Alternative mandatory field `%s' is missing" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1997 altlist)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
1998 ((> found 1) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
1999 (error "Alternative fields `%s' are defined %s times" |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2000 altlist found)))))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2001 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2002 ;; update comma after last field |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2003 (if (memq 'last-comma format) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2004 (cond ((and bibtex-comma-after-last-field |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2005 (not (looking-at ","))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2006 (insert ",")) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2007 ((and (not bibtex-comma-after-last-field) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2008 (looking-at ",")) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2009 (delete-char 1)))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2010 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2011 ;; update right entry delimiter |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2012 (if (looking-at ",") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2013 (forward-char)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2014 (when (memq 'delimiters format) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2015 (skip-chars-forward " \t\n") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2016 (delete-char 1) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2017 (insert (bibtex-entry-right-delimiter))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2018 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2019 ;; fill entry |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2020 (if (memq 'realign format) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2021 (bibtex-fill-entry)))))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2022 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2023 |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
2024 (defun bibtex-autokey-abbrev (string len) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2025 "Return an abbreviation of STRING with at least LEN characters. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2026 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
|
2027 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
|
2028 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
|
2029 is returned unchanged." |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2030 (cond ((or (not (numberp len)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2031 (<= (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
|
2032 string) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2033 ((equal len 0) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2034 "") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2035 ((< len 0) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2036 (substring string 0 (abs len))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2037 (t (let* ((case-fold-search t) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2038 (abort-char (string-match "[^aeiou]" string (1- len)))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2039 (if abort-char |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2040 (substring string 0 (1+ abort-char)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2041 string))))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2042 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2043 (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
|
2044 "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
|
2045 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
|
2046 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
|
2047 \(OLD-REGEXP . NEW-STRING\)." |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2048 (let* ((bibtex-expand-strings bibtex-autokey-expand-strings) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2049 (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
|
2050 case-fold-search) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2051 (unless content (setq content "")) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2052 (dolist (pattern change-list content) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2053 (setq content (replace-regexp-in-string (car pattern) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2054 (cdr pattern) |
57815 | 2055 content t))))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2056 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2057 (defun bibtex-autokey-get-names () |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2058 "Get contents of the name field of the current entry. |
57815 | 2059 Do some modifications based on `bibtex-autokey-name-change-strings'. |
2060 Return the names as a concatenated string obeying `bibtex-autokey-names' | |
2061 and `bibtex-autokey-names-stretch'." | |
2062 (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
|
2063 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
|
2064 ;; Some entries do not have a name field. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2065 (if (string= "" names) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2066 names |
57815 | 2067 (let* ((case-fold-search t) |
2068 (name-list (mapcar 'bibtex-autokey-demangle-name | |
2069 (split-string names "[ \t\n]+and[ \t\n]+"))) | |
2070 additional-names) | |
2071 (unless (or (not (numberp bibtex-autokey-names)) | |
2072 (<= (length name-list) | |
2073 (+ bibtex-autokey-names | |
2074 bibtex-autokey-names-stretch))) | |
2075 ;; Take bibtex-autokey-names elements from beginning of name-list | |
2076 (setq name-list (nreverse (nthcdr (- (length name-list) | |
2077 bibtex-autokey-names) | |
2078 (nreverse name-list))) | |
2079 additional-names bibtex-autokey-additional-names)) | |
2080 (concat (mapconcat 'identity name-list | |
2081 bibtex-autokey-name-separator) | |
2082 additional-names))))) | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2083 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2084 (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
|
2085 "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
|
2086 (let* (case-fold-search |
61439
267229876c56
(bibtex-autokey-titleword-ignore, bibtex-reference-key)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61247
diff
changeset
|
2087 (name (cond ((string-match "\\([[:upper:]][^, ]*\\)[^,]*," fullname) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2088 ;; Name is of the form "von Last, First" or |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2089 ;; "von Last, Jr, First" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2090 ;; --> 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
|
2091 (match-string 1 fullname)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2092 ((string-match "\\([^, ]*\\)," fullname) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2093 ;; Strange name: we have a comma, but nothing capital |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2094 ;; 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
|
2095 (match-string 1 fullname)) |
61439
267229876c56
(bibtex-autokey-titleword-ignore, bibtex-reference-key)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61247
diff
changeset
|
2096 ((string-match "\\(\\<[[:lower:]][^ ]* +\\)+\\([[:upper:]][^ ]*\\)" |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2097 fullname) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2098 ;; name is of the form "First von Last", "von Last", |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2099 ;; "First von von Last", or "d'Last" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2100 ;; --> 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
|
2101 (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
|
2102 ((string-match "\\([^ ]+\\) *\\'" fullname) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2103 ;; name is of the form "First Middle Last" or "Last" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2104 ;; --> 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
|
2105 (match-string 1 fullname)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2106 (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
|
2107 (funcall bibtex-autokey-name-case-convert-function |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2108 (bibtex-autokey-abbrev name bibtex-autokey-name-length)))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2109 |
57815 | 2110 (defun bibtex-autokey-get-year () |
2111 "Return year field contents as a string obeying `bibtex-autokey-year-length'." | |
2112 (let ((yearfield (bibtex-autokey-get-field "year"))) | |
2113 (substring yearfield (max 0 (- (length yearfield) | |
2114 bibtex-autokey-year-length))))) | |
2115 | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2116 (defun bibtex-autokey-get-title () |
57815 | 2117 "Get title field contents up to a terminator. |
2118 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
|
2119 (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
|
2120 (titlestring |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2121 (bibtex-autokey-get-field "title" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2122 bibtex-autokey-titleword-change-strings))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2123 ;; ignore everything past a terminator |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2124 (if (string-match bibtex-autokey-title-terminators titlestring) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2125 (setq titlestring (substring titlestring 0 (match-beginning 0)))) |
57815 | 2126 ;; gather words from titlestring into a list. Ignore |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2127 ;; 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
|
2128 (let ((counter 0) |
57815 | 2129 titlewords titlewords-extra word) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2130 (while (and (or (not (numberp bibtex-autokey-titlewords)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2131 (< counter (+ bibtex-autokey-titlewords |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2132 bibtex-autokey-titlewords-stretch))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2133 (string-match "\\b\\w+" titlestring)) |
57815 | 2134 (setq word (match-string 0 titlestring) |
2135 titlestring (substring titlestring (match-end 0))) | |
2136 ;; Ignore words matched by one of the elements of | |
2137 ;; bibtex-autokey-titleword-ignore | |
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
|
2138 (unless (let ((lst bibtex-autokey-titleword-ignore)) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
2139 (while (and lst |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
2140 (not (string-match (concat "\\`\\(?:" (car lst) |
57815 | 2141 "\\)\\'") word))) |
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
|
2142 (setq lst (cdr lst))) |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
2143 lst) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2144 (setq counter (1+ counter)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2145 (if (or (not (numberp bibtex-autokey-titlewords)) |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
2146 (<= counter bibtex-autokey-titlewords)) |
57815 | 2147 (push word titlewords) |
2148 (push word titlewords-extra)))) | |
2149 ;; Obey bibtex-autokey-titlewords-stretch: | |
2150 ;; If by now we have processed all words in titlestring, we include | |
2151 ;; titlewords-extra in titlewords. Otherwise, we ignore titlewords-extra. | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2152 (unless (string-match "\\b\\w+" titlestring) |
57815 | 2153 (setq titlewords (append titlewords-extra titlewords))) |
2154 (mapconcat 'bibtex-autokey-demangle-title (nreverse titlewords) | |
2155 bibtex-autokey-titleword-separator)))) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2156 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2157 (defun bibtex-autokey-demangle-title (titleword) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2158 "Do some abbreviations on TITLEWORD. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2159 The rules are defined in `bibtex-autokey-titleword-abbrevs' |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2160 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
|
2161 (let ((case-fold-search t) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2162 (alist bibtex-autokey-titleword-abbrevs)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2163 (while (and alist |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2164 (not (string-match (concat "\\`\\(?:" (caar alist) "\\)\\'") |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2165 titleword))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2166 (setq alist (cdr alist))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2167 (if alist |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2168 (cdar alist) |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
2169 (funcall bibtex-autokey-titleword-case-convert-function |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2170 (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
|
2171 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
2172 (defun bibtex-generate-autokey () |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2173 "Generate automatically a key for a BibTeX entry. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2174 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
|
2175 The algorithm works as follows. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2176 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2177 The name part: |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2178 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
|
2179 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
|
2180 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
|
2181 `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
|
2182 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
|
2183 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
|
2184 use all names. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2185 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
|
2186 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
|
2187 after a consonant or at a word end). |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2188 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
|
2189 `bibtex-autokey-name-case-convert-function'. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2190 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
|
2191 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
|
2192 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
|
2193 part, append the string `bibtex-autokey-additional-names'. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2194 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2195 The year part: |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2196 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
|
2197 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
|
2198 values are 2 and 4). |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2199 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
|
2200 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
|
2201 `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
|
2202 crossreferenced entry instead. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2203 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2204 The title part |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2205 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
|
2206 `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
|
2207 2. Truncate the title before the first match of |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2208 `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
|
2209 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
|
2210 first `bibtex-autokey-titlewords' words from this truncated title. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2211 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
|
2212 `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
|
2213 truncated title. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2214 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
|
2215 use the corresponding abbreviation (see documentation of this variable |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2216 for further detail). |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2217 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
|
2218 `bibtex-autokey-titleword-length' characters (truncate only after |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2219 a consonant or at a word end). |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2220 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
|
2221 `bibtex-autokey-titleword-case-convert-function'. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2222 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
|
2223 the string `bibtex-autokey-titleword-separator' between any two. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2224 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2225 Concatenate the key: |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2226 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
|
2227 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
|
2228 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
|
2229 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
|
2230 `bibtex-autokey-year-title-separator' between the two. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2231 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
|
2232 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
|
2233 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
|
2234 as the key. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2235 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
|
2236 minibuffer to the user for editing. Insert the key given by the user." |
57815 | 2237 (let* ((names (bibtex-autokey-get-names)) |
2238 (year (bibtex-autokey-get-year)) | |
2239 (title (bibtex-autokey-get-title)) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2240 (autokey (concat bibtex-autokey-prefix-string |
57815 | 2241 names |
2242 (unless (or (equal names "") | |
2243 (equal year "")) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2244 bibtex-autokey-name-year-separator) |
57815 | 2245 year |
2246 (unless (or (and (equal names "") | |
2247 (equal year "")) | |
2248 (equal title "")) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2249 bibtex-autokey-year-title-separator) |
57815 | 2250 title))) |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
2251 (if bibtex-autokey-before-presentation-function |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2252 (funcall bibtex-autokey-before-presentation-function autokey) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2253 autokey))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2254 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2255 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2256 (defun bibtex-global-key-alist () |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2257 "Return global key alist based on `bibtex-files'." |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2258 (if bibtex-files |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2259 (apply 'append |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2260 (mapcar (lambda (buf) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2261 (with-current-buffer buf bibtex-reference-keys)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2262 (bibtex-files-expand t))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2263 bibtex-reference-keys)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2264 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2265 (defun bibtex-read-key (prompt &optional key global) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2266 "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
|
2267 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
|
2268 `bibtex-reference-keys' of `bibtex-files'," |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2269 (let (completion-ignore-case) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2270 (completing-read prompt (if global (bibtex-global-key-alist) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2271 bibtex-reference-keys) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2272 nil nil key 'bibtex-key-history))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2273 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2274 (defun bibtex-read-string-key (&optional key) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2275 "Read BibTeX string key from minibuffer using default KEY." |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2276 (let ((completion-ignore-case t)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2277 (completing-read "String key: " bibtex-strings |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2278 nil nil key 'bibtex-key-history))) |
57815 | 2279 |
2280 (defun bibtex-parse-keys (&optional abortable verbose) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2281 "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
|
2282 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
|
2283 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
|
2284 Return alist of keys if parsing was completed, `aborted' otherwise. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2285 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
|
2286 for parsing BibTeX keys. If parsing fails, try to set this variable to nil." |
57815 | 2287 (let (ref-keys crossref-keys) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2288 (save-excursion |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2289 (save-match-data |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2290 (if verbose |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2291 (bibtex-progress-message |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2292 (concat (buffer-name) ": parsing 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
|
2293 (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
|
2294 (goto-char (point-min)) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2295 (if bibtex-parse-keys-fast |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2296 (let ((case-fold-search t) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2297 (re (concat bibtex-entry-head "\\|" |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2298 ",[ \t\n]*crossref[ \t\n]*=[ \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
|
2299 "\\(\"[^\"]*\"\\|{[^}]*}\\)[ \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
|
2300 (while (re-search-forward re nil t) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2301 (if (and abortable (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
|
2302 ;; 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
|
2303 (throw 'userkey 'aborted)) |
57815 | 2304 (cond ((match-end 3) |
2305 ;; This is a crossref. | |
2306 (let ((key (buffer-substring-no-properties | |
2307 (1+ (match-beginning 3)) (1- (match-end 3))))) | |
2308 (unless (assoc key crossref-keys) | |
2309 (push (list key) crossref-keys)))) | |
2310 ;; only keys of known entries | |
2311 ((assoc-string (bibtex-type-in-head) | |
2312 bibtex-entry-field-alist t) | |
2313 ;; This is an entry. | |
2314 (let ((key (bibtex-key-in-head))) | |
2315 (unless (assoc key ref-keys) | |
2316 (push (cons key t) 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
|
2317 |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2318 (let (;; ignore @String entries because they are handled |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2319 ;; separately by bibtex-parse-strings |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2320 (bibtex-sort-ignore-string-entries t) |
57815 | 2321 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
|
2322 (bibtex-map-entries |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2323 (lambda (key beg end) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2324 (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
|
2325 (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
|
2326 ;; 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
|
2327 (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
|
2328 (if verbose (bibtex-progress-message)) |
57815 | 2329 (unless (assoc key ref-keys) |
2330 (push (cons key t) 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
|
2331 (if (and (setq bounds (bibtex-search-forward-field "crossref" end)) |
57815 | 2332 (setq key (bibtex-text-in-field-bounds bounds t)) |
2333 (not (assoc key crossref-keys))) | |
2334 (push (list key) crossref-keys)))))) | |
2335 | |
2336 (dolist (key crossref-keys) | |
2337 (unless (assoc (car key) ref-keys) (push key ref-keys))) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2338 (if verbose |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2339 (bibtex-progress-message 'done)) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2340 ;; successful operation --> return `bibtex-reference-keys' |
57815 | 2341 (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
|
2342 |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2343 (defun bibtex-parse-strings (&optional add abortable) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2344 "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
|
2345 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
|
2346 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
|
2347 `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
|
2348 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
|
2349 (save-excursion |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2350 (save-match-data |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2351 (goto-char (point-min)) |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2352 (let ((strings (if (and add |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2353 (listp 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
|
2354 bibtex-strings)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2355 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
|
2356 (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
|
2357 (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
|
2358 (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
|
2359 (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
|
2360 (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
|
2361 (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
|
2362 (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
|
2363 (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
|
2364 ;; 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
|
2365 (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
|
2366 (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
|
2367 (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
|
2368 (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
|
2369 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
|
2370 (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
|
2371 ;; 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
|
2372 (setq bibtex-strings strings)))))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2373 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2374 (defun bibtex-strings () |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2375 "Return `bibtex-strings'. Initialize this variable if necessary." |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2376 (if (listp bibtex-strings) bibtex-strings |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2377 (bibtex-parse-strings (bibtex-string-files-init)))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2378 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2379 (defun bibtex-string-files-init () |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2380 "Return initialization for `bibtex-strings'. |
57815 | 2381 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
|
2382 (save-match-data |
57815 | 2383 (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
|
2384 ":+")) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2385 (case-fold-search) |
57815 | 2386 string-files fullfilename compl bounds found) |
2387 ;; collect absolute file names of valid string files | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2388 (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
|
2389 (unless (string-match "\\.bib\\'" filename) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2390 (setq filename (concat filename ".bib"))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2391 ;; test filenames |
57815 | 2392 (if (file-name-absolute-p filename) |
2393 (if (file-readable-p filename) | |
2394 (push filename string-files) | |
2395 (error "BibTeX strings file %s not found" filename)) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2396 (dolist (dir dirlist) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2397 (when (file-readable-p |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2398 (setq fullfilename (expand-file-name filename dir))) |
57815 | 2399 (push fullfilename string-files) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2400 (setq found t))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2401 (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
|
2402 (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
|
2403 filename)))) |
57815 | 2404 ;; parse string files |
2405 (dolist (filename string-files) | |
2406 (with-temp-buffer | |
2407 (insert-file-contents filename) | |
2408 (goto-char (point-min)) | |
2409 (while (setq bounds (bibtex-search-forward-string)) | |
2410 (push (cons (bibtex-reference-key-in-string bounds) | |
2411 (bibtex-text-in-string bounds t)) | |
2412 compl) | |
2413 (goto-char (bibtex-end-of-string bounds))))) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2414 (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
|
2415 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2416 (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
|
2417 "Parse buffer in the background during idle time. |
57815 | 2418 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
|
2419 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
|
2420 which have been modified after last parsing. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2421 Parsing initializes `bibtex-reference-keys' and `bibtex-strings'." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2422 (save-excursion |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2423 (let ((buffers (buffer-list)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2424 (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
|
2425 (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
|
2426 (set-buffer (car buffers)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2427 (if (and (eq major-mode 'bibtex-mode) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2428 (not (eq (buffer-modified-tick) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2429 bibtex-buffer-last-parsed-tick))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2430 (save-restriction |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2431 (widen) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2432 ;; Output no progress messages in bibtex-parse-keys |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2433 ;; because when in y-or-n-p that can hide the question. |
57815 | 2434 (if (and (listp (bibtex-parse-keys t)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2435 ;; 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
|
2436 (listp (bibtex-parse-strings strings-init t))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2437 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2438 ;; remember that parsing was successful |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2439 (setq bibtex-buffer-last-parsed-tick (buffer-modified-tick))))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2440 (setq buffers (cdr buffers)))))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2441 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2442 (defun bibtex-files-expand (&optional current force) |
57815 | 2443 "Return an expanded list of BibTeX buffers based on `bibtex-files'. |
2444 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
|
2445 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
|
2446 If FORCE is non-nil, (re)initialize `bibtex-reference-keys' even if |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2447 already set." |
57815 | 2448 (let ((file-path (split-string (or bibtex-file-path default-directory) ":+")) |
2449 file-list dir-list buffer-list) | |
2450 (dolist (file bibtex-files) | |
2451 (cond ((eq file 'bibtex-file-path) | |
2452 (setq dir-list (append dir-list file-path))) | |
2453 ((file-accessible-directory-p file) | |
2454 (push file dir-list)) | |
2455 ((progn (unless (string-match "\\.bib\\'" file) | |
2456 (setq file (concat file ".bib"))) | |
2457 (file-name-absolute-p file)) | |
2458 (push file file-list)) | |
2459 (t | |
2460 (let (fullfilename found) | |
2461 (dolist (dir file-path) | |
2462 (when (file-readable-p | |
2463 (setq fullfilename (expand-file-name file dir))) | |
2464 (push fullfilename file-list) | |
2465 (setq found t))) | |
2466 (unless found | |
2467 (error "File %s not in paths defined via bibtex-file-path" | |
2468 file)))))) | |
2469 (dolist (file file-list) | |
2470 (unless (file-readable-p file) | |
2471 (error "BibTeX file %s not found" file))) | |
2472 ;; expand dir-list | |
2473 (dolist (dir dir-list) | |
2474 (setq file-list | |
2475 (append file-list (directory-files dir t "\\.bib\\'" t)))) | |
2476 (delete-dups file-list) | |
2477 (dolist (file file-list) | |
2478 (when (file-readable-p file) | |
2479 (push (find-file-noselect file) buffer-list) | |
2480 (with-current-buffer (car buffer-list) | |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2481 (if (or force (not (listp bibtex-reference-keys))) |
57815 | 2482 (bibtex-parse-keys))))) |
2483 (cond ((and current (not (memq (current-buffer) buffer-list))) | |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2484 (push (current-buffer) buffer-list) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2485 (if force (bibtex-parse-keys))) |
57815 | 2486 ((and (not current) (memq (current-buffer) buffer-list)) |
2487 (setq buffer-list (delq (current-buffer) buffer-list)))) | |
2488 buffer-list)) | |
2489 | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2490 (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
|
2491 "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
|
2492 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
|
2493 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
|
2494 ;; Return value is used by cleanup functions. |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2495 (let* ((case-fold-search t) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2496 (beg (save-excursion |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2497 (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
|
2498 (forward-char) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2499 (point))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2500 (end (point)) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2501 (part-of-word (buffer-substring-no-properties beg end)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2502 (completion (try-completion part-of-word completions))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2503 (cond ((not completion) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2504 (error "Can't find completion for `%s'" part-of-word)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2505 ((eq completion t) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2506 part-of-word) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2507 ((not (string= part-of-word completion)) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2508 (delete-region beg end) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2509 (insert completion) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2510 completion) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2511 (t |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2512 (message "Making completion list...") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2513 (with-output-to-temp-buffer "*Completions*" |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2514 (display-completion-list (all-completions part-of-word completions) |
66114
13abee3a9bc6
* message.el (message-expand-group): Pass the common
Masatake YAMATO <jet@gyve.org>
parents:
65776
diff
changeset
|
2515 part-of-word)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2516 (message "Making completion list...done") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2517 nil)))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2518 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2519 (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
|
2520 "Cleanup after inserting string STR. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2521 Remove enclosing field delimiters for STR. Display message with |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2522 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
|
2523 ;; 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
|
2524 (save-excursion |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2525 (let ((abbr (cdr (if (stringp str) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2526 (assoc-string str compl t))))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2527 (if abbr (message "Abbreviation for `%s'" abbr)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2528 (bibtex-remove-delimiters)))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2529 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2530 (defun bibtex-complete-crossref-cleanup (key) |
57815 | 2531 "Display summary message on entry KEY after completion of a crossref key. |
2532 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
|
2533 (save-excursion |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2534 (if (and (stringp key) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2535 (bibtex-find-entry key t)) |
62077
e233a73cbf79
(bibtex-summary): Use current BibTeX entry to avoid calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61439
diff
changeset
|
2536 (message "Ref: %s" (funcall bibtex-summary-function))))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2537 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2538 (defun bibtex-copy-summary-as-kill () |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2539 "Push summery of current BibTeX entry to kill ring. |
57815 | 2540 Use `bibtex-summary-function' to generate summary." |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2541 (interactive) |
62077
e233a73cbf79
(bibtex-summary): Use current BibTeX entry to avoid calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61439
diff
changeset
|
2542 (save-excursion |
e233a73cbf79
(bibtex-summary): Use current BibTeX entry to avoid calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61439
diff
changeset
|
2543 (bibtex-beginning-of-entry) |
e233a73cbf79
(bibtex-summary): Use current BibTeX entry to avoid calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61439
diff
changeset
|
2544 (if (looking-at bibtex-entry-maybe-empty-head) |
e233a73cbf79
(bibtex-summary): Use current BibTeX entry to avoid calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61439
diff
changeset
|
2545 (kill-new (message "%s" (funcall bibtex-summary-function))) |
e233a73cbf79
(bibtex-summary): Use current BibTeX entry to avoid calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61439
diff
changeset
|
2546 (error "No entry found")))) |
e233a73cbf79
(bibtex-summary): Use current BibTeX entry to avoid calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61439
diff
changeset
|
2547 |
e233a73cbf79
(bibtex-summary): Use current BibTeX entry to avoid calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61439
diff
changeset
|
2548 (defun bibtex-summary () |
e233a73cbf79
(bibtex-summary): Use current BibTeX entry to avoid calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61439
diff
changeset
|
2549 "Return summary of current BibTeX entry. |
57815 | 2550 Used as default value of `bibtex-summary-function'." |
2551 ;; It would be neat to customize this function. How? | |
65776
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2552 (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
|
2553 (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
|
2554 (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
|
2555 (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
|
2556 (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
|
2557 (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
|
2558 (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
|
2559 (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
|
2560 (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
|
2561 (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
|
2562 (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
|
2563 (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
|
2564 (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
|
2565 (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
|
2566 (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
|
2567 (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
|
2568 (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
|
2569 "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
|
2570 (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
|
2571 (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
|
2572 (mapconcat (lambda (arg) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2573 (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
|
2574 (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
|
2575 `((" " . ,names) (" " . ,year) (": " . ,title) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2576 (", " . ,journal) (" " . ,volume) (":" . ,pages)) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2577 "")) |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
2578 (error "Entry not found"))) |
257 | 2579 |
14789
d68b71228abd
(bibtex-pop): New generic function which unifies the
Richard M. Stallman <rms@gnu.org>
parents:
14410
diff
changeset
|
2580 (defun bibtex-pop (arg direction) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2581 "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
|
2582 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
|
2583 ;; parse current field |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2584 (let* ((bounds (bibtex-enclosing-field t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2585 (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
|
2586 (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
|
2587 (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
|
2588 (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
|
2589 failure) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2590 (save-excursion |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2591 ;; 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
|
2592 ;; the last one was finished |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2593 (cond ((eq last-command 'bibtex-pop) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2594 (goto-char (if (eq direction 'previous) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2595 bibtex-pop-previous-search-point |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2596 bibtex-pop-next-search-point))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2597 ((eq direction 'previous) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2598 (bibtex-beginning-of-entry)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2599 (t (bibtex-end-of-entry))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2600 ;; 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
|
2601 (while (and (not failure) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2602 (>= (setq arg (1- arg)) 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2603 ;; 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
|
2604 (if (eq direction 'previous) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2605 (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
|
2606 (goto-char (bibtex-start-of-field bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2607 (setq failure t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2608 (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
|
2609 (goto-char (bibtex-end-of-field bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2610 (setq failure t)))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2611 (if failure |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2612 (error "No %s matching BibTeX field" |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2613 (if (eq direction 'previous) "previous" "next")) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2614 ;; Found a matching field. Remember boundaries. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2615 (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
|
2616 (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
|
2617 (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
|
2618 (bibtex-flash-head "From: ") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2619 ;; 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
|
2620 (goto-char end-old-text) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2621 (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
|
2622 (if (= nbeg start-old-field) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2623 (insert (bibtex-field-left-delimiter) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2624 (bibtex-field-right-delimiter)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2625 (insert new-text)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2626 (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
|
2627 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
|
2628 (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
|
2629 (setq this-command 'bibtex-pop)) |
d68b71228abd
(bibtex-pop): New generic function which unifies the
Richard M. Stallman <rms@gnu.org>
parents:
14410
diff
changeset
|
2630 |
57815 | 2631 (defun bibtex-beginning-of-field () |
2632 "Move point backward to beginning of field. | |
2633 This function uses a simple, fast algorithm assuming that the field | |
2634 begins at the beginning of a line. We use this function for font-locking." | |
2635 (let ((field-reg (concat "^[ \t]*" bibtex-field-name "[ \t]*="))) | |
2636 (beginning-of-line) | |
2637 (unless (looking-at field-reg) | |
2638 (re-search-backward field-reg nil t)))) | |
2639 | |
2640 (defun bibtex-font-lock-url (bound) | |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2641 "Font-lock for URLs. BOUND limits the search." |
57815 | 2642 (let ((case-fold-search t) |
2643 (pnt (point)) | |
2644 field bounds start end found) | |
2645 (bibtex-beginning-of-field) | |
2646 (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
|
2647 (<= (point) bound) |
57815 | 2648 (prog1 (re-search-forward bibtex-font-lock-url-regexp bound t) |
2649 (setq field (match-string-no-properties 1))) | |
2650 (setq bounds (bibtex-parse-field-text)) | |
2651 (progn | |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2652 (setq start (car bounds) end (nth 1 bounds)) |
57815 | 2653 ;; Always ignore field delimiters |
2654 (if (memq (char-before end) '(?\} ?\")) | |
2655 (setq end (1- end))) | |
2656 (if (memq (char-after start) '(?\{ ?\")) | |
2657 (setq start (1+ start))) | |
2658 (>= bound start))) | |
2659 (let ((lst bibtex-generate-url-list) url) | |
2660 (goto-char start) | |
2661 (while (and (not found) | |
61247
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
2662 (setq url (car (pop lst)))) |
57815 | 2663 (setq found (and (bibtex-string= field (car url)) |
2664 (re-search-forward (cdr url) end t) | |
61247
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
2665 (>= (match-beginning 0) pnt))))) |
57815 | 2666 (goto-char end)) |
2667 (if found (bibtex-button (match-beginning 0) (match-end 0) | |
2668 'bibtex-url (match-beginning 0))) | |
2669 found)) | |
2670 | |
2671 (defun bibtex-font-lock-crossref (bound) | |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2672 "Font-lock for crossref fields. BOUND limits the search." |
57815 | 2673 (let ((case-fold-search t) |
2674 (pnt (point)) | |
2675 (crossref-reg (concat "^[ \t]*crossref[ \t]*=[ \t\n]*" | |
2676 "\\(\"[^\"]*\"\\|{[^}]*}\\)[ \t\n]*[,})]")) | |
2677 start end found) | |
2678 (bibtex-beginning-of-field) | |
2679 (while (and (not found) | |
2680 (re-search-forward crossref-reg bound t)) | |
2681 (setq start (1+ (match-beginning 1)) | |
2682 end (1- (match-end 1)) | |
2683 found (>= start pnt))) | |
2684 (if found (bibtex-button start end 'bibtex-find-crossref | |
2685 (buffer-substring-no-properties start end) | |
2686 start t)) | |
2687 found)) | |
2688 | |
2689 (defun bibtex-button-action (button) | |
2690 "Call BUTTON's BibTeX function." | |
2691 (apply (button-get button 'bibtex-function) | |
2692 (button-get button 'bibtex-args))) | |
2693 | |
2694 (define-button-type 'bibtex-url | |
2695 'action 'bibtex-button-action | |
2696 'bibtex-function 'bibtex-url | |
2697 'help-echo (purecopy "mouse-2, RET: follow URL")) | |
2698 | |
2699 (define-button-type 'bibtex-find-crossref | |
2700 'action 'bibtex-button-action | |
2701 'bibtex-function 'bibtex-find-crossref | |
2702 'help-echo (purecopy "mouse-2, RET: follow crossref")) | |
2703 | |
2704 (defun bibtex-button (beg end type &rest args) | |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2705 "Make a BibTeX button from BEG to END of type TYPE in the current buffer." |
57815 | 2706 (make-text-button beg end 'type type 'bibtex-args args)) |
2707 | |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2708 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2709 ;; Interactive Functions: |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2710 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2711 ;;;###autoload |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2712 (defun bibtex-mode () |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2713 "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
|
2714 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2715 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
|
2716 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2717 Use commands such as \\[bibtex-Book] to get a template for a specific entry. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2718 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
|
2719 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
|
2720 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
|
2721 |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2722 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
|
2723 `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
|
2724 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
|
2725 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
|
2726 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
|
2727 |
62077
e233a73cbf79
(bibtex-summary): Use current BibTeX entry to avoid calling
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
61439
diff
changeset
|
2728 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
|
2729 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
|
2730 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2731 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2732 Special information: |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2733 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
2734 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
|
2735 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2736 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
|
2737 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
|
2738 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
|
2739 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
|
2740 \\[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
|
2741 \\[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
|
2742 \\[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
|
2743 \\[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
|
2744 \\[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
|
2745 \\[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
|
2746 \\[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
|
2747 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2748 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
|
2749 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
|
2750 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
|
2751 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
|
2752 for the BibTeX entry, see `bibtex-generate-autokey'. |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
2753 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
|
2754 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
|
2755 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
|
2756 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2757 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
|
2758 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2759 ---------------------------------------------------------- |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2760 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
|
2761 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
|
2762 |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
2763 \\{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
|
2764 (interactive) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2765 (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
|
2766 (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
|
2767 (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
|
2768 (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
|
2769 (set-syntax-table bibtex-mode-syntax-table) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2770 (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
|
2771 ;; Install stealthy parse function if not already installed |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2772 (unless bibtex-parse-idle-timer |
57815 | 2773 (setq bibtex-parse-idle-timer (run-with-idle-timer |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2774 bibtex-parse-keys-timeout t |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2775 'bibtex-parse-buffers-stealthily))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2776 (set (make-local-variable 'paragraph-start) "[ \f\n\t]*$") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2777 (set (make-local-variable 'comment-start) bibtex-comment-start) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2778 (set (make-local-variable 'comment-start-skip) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2779 (concat (regexp-quote bibtex-comment-start) "\\>[ \t]*")) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2780 (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
|
2781 (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
|
2782 (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
|
2783 (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
|
2784 (set (make-local-variable 'fill-prefix) (make-string (+ bibtex-entry-offset |
57815 | 2785 bibtex-contline-indentation) |
64054
23a07b9b6687
(bibtex, bibtex-autokey): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents:
63470
diff
changeset
|
2786 ?\s)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2787 (set (make-local-variable 'font-lock-defaults) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2788 '(bibtex-font-lock-keywords |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2789 nil t ((?$ . "\"") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2790 ;; Mathematical expressions should be fontified as strings |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2791 (?\" . ".") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2792 ;; Quotes are field delimiters and quote-delimited |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2793 ;; entries should be fontified in the same way as |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2794 ;; brace-delimited ones |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2795 ) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2796 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
|
2797 (font-lock-syntactic-keywords . bibtex-font-lock-syntactic-keywords) |
57815 | 2798 (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
|
2799 (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
|
2800 . (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
|
2801 (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
|
2802 (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
|
2803 (setq imenu-generic-expression |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2804 (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
|
2805 imenu-case-fold-search t) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2806 (make-local-variable 'choose-completion-string-functions) |
20907
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
2807 ;; XEmacs needs easy-menu-add, Emacs does not care |
9a55a557cb5a
(bibtex-autokey-names): Change number tag to integer.
Richard M. Stallman <rms@gnu.org>
parents:
20866
diff
changeset
|
2808 (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
|
2809 (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
|
2810 (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
|
2811 |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2812 (defun bibtex-field-list (entry-type) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2813 "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
|
2814 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
|
2815 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
|
2816 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
|
2817 `bibtex-include-OPTkey', `bibtex-include-OPTcrossref', |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2818 and `bibtex-user-optional-fields'." |
55730
b4eeb441c089
Use assoc-string, not assoc-ignore-case.
Richard M. Stallman <rms@gnu.org>
parents:
55348
diff
changeset
|
2819 (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
|
2820 required optional) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2821 (unless e |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2822 (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
|
2823 (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
|
2824 (nth 2 e)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2825 (setq required (nth 0 (nth 2 e)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2826 optional (nth 1 (nth 2 e))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2827 (setq required (nth 0 (nth 1 e)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2828 optional (nth 1 (nth 1 e)))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2829 (if bibtex-include-OPTkey |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2830 (push (list "key" |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2831 "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
|
2832 (if (or (stringp bibtex-include-OPTkey) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2833 (fboundp bibtex-include-OPTkey)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2834 bibtex-include-OPTkey)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2835 optional)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2836 (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
|
2837 (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
|
2838 optional)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2839 (setq optional (append optional bibtex-user-optional-fields)) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2840 (cons required optional))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2841 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2842 (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
|
2843 "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
|
2844 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
|
2845 is non-nil." |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2846 (interactive |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2847 (let ((completion-ignore-case t)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2848 (list (completing-read "Entry Type: " bibtex-entry-field-alist |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2849 nil t nil 'bibtex-entry-type-history)))) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2850 (let ((key (if bibtex-maintain-sorted-entries |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2851 (bibtex-read-key (format "%s key: " entry-type)))) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2852 (field-list (bibtex-field-list entry-type))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2853 (unless (bibtex-prepare-new-entry (list key nil entry-type)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
2854 (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
|
2855 (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
|
2856 (insert "@" entry-type (bibtex-entry-left-delimiter)) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2857 (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
|
2858 (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
|
2859 (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
|
2860 (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
|
2861 (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
|
2862 (insert ",")) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2863 (insert "\n") |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
2864 (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
|
2865 (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
|
2866 (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
|
2867 (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
|
2868 (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
|
2869 (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
|
2870 |
69887
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
2871 (defun bibtex-entry-update (&optional entry-type) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2872 "Update an existing BibTeX entry. |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2873 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
|
2874 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
|
2875 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
|
2876 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
|
2877 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
|
2878 (interactive |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
2879 (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
|
2880 (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
|
2881 (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
|
2882 nil t nil 'bibtex-entry-type-history))))) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2883 (save-excursion |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
2884 (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
|
2885 (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
|
2886 (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
|
2887 (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
|
2888 (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
|
2889 (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
|
2890 (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
|
2891 (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
|
2892 (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
|
2893 (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
|
2894 bounds) |
14e2e318d372
(bibtex-entry-update): New optional arg entry-type. Add field
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
69886
diff
changeset
|
2895 (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
|
2896 (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
|
2897 (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
|
2898 (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
|
2899 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
|
2900 (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
|
2901 (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
|
2902 (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
|
2903 (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
|
2904 (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
|
2905 (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
|
2906 (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
|
2907 (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
|
2908 (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
|
2909 (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
|
2910 |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2911 (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
|
2912 "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
|
2913 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
|
2914 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
|
2915 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
|
2916 Move point to the end of the last field. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2917 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
|
2918 (let (alist bounds) |
55880
1b2cb608f18e
(bibtex-format-entry): Fix regexps.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55730
diff
changeset
|
2919 (when (looking-at bibtex-entry-maybe-empty-head) |
57815 | 2920 (push (cons "=type=" (bibtex-type-in-head)) alist) |
2921 (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
|
2922 (goto-char (match-end 0)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2923 (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
|
2924 (push (cons (bibtex-name-in-field bounds t) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2925 (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
|
2926 alist) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2927 (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
|
2928 alist)) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2929 |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2930 (defun bibtex-autofill-entry () |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2931 "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
|
2932 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
|
2933 \(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
|
2934 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
|
2935 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
|
2936 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
|
2937 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
|
2938 (interactive) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2939 (undo-boundary) ;So you can easily undo it, if it didn't work right. |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
2940 (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
|
2941 (when (looking-at bibtex-entry-head) |
57815 | 2942 (let ((type (bibtex-type-in-head)) |
2943 (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
|
2944 (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
|
2945 (case-fold-search t) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2946 (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
|
2947 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
|
2948 ;; 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
|
2949 (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
|
2950 ;; 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
|
2951 ;; 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
|
2952 (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
|
2953 (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
|
2954 (bibtex-beginning-of-entry) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2955 (if (and (looking-at bibtex-entry-head) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2956 (bibtex-string= type (bibtex-type-in-head)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2957 ;; In case we found ourselves :-( |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2958 (not (equal key (setq tmp (bibtex-key-in-head))))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2959 (setq other-key tmp |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2960 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
|
2961 (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
|
2962 (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
|
2963 (bibtex-skip-to-valid-entry) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2964 (if (and (looking-at bibtex-entry-head) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2965 (bibtex-string= type (bibtex-type-in-head)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2966 ;; In case we found ourselves :-( |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2967 (not (equal key (setq tmp (bibtex-key-in-head)))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2968 (or (not other-key) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2969 ;; Check which is the best match. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2970 (< (length (try-completion "" (list key other-key))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2971 (length (try-completion "" (list key tmp)))))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2972 (setq other-key tmp |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
2973 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
|
2974 ;; 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
|
2975 (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
|
2976 (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
|
2977 (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
|
2978 (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
|
2979 (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
|
2980 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
|
2981 (if (not (and text |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
2982 (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
|
2983 (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
|
2984 (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
|
2985 (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
|
2986 (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
|
2987 ;; 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
|
2988 ;; 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
|
2989 (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
|
2990 ;; 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
|
2991 ;; 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
|
2992 (_ (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
|
2993 (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
|
2994 (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
|
2995 (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
|
2996 (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
|
2997 (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
|
2998 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
2999 (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
|
3000 "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
|
3001 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
|
3002 interactive calls." |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3003 (interactive (list nil t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3004 (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
|
3005 (if (string-match "@" field) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3006 (cond ((bibtex-string= field "@string") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3007 (message "String definition")) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3008 ((bibtex-string= field "@preamble") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3009 (message "Preamble definition")) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3010 (t (message "Entry key"))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3011 (let* ((case-fold-search t) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3012 (type (save-excursion |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3013 (bibtex-beginning-of-entry) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3014 (looking-at bibtex-entry-maybe-empty-head) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3015 (bibtex-type-in-head))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3016 (field-list (bibtex-field-list type)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3017 (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
|
3018 (cdr field-list)) t))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3019 (if comment (message "%s" (nth 1 comment)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3020 (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
|
3021 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3022 (defun bibtex-make-field (field &optional move 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
|
3023 "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
|
3024 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
|
3025 \(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
|
3026 `bibtex-entry-field-alist'. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3027 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
|
3028 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
|
3029 the new field. Otherwise move point past the new field. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3030 MOVE and INTERACTIVE are t when called interactively." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3031 (interactive |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3032 (list (let ((completion-ignore-case t) |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3033 (field-list (bibtex-field-list |
57815 | 3034 (save-excursion |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3035 (bibtex-beginning-of-entry) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3036 (looking-at bibtex-any-entry-maybe-empty-head) |
57815 | 3037 (bibtex-type-in-head))))) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3038 (completing-read "BibTeX field name: " |
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3039 (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
|
3040 nil nil nil bibtex-field-history)) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3041 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
|
3042 (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
|
3043 (setq field (list field))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3044 (when move |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3045 (bibtex-find-text) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3046 (if (looking-at "[}\"]") |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3047 (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
|
3048 (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
|
3049 (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
|
3050 (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
|
3051 (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
|
3052 (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
|
3053 (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
|
3054 (- 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
|
3055 (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
|
3056 (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
|
3057 (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
|
3058 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
|
3059 (let ((init (nth 2 field))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3060 (insert (cond ((stringp init) init) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3061 ((fboundp init) (funcall init)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3062 (t (concat (bibtex-field-left-delimiter) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3063 (bibtex-field-right-delimiter)))))) |
57833
1a602333ec1d
(bibtex-make-field): Fix typo.
John Paul Wallington <jpw@pobox.com>
parents:
57819
diff
changeset
|
3064 (when interactive |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3065 ;; (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
|
3066 (if (memq (preceding-char) '(?} ?\")) (forward-char -1)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3067 (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
|
3068 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3069 (defun bibtex-beginning-of-entry () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3070 "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
|
3071 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
|
3072 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
|
3073 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
|
3074 (interactive) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3075 (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
|
3076 (if (looking-at "@") |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3077 (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
|
3078 (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
|
3079 (point)) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3080 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3081 (defun bibtex-end-of-entry () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3082 "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
|
3083 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
|
3084 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
|
3085 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
|
3086 (interactive) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3087 (let ((case-fold-search t) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3088 (pnt (point)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3089 (_ (bibtex-beginning-of-entry)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3090 (bounds (bibtex-valid-entry t))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3091 (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
|
3092 ;; @String or @Preamble |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3093 ((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
|
3094 (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
|
3095 ((looking-at bibtex-any-valid-entry-type) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3096 ;; Parsing of entry failed |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3097 (error "Syntactically incorrect BibTeX entry starts here.")) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3098 (t (if (interactive-p) (message "Not on a known BibTeX entry.")) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3099 (goto-char pnt))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3100 (point))) |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
3101 |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3102 (defun bibtex-goto-line (arg) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3103 "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
|
3104 ;; code adapted from `goto-line' |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3105 (goto-char (point-min)) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3106 (if (eq selective-display t) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3107 (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
|
3108 (forward-line (1- arg)))) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3109 |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3110 (defun bibtex-reposition-window () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3111 "Make the current BibTeX entry visible. |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3112 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
|
3113 Otherwise display the beginning of entry." |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3114 (interactive) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3115 (let ((pnt (point)) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3116 (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
|
3117 (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
|
3118 (if (> (window-body-height) (- end beg)) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3119 ;; entry fits in current window |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3120 (progn |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3121 (bibtex-goto-line (/ (+ 1 beg end) 2)) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3122 (recenter) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3123 (goto-char pnt)) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3124 ;; entry too large for current window |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3125 (bibtex-goto-line beg) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3126 (recenter 0) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3127 (if (> (1+ (- (line-number-at-pos pnt) beg)) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3128 (window-body-height)) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3129 (bibtex-goto-line beg) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3130 (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
|
3131 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3132 (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
|
3133 "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
|
3134 (interactive) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3135 (set-mark (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
|
3136 (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
|
3137 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3138 (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
|
3139 "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
|
3140 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
|
3141 otherwise count all entries except @String entries. |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3142 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
|
3143 (interactive "P") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3144 (let ((number 0) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3145 (bibtex-sort-ignore-string-entries (not count-string-entries))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3146 (save-restriction |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3147 (if mark-active (narrow-to-region (region-beginning) (region-end))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3148 (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
|
3149 (message "%s contains %d entries." |
57815 | 3150 (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
|
3151 number))) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3152 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3153 (defun bibtex-ispell-entry () |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3154 "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
|
3155 (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
|
3156 (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
|
3157 (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
|
3158 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3159 (defun bibtex-ispell-abstract () |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3160 "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
|
3161 (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
|
3162 (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
|
3163 (bibtex-beginning-of-entry) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3164 (bibtex-search-forward-field "abstract" t)))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3165 (if bounds |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3166 (ispell-region (bibtex-start-of-text-in-field bounds) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3167 (bibtex-end-of-text-in-field bounds)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3168 (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
|
3169 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3170 (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
|
3171 "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
|
3172 (interactive) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3173 (save-excursion |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3174 (widen) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3175 (narrow-to-region (bibtex-beginning-of-entry) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3176 (bibtex-end-of-entry)))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3177 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3178 (defun bibtex-entry-index () |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3179 "Return index of BibTeX entry head at or past position of point. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3180 The index is a list (KEY CROSSREF-KEY ENTRY-NAME) that is used for sorting |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3181 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
|
3182 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
|
3183 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
|
3184 (let ((case-fold-search t)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3185 (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
|
3186 (let ((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
|
3187 ;; all entry names should be downcase (for ease of comparison) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3188 (entry-name (downcase (bibtex-type-in-head)))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3189 ;; 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
|
3190 (if (eq bibtex-maintain-sorted-entries 'crossref) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3191 (let ((bounds (bibtex-search-forward-field |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3192 "\\(OPT\\)?crossref" t))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3193 (list key |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3194 (if bounds (bibtex-text-in-field-bounds bounds t)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3195 entry-name)) |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3196 (list key nil entry-name)))))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3197 |
71044
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3198 (defun bibtex-init-sort-entry-class-alist () |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3199 (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
|
3200 (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
|
3201 (let ((i -1) alist) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3202 (dolist (class bibtex-sort-entry-class alist) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3203 (setq i (1+ i)) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3204 (dolist (entry class) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3205 ;; All entry names should be downcase (for ease of comparison). |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3206 (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
|
3207 alist))))))) |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3208 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3209 (defun bibtex-lessp (index1 index2) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3210 "Predicate for sorting BibTeX entries with indices INDEX1 and INDEX2. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3211 Each index is a list (KEY CROSSREF-KEY ENTRY-NAME). |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
3212 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
|
3213 If its value is nil use plain sorting." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3214 (cond ((not index1) (not index2)) ; indices can be nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3215 ((not index2) nil) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3216 ((eq bibtex-maintain-sorted-entries 'crossref) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3217 (if (nth 1 index1) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3218 (if (nth 1 index2) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3219 (or (string-lessp (nth 1 index1) (nth 1 index2)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3220 (and (string-equal (nth 1 index1) (nth 1 index2)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3221 (string-lessp (nth 0 index1) (nth 0 index2)))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3222 (not (string-lessp (nth 0 index2) (nth 1 index1)))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3223 (if (nth 1 index2) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3224 (string-lessp (nth 0 index1) (nth 1 index2)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3225 (string-lessp (nth 0 index1) (nth 0 index2))))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3226 ((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
|
3227 (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
|
3228 (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
|
3229 '(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
|
3230 (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
|
3231 (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
|
3232 '(nil . 1000))))) ; if there is nothing else |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3233 (or (< n1 n2) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3234 (and (= n1 n2) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3235 (string-lessp (car index1) (car index2)))))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3236 (t ; (eq bibtex-maintain-sorted-entries 'plain) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3237 (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
|
3238 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3239 (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
|
3240 "Sort BibTeX buffer alphabetically by key. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3241 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
|
3242 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
|
3243 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
|
3244 are ignored." |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3245 (interactive) |
71044
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3246 (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
|
3247 (bibtex-init-sort-entry-class-alist) ; Needed by `bibtex-lessp'. |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3248 (sort-subr nil |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3249 'bibtex-skip-to-valid-entry ; NEXTREC function |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3250 'bibtex-end-of-entry ; ENDREC function |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3251 'bibtex-entry-index ; STARTKEY function |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3252 nil ; ENDKEY function |
da5fa425123d
(bibtex-autokey-name-case-convert-function)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70841
diff
changeset
|
3253 'bibtex-lessp)) ; PREDICATE |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3254 |
57815 | 3255 (defun bibtex-find-crossref (crossref-key &optional pnt split) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3256 "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
|
3257 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
|
3258 Otherwise the search is limited to the current buffer. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3259 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
|
3260 If CROSSREF-KEY is in the same buffer like current entry but before it |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3261 an error is signaled. Optional arg PNT is the position of the referencing |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3262 entry. It defaults to position of point. If optional arg SPLIT is non-nil, |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3263 split window so that both the referencing and the crossrefed entry are |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3264 displayed. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3265 If called interactively, CROSSREF-KEY defaults to crossref key of current |
57815 | 3266 entry and SPLIT is 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
|
3267 (interactive |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3268 (let ((crossref-key |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3269 (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
|
3270 (bibtex-beginning-of-entry) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3271 (let ((bounds (bibtex-search-forward-field "crossref" 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
|
3272 (if bounds |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3273 (bibtex-text-in-field-bounds bounds t)))))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3274 (list (bibtex-read-key "Find crossref key: " crossref-key t) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3275 (point) t))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3276 (let (buffer pos eqb) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3277 (save-excursion |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3278 (setq pos (bibtex-find-entry crossref-key t) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3279 buffer (current-buffer))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3280 (setq eqb (eq buffer (current-buffer))) |
57815 | 3281 (cond ((not pos) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3282 (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
|
3283 (split ; called (quasi) interactively |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3284 (unless pnt (setq pnt (point))) |
57815 | 3285 (goto-char pnt) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3286 (if eqb (select-window (split-window)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3287 (pop-to-buffer buffer)) |
57815 | 3288 (goto-char pos) |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3289 (bibtex-reposition-window) |
57815 | 3290 (beginning-of-line) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3291 (if (and eqb (> pnt pos)) |
59733
96d73eb02751
(bibtex-format-entry): Use `bibtex-empty-field-re' only on the text of
Lute Kamstra <lute@gnu.org>
parents:
58772
diff
changeset
|
3292 (error "The referencing entry must precede the crossrefed entry!"))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3293 ;; `bibtex-find-crossref' is called noninteractively during |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3294 ;; 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
|
3295 ;; whether the current entry and the crossrefed entry have |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3296 ;; the correct sorting order. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3297 (eqb (goto-char pos)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3298 (t (set-buffer buffer) (goto-char pos))) |
57815 | 3299 pos)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3300 |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3301 (defun bibtex-find-entry (key &optional global start display) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3302 "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
|
3303 Return position of entry if KEY is found or nil if not found. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3304 With prefix arg GLOBAL non-nil, search KEY in `bibtex-files'. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3305 Otherwise the search is limited to the current buffer. |
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
|
3306 Optional arg START is buffer position where the search starts. |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
3307 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
|
3308 If DISPLAY is non-nil, display the buffer containing KEY. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3309 Otherwise, use `set-buffer'. DISPLAY is t when called interactively." |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3310 (interactive (list (bibtex-read-key "Find key: " nil current-prefix-arg) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3311 current-prefix-arg nil t)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3312 (if (and global bibtex-files) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3313 (let ((buffer-list (bibtex-files-expand t)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3314 buffer found) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3315 (while (and (not found) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3316 (setq buffer (pop buffer-list))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3317 (with-current-buffer buffer |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3318 (if (cdr (assoc-string key bibtex-reference-keys)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3319 ;; `bibtex-find-entry' moves point if key found |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3320 (setq found (bibtex-find-entry key))))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3321 (cond ((and found display) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3322 (let ((same-window-buffer-names |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3323 (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
|
3324 (pop-to-buffer buffer) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3325 (bibtex-reposition-window))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3326 (found (set-buffer buffer)) |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3327 (display (message "Key `%s' not found" key))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3328 found) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3329 |
70210
83aa98a17215
(bibtex-find-entry): Don't demand matching case for @Article, etc.
J.D. Smith <jdsmith@as.arizona.edu>
parents:
69887
diff
changeset
|
3330 (let* ((case-fold-search t) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3331 (pnt (save-excursion |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3332 (goto-char (or start (point-min))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3333 (if (re-search-forward (concat "^[ \t]*\\(" |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3334 bibtex-entry-type |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3335 "\\)[ \t]*[({][ \t\n]*\\(" |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3336 (regexp-quote key) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3337 "\\)[ \t\n]*[,=]") |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3338 nil t) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3339 (match-beginning 0))))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3340 (cond (pnt |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3341 (goto-char pnt) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3342 (if display (bibtex-reposition-window))) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3343 (display (message "Key `%s' not found" key))) |
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
3344 pnt))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3345 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3346 (defun bibtex-prepare-new-entry (index) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3347 "Prepare a new BibTeX entry with index INDEX. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3348 INDEX is a list (KEY CROSSREF-KEY ENTRY-NAME). |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3349 Move point where the entry KEY should be placed. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3350 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
|
3351 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
|
3352 see `bibtex-validate'. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3353 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
|
3354 (bibtex-init-sort-entry-class-alist) ; Needed by `bibtex-lessp'. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3355 (let ((key (nth 0 index)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3356 key-exist) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3357 (cond ((or (null key) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3358 (and (stringp key) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3359 (string-equal key "")) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3360 (and (not (setq key-exist (bibtex-find-entry key))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3361 (not bibtex-maintain-sorted-entries))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3362 (bibtex-move-outside-of-entry)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3363 ;; 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
|
3364 ;; then point will be at beginning of entry named key. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3365 (key-exist) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3366 (t ; bibtex-maintain-sorted-entries is non-nil |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3367 (let* ((case-fold-search t) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3368 (left (save-excursion (bibtex-beginning-of-first-entry))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3369 (bounds (save-excursion (goto-char (point-max)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3370 (bibtex-skip-to-valid-entry t))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3371 (right (if bounds (cdr bounds) (point-min))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3372 (found (if (>= left right) left)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3373 actual-index new) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3374 (save-excursion |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3375 ;; Binary search |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3376 (while (not found) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3377 (goto-char (/ (+ left right) 2)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3378 (bibtex-skip-to-valid-entry t) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3379 (setq actual-index (bibtex-entry-index)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3380 (cond ((bibtex-lessp index actual-index) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3381 (setq new (bibtex-beginning-of-entry)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3382 (if (equal right new) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3383 (setq found right) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3384 (setq right new))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3385 (t |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3386 (bibtex-end-of-entry) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3387 (bibtex-skip-to-valid-entry) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3388 (setq new (point)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3389 (if (equal left new) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3390 (setq found right) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3391 (setq left new)))))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3392 (goto-char found) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3393 (bibtex-beginning-of-entry) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3394 (setq actual-index (save-excursion (bibtex-entry-index))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3395 (when (or (not actual-index) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3396 (bibtex-lessp actual-index index)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3397 ;; buffer contains no valid entries or |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3398 ;; greater than last entry --> append |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3399 (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
|
3400 (unless (bobp) (newline (forward-line 2))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3401 (beginning-of-line))))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3402 (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
|
3403 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3404 (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
|
3405 "Validate if buffer or region is syntactically correct. |
57815 | 3406 Check also for duplicate keys and correct sort order provided |
3407 `bibtex-maintain-sorted-entries' is non-nil. | |
3408 With optional argument TEST-THOROUGHLY non-nil check also for | |
3409 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
|
3410 If mark is active, validate current region, if not the whole buffer. |
57815 | 3411 Only check known entry types, so you can put comments outside of entries. |
3412 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
|
3413 (interactive "P") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3414 (let* ((case-fold-search t) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3415 error-list syntax-error) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3416 (save-excursion |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3417 (save-restriction |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3418 (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
|
3419 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3420 ;; Check syntactical structure of entries |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3421 (goto-char (point-min)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3422 (bibtex-progress-message "Checking syntactical structure") |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3423 (let (bounds end) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3424 (while (setq end (re-search-forward "^[ \t]*@" nil t)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3425 (bibtex-progress-message) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3426 (goto-char (match-beginning 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3427 (cond ((setq bounds (bibtex-valid-entry)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3428 (goto-char (cdr bounds))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3429 ((setq bounds (or (bibtex-parse-string) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3430 (bibtex-parse-preamble))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3431 (goto-char (bibtex-end-of-string bounds))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3432 ((looking-at bibtex-any-valid-entry-type) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3433 (push (cons (bibtex-current-line) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3434 "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
|
3435 error-list) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3436 (goto-char (match-end 0))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3437 (t (goto-char end))))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3438 (bibtex-progress-message 'done) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3439 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3440 (if error-list |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3441 ;; Continue only if there were no syntax errors. |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3442 (setq syntax-error t) |
57815 | 3443 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3444 ;; Check for duplicate keys and correct sort order |
57815 | 3445 (let (previous current key-list) |
3446 (bibtex-progress-message "Checking for duplicate keys") | |
3447 (bibtex-map-entries | |
3448 (lambda (key beg end) | |
3449 (bibtex-progress-message) | |
3450 (setq current (bibtex-entry-index)) | |
3451 (cond ((not previous)) | |
3452 ((member key key-list) | |
3453 (push (cons (bibtex-current-line) | |
3454 (format "Duplicate key `%s'" key)) | |
3455 error-list)) | |
3456 ((and bibtex-maintain-sorted-entries | |
3457 (not (bibtex-lessp previous current))) | |
3458 (push (cons (bibtex-current-line) | |
3459 "Entries out of order") | |
3460 error-list))) | |
3461 (push key key-list) | |
3462 (setq previous current))) | |
3463 (bibtex-progress-message 'done)) | |
3464 | |
3465 ;; Check for duplicate keys in `bibtex-files'. | |
3466 (bibtex-parse-keys) | |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3467 ;; We don't want to be fooled by outdated `bibtex-reference-keys'. |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3468 (dolist (buffer (bibtex-files-expand nil t)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3469 (dolist (key (with-current-buffer buffer bibtex-reference-keys)) |
57815 | 3470 (when (and (cdr key) |
3471 (cdr (assoc-string (car key) bibtex-reference-keys))) | |
3472 (bibtex-find-entry (car key)) | |
3473 (push (cons (bibtex-current-line) | |
3474 (format "Duplicate key `%s' in %s" (car key) | |
3475 (abbreviate-file-name (buffer-file-name buffer)))) | |
3476 error-list)))) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3477 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3478 (when test-thoroughly |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3479 (bibtex-progress-message |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3480 "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
|
3481 (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
|
3482 (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
|
3483 (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
|
3484 (bibtex-progress-message) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3485 (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
|
3486 bibtex-entry-field-alist t)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3487 (req (copy-sequence (elt (elt entry-list 1) 0))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3488 (creq (copy-sequence (elt (elt entry-list 2) 0))) |
57815 | 3489 crossref-there bounds alt-there field) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3490 (bibtex-beginning-first-field beg) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3491 (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
|
3492 (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
|
3493 (if (and (bibtex-string= field-name "month") |
57815 | 3494 ;; Check only abbreviated month fields. |
3495 (let ((month (bibtex-text-in-field-bounds bounds))) | |
3496 (not (or (string-match "\\`[\"{].+[\"}]\\'" month) | |
3497 (assoc-string | |
3498 month | |
3499 bibtex-predefined-month-strings t))))) | |
3500 (push (cons (bibtex-current-line) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3501 "Questionable month field") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3502 error-list)) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3503 (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
|
3504 req (delete field req) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3505 creq (delete (assoc-string field-name creq t) creq)) |
57815 | 3506 (if (nth 3 field) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3507 (if alt-there |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3508 (push (cons (bibtex-current-line) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3509 "More than one non-empty alternative") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3510 error-list) |
57815 | 3511 (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
|
3512 (if (bibtex-string= field-name "crossref") |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3513 (setq crossref-there t))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3514 (goto-char (bibtex-end-of-field bounds))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3515 (if crossref-there (setq req creq)) |
57815 | 3516 (let (alt) |
3517 (dolist (field req) | |
3518 (if (nth 3 field) | |
3519 (push (car field) alt) | |
3520 (push (cons (save-excursion (goto-char beg) | |
3521 (bibtex-current-line)) | |
3522 (format "Required field `%s' missing" | |
3523 (car field))) | |
3524 error-list))) | |
3525 ;; The following fails if there are more than two | |
3526 ;; alternatives in a BibTeX entry, which isn't | |
3527 ;; the case momentarily. | |
3528 (if (cdr alt) | |
3529 (push (cons (save-excursion (goto-char beg) | |
3530 (bibtex-current-line)) | |
3531 (format "Alternative fields `%s'/`%s' missing" | |
3532 (car alt) (cadr alt))) | |
3533 error-list))))))) | |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3534 (bibtex-progress-message 'done))))) |
57815 | 3535 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3536 (if error-list |
57815 | 3537 (let ((file (file-name-nondirectory (buffer-file-name))) |
3538 (dir default-directory) | |
3539 (err-buf "*BibTeX validation errors*")) | |
3540 (setq error-list (sort error-list 'car-less-than-car)) | |
3541 (with-current-buffer (get-buffer-create err-buf) | |
3542 (setq default-directory dir) | |
3543 (unless (eq major-mode 'compilation-mode) (compilation-mode)) | |
3544 (toggle-read-only -1) | |
3545 (delete-region (point-min) (point-max)) | |
3546 (insert "BibTeX mode command `bibtex-validate'\n" | |
3547 (if syntax-error | |
3548 "Maybe undetected errors due to syntax errors. Correct and validate again.\n" | |
3549 "\n")) | |
3550 (dolist (err error-list) | |
3551 (insert (format "%s:%d: %s\n" file (car err) (cdr err)))) | |
3552 (set-buffer-modified-p nil) | |
3553 (toggle-read-only 1) | |
3554 (goto-line 3)) ; first error message | |
3555 (display-buffer err-buf) | |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3556 nil) ; return `nil' (i.e., buffer is invalid) |
57815 | 3557 (message "%s is syntactically correct" |
3558 (if mark-active "Region" "Buffer")) | |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3559 t))) ; return `t' (i.e., buffer is valid) |
57815 | 3560 |
3561 (defun bibtex-validate-globally (&optional strings) | |
3562 "Check for duplicate keys in `bibtex-files'. | |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3563 With optional prefix arg STRINGS, check for duplicate strings, too. |
57815 | 3564 Return t if test was successful, nil otherwise." |
3565 (interactive "P") | |
3566 (let ((buffer-list (bibtex-files-expand t)) | |
3567 buffer-key-list current-buf current-keys error-list) | |
3568 ;; Check for duplicate keys within BibTeX buffer | |
3569 (dolist (buffer buffer-list) | |
3570 (save-excursion | |
3571 (set-buffer buffer) | |
3572 (let (entry-type key key-list) | |
3573 (goto-char (point-min)) | |
3574 (while (re-search-forward bibtex-entry-head nil t) | |
3575 (setq entry-type (bibtex-type-in-head) | |
3576 key (bibtex-key-in-head)) | |
3577 (if (or (and strings (bibtex-string= entry-type "string")) | |
3578 (assoc-string entry-type bibtex-entry-field-alist t)) | |
3579 (if (member key key-list) | |
3580 (push (format "%s:%d: Duplicate key `%s'\n" | |
3581 (buffer-file-name) | |
3582 (bibtex-current-line) key) | |
3583 error-list) | |
3584 (push key key-list)))) | |
3585 (push (cons buffer key-list) buffer-key-list)))) | |
3586 | |
3587 ;; Check for duplicate keys among BibTeX buffers | |
3588 (while (setq current-buf (pop buffer-list)) | |
3589 (setq current-keys (cdr (assq current-buf buffer-key-list))) | |
3590 (with-current-buffer current-buf | |
3591 (dolist (buffer buffer-list) | |
3592 (dolist (key (cdr (assq buffer buffer-key-list))) | |
3593 (when (assoc-string key current-keys) | |
3594 (bibtex-find-entry key) | |
68065
0624a54493b5
(bibtex-validate-globally): Fix typo in a message text:
Eli Zaretskii <eliz@gnu.org>
parents:
67933
diff
changeset
|
3595 (push (format "%s:%d: Duplicate key `%s' in %s\n" |
57815 | 3596 (buffer-file-name) (bibtex-current-line) key |
3597 (abbreviate-file-name (buffer-file-name buffer))) | |
3598 error-list)))))) | |
3599 | |
3600 ;; Process error list | |
3601 (if error-list | |
3602 (let ((err-buf "*BibTeX validation errors*")) | |
3603 (with-current-buffer (get-buffer-create err-buf) | |
3604 (unless (eq major-mode 'compilation-mode) (compilation-mode)) | |
3605 (toggle-read-only -1) | |
3606 (delete-region (point-min) (point-max)) | |
3607 (insert "BibTeX mode command `bibtex-validate-globally'\n\n") | |
3608 (dolist (err (sort error-list 'string-lessp)) (insert err)) | |
3609 (set-buffer-modified-p nil) | |
3610 (toggle-read-only 1) | |
3611 (goto-line 3)) ; first error message | |
3612 (display-buffer err-buf) | |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3613 nil) ; return `nil' (i.e., buffer is invalid) |
57815 | 3614 (message "No duplicate keys.") |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3615 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
|
3616 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3617 (defun bibtex-next-field (begin &optional comma) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3618 "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
|
3619 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
|
3620 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
|
3621 (interactive (list current-prefix-arg t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3622 (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
|
3623 end-of-entry) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3624 (if (not bounds) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3625 (setq end-of-entry t) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3626 (goto-char (nth 3 bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3627 (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
|
3628 (setq end-of-entry t) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3629 ;; BibTeX key or field |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3630 (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
|
3631 ;; end of entry |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3632 (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
|
3633 (if (and end-of-entry |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3634 (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
|
3635 (goto-char (match-beginning 0))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3636 (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
|
3637 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3638 (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
|
3639 "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
|
3640 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
|
3641 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
|
3642 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
|
3643 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
|
3644 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
|
3645 interactive calls." |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3646 (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
|
3647 (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
|
3648 (cond (bounds |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3649 (if begin |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3650 (progn (goto-char (nth 1 bounds)) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3651 (if (looking-at "[{\"]") |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3652 (forward-char))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3653 (goto-char (nth 2 bounds)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3654 (if (memq (preceding-char) '(?} ?\")) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3655 (forward-char -1))) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3656 (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
|
3657 ((not noerror) (error "Not on BibTeX field"))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3658 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3659 (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
|
3660 "Find text part of current BibTeX 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
|
3661 Return list (NAME START-TEXT END-TEXT END STRING-CONST) with field |
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
|
3662 or entry name, start and end of text, and end of 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
|
3663 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
|
3664 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
|
3665 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
|
3666 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
|
3667 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
|
3668 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
|
3669 Optional arg COMMA is as in `bibtex-enclosing-field'." |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3670 (save-excursion |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3671 (let ((pnt (point)) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3672 (bounds (bibtex-enclosing-field comma t)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3673 (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
|
3674 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
|
3675 (bibtex-beginning-of-entry) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3676 (cond (bounds |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3677 (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
|
3678 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
|
3679 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
|
3680 end (bibtex-end-of-field bounds))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3681 ;; @String |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3682 ((setq bounds (bibtex-parse-string t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3683 (if (<= pnt (bibtex-end-of-string bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3684 (setq name "@String" ;; not a field name! |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3685 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
|
3686 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
|
3687 end (bibtex-end-of-string bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3688 (setq failure t))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3689 ;; @Preamble |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3690 ((setq bounds (bibtex-parse-preamble)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3691 (if (<= pnt (bibtex-end-of-string bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3692 (setq name "@Preamble" ;; not a field name! |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3693 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
|
3694 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
|
3695 end (bibtex-end-of-string bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3696 (setq failure t))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3697 ;; BibTeX head |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3698 ((looking-at bibtex-entry-maybe-empty-head) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3699 (goto-char (match-end 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3700 (if comma (save-match-data |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3701 (re-search-forward "\\=[ \t\n]*," nil t))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3702 (if (<= pnt (point)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3703 (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
|
3704 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
|
3705 (match-end 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3706 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
|
3707 (match-end 0)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3708 end end-text |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3709 no-sub t) ;; subfields do not make sense |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3710 (setq failure t))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3711 (t (setq failure t))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3712 (when (and subfield (not failure)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3713 (setq failure no-sub) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3714 (unless failure |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3715 (goto-char start-text) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3716 (while (not done) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3717 (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
|
3718 (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
|
3719 string-const t)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3720 (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
|
3721 (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
|
3722 string-const nil))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3723 (progn |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3724 (if (and (<= start-text pnt) (<= pnt end-text)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3725 (setq done t) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3726 (goto-char end-text)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3727 (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
|
3728 (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
|
3729 (setq done t failure t))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3730 (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
|
3731 (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
|
3732 ((and no-sub (not noerror)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3733 (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
|
3734 ((not noerror) (error "Not on BibTeX field")))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3735 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3736 (defun bibtex-remove-OPT-or-ALT (&optional comma) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3737 "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
|
3738 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
|
3739 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
|
3740 (interactive (list t)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3741 (let ((case-fold-search t) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3742 (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
|
3743 (save-excursion |
27701
5e135f0faf1d
(bibtex-mode): Replaced manual splitting of path
Gerd Moellmann <gerd@gnu.org>
parents:
26711
diff
changeset
|
3744 (goto-char (bibtex-start-of-name-in-field bounds)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3745 (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
|
3746 (delete-region (match-beginning 0) (match-end 0)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3747 ;; make field non-OPT |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3748 (search-forward "=") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3749 (forward-char -1) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3750 (delete-horizontal-space) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3751 (if bibtex-align-at-equal-sign |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3752 (indent-to-column (- bibtex-text-indentation 2)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3753 (insert " ")) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3754 (search-forward "=") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3755 (delete-horizontal-space) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3756 (if bibtex-align-at-equal-sign |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3757 (insert " ") |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3758 (indent-to-column bibtex-text-indentation)))))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3759 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3760 (defun bibtex-remove-delimiters (&optional comma) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3761 "Remove \"\" or {} around current BibTeX field text. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3762 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
|
3763 interactive calls." |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3764 (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
|
3765 (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
|
3766 (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
|
3767 (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
|
3768 (delete-region (nth 1 bounds) (1+ (nth 1 bounds)))))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3769 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3770 (defun bibtex-kill-field (&optional copy-only comma) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3771 "Kill the entire enclosing BibTeX field. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3772 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
|
3773 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
|
3774 `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
|
3775 (interactive (list current-prefix-arg t)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3776 (save-excursion |
27701
5e135f0faf1d
(bibtex-mode): Replaced manual splitting of path
Gerd Moellmann <gerd@gnu.org>
parents:
26711
diff
changeset
|
3777 (let* ((case-fold-search t) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3778 (bounds (bibtex-enclosing-field comma)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3779 (end (bibtex-end-of-field bounds)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3780 (beg (bibtex-start-of-field bounds))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3781 (goto-char end) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3782 (skip-chars-forward ",") |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3783 (push (list (bibtex-name-in-field bounds) nil |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3784 (bibtex-text-in-field-bounds bounds)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3785 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
|
3786 (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
|
3787 (setcdr (nthcdr (1- bibtex-field-kill-ring-max) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3788 bibtex-field-kill-ring) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3789 nil)) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3790 (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
|
3791 (unless copy-only |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3792 (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
|
3793 (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
|
3794 |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3795 (defun bibtex-copy-field-as-kill (&optional comma) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3796 "Copy the BibTeX field at point to the kill ring. |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3797 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
|
3798 interactive calls." |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3799 (interactive (list t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3800 (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
|
3801 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3802 (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
|
3803 "Kill the entire enclosing BibTeX entry. |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3804 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
|
3805 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
|
3806 (interactive "P") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3807 (save-excursion |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3808 (let* ((case-fold-search t) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3809 (beg (bibtex-beginning-of-entry)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3810 (end (progn (bibtex-end-of-entry) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3811 (if (re-search-forward |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3812 bibtex-any-entry-maybe-empty-head nil 'move) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3813 (goto-char (match-beginning 0))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3814 (point)))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3815 (push (buffer-substring-no-properties beg end) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3816 bibtex-entry-kill-ring) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3817 (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
|
3818 (setcdr (nthcdr (1- bibtex-entry-kill-ring-max) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3819 bibtex-entry-kill-ring) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3820 nil)) |
57815 | 3821 (setq bibtex-entry-kill-ring-yank-pointer bibtex-entry-kill-ring) |
3822 (unless copy-only | |
3823 (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
|
3824 (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
|
3825 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3826 (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
|
3827 "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
|
3828 (interactive) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3829 (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
|
3830 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3831 (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
|
3832 "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
|
3833 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
|
3834 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
|
3835 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
|
3836 (interactive "*p") |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3837 (bibtex-insert-kill (1- n) t) |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
3838 (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
|
3839 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3840 (defun bibtex-yank-pop (n) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3841 "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
|
3842 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
|
3843 `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
|
3844 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
|
3845 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
|
3846 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3847 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
|
3848 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
|
3849 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
|
3850 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3851 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
|
3852 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
|
3853 (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
|
3854 (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
|
3855 (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
|
3856 (setq this-command 'bibtex-yank) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3857 (let ((inhibit-read-only t)) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
3858 (delete-region (point) (mark t)) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3859 (bibtex-insert-kill n t))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3860 |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3861 (defun bibtex-empty-field (&optional comma) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3862 "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
|
3863 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
|
3864 interactive calls." |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3865 (interactive (list t)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3866 (let ((bounds (bibtex-enclosing-field comma))) |
27701
5e135f0faf1d
(bibtex-mode): Replaced manual splitting of path
Gerd Moellmann <gerd@gnu.org>
parents:
26711
diff
changeset
|
3867 (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
|
3868 (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
|
3869 (insert (bibtex-field-left-delimiter) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3870 (bibtex-field-right-delimiter)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
3871 (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
|
3872 |
14789
d68b71228abd
(bibtex-pop): New generic function which unifies the
Richard M. Stallman <rms@gnu.org>
parents:
14410
diff
changeset
|
3873 (defun bibtex-pop-previous (arg) |
19461 | 3874 "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
|
3875 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
|
3876 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
|
3877 (interactive "p") |
d68b71228abd
(bibtex-pop): New generic function which unifies the
Richard M. Stallman <rms@gnu.org>
parents:
14410
diff
changeset
|
3878 (bibtex-pop arg 'previous)) |
257 | 3879 |
3880 (defun bibtex-pop-next (arg) | |
3881 "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
|
3882 With arg, goes down ARG entries. Repeated, goes down so many times. May be |
257 | 3883 intermixed with \\[bibtex-pop-previous] (bibtex-pop-previous)." |
3884 (interactive "p") | |
14789
d68b71228abd
(bibtex-pop): New generic function which unifies the
Richard M. Stallman <rms@gnu.org>
parents:
14410
diff
changeset
|
3885 (bibtex-pop arg 'next)) |
257 | 3886 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3887 (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
|
3888 "Finish editing the current BibTeX entry and clean it up. |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3889 Check that no required fields are empty and formats entry dependent |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3890 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
|
3891 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
|
3892 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
|
3893 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
|
3894 '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
|
3895 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
|
3896 At end of the cleaning process, the functions in |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3897 `bibtex-clean-entry-hook' are called with region narrowed to entry." |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3898 ;; Opt. arg called-by-reformat is t if bibtex-clean-entry |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3899 ;; is called by bibtex-reformat |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
3900 (interactive "P") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3901 (let ((case-fold-search t) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3902 (start (bibtex-beginning-of-entry)) |
70841
2a874a2efaf4
(bibtex-format-entry, bibtex-clean-entry):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
70837
diff
changeset
|
3903 (_ (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
|
3904 (error "Not inside a BibTeX entry"))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3905 (entry-type (bibtex-type-in-head)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3906 (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
|
3907 ;; formatting |
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
|
3908 (cond ((bibtex-string= entry-type "preamble") |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3909 ;; (bibtex-format-preamble) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3910 (error "No clean up of @Preamble entries")) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3911 ((bibtex-string= entry-type "string") |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3912 (setq entry-type 'string)) |
57815 | 3913 ;; (bibtex-format-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
|
3914 (t (bibtex-format-entry))) |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3915 ;; set key |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
3916 (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
|
3917 (setq key (bibtex-generate-autokey)) |
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
|
3918 ;; Sometimes bibtex-generate-autokey returns an empty string |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
3919 (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
|
3920 (setq key (if (eq entry-type 'string) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3921 (bibtex-read-string-key key) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3922 (bibtex-read-key "Key to use: " key)))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3923 (save-excursion |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3924 (re-search-forward (if (eq entry-type 'string) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3925 bibtex-string-maybe-empty-head |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3926 bibtex-entry-maybe-empty-head)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3927 (if (match-beginning bibtex-key-in-head) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3928 (delete-region (match-beginning bibtex-key-in-head) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3929 (match-end bibtex-key-in-head))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3930 (insert key))) |
57815 | 3931 |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
3932 (unless called-by-reformat |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3933 (let* ((end (save-excursion |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3934 (bibtex-end-of-entry) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3935 (if (re-search-forward |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3936 bibtex-entry-maybe-empty-head nil 'move) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3937 (goto-char (match-beginning 0))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3938 (point))) |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
3939 (entry (buffer-substring start end)) |
57815 | 3940 ;; include the crossref key in index |
3941 (index (let ((bibtex-maintain-sorted-entries 'crossref)) | |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3942 (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
|
3943 error) |
57815 | 3944 ;; sorting |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
3945 (if (and bibtex-maintain-sorted-entries |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
3946 (not (and bibtex-sort-ignore-string-entries |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3947 (eq entry-type 'string)))) |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
3948 (progn |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
3949 (delete-region start end) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3950 (setq error (not (bibtex-prepare-new-entry index)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3951 start (point)) ; update start |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3952 (save-excursion (insert 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
|
3953 (bibtex-find-entry 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
|
3954 (setq error (or (/= (point) start) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3955 (bibtex-find-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
|
3956 (if error |
57815 | 3957 (error "New inserted entry yields duplicate key")) |
3958 (dolist (buffer (bibtex-files-expand)) | |
3959 (with-current-buffer buffer | |
3960 (if (cdr (assoc-string key bibtex-reference-keys)) | |
3961 (error "Duplicate key in %s" (buffer-file-name))))) | |
3962 | |
3963 ;; Only update the list of keys if it has been built already. | |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3964 (cond ((eq entry-type 'string) |
57815 | 3965 (if (and (listp bibtex-strings) |
3966 (not (assoc key bibtex-strings))) | |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3967 (push (cons key (bibtex-text-in-string |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3968 (bibtex-parse-string) t)) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
3969 bibtex-strings))) |
57815 | 3970 ;; We have a normal entry. |
3971 ((listp bibtex-reference-keys) | |
3972 (cond ((not (assoc key bibtex-reference-keys)) | |
3973 (push (cons key t) bibtex-reference-keys)) | |
3974 ((not (cdr (assoc key bibtex-reference-keys))) | |
3975 ;; Turn a crossref key into a header key | |
3976 (setq bibtex-reference-keys | |
3977 (cons (cons key t) | |
3978 (delete (list key) bibtex-reference-keys))))) | |
3979 ;; Handle crossref key. | |
3980 (if (and (nth 1 index) | |
3981 (not (assoc (nth 1 index) bibtex-reference-keys))) | |
3982 (push (list (nth 1 index)) bibtex-reference-keys))))) | |
3983 | |
3984 ;; final clean up | |
3985 (if bibtex-clean-entry-hook | |
3986 (save-excursion | |
3987 (save-restriction | |
3988 (bibtex-narrow-to-entry) | |
3989 (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
|
3990 |
51743
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
3991 (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
|
3992 "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
|
3993 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
|
3994 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
|
3995 (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
|
3996 (if (not justify) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3997 (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
|
3998 (goto-char (bibtex-start-of-field bounds)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
3999 (forward-char) ;; leading comma |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4000 (bibtex-delete-whitespace) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4001 (open-line 1) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4002 (forward-char) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4003 (indent-to-column (+ bibtex-entry-offset |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4004 bibtex-field-indentation)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4005 (re-search-forward "[ \t\n]*=" end-field) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4006 (replace-match "=") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4007 (forward-char -1) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4008 (if bibtex-align-at-equal-sign |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4009 (indent-to-column |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4010 (+ bibtex-entry-offset (- bibtex-text-indentation 2))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4011 (insert " ")) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4012 (forward-char) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4013 (bibtex-delete-whitespace) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4014 (if bibtex-align-at-equal-sign |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4015 (insert " ") |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4016 (indent-to-column bibtex-text-indentation))) |
65776
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
4017 ;; Paragraphs within fields are not preserved. Bother? |
a2bc28552d90
2005-10-01 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Romain Francoise <romain@orebokech.com>
parents:
65583
diff
changeset
|
4018 (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
|
4019 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
|
4020 (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
|
4021 |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4022 (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
|
4023 "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
|
4024 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
|
4025 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
|
4026 (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
|
4027 (let ((pnt (copy-marker (point))) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4028 (bounds (bibtex-enclosing-field t))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4029 (bibtex-fill-field-bounds bounds justify) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4030 (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
|
4031 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4032 (defun bibtex-fill-entry () |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4033 "Fill current BibTeX entry. |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4034 Realign entry, so that every field starts on a separate line. Field |
19461 | 4035 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
|
4036 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
|
4037 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
|
4038 (interactive "*") |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4039 (let ((pnt (copy-marker (point))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4040 (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
|
4041 (beg (bibtex-beginning-of-entry)) ; move point |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4042 bounds) |
18247
ae094c1a4334
(bibtex-delete-whitespace, bibtex-current-line)
Richard M. Stallman <rms@gnu.org>
parents:
18212
diff
changeset
|
4043 (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
|
4044 (indent-to-column bibtex-entry-offset) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4045 (bibtex-beginning-first-field beg) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4046 (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
|
4047 (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
|
4048 (if (looking-at ",") |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4049 (forward-char)) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4050 (skip-chars-backward " \t\n") |
18247
ae094c1a4334
(bibtex-delete-whitespace, bibtex-current-line)
Richard M. Stallman <rms@gnu.org>
parents:
18212
diff
changeset
|
4051 (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
|
4052 (open-line 1) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4053 (forward-char) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4054 (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
|
4055 (goto-char pnt))) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4056 |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4057 (defun bibtex-realign () |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4058 "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
|
4059 (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
|
4060 (let ((case-fold-search t) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4061 (entry-type (concat "[ \t\n]*\\(" bibtex-entry-type "\\)"))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4062 ;; No blank lines prior to the first entry if there no |
57815 | 4063 ;; non-white characters in front of it. |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4064 (when (looking-at entry-type) |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4065 (replace-match "\\1")) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4066 ;; Entries are separated by one blank line. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4067 (while (re-search-forward entry-type nil t) |
57815 | 4068 (replace-match "\n\n\\1")) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4069 ;; One blank line past the last entry if it is followed by |
57815 | 4070 ;; non-white characters, no blank line otherwise. |
4071 (beginning-of-line) | |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4072 (when (re-search-forward bibtex-entry-type nil t) |
57815 | 4073 (bibtex-end-of-entry) |
4074 (bibtex-delete-whitespace) | |
4075 (open-line (if (eobp) 1 2))))) | |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4076 |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4077 (defun bibtex-reformat (&optional read-options) |
19461 | 4078 "Reformat all BibTeX entries in buffer or region. |
57815 | 4079 Without prefix argument, reformatting is based on `bibtex-entry-format'. |
19461 | 4080 With prefix argument, read options for reformatting from minibuffer. |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4081 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
|
4082 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
|
4083 (interactive "*P") |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4084 (let* ((pnt (point)) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4085 (use-previous-options |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4086 (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
|
4087 (or bibtex-reformat-previous-options |
27701
5e135f0faf1d
(bibtex-mode): Replaced manual splitting of path
Gerd Moellmann <gerd@gnu.org>
parents:
26711
diff
changeset
|
4088 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
|
4089 (bibtex-entry-format |
57815 | 4090 (cond (read-options |
4091 (if use-previous-options | |
4092 bibtex-reformat-previous-options | |
4093 (setq bibtex-reformat-previous-options | |
4094 (mapcar (lambda (option) | |
4095 (if (y-or-n-p (car option)) (cdr option))) | |
4096 `(("Realign entries (recommended)? " . 'realign) | |
4097 ("Remove empty optional and alternative fields? " . 'opts-or-alts) | |
4098 ("Remove delimiters around pure numerical fields? " . 'numerical-fields) | |
4099 (,(concat (if bibtex-comma-after-last-field "Insert" "Remove") | |
4100 " comma at end of entry? ") . 'last-comma) | |
4101 ("Replace double page dashes by single ones? " . 'page-dashes) | |
4102 ("Inherit booktitle? " . 'inherit-booktitle) | |
4103 ("Force delimiters? " . 'delimiters) | |
4104 ("Unify case of entry types and field names? " . 'unify-case)))))) | |
4105 ;; Do not include required-fields because `bibtex-reformat' | |
4106 ;; cannot handle the error messages of `bibtex-format-entry'. | |
4107 ;; Use `bibtex-validate' to check for required fields. | |
4108 ((eq t bibtex-entry-format) | |
4109 '(realign opts-or-alts numerical-fields delimiters | |
4110 last-comma page-dashes unify-case inherit-booktitle)) | |
4111 (t | |
4112 (remove 'required-fields (push 'realign bibtex-entry-format))))) | |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4113 (reformat-reference-keys |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4114 (if read-options |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4115 (if use-previous-options |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4116 bibtex-reformat-previous-reference-keys |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4117 (setq bibtex-reformat-previous-reference-keys |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4118 (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
|
4119 (bibtex-sort-ignore-string-entries t) |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4120 bibtex-autokey-edit-before-use) |
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4121 |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4122 (save-restriction |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4123 (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
|
4124 (if (memq 'realign bibtex-entry-format) |
57815 | 4125 (bibtex-realign)) |
18212
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4126 (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
|
4127 (bibtex-map-entries (lambda (key beg end) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4128 (bibtex-progress-message) |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4129 (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
|
4130 (bibtex-progress-message 'done)) |
57815 | 4131 (when reformat-reference-keys |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4132 (kill-local-variable 'bibtex-reference-keys) |
57815 | 4133 (when bibtex-maintain-sorted-entries |
4134 (bibtex-progress-message "Sorting" 1) | |
4135 (bibtex-sort-buffer) | |
4136 (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
|
4137 (goto-char pnt))) |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4138 |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4139 (defun bibtex-convert-alien (&optional read-options) |
58772
4de7ab2c086e
(bibtex-font-lock-url-regexp):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
58556
diff
changeset
|
4140 "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
|
4141 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
|
4142 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
|
4143 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
|
4144 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
|
4145 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
|
4146 (interactive "*P") |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4147 (message "Starting to validate buffer...") |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4148 (sit-for 1 nil t) |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4149 (bibtex-realign) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4150 (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
|
4151 (if (not (let (bibtex-maintain-sorted-entries) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4152 (bibtex-validate))) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4153 (message "Correct errors and call `bibtex-convert-alien' again") |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4154 (message "Starting to reformat entries...") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4155 (sit-for 2 nil t) |
55312
3b7a4fa9b2d8
(bibtex-sort-buffer): Remove error message.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52891
diff
changeset
|
4156 (bibtex-reformat read-options) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4157 (goto-char (point-max)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4158 (message "Buffer is now parsable. Please save it."))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4159 |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4160 (defun bibtex-complete () |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4161 "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
|
4162 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
|
4163 `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
|
4164 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
|
4165 \(including a String or Preamble definition) perform string completion |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4166 based on `bibtex-strings'. |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4167 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
|
4168 (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
|
4169 (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
|
4170 (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
|
4171 bounds name compl) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4172 (save-excursion |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4173 (if (and (setq bounds (bibtex-enclosing-field nil t)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4174 (>= pnt (bibtex-start-of-text-in-field bounds)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4175 (<= 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
|
4176 (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
|
4177 compl (cond ((bibtex-string= name "crossref") |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4178 ;; point is in crossref field |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4179 '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
|
4180 ((bibtex-string= name "month") |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4181 ;; 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
|
4182 bibtex-predefined-month-strings) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4183 ;; point is in other field |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4184 (t (bibtex-strings)))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4185 (bibtex-beginning-of-entry) |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4186 (cond ((setq bounds (bibtex-parse-string t)) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4187 ;; point is inside a @String key |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4188 (cond ((and (>= pnt (nth 1 (car bounds))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4189 (<= pnt (nth 2 (car bounds)))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4190 (setq compl 'string)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4191 ;; point is inside a @String field |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4192 ((and (>= pnt (bibtex-start-of-text-in-string bounds)) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4193 (<= pnt (bibtex-end-of-text-in-string bounds))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4194 (setq compl (bibtex-strings))))) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4195 ;; point is inside a @Preamble field |
67894
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4196 ((setq bounds (bibtex-parse-preamble)) |
d742983a2136
(bibtex-entry-type-whitespace)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67816
diff
changeset
|
4197 (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
|
4198 (<= 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
|
4199 (setq compl (bibtex-strings)))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4200 ((and (looking-at bibtex-entry-maybe-empty-head) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4201 ;; point is inside a key |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4202 (or (and (match-beginning bibtex-key-in-head) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4203 (>= pnt (match-beginning bibtex-key-in-head)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4204 (<= pnt (match-end bibtex-key-in-head))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4205 ;; or point is on empty key |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4206 (and (not (match-beginning bibtex-key-in-head)) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4207 (= pnt (match-end 0))))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4208 (setq compl 'key))))) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4209 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4210 (cond ((eq compl 'key) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4211 ;; 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
|
4212 (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
|
4213 (let (completion-ignore-case) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4214 (bibtex-complete-internal (bibtex-global-key-alist)))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4215 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4216 ((eq compl 'crossref-key) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4217 ;; crossref key completion |
67933
679e4542aaa9
(bibtex-mode): Make completion-ignore-case
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67897
diff
changeset
|
4218 ;; |
679e4542aaa9
(bibtex-mode): Make completion-ignore-case
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67897
diff
changeset
|
4219 ;; 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
|
4220 ;; a completion, `choose-completion-string-functions' is still |
679e4542aaa9
(bibtex-mode): Make completion-ignore-case
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67897
diff
changeset
|
4221 ;; non-nil. Therefore, `choose-completion-string-functions' is |
679e4542aaa9
(bibtex-mode): Make completion-ignore-case
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
67897
diff
changeset
|
4222 ;; 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
|
4223 ;; is requested. |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4224 (let (completion-ignore-case) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4225 (setq choose-completion-string-functions |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4226 (lambda (choice buffer mini-p base-size) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4227 (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
|
4228 (choose-completion-string choice buffer base-size) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4229 (bibtex-complete-crossref-cleanup choice) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4230 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
|
4231 (bibtex-complete-crossref-cleanup |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4232 (bibtex-complete-internal (bibtex-global-key-alist))))) |
58556
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4233 |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4234 ((eq compl 'string) |
8ff63943e93e
(bibtex-sort-entry-class)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57833
diff
changeset
|
4235 ;; 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
|
4236 (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
|
4237 (let ((completion-ignore-case t)) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4238 (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
|
4239 |
0b058857c704
(bibtex-mark-active, bibtex-run-with-idle-timer): Move `if' inside the defun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55880
diff
changeset
|
4240 (compl |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4241 ;; string completion |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4242 (let ((completion-ignore-case t)) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4243 (setq choose-completion-string-functions |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4244 `(lambda (choice buffer mini-p base-size) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4245 (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
|
4246 (choose-completion-string choice buffer base-size) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4247 (bibtex-complete-string-cleanup choice ',compl) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4248 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
|
4249 (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
|
4250 compl))) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4251 |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4252 (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
|
4253 (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
|
4254 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4255 (defun bibtex-Article () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4256 "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
|
4257 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4258 (bibtex-entry "Article")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4259 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4260 (defun bibtex-Book () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4261 "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
|
4262 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4263 (bibtex-entry "Book")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4264 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4265 (defun bibtex-Booklet () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4266 "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
|
4267 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4268 (bibtex-entry "Booklet")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4269 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4270 (defun bibtex-InBook () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4271 "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
|
4272 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4273 (bibtex-entry "InBook")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4274 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4275 (defun bibtex-InCollection () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4276 "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
|
4277 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4278 (bibtex-entry "InCollection")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4279 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4280 (defun bibtex-InProceedings () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4281 "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
|
4282 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4283 (bibtex-entry "InProceedings")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4284 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4285 (defun bibtex-Manual () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4286 "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
|
4287 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4288 (bibtex-entry "Manual")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4289 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4290 (defun bibtex-MastersThesis () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4291 "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
|
4292 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4293 (bibtex-entry "MastersThesis")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4294 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4295 (defun bibtex-Misc () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4296 "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
|
4297 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4298 (bibtex-entry "Misc")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4299 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4300 (defun bibtex-PhdThesis () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4301 "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
|
4302 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4303 (bibtex-entry "PhdThesis")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4304 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4305 (defun bibtex-Proceedings () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4306 "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
|
4307 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4308 (bibtex-entry "Proceedings")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4309 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4310 (defun bibtex-TechReport () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4311 "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
|
4312 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4313 (bibtex-entry "TechReport")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4314 |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4315 (defun bibtex-Unpublished () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4316 "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
|
4317 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4318 (bibtex-entry "Unpublished")) |
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4319 |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4320 (defun bibtex-String (&optional key) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4321 "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
|
4322 (interactive (list (bibtex-read-string-key))) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4323 (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
|
4324 (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
|
4325 bibtex-maintain-sorted-entries)) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4326 endpos) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4327 (unless (bibtex-prepare-new-entry (list key nil "String")) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4328 (error "Entry with key `%s' already exists" key)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4329 (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
|
4330 (indent-to-column bibtex-entry-offset) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4331 (insert "@String" |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4332 (bibtex-entry-left-delimiter)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4333 (if key |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4334 (insert key) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4335 (setq endpos (point))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4336 (insert " = " |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4337 (bibtex-field-left-delimiter)) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4338 (if key |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4339 (setq endpos (point))) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4340 (insert (bibtex-field-right-delimiter) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4341 (bibtex-entry-right-delimiter) |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4342 "\n") |
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4343 (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
|
4344 |
3864648e9b4f
(bibtex-mode-map): Changed the binding of the C-TAB
Richard M. Stallman <rms@gnu.org>
parents:
17700
diff
changeset
|
4345 (defun bibtex-Preamble () |
22563
2e2a71dfec63
Numerous documentation fixups.
Richard M. Stallman <rms@gnu.org>
parents:
21169
diff
changeset
|
4346 "Insert a new BibTeX @Preamble entry." |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4347 (interactive "*") |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4348 (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
|
4349 (indent-to-column bibtex-entry-offset) |
51415
762217a72cae
Long overdue merge.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49599
diff
changeset
|
4350 (insert "@Preamble" |
63470
c318ec40e95f
(bibtex-Preamble): Enclose BibTeX preamble by field delimiters.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62077
diff
changeset
|
4351 (bibtex-entry-left-delimiter) |
c318ec40e95f
(bibtex-Preamble): Enclose BibTeX preamble by field delimiters.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
62077
diff
changeset
|
4352 (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
|
4353 (let ((endpos (point))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4354 (insert (bibtex-field-right-delimiter) |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4355 (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
|
4356 "\n") |
f63c242330b2
2003-06-30 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
Kai Großjohann <kgrossjo@eu.uu.net>
parents:
51416
diff
changeset
|
4357 (goto-char endpos))) |
257 | 4358 |
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
|
4359 (defun bibtex-url (&optional pos no-browse) |
57815 | 4360 "Browse a URL for the BibTeX entry at point. |
4361 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
|
4362 The URL is generated using the schemes defined in `bibtex-generate-url-list' |
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
|
4363 \(see there\). Then the URL is passed to `browse-url' unless NO-BROWSE is nil. |
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
|
4364 Return the URL or nil if none can be generated." |
57815 | 4365 (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
|
4366 (save-excursion |
57815 | 4367 (if pos (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
|
4368 (bibtex-beginning-of-entry) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4369 ;; Always remove field delimiters |
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4370 (let ((fields-alist (bibtex-parse-entry t)) |
57815 | 4371 ;; 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
|
4372 (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
|
4373 (lst bibtex-generate-url-list) |
61247
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
4374 field url scheme obj fmt) |
57815 | 4375 (while (setq scheme (pop lst)) |
57070
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
4376 (when (and (setq field (cdr (assoc-string (caar scheme) |
3d9707888790
(bibtex-generate-url-list): Change format. Provide a sample complex default.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
57054
diff
changeset
|
4377 fields-alist t))) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4378 (string-match (cdar scheme) field)) |
61247
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
4379 (setq lst nil |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
4380 scheme (cdr scheme) |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
4381 url (if (null scheme) (match-string 0 field) |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
4382 (if (stringp (car scheme)) |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
4383 (setq fmt (pop scheme))) |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
4384 (dolist (step scheme) |
67575
d0f7b15488df
(bibtex-expand-strings)
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
66116
diff
changeset
|
4385 (setq field (cdr (assoc-string (car step) fields-alist t))) |
61247
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
4386 (if (string-match (nth 1 step) field) |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4387 (push (cond ((functionp (nth 2 step)) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4388 (funcall (nth 2 step) field)) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4389 ((numberp (nth 2 step)) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4390 (match-string (nth 2 step) field)) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4391 (t |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4392 (replace-match (nth 2 step) t nil field))) |
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4393 obj) |
61247
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
4394 ;; If the scheme is set up correctly, |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
4395 ;; we should never reach this point |
69581
98eee222dceb
* textmodes/bibtex.el (bibtex-include-OPTkey)
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents:
68648
diff
changeset
|
4396 (error "Match failed: %s" field))) |
61247
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
4397 (if fmt (apply 'format fmt (nreverse obj)) |
d11749d2bcff
(bibtex-url): Use format to generate the url.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
59733
diff
changeset
|
4398 (apply 'concat (nreverse obj))))) |
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
|
4399 (if (interactive-p) (message "%s" url)) |
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
|
4400 (unless no-browse (browse-url url)))) |
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
|
4401 (if (and (not url) (interactive-p)) (message "No URL known.")) |
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
|
4402 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
|
4403 |
257 | 4404 |
12700
b3a8ee2da96a
Add keywords and comments as per conventions.
Richard M. Stallman <rms@gnu.org>
parents:
12028
diff
changeset
|
4405 ;; Make BibTeX a Feature |
257 | 4406 |
10219
d97313bb6f39
(bibtex-string, bibtex-preamble): Use forward-line.
Richard M. Stallman <rms@gnu.org>
parents:
10106
diff
changeset
|
4407 (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
|
4408 |
55348
c1f70dc19ce5
(bibtex-progress-message): Fix docstring.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
55312
diff
changeset
|
4409 ;; arch-tag: ee2be3af-caad-427f-b42a-d20fad630d04 |
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
|
4410 ;;; bibtex.el ends here |