annotate lisp/textmodes/bib-mode.el @ 59384:a1edc5959dcf

* macfns.c: Include sys/param.h. [TARGET_API_MAC_CARBON] (mac_nav_event_callback): New declaration and function. [TARGET_API_MAC_CARBON] (Fx_file_dialog): Use MAXPATHLEN for size of filename string. Set event callback function when creating dialog boxes. Add code conversions for filenames. Don't dispose apple event descriptor record if failed to create it. * macterm.c: Include sys/param.h. [USE_CARBON_EVENTS] (mac_handle_window_event): Add handler for kEventWindowUpdate. (install_window_handler) [USE_CARBON_EVENTS]: Register it. (do_ae_open_documents) [TARGET_API_MAC_CARBON]: Get FSRef instead of FSSpec from apple event descriptor record. (do_ae_open_documents) [TARGET_API_MAC_CARBON]: Use MAXPATHLEN for size of filename string. [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Likewise. [TARGET_API_MAC_CARBON] (mac_do_receive_drag): Return error when a file dialog is in action. [TARGET_API_MAC_CARBON] (mac_do_track_drag): Likewise. Reject only when there are no filename items. Set background color before (un)highlighting the window below the dragged items. (XTread_socket) [!USE_CARBON_EVENTS]: Don't call do_window_update.
author Steven Tamm <steventamm@mac.com>
date Thu, 06 Jan 2005 02:53:39 +0000
parents 695cf19ef79e
children a8fa7c632ee4 375f2633d815
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 20959
diff changeset
1 ;;; bib-mode.el --- major mode for editing bib files
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
2
845
213978acbc1e entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
3 ;; Copyright (C) 1989 Free Software Foundation, Inc.
213978acbc1e entered into RCS
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
4
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
5 ;; Maintainer: FSF
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
6 ;; Keywords: bib
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
7
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
9
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 662
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
13 ;; any later version.
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
14
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
18 ;; GNU General Public License for more details.
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
19
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13967
diff changeset
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13967
diff changeset
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13967
diff changeset
23 ;; Boston, MA 02111-1307, USA.
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
24
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
25 ;;; Commentary:
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
26
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
27 ;; GNU Emacs code to help maintain databases compatible with (troff)
49599
5ade352e8d1c Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 41564
diff changeset
28 ;; refer and lookbib. The file bib-file should be set to your
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
29 ;; bibliography file. Keys are automagically inserted as you type,
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
30 ;; and appropriate keys are presented for various kinds of entries.
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
31
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
32 ;;; Code:
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 20959
diff changeset
33
20959
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
34 (defgroup bib nil
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
35 "Major mode for editing bib files."
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
36 :prefix "bib-"
52282
96a4d917b189 (bib): Add :group external.
Dave Love <fx@gnu.org>
parents: 49599
diff changeset
37 :group 'external
20959
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
38 :group 'wp)
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
39
20959
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
40 (defcustom bib-file "~/my-bibliography.bib"
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
41 "Default name of file used by `addbib'."
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
42 :type 'file
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
43 :group 'bib)
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
44
20959
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
45 (defcustom unread-bib-file "~/to-be-read.bib"
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
46 "Default name of file used by `unread-bib' in Bib mode."
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
47 :type 'file
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
48 :group 'bib)
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50 (defvar bib-mode-map (copy-keymap text-mode-map))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51 (define-key bib-mode-map "\C-M" 'return-key-bib)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 (define-key bib-mode-map "\C-c\C-u" 'unread-bib)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53 (define-key bib-mode-map "\C-c\C-@" 'mark-bib)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54 (define-key bib-mode-map "\e`" 'abbrev-mode)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
55
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
56 (defun addbib ()
49599
5ade352e8d1c Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 41564
diff changeset
57 "Set up editor to add to troff bibliography file specified
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
58 by global variable `bib-file'. See description of `bib-mode'."
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
59 (interactive)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
60 (find-file bib-file)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
61 (goto-char (point-max))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
62 (bib-mode)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
63 )
49599
5ade352e8d1c Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 41564
diff changeset
64
39896
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
65 (define-derived-mode bib-mode text-mode "Bib"
49599
5ade352e8d1c Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 41564
diff changeset
66 "Mode for editing `lookbib' style bibliographies.
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
67 Hit RETURN to get next % field key.
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
68 If you want to ignore this field, just hit RETURN again.
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
69 Use `text-mode' to turn this feature off.
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
70
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
71 journal papers: A* T D J V N P K W X
49599
5ade352e8d1c Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 41564
diff changeset
72 articles in books & proceedings: A* T D B E* I C P K W X
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
73 tech reports: A* T D R I C K W X
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
74 books: A* T D I C K W X
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
75
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
76 Fields:
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
77
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
78 A uthor T itle D ate J ournal
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
79 V olume N umber P age K eywords
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
80 B in book or proceedings E ditor C ity & state
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
81 I nstitution, school, or publisher
49599
5ade352e8d1c Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 41564
diff changeset
82 R eport number or 'phd thesis' or 'masters thesis' or 'draft' or
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
83 'unnumbered' or 'unpublished'
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
84 W here can be found locally (login name, or ailib, etc.)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
85 X comments (not used in indexing)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
86
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
87 \\[unread-bib] appends current entry to a different file (for example,
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
88 a file of papers to be read in the future), given by the value of the
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
89 variable `unread-bib-file'.
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
90 \\[mark-bib] marks current or previous entry.
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
91 Abbreviations are saved in `bib-mode-abbrev-table'.
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
92 Hook can be stored in `bib-mode-hook'.
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
93 Field keys given by variable `bib-assoc'.
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
94
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
95 Commands:
39896
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
96 \\{bib-mode-map}"
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
97 (abbrev-mode 1))
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98
39896
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
99 (defconst bib-assoc
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
100 '((" *$" . "%A ")
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
101 ("%A ." . "%A ")
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
102 ("%A $" . "%T ")
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
103 ("%T " . "%D ")
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
104 ("%D " . "%J ")
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
105 ("%J ." . "%V ")
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
106 ("%V " . "%N ")
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
107 ("%N " . "%P ")
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
108 ("%P " . "%K ")
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
109 ("%K " . "%W ")
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
110 ("%W " . "%X ")
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
111 ("%X " . "")
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
112 ("%J $" . "%B ")
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
113 ("%B ." . "%E ")
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
114 ("%E ." . "%E ")
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
115 ("%E $" . "%I ")
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
116 ("%I " . "%C ")
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
117 ("%C " . "%P ")
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
118 ("%B $" . "%R ")
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
119 ("%R " . "%I "))
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
120 "Describes bibliographic database format.
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
121 A line beginning with the car of an entry is followed by one beginning
258ac90a4fed Use define-derived-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
122 with the cdr.")
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 (defun bib-find-key (slots)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125 (cond
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
126 ((null slots)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127 (if (bobp)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128 ""
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 (progn (previous-line 1) (bib-find-key bib-assoc))))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130 ((looking-at (car (car slots)))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131 (cdr (car slots)))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132 (t (bib-find-key (cdr slots)))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 ))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135
20959
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
136 (defcustom bib-auto-capitalize t
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
137 "*True to automatically capitalize appropriate fields in Bib mode."
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
138 :type 'boolean
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
139 :group 'bib)
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 (defconst bib-capitalized-fields "%[AETCBIJR]")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143 (defun return-key-bib ()
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 "Magic when user hits return, used by `bib-mode'."
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145 (interactive)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146 (if (eolp)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147 (let (empty new-key beg-current end-current)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
148 (beginning-of-line)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
149 (setq empty (looking-at "%. $"))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
150 (if (not empty)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
151 (progn
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152 (end-of-line)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153 (newline)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154 (forward-line -1)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 ))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
156 (end-of-line)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157 (setq end-current (point))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158 (beginning-of-line)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 (setq beg-current (point))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 (setq new-key (bib-find-key bib-assoc))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 (if (and (not empty) bib-auto-capitalize
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162 (looking-at bib-capitalized-fields))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163 (save-excursion
16285
0aa65f31f7e4 (bib-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
164 (bib-capitalize-title-region (+ (point) 3) end-current)))
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165 (goto-char beg-current)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 (if empty
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167 (kill-line nil)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 (forward-line 1)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 )
41564
8fab3d5b7fcf (return-key-bib): Use insert instead of insert-string.
Pavel Janík <Pavel@Janik.cz>
parents: 39896
diff changeset
170 (insert new-key))
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 (newline)))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173 (defun mark-bib ()
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174 "Set mark at beginning of current or previous bib entry, point at end."
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175 (interactive)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
176 (beginning-of-line nil)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 (if (looking-at "^ *$") (re-search-backward "[^ \n]" nil 2))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 (re-search-backward "^ *$" nil 2)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 (re-search-forward "^%")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 (beginning-of-line nil)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 (push-mark (point))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 (re-search-forward "^ *$" nil 2)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 (next-line 1)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184 (beginning-of-line nil))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 (defun unread-bib ()
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 "Append current or previous entry to file of unread papers
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 named by variable `unread-bib-file'."
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189 (interactive)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 (mark-bib)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 (if (get-file-buffer unread-bib-file)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 (append-to-buffer (get-file-buffer unread-bib-file) (mark) (point))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193 (append-to-file (mark) (point) unread-bib-file)))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195
16285
0aa65f31f7e4 (bib-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
196 (defvar bib-capitalize-title-stop-words
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197 (concat
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 "the\\|and\\|of\\|is\\|a\\|an\\|of\\|for\\|in\\|to\\|in\\|on\\|at\\|"
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199 "by\\|with\\|that\\|its")
16285
0aa65f31f7e4 (bib-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
200 "Words not to be capitalized in a title (unless the first word).")
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201
16285
0aa65f31f7e4 (bib-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
202 (defvar bib-capitalize-title-stop-regexp
0aa65f31f7e4 (bib-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
203 (concat "\\(" bib-capitalize-title-stop-words "\\)\\(\\b\\|'\\)"))
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204
16285
0aa65f31f7e4 (bib-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
205 (defun bib-capitalize-title-region (begin end)
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206 "Like `capitalize-region', but don't capitalize stop words, except the first."
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207 (interactive "r")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
208 (let ((case-fold-search nil) (orig-syntax-table (syntax-table)))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209 (unwind-protect
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 (save-restriction
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211 (set-syntax-table text-mode-syntax-table)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
212 (narrow-to-region begin end)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213 (goto-char (point-min))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
214 (if (looking-at "[A-Z][a-z]*[A-Z]")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
215 (forward-word 1)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216 (capitalize-word 1))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
217 (while (re-search-forward "\\<" nil t)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218 (if (looking-at "[A-Z][a-z]*[A-Z]")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219 (forward-word 1)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 (if (let ((case-fold-search t))
16285
0aa65f31f7e4 (bib-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
221 (looking-at bib-capitalize-title-stop-regexp))
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222 (downcase-word 1)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 (capitalize-word 1)))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 ))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225 (set-syntax-table orig-syntax-table))))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227
16285
0aa65f31f7e4 (bib-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
228 (defun bib-capitalize-title (s)
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229 "Like `capitalize', but don't capitalize stop words, except the first."
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230 (save-excursion
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231 (set-buffer (get-buffer-create "$$$Scratch$$$"))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232 (erase-buffer)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
233 (insert s)
16285
0aa65f31f7e4 (bib-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
234 (bib-capitalize-title-region (point-min) (point-max))
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235 (buffer-string)))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 187
diff changeset
236
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 187
diff changeset
237 (provide 'bib-mode)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 187
diff changeset
238
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52282
diff changeset
239 ;;; arch-tag: e3a97958-3c2c-487f-9557-fafc3c98452d
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
240 ;;; bib-mode.el ends here