annotate lisp/textmodes/bib-mode.el @ 22363:d00f146c3e9d

#include sys/file.h (sys_access): Provide our own implementation which recognizes D_OK. (is_exec): New function. (stat): Use it. (init_environment): Set TMPDIR to an existing directory. Abort if none of the usual places is available. (sys_rename): On Windows 95, choose a temp name that includes the original file's base name and use an explicit loop rather than calling mktemp. Only attempt to unlink the newname if the rename fails, rather than second-guessing whether the old and new names refer to the same file.
author Karl Heuer <kwzh@gnu.org>
date Fri, 05 Jun 1998 16:08:32 +0000
parents 9b831f34ff7d
children 253f761ad37b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
1 ;;; bib-mode.el --- bib-mode, major mode for editing bib files.
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)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
28 ;; refer and lookbib. The file bib-file should be set to your
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:
20959
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
33 (defgroup bib nil
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
34 "Major mode for editing bib files."
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
35 :prefix "bib-"
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
36 :group 'wp)
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 845
diff changeset
37
20959
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
38 (defcustom bib-file "~/my-bibliography.bib"
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
39 "Default name of file used by `addbib'."
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
40 :type 'file
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
41 :group 'bib)
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
42
20959
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
43 (defcustom unread-bib-file "~/to-be-read.bib"
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
44 "Default name of file used by `unread-bib' in Bib mode."
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
45 :type 'file
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
46 :group 'bib)
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
47
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
48 (defvar bib-mode-map (copy-keymap text-mode-map))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
49 (define-key bib-mode-map "\C-M" 'return-key-bib)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
50 (define-key bib-mode-map "\C-c\C-u" 'unread-bib)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
51 (define-key bib-mode-map "\C-c\C-@" 'mark-bib)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
52 (define-key bib-mode-map "\e`" 'abbrev-mode)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
53 (defvar bib-mode-abbrev-table nil
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
54 "Abbrev table used in Bib 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 ()
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
57 "Set up editor to add to troff bibliography file specified
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 )
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
64
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
65 (defun bib-mode ()
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
66 "Mode for editing `lookbib' style bibliographies.
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
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
72 articles in books & proceedings: A* T D B E* I C P K W X
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
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
82 R eport number or 'phd thesis' or 'masters thesis' or 'draft' or
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:
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
96 \\{bib-mode-map}
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
97 "
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
98 (interactive)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
99 (text-mode)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
100 (use-local-map bib-mode-map)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
101 (setq mode-name "Bib")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
102 (setq major-mode 'bib-mode)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
103 (define-abbrev-table 'bib-mode-abbrev-table ())
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
104 (setq local-abbrev-table bib-mode-abbrev-table)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
105 (abbrev-mode 1)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
106 (run-hooks 'bib-mode-hook)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
107 )
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
108
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
109 (defconst bib-assoc '(
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
110 (" *$" . "%A ")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
111 ("%A ." . "%A ")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
112 ("%A $" . "%T ")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
113 ("%T " . "%D ")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
114 ("%D " . "%J ")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
115 ("%J ." . "%V ")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
116 ("%V " . "%N ")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
117 ("%N " . "%P ")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
118 ("%P " . "%K ")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
119 ("%K " . "%W ")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
120 ("%W " . "%X ")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
121 ("%X " . "")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
122 ("%J $" . "%B ")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
123 ("%B ." . "%E ")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
124 ("%E ." . "%E ")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
125 ("%E $" . "%I ")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
126 ("%I " . "%C ")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
127 ("%C " . "%P ")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
128 ("%B $" . "%R ")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
129 ("%R " . "%I ")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
130 )
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
131
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
132 "Describes bibliographic database format. A line beginning with
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
133 the car of an entry is followed by one beginning with the cdr.
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
134 ")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
135
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
136 (defun bib-find-key (slots)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
137 (cond
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
138 ((null slots)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
139 (if (bobp)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
140 ""
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
141 (progn (previous-line 1) (bib-find-key bib-assoc))))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
142 ((looking-at (car (car slots)))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
143 (cdr (car slots)))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
144 (t (bib-find-key (cdr slots)))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
145 ))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
146
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
147
20959
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
148 (defcustom bib-auto-capitalize t
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
149 "*True to automatically capitalize appropriate fields in Bib mode."
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
150 :type 'boolean
9b831f34ff7d Customized.
Stephen Eglen <stephen@gnu.org>
parents: 16285
diff changeset
151 :group 'bib)
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
152
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
153 (defconst bib-capitalized-fields "%[AETCBIJR]")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
154
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
155 (defun return-key-bib ()
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
156 "Magic when user hits return, used by `bib-mode'."
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
157 (interactive)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
158 (if (eolp)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
159 (let (empty new-key beg-current end-current)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
160 (beginning-of-line)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
161 (setq empty (looking-at "%. $"))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
162 (if (not empty)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
163 (progn
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
164 (end-of-line)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
165 (newline)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
166 (forward-line -1)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
167 ))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
168 (end-of-line)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
169 (setq end-current (point))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
170 (beginning-of-line)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
171 (setq beg-current (point))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
172 (setq new-key (bib-find-key bib-assoc))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
173 (if (and (not empty) bib-auto-capitalize
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
174 (looking-at bib-capitalized-fields))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
175 (save-excursion
16285
0aa65f31f7e4 (bib-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
176 (bib-capitalize-title-region (+ (point) 3) end-current)))
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
177 (goto-char beg-current)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
178 (if empty
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
179 (kill-line nil)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
180 (forward-line 1)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
181 )
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
182 (insert-string new-key))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
183 (newline)))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
184
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
185 (defun mark-bib ()
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
186 "Set mark at beginning of current or previous bib entry, point at end."
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
187 (interactive)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
188 (beginning-of-line nil)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
189 (if (looking-at "^ *$") (re-search-backward "[^ \n]" nil 2))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
190 (re-search-backward "^ *$" nil 2)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
191 (re-search-forward "^%")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
192 (beginning-of-line nil)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
193 (push-mark (point))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
194 (re-search-forward "^ *$" nil 2)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
195 (next-line 1)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
196 (beginning-of-line nil))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
197
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
198 (defun unread-bib ()
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
199 "Append current or previous entry to file of unread papers
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
200 named by variable `unread-bib-file'."
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
201 (interactive)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
202 (mark-bib)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
203 (if (get-file-buffer unread-bib-file)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
204 (append-to-buffer (get-file-buffer unread-bib-file) (mark) (point))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
205 (append-to-file (mark) (point) unread-bib-file)))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
206
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
207
16285
0aa65f31f7e4 (bib-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
208 (defvar bib-capitalize-title-stop-words
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
209 (concat
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
210 "the\\|and\\|of\\|is\\|a\\|an\\|of\\|for\\|in\\|to\\|in\\|on\\|at\\|"
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
211 "by\\|with\\|that\\|its")
16285
0aa65f31f7e4 (bib-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
212 "Words not to be capitalized in a title (unless the first word).")
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
213
16285
0aa65f31f7e4 (bib-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
214 (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
215 (concat "\\(" bib-capitalize-title-stop-words "\\)\\(\\b\\|'\\)"))
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
216
16285
0aa65f31f7e4 (bib-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
217 (defun bib-capitalize-title-region (begin end)
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
218 "Like `capitalize-region', but don't capitalize stop words, except the first."
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
219 (interactive "r")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
220 (let ((case-fold-search nil) (orig-syntax-table (syntax-table)))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
221 (unwind-protect
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
222 (save-restriction
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
223 (set-syntax-table text-mode-syntax-table)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
224 (narrow-to-region begin end)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
225 (goto-char (point-min))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
226 (if (looking-at "[A-Z][a-z]*[A-Z]")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
227 (forward-word 1)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
228 (capitalize-word 1))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
229 (while (re-search-forward "\\<" nil t)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
230 (if (looking-at "[A-Z][a-z]*[A-Z]")
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
231 (forward-word 1)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
232 (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
233 (looking-at bib-capitalize-title-stop-regexp))
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
234 (downcase-word 1)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
235 (capitalize-word 1)))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
236 ))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
237 (set-syntax-table orig-syntax-table))))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
238
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
239
16285
0aa65f31f7e4 (bib-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
240 (defun bib-capitalize-title (s)
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
241 "Like `capitalize', but don't capitalize stop words, except the first."
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
242 (save-excursion
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
243 (set-buffer (get-buffer-create "$$$Scratch$$$"))
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
244 (erase-buffer)
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
245 (insert s)
16285
0aa65f31f7e4 (bib-capitalize-title-stop-words): Renamed from capit...
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
246 (bib-capitalize-title-region (point-min) (point-max))
187
cf77dffd7bba Initial revision
Jim Blandy <jimb@redhat.com>
parents:
diff changeset
247 (buffer-string)))
584
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 187
diff changeset
248
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 187
diff changeset
249 (provide 'bib-mode)
4cd7543be581 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 187
diff changeset
250
662
8a533acedb77 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 584
diff changeset
251 ;;; bib-mode.el ends here