aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaroly Lorentey2004-05-07 14:20:00 +0000
committerKaroly Lorentey2004-05-07 14:20:00 +0000
commit52f9ab73a16c71ffe7f8a1c25f9432bbe32f10cf (patch)
tree399c54ddfa7cac6c90a07a81308bf7f5e71b66bd
parentb160ff41a813213adfa745a9d009ab638a22d7b1 (diff)
parenta478f3e181bd9925ecb506abf4e49216d392124a (diff)
downloademacs-52f9ab73a16c71ffe7f8a1c25f9432bbe32f10cf.tar.gz
emacs-52f9ab73a16c71ffe7f8a1c25f9432bbe32f10cf.zip
Merged in changes from CVS trunk.
Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-268 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-269 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-270 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-271 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-272 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-273 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-274 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-275 Update from CVS: man/makefile.w32-in: Revert last change * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-276 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-277 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-278 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-279 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-280 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-281 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-282 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-283 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-284 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-285 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-286 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-157
-rw-r--r--ChangeLog4
-rw-r--r--configure.in9
-rw-r--r--etc/ChangeLog4
-rw-r--r--etc/NEWS47
-rw-r--r--etc/emacs.py112
-rw-r--r--leim/ChangeLog69
-rw-r--r--leim/Makefile.in38
-rw-r--r--leim/makefile.nt208
-rw-r--r--leim/quail/latin-ltx.el1813
-rw-r--r--lib-src/ChangeLog4
-rw-r--r--lib-src/makefile.nt417
-rw-r--r--lisp/ChangeLog280
-rw-r--r--lisp/comint.el96
-rw-r--r--lisp/descr-text.el50
-rw-r--r--lisp/diff-mode.el26
-rw-r--r--lisp/ehelp.el22
-rw-r--r--lisp/emacs-lisp/byte-run.el18
-rw-r--r--lisp/emacs-lisp/re-builder.el2
-rw-r--r--lisp/emulation/cua-base.el3
-rw-r--r--lisp/gnus/ChangeLog4
-rw-r--r--lisp/gnus/nnimap.el14
-rw-r--r--lisp/help-fns.el113
-rw-r--r--lisp/ibuffer.el3
-rw-r--r--lisp/ido.el22
-rw-r--r--lisp/ielm.el23
-rw-r--r--lisp/iswitchb.el8
-rw-r--r--lisp/makefile.nt284
-rw-r--r--lisp/progmodes/compile.el51
-rw-r--r--lisp/progmodes/gdb-ui.el91
-rw-r--r--lisp/progmodes/python.el454
-rw-r--r--lisp/progmodes/sql.el96
-rw-r--r--lisp/ps-print.el27
-rw-r--r--lisp/select.el83
-rw-r--r--lisp/ses.el2
-rw-r--r--lisp/simple.el3
-rw-r--r--lisp/subr.el71
-rw-r--r--lisp/term/w32-win.el6
-rw-r--r--lisp/term/x-win.el5
-rw-r--r--lisp/textmodes/bibtex.el525
-rw-r--r--lisp/toolbar/tool-bar.el9
-rw-r--r--lisp/wdired.el7
-rw-r--r--lisp/winner.el10
-rw-r--r--lisp/xml.el2
-rw-r--r--man/ChangeLog8
-rw-r--r--man/ses.texi2
-rw-r--r--msdos/ChangeLog4
-rw-r--r--msdos/sed2v2.inp1
-rw-r--r--nt/ChangeLog15
-rwxr-xr-xnt/configure.bat18
-rwxr-xr-xnt/ebuild.bat7
-rwxr-xr-xnt/fast-install.bat5
-rwxr-xr-xnt/install.bat12
-rw-r--r--nt/makefile.def231
-rw-r--r--nt/makefile.nt213
-rw-r--r--nt/makefile.w32-in17
-rw-r--r--nt/nmake.defs2
-rw-r--r--src/ChangeLog71
-rw-r--r--src/Makefile.in2
-rw-r--r--src/data.c10
-rw-r--r--src/emacs.c2
-rw-r--r--src/fileio.c25
-rw-r--r--src/gtkutil.c73
-rw-r--r--src/image.c3
-rw-r--r--src/indent.c3
-rw-r--r--src/makefile.nt1232
-rw-r--r--src/msdos.c1
-rw-r--r--src/syntax.h4
-rw-r--r--src/syssignal.h3
-rw-r--r--src/w32term.c29
-rw-r--r--src/window.c4
-rw-r--r--src/xdisp.c41
71 files changed, 2743 insertions, 4430 deletions
diff --git a/ChangeLog b/ChangeLog
index d4deac200a5..1a771c60604 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
12004-05-04 Dave Love <fx@gnu.org>
2
3 * configure.in: Don't use `extrasub'.
4
12004-04-29 Dave Love <fx@gnu.org> 52004-04-29 Dave Love <fx@gnu.org>
2 6
3 * configure.in: Don't forget to quote args to `test'. 7 * configure.in: Don't forget to quote args to `test'.
diff --git a/configure.in b/configure.in
index b1b7bff867e..b7318b8f805 100644
--- a/configure.in
+++ b/configure.in
@@ -170,15 +170,6 @@ if test `pwd` != `(cd ${srcdir} && pwd)` \
170 use GNU make. If you do not have GNU make, then you must 170 use GNU make. If you do not have GNU make, then you must
171 now do `make distclean' in ${srcdir}, 171 now do `make distclean' in ${srcdir},
172 and then run $0 again.]]) 172 and then run $0 again.]])
173
174[extrasub='/^VPATH[ ]*=/c\
175vpath %.c $(srcdir)\
176vpath %.h $(srcdir)\
177vpath %.y $(srcdir)\
178vpath %.l $(srcdir)\
179vpath %.s $(srcdir)\
180vpath %.in $(srcdir)\
181vpath %.texi $(srcdir)']
182fi 173fi
183 174
184#### Given the configuration name, set machfile and opsysfile to the 175#### Given the configuration name, set machfile and opsysfile to the
diff --git a/etc/ChangeLog b/etc/ChangeLog
index 40e1c1a8932..6e2f2378536 100644
--- a/etc/ChangeLog
+++ b/etc/ChangeLog
@@ -1,3 +1,7 @@
12004-05-06 Dave Love <fx@gnu.org>
2
3 * emacs.py: New file for python-mode's internal use.
4
12004-04-22 Stefan Monnier <monnier@iro.umontreal.ca> 52004-04-22 Stefan Monnier <monnier@iro.umontreal.ca>
2 6
3 * TODO: Use outline mode. Remove compile.el entry (done). 7 * TODO: Use outline mode. Remove compile.el entry (done).
diff --git a/etc/NEWS b/etc/NEWS
index 5c81d1e726f..e29f7996532 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -91,8 +91,26 @@ types any more. Add -DUSE_LISP_UNION_TYPE if you want union types.
91* Changes in Emacs 21.4 91* Changes in Emacs 21.4
92 92
93--- 93---
94** The IELM prompt is now, by default, read-only. This can be 94** The comint prompt can now be made read-only, using the new user
95controlled with the new user option `ielm-prompt-read-only'. 95option `comint-prompt-read-only'. This is not enabled by default,
96except in IELM buffers. The read-only status of IELM prompts can be
97controlled with the new user option `ielm-prompt-read-only', which
98overrides `comint-prompt-read-only'.
99
100The new commands `comint-kill-whole-line' and `comint-kill-region'
101support editing comint buffers with read-only prompts.
102
103`comint-kill-whole-line' is like `kill-whole-line', but ignores both
104read-only and field properties. Hence, it will always kill entire
105lines, including any prompts.
106
107`comint-kill-region' is like `kill-region', except that it ignores
108read-only properties, if it is safe to do so. This means that if any
109part of a prompt is deleted, then the entire prompt must be deleted
110and that all prompts must stay at the beginning of a line. If this is
111not the case, then `comint-kill-region' behaves just like
112`kill-region' if read-only are involved: it copies the text to the
113kill-ring, but does not delete it.
96 114
97** You can now use next-error (C-x `) and previous-error to advance to 115** You can now use next-error (C-x `) and previous-error to advance to
98the next/previous matching line found by M-x occur. 116the next/previous matching line found by M-x occur.
@@ -409,6 +427,8 @@ version 4.7 or newer, compiles to Info pages with embedded images.
409'sql-sqlite'. 427'sql-sqlite'.
410 428
411** BibTeX mode: 429** BibTeX mode:
430*** The new command bibtex-entry-update (bound to C-c C-u) updates
431an existing BibTeX entry.
412*** New `bibtex-entry-format' option `required-fields', enabled by default. 432*** New `bibtex-entry-format' option `required-fields', enabled by default.
413*** bibtex-maintain-sorted-entries can take values `plain', 433*** bibtex-maintain-sorted-entries can take values `plain',
414`crossref', and `entry-class' which control the sorting scheme used 434`crossref', and `entry-class' which control the sorting scheme used
@@ -783,6 +803,10 @@ can optionally enable mouse highlighting only after you move the
783mouse, so that highlighting disappears when you press a key. You can 803mouse, so that highlighting disappears when you press a key. You can
784also disable mouse highlighting. 804also disable mouse highlighting.
785 805
806** You can now customize if selecting a region by dragging the mouse
807shall not copy the selected text to the kill-ring by setting the new
808variable mouse-drag-copy-region to nil.
809
786+++ 810+++
787** font-lock: in modes like C and Lisp where the fontification assumes that 811** font-lock: in modes like C and Lisp where the fontification assumes that
788an open-paren in column 0 is always outside of any string or comment, 812an open-paren in column 0 is always outside of any string or comment,
@@ -2016,13 +2040,14 @@ specified number of evenly sized slices (rows x columns).
2016 2040
2017** New line-height and line-spacing properties for newline characters 2041** New line-height and line-spacing properties for newline characters
2018 2042
2019A newline may now have line-height and line-spacing text properties that 2043A newline may now have line-height and line-spacing text or overlay
2020control the height of the corresponding display row. 2044properties that control the height of the corresponding display row.
2021 2045
2022If the line-height property value is 0, the newline does not 2046If the line-height property value is 0, the newline does not
2023contribute to the height of the display row; instead the height of the 2047contribute to the height of the display row; instead the height of the
2024newline glyph is reduced. This can be used to tile small images or 2048newline glyph is reduced. Also, a line-spacing property on this
2025image slices without adding blank areas between the images. 2049newline is ignored. This can be used to tile small images or image
2050slices without adding blank areas between the images.
2026 2051
2027If the line-height property value is a positive integer, the value 2052If the line-height property value is a positive integer, the value
2028specifies the minimum line height in pixels. If necessary, the line 2053specifies the minimum line height in pixels. If necessary, the line
@@ -2041,13 +2066,15 @@ is used as additional pixels to insert after the display line; this
2041overrides the default frame line-spacing and any buffer local value of 2066overrides the default frame line-spacing and any buffer local value of
2042the line-spacing variable. 2067the line-spacing variable.
2043 2068
2044If the value is a negative integer, the absolute value is used as the
2045total height of the line, i.e. a varying number of pixels are
2046inserted after each line to make each line exactly that many pixels high.
2047
2048If the line-spacing property may be a float or cons, the line spacing 2069If the line-spacing property may be a float or cons, the line spacing
2049is calculated as specified above for the line-height property. 2070is calculated as specified above for the line-height property.
2050 2071
2072If the line-spacing value is a cons (total . SPACING) where SPACING is
2073any of the forms described above, the value of SPACING is used as the
2074total height of the line, i.e. a varying number of pixels are inserted
2075after each line to make each line exactly that many pixels high.
2076
2077
2051** The buffer local line-spacing variable may now have a float value, 2078** The buffer local line-spacing variable may now have a float value,
2052which is used as a height relative to the default frame line height. 2079which is used as a height relative to the default frame line height.
2053 2080
diff --git a/etc/emacs.py b/etc/emacs.py
new file mode 100644
index 00000000000..d672dbf63cb
--- /dev/null
+++ b/etc/emacs.py
@@ -0,0 +1,112 @@
1"""Definitions used by commands sent to inferior Python in python.el."""
2
3# Copyright (C) 2004 Free Software Foundation, Inc.
4# Author: Dave Love <d.love@dl.ac.uk>
5
6# This file is part of GNU Emacs.
7
8# GNU Emacs is free software; you can redistribute it and/or modify
9# it under the terms of the GNU General Public License as published by
10# the Free Software Foundation; either version 2, or (at your option)
11# any later version.
12
13# GNU Emacs is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16# GNU General Public License for more details.
17
18# You should have received a copy of the GNU General Public License
19# along with GNU Emacs; see the file COPYING. If not, write to the
20# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21# Boston, MA 02111-1307, USA.
22
23import os, sys, traceback, inspect, rlcompleter, __main__
24
25__all__ = ["eexecfile", "args", "complete", "ehelp", "eimport"]
26
27def eexecfile (file):
28 """Execute FILE and then remove it.
29 If we get an exception, print a traceback with the top frame
30 (oursleves) excluded."""
31 try:
32 try: execfile (file, globals (), globals ())
33 except:
34 (type, value, tb) = sys.exc_info ()
35 # Lose the stack frame for this location.
36 tb = tb.tb_next
37 if tb is None: # print_exception won't do it
38 print "Traceback (most recent call last):"
39 traceback.print_exception (type, value, tb)
40 finally:
41 os.remove (file)
42
43def eargs (name):
44 "Get arglist of NAME for Eldoc &c."
45 try:
46 parts = name.split ('.')
47 if len (parts) > 1:
48 exec 'import ' + parts[0] # might fail
49 func = eval (name)
50 if inspect.isbuiltin (func):
51 doc = func.__doc__
52 if doc.find (' ->') != -1:
53 print '_emacs_out', doc.split (' ->')[0]
54 elif doc.find ('\n') != -1:
55 print '_emacs_out', doc.split ('\n')[0]
56 return
57 if inspect.ismethod (func):
58 func = func.im_func
59 if not inspect.isfunction (func):
60 return
61 (args, varargs, varkw, defaults) = inspect.getargspec (func)
62 # No space between name and arglist for consistency with builtins.
63 print '_emacs_out', \
64 func.__name__ + inspect.formatargspec (args, varargs, varkw,
65 defaults)
66 except: pass
67
68def complete (text, namespace = None):
69 """Complete TEXT in NAMESPACE and print a Lisp list of completions.
70 NAMESPACE is currently not used."""
71 if namespace is None: namespace = __main__.__dict__
72 c = rlcompleter.Completer (namespace)
73 try:
74 if '.' in text:
75 matches = c.attr_matches (text)
76 else:
77 matches = c.global_matches (text)
78 print '_emacs_out (',
79 for elt in matches:
80 print '"%s"' % elt,
81 print ')'
82 except:
83 print '_emacs_out ()'
84
85def ehelp (name):
86 """Get help on string NAME.
87 First try to eval name for, e.g. user definitions where we need
88 the object. Otherwise try the string form."""
89 try: help (eval (name))
90 except: help (name)
91
92def eimport (mod, dir):
93 """Import module MOD with directory DIR at the head of the search path.
94 NB doesn't load from DIR if MOD shadows a system module."""
95 path0 = sys.path[0]
96 sys.path[0] = dir
97 try:
98 try:
99 if globals().has_key(mod) and inspect.ismodule (eval (mod)):
100 reload(eval (mod))
101 else:
102 globals ()[mod] = __import__ (mod)
103 except:
104 (type, value, tb) = sys.exc_info ()
105 print "Traceback (most recent call last):"
106 traceback.print_exception (type, value, tb.tb_next)
107 finally:
108 sys.path[0] = path0
109
110print '_emacs_ok' # ready for input and can call continuation
111
112# arch-tag: d90408f3-90e2-4de4-99c2-6eb9c7b9ca46
diff --git a/leim/ChangeLog b/leim/ChangeLog
index 0a9705c1b5d..84c616e5873 100644
--- a/leim/ChangeLog
+++ b/leim/ChangeLog
@@ -1,3 +1,33 @@
12004-05-06 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * quail/latin-ltx.el: Use utf-8 coding.
4 ("TeX"): Add de and fr quotes. From Karl Eichwalder <ke@suse.de>.
5
62004-05-04 Kenichi Handa <handa@m17n.org>
7
8 * Makefile.in (TIT-SOURCES): Prepend ${srcdir} to each elemnt.
9 (MISC-SOURCES): Likewise.
10
112004-05-01 Kenichi Handa <handa@m17n.org>
12
13 * Makefile.in (OTHERS): Raname from MISC.
14 (MISC): Rename from MISC-DIC.
15 (WORLD): Adjute for the above changes.
16 (TIT-MISC, NON-TIT-MISC): New targets.
17 (all): Don't depend on ${WORLD}.
18 (.NOTPARALLEL, .NO_PARALLEL, ${TIT}, ${MSIC-IDC}): Remove these targets.
19 (TIT-SOURCES, MISC-SOURCES): New macros.
20 (changed.tit, changed.misc): New targets.
21 (leim-list.el): Depend on ${NON-TIT-MISC}, changed.tit, and
22 changed.misc. Generate quail files from TIT and MISC files if
23 necessary.
24 (clean mostlyclean): Delete ${TIT-MISC} instead of ${TIT} and
25 ${MISC-DIC}.
26
272004-05-03 Jason Rumney <jasonr@gnu.org>
28
29 * makefile.nt: Remove.
30
12004-04-23 Juanma Barranquero <lektu@terra.es> 312004-04-23 Juanma Barranquero <lektu@terra.es>
2 32
3 * makefile.w32-in: Add "-*- makefile -*-" mode tag. 33 * makefile.w32-in: Add "-*- makefile -*-" mode tag.
@@ -9,17 +39,17 @@
9 39
102004-02-28 Kenichi Handa <handa@m17n.org> 402004-02-28 Kenichi Handa <handa@m17n.org>
11 41
12 * Makefile.in (all): Depends on ${WORLD} instead of ${TIT} and 42 * Makefile.in (all): Depend on ${WORLD} instead of ${TIT} and
13 ${MISC-DIC}. 43 ${MISC-DIC}.
14 (clean, mostlyclean): Don't delete *.elc distributed with tarball. 44 (clean, mostlyclean): Don't delete *.elc distributed with tarball.
15 (maintainer-clean): Delete files that are not in CVS repository. 45 (maintainer-clean): Delete files that are not in CVS repository.
16 46
17 * makefile.nt (all): Depends on $(WORLD) instead of $(TIT) and 47 * makefile.nt (all): Depend on $(WORLD) instead of $(TIT) and
18 $(MISC-DIC). 48 $(MISC-DIC).
19 (clean, mostlyclean): Don't delete *.elc distributed with tarball. 49 (clean, mostlyclean): Don't delete *.elc distributed with tarball.
20 (maintainer-clean): Delete files that are not in CVS repository. 50 (maintainer-clean): Delete files that are not in CVS repository.
21 51
22 * makefile.w32-in (all): Depends on $(WORLD) instead of $(TIT) and 52 * makefile.w32-in (all): Depend on $(WORLD) instead of $(TIT) and
23 $(MISC-DIC). 53 $(MISC-DIC).
24 (clean, mostlyclean): Don't delete *.elc distributed with tarball. 54 (clean, mostlyclean): Don't delete *.elc distributed with tarball.
25 (maintainer-clean): Delete files that are not in CVS repository. 55 (maintainer-clean): Delete files that are not in CVS repository.
@@ -87,8 +117,7 @@
87 117
882003-02-14 Juanma Barranquero <lektu@terra.es> 1182003-02-14 Juanma Barranquero <lektu@terra.es>
89 119
90 * quail/uni-input.el (utf-8-ccl-encode): Fix use of character 120 * quail/uni-input.el (utf-8-ccl-encode): Fix use of character constants.
91 constants.
92 121
932003-02-11 KAWABATA, Taichi <kawabata@m17n.org> 1222003-02-11 KAWABATA, Taichi <kawabata@m17n.org>
94 123
@@ -97,8 +126,8 @@
97 (malayalam-itrans, tamil-itrans): New ITRANS based input methods. 126 (malayalam-itrans, tamil-itrans): New ITRANS based input methods.
98 (punjabi-inscript, gujarati-inscript, oriya-inscript) 127 (punjabi-inscript, gujarati-inscript, oriya-inscript)
99 (bengali-inscript, assamese-inscript, telugu-inscript) 128 (bengali-inscript, assamese-inscript, telugu-inscript)
100 (kannada-inscript, malayalam-inscript, tamil-inscript): New 129 (kannada-inscript, malayalam-inscript, tamil-inscript):
101 INSCRIPT based input methods. 130 New INSCRIPT based input methods.
102 131
1032003-02-07 Kenichi Handa <handa@m17n.org> 1322003-02-07 Kenichi Handa <handa@m17n.org>
104 133
@@ -108,8 +137,7 @@
108 137
1092003-02-05 David Kastrup <dak@gnu.org> 1382003-02-05 David Kastrup <dak@gnu.org>
110 139
111 * quail/greek.el: Fix iota accent typos in greek-babel 140 * quail/greek.el: Fix iota accent typos in greek-babel encoding.
112 encoding.
113 141
1142003-01-05 Dave Love <fx@gnu.org> 1422003-01-05 Dave Love <fx@gnu.org>
115 143
@@ -160,12 +188,12 @@
160 188
161 * quail/cyrillic.el: Doc fixes. 189 * quail/cyrillic.el: Doc fixes.
162 ("cyrillic-beylorussian"): Commented-out. 190 ("cyrillic-beylorussian"): Commented-out.
163 ("cyrillic-translit-bulgarian"): Deleted. 191 ("cyrillic-translit-bulgarian"): Delete.
164 ("cyrillic-ukrainian"): Fix `q', `Q', `W', `w' bindings. 192 ("cyrillic-ukrainian"): Fix `q', `Q', `W', `w' bindings.
165 ("ukrainian-computer", "belarusian", "bulgarian-bds") 193 ("ukrainian-computer", "belarusian", "bulgarian-bds")
166 ("russian-computer"): New. 194 ("russian-computer"): New.
167 ("bulgarian-phonetic"): Renamed from bulgarian-pho. Add ,A'(B, $,1uV(B, ,LN(B. 195 ("bulgarian-phonetic"): Rename from bulgarian-pho. Add ,A'(B, $,1uV(B, ,LN(B.
168 ("russian-typewriter"): Renamed from cyrillic-jcuken. 196 ("russian-typewriter"): Rename from cyrillic-jcuken.
169 197
1702002-06-20 Dave Love <fx@gnu.org> 1982002-06-20 Dave Love <fx@gnu.org>
171 199
@@ -199,7 +227,7 @@
199 227
2002002-04-06 Jaeyoun Chung <jay@kldp.org> 2282002-04-06 Jaeyoun Chung <jay@kldp.org>
201 229
202 * quail/hanja3.el ("kf"): added a few composing rules 230 * quail/hanja3.el ("kf"): Add a few composing rules
203 from "Taik-kyun Lim" <mongmong@milab.yonsei.ac.kr> 231 from "Taik-kyun Lim" <mongmong@milab.yonsei.ac.kr>
204 232
205 * quail/hangul3.el: buggy alternative second character 233 * quail/hangul3.el: buggy alternative second character
@@ -239,8 +267,7 @@
2392002-01-07 Jaeyoun Chung <jay@kldp.org> 2672002-01-07 Jaeyoun Chung <jay@kldp.org>
240 268
241 * quail/hangul.el: Remove key sequence mapping for O[rsfaqtTd]. 269 * quail/hangul.el: Remove key sequence mapping for O[rsfaqtTd].
242 Not used for Korean Hangul Type 2 (request from emacs-kr mailing 270 Not used for Korean Hangul Type 2 (request from emacs-kr mailing list).
243 list).
244 271
2452002-01-03 Eli Zaretskii <eliz@is.elta.co.il> 2722002-01-03 Eli Zaretskii <eliz@is.elta.co.il>
246 273
@@ -248,8 +275,7 @@
248 275
2492002-01-01 Dave Love <fx@gnu.org> 2762002-01-01 Dave Love <fx@gnu.org>
250 277
251 * quail/indian.el (quail-define-indian-trans-package): Unquote 278 * quail/indian.el (quail-define-indian-trans-package): Unquote lambda.
252 lambda.
253 (quail-define-inscript-package): Avoid mapcar*. 279 (quail-define-inscript-package): Avoid mapcar*.
254 280
2552001-12-20 Dave Love <fx@gnu.org> 2812001-12-20 Dave Love <fx@gnu.org>
@@ -267,7 +293,7 @@
267 ("spanish-keyboard"): Fix language assignment. 293 ("spanish-keyboard"): Fix language assignment.
268 294
269 * quail/indian.el: Don't require cl. 295 * quail/indian.el: Don't require cl.
270 (quail-indian-flatten-list): Renamed from flatten-list. 296 (quail-indian-flatten-list): Rename from flatten-list.
271 297
272 * quail/cyrillic.el ("cyrillic-beylorussian") 298 * quail/cyrillic.el ("cyrillic-beylorussian")
273 ("cyrillic-ukrainian", "cyrillic-translit-bulgarian") 299 ("cyrillic-ukrainian", "cyrillic-translit-bulgarian")
@@ -277,8 +303,7 @@
277 ("spanish-alt-postfix", "turkish-latin-3-alt-postfix") 303 ("spanish-alt-postfix", "turkish-latin-3-alt-postfix")
278 ("turkish-alt-postfix"): Fix language assignment. 304 ("turkish-alt-postfix"): Fix language assignment.
279 ("dutch"): Assign to Dutch. Use chars, not strings. 305 ("dutch"): Assign to Dutch. Use chars, not strings.
280 ("lithuanian-numeric", "lithuanian-keyboard", "latvian-keyboard"): 306 ("lithuanian-numeric", "lithuanian-keyboard", "latvian-keyboard"): New.
281 New.
282 307
2832001-12-08 Pavel Jan,Am(Bk <Pavel@Janik.cz> 3082001-12-08 Pavel Jan,Am(Bk <Pavel@Janik.cz>
284 309
@@ -446,7 +471,7 @@
446 471
4472001-05-17 Dave Love <fx@gnu.org> 4722001-05-17 Dave Love <fx@gnu.org>
448 473
449 * quail/latin-ltx.el ("TeX"): Renamed from "latin-latex2e". 474 * quail/latin-ltx.el ("TeX"): Rename from "latin-latex2e".
450 Language family and indicator changed. Many new translations. 475 Language family and indicator changed. Many new translations.
451 476
4522001-05-17 Gerd Moellmann <gerd@gnu.org> 4772001-05-17 Gerd Moellmann <gerd@gnu.org>
@@ -1393,7 +1418,7 @@
1393 1418
1394 1419
1395;; Local Variables: 1420;; Local Variables:
1396;; coding: iso-2022-7bit-unix 1421;; coding: iso-2022-7bit
1397;; End: 1422;; End:
1398 1423
1399 Copyright (C) 1997, 1998, 1999, 2001 Free Software Foundation, Inc. 1424 Copyright (C) 1997, 1998, 1999, 2001 Free Software Foundation, Inc.
diff --git a/leim/Makefile.in b/leim/Makefile.in
index f14e78a583d..4a78d8fd37e 100644
--- a/leim/Makefile.in
+++ b/leim/Makefile.in
@@ -159,30 +159,30 @@ ${SUBDIRS}:
159 touch stamp-subdir 159 touch stamp-subdir
160 160
161TIT-SOURCES= \ 161TIT-SOURCES= \
162 CXTERM-DIC/4Corner.tit \ 162 ${srcdir}/CXTERM-DIC/4Corner.tit \
163 CXTERM-DIC/ARRAY30.tit \ 163 ${srcdir}/CXTERM-DIC/ARRAY30.tit \
164 CXTERM-DIC/CCDOSPY.tit \ 164 ${srcdir}/CXTERM-DIC/CCDOSPY.tit \
165 CXTERM-DIC/ECDICT.tit \ 165 ${srcdir}/CXTERM-DIC/ECDICT.tit \
166 CXTERM-DIC/ETZY.tit \ 166 ${srcdir}/CXTERM-DIC/ETZY.tit \
167 CXTERM-DIC/PY-b5.tit \ 167 ${srcdir}/CXTERM-DIC/PY-b5.tit \
168 CXTERM-DIC/Punct-b5.tit \ 168 ${srcdir}/CXTERM-DIC/Punct-b5.tit \
169 CXTERM-DIC/Punct.tit \ 169 ${srcdir}/CXTERM-DIC/Punct.tit \
170 CXTERM-DIC/QJ-b5.tit \ 170 ${srcdir}/CXTERM-DIC/QJ-b5.tit \
171 CXTERM-DIC/QJ.tit \ 171 ${srcdir}/CXTERM-DIC/QJ.tit \
172 CXTERM-DIC/SW.tit \ 172 ${srcdir}/CXTERM-DIC/SW.tit \
173 CXTERM-DIC/TONEPY.tit \ 173 ${srcdir}/CXTERM-DIC/TONEPY.tit \
174 CXTERM-DIC/ZOZY.tit 174 ${srcdir}/CXTERM-DIC/ZOZY.tit
175 175
176changed.tit: ${TIT-SOURCES} 176changed.tit: ${TIT-SOURCES}
177 echo "0" > $@ 177 echo "0" > $@
178 178
179MISC-SOURCES= \ 179MISC-SOURCES= \
180 MISC-DIC/CTLau-b5.html \ 180 ${srcdir}/MISC-DIC/CTLau-b5.html \
181 MISC-DIC/CTLau.html \ 181 ${srcdir}/MISC-DIC/CTLau.html \
182 MISC-DIC/cangjie-table.b5 \ 182 ${srcdir}/MISC-DIC/cangjie-table.b5 \
183 MISC-DIC/cangjie-table.cns \ 183 ${srcdir}/MISC-DIC/cangjie-table.cns \
184 MISC-DIC/pinyin.map \ 184 ${srcdir}/MISC-DIC/pinyin.map \
185 MISC-DIC/ziranma.cin 185 ${srcdir}/MISC-DIC/ziranma.cin
186 186
187changed.misc: ${MISC-SOURCES} 187changed.misc: ${MISC-SOURCES}
188 echo "0" > $@ 188 echo "0" > $@
diff --git a/leim/makefile.nt b/leim/makefile.nt
deleted file mode 100644
index 41dc8e2030a..00000000000
--- a/leim/makefile.nt
+++ /dev/null
@@ -1,208 +0,0 @@
1# Makefile for leim subdirectory in GNU Emacs on the Microsoft W32 API.
2# Copyright (C) 1997 Electrotechnical Laboratory, JAPAN.
3# Licensed to the Free Software Foundation.
4
5# This file is part of GNU Emacs.
6
7# GNU Emacs is free software; you can redistribute it and/or modify
8# it under the terms of the GNU General Public License as published by
9# the Free Software Foundation; either version 2, or (at your option)
10# any later version.
11#
12# GNU Emacs is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with GNU Emacs; see the file COPYING. If not, write to the
19# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20# Boston, MA 02111-1307, USA.
21
22#
23# Sets up the system dependent macros.
24#
25!include ..\nt\makefile.def
26
27srcdir=.
28
29# Where to install LEIM files.
30INSTALLDIR=$(INSTALL_DIR)\leim
31
32# On Xenix and the IBM RS6000, double-dot gets screwed up.
33dot = .
34
35# Which Emacs to use to convert TIT files to Emacs Lisp files,
36# byte-compile Emacs Lisp files, and generate the file leim-list.el.
37BUILT_EMACS = $(dot)$(dot)\src\$(BLD)\emacs.exe
38
39buildlisppath=$(MAKEDIR:\=/)/$(dot)$(dot)/lisp
40
41# How to run Emacs.
42RUN_EMACS = $(BUILT_EMACS) -batch --no-init-file --no-site-file --multibyte
43
44# Subdirectories to be made if $(srcdir) is different from the current
45# directory.
46SUBDIRS=quail
47
48# Files generated from TIT dictionaries for Chinese GB character set.
49TIT_GB=\
50 quail/CCDOSPY.elc \
51 quail/Punct.elc \
52 quail/QJ.elc \
53 quail/SW.elc \
54 quail/TONEPY.elc
55
56# Files generated from TIT dictionaries for Chinese BIG5 character set.
57TIT_BIG5=\
58 quail/4Corner.elc \
59 quail/ARRAY30.elc \
60 quail/ECDICT.elc \
61 quail/ETZY.elc \
62 quail/Punct-b5.elc \
63 quail/PY-b5.elc \
64 quail/QJ-b5.elc \
65 quail/ZOZY.elc
66
67CHINESE_TIT=$(TIT_GB) $(TIT_BIG5)
68
69NON_TIT_GB=$(srcdir)/quail/py-punct.elc
70
71NON_TIT_BIG5=$(srcdir)/quail/quick-b5.elc
72
73CHINESE_NON_TIT=$(NON_TIT_GB) $(NON_TIT_BIG5)
74
75CHINESE_GB=$(TIT_GB) $(NON_TIT_GB)
76
77CHINESE_BIG5=$(TIT_BIG5) $(NON_TIT_BIG5)
78
79JAPANESE=$(srcdir)/quail/japanese.elc $(srcdir)/ja-dic/ja-dic.elc
80
81KOREAN= $(srcdir)/quail/hangul.elc \
82 $(srcdir)/quail/hangul3.elc \
83 $(srcdir)/quail/hanja.elc \
84 $(srcdir)/quail/hanja3.elc \
85 $(srcdir)/quail/hanja-jis.elc \
86 $(srcdir)/quail/symbol-ksc.elc
87
88THAI=$(srcdir)/quail/thai.elc
89
90VIETNAMESE=$(srcdir)/quail/viqr.elc $(srcdir)/quail/vntelex.elc
91
92LAO=$(srcdir)/quail/lao.elc $(srcdir)/quail/lrt.elc
93
94INDIAN=$(srcdir)/quail/indian.elc
95
96TIBETAN=$(srcdir)/quail/tibetan.elc
97
98LATIN= $(srcdir)/quail/latin-pre.elc \
99 $(srcdir)/quail/latin-post.elc \
100 $(srcdir)/quail/latin-alt.elc \
101 $(srcdir)/quail/latin-ltx.elc
102
103SLAVIC= \
104 $(srcdir)/quail/czech.elc \
105 $(srcdir)/quail/slovak.elc
106
107GREEK=$(srcdir)/quail/greek.elc
108
109RUSSIAN=$(srcdir)/quail/cyrillic.elc $(srcdir)/quail/cyril-jis.elc
110
111MISC= \
112 $(srcdir)/quail/ethiopic.elc \
113 $(srcdir)/quail/ipa.elc \
114 $(srcdir)/quail/hebrew.elc
115
116MISC_DIC=\
117 quail/tsang-b5.elc \
118 quail/quick-b5.elc \
119 quail/tsang-cns.elc \
120 quail/quick-cns.elc \
121 quail/PY.elc \
122 quail/ZIRANMA.elc \
123 quail/CTLau.elc \
124 quail/CTLau-b5.elc
125
126CHINESE=$(CHINESE_GB) $(CHINESE_BIG5)
127EASTASIA=$(CHINESE) $(JAPANESE) $(KOREAN)
128ASIA=$(EASTASIA) $(THAI) $(VIETNAMESE) $(LAO) $(INDIAN) $(TIBETAN)
129EUROPEAN=$(LATIN) $(SLAVIC) $(GREEK) $(RUSSIAN)
130WORLD=$(ASIA) $(EUROPEAN) $(MISC)
131
132TIT=$(CHINESE_TIT)
133NON_TIT=$(CHINESE_NON_TIT) $(JAPANESE) $(KOREAN) $(EUROPEAN) $(MISC)
134
135all: $(BUILT_EMACS) $(SUBDIRS) $(WORLD) leim-list.el
136
137# To ensure that we can run Emacs. This target is ignored (never
138# being hit) if a user changes default value of EMACS.
139$(dot)$(dot)/src/emacs:
140 cd ../src; $(MAKE) $(MFLAGS) emacs
141
142$(SUBDIRS):
143 mkdir $@
144 echo stamp>stamp-subdir
145
146# The rules which generate $(TIT) and ${MISC_DIC) files create them all
147# in one go. So we need to prevent parallel execution for that target,
148# otherwise Emacs complains about files being locked. .NOTPARALLEL is
149# for GNU Make, .NO_PARALLEL is for other Make's.
150.NOTPARALLEL: $(TIT) $(MISC_DIC)
151
152.NO_PARALLEL: $(TIT) $(MISC_DIC)
153
154# Rule to generate quail/*.el from CXTERM-DIC/*.tit.
155$(TIT): $(SUBDIRS)
156 set EMACSLOADPATH=$(buildlisppath)
157 $(RUN_EMACS) -l $(buildlisppath)/international/titdic-cnv \
158 --eval "(batch-titdic-convert t)" -dir quail $(srcdir)/CXTERM-DIC
159 $(RUN_EMACS) -l $(buildlisppath)/international/quail \
160 -f batch-byte-compile $(TIT:.elc=.el)
161
162# Rule to generate quail/*.el from CXTERM-DIC/*.tit.
163$(MISC_DIC): $(SUBDIRS)
164 set EMACSLOADPATH=$(buildlisppath)
165 $(RUN_EMACS) -l $(buildlisppath)/international/titdic-cnv \
166 -f batch-miscdic-convert -dir quail $(srcdir)/MISC-DIC
167 $(RUN_EMACS) -l $(buildlisppath)/international/quail \
168 -f batch-byte-compile $(MISC_DIC:.elc=.el)
169
170.SUFFIXES: .elc .el
171
172.el.elc:
173 set EMACSLOADPATH=$(buildlisppath)
174 $(RUN_EMACS) -f batch-byte-compile $<
175
176leim-list.el: $(SUBDIRS) $(WORLD)
177 set EMACSLOADPATH=$(buildlisppath)
178 $(RUN_EMACS) -l $(buildlisppath)/international/quail \
179 --eval "(update-leim-list-file \".\")"
180
181install: all
182 - mkdir $(INSTALLDIR)
183 - $(DEL) same-dir.tst
184 - $(DEL) $(INSTALLDIR)\same-dir.tst
185 echo SameDirTest > $(INSTALLDIR)\same-dir.tst
186 if not exist same-dir.tst $(CP) leim-list.el $(INSTALLDIR)
187 if not exist same-dir.tst $(CP_DIR) quail $(INSTALLDIR)\quail
188 if not exist same-dir.tst $(CP_DIR) ja-dic $(INSTALLDIR)\ja-dic
189 - $(DEL) $(INSTALLDIR)\same-dir.tst
190
191TIT_EL=$(TIT:.elc=.el)
192MISC_DIC_EL=$(MISC_DIC:.elc=.el)
193
194clean mostlyclean:
195 for %%f in ($(TIT:/=\)) do $(DEL) %%f
196 for %%f in ($(TIT_EL:/=\)) do $(DEL) %%f
197 for %%f in ($(MISC_DIC:/=\)) do $(DEL) %%f
198 for %%f in ($(MISC_DIC_EL:/=\)) do $(DEL) %%f
199 $(DEL) leim-list.el
200
201distclean: clean
202 if exist stamp-subdir $(DELTREE) $(SUBDIRS)
203 $(DEL) stamp-subdir
204
205maintainer-clean: distclean
206 for %%f in ($(WORLD:/=\)) do $(DEL) %%f
207
208# arch-tag: cded53b4-4803-496b-8c05-7daff80e5b3b
diff --git a/leim/quail/latin-ltx.el b/leim/quail/latin-ltx.el
index 9eb7a0b7dcb..a4ae7e721fd 100644
--- a/leim/quail/latin-ltx.el
+++ b/leim/quail/latin-ltx.el
@@ -1,8 +1,8 @@
1;;; latin-ltx.el --- Quail package for TeX-style input -*-coding: iso-2022-7bit;-*- 1;;; latin-ltx.el --- Quail package for TeX-style input -*-coding: utf-8;-*-
2 2
3;; Copyright (C) 2001, 2004 Free Software Foundation, Inc.
3;; Copyright (C) 2001 Electrotechnical Laboratory, JAPAN. 4;; Copyright (C) 2001 Electrotechnical Laboratory, JAPAN.
4;; Licensed to the Free Software Foundation. 5;; Licensed to the Free Software Foundation.
5;; Copyright (C) 2001 Free Software Foundation, Inc.
6 6
7;; Author: TAKAHASHI Naoto <ntakahas@m17n.org> 7;; Author: TAKAHASHI Naoto <ntakahas@m17n.org>
8;; Dave Love <fx@gnu.org> 8;; Dave Love <fx@gnu.org>
@@ -36,921 +36,930 @@
36 "LaTeX-like input method for many characters. 36 "LaTeX-like input method for many characters.
37These characters are from the charsets used by the `utf-8' coding 37These characters are from the charsets used by the `utf-8' coding
38system, including many technical ones. Examples: 38system, including many technical ones. Examples:
39 \\'a -> ,Aa(B \\`{a} -> ,A`(B 39 \\'a -> á \\`{a} -> à
40 \\pi -> $,1'@(B \\int -> $,1xK(B ^1 -> ,A9(B" 40 \\pi -> π \\int -> ^1 -> ¹"
41 41
42 nil t t nil nil nil nil nil nil nil t) 42 nil t t nil nil nil nil nil nil nil t)
43 43
44(quail-define-rules 44(quail-define-rules
45 ("!`" ?,A!(B) 45 ("!`" ?¡)
46 ("{\\pounds}" ?,A#(B) ("\\pounds" ?,A#(B) 46 ("{\\pounds}" ?£) ("\\pounds" ?£)
47 ("{\\S}" ?,A'(B) ("\\S" ?,A'(B) 47 ("{\\S}" ?§) ("\\S" ?§)
48 ("\\\"{}" ?,A((B) 48 ("\\\"{}" ?¨)
49 ("{\\copyright}" ?,A)(B) ("\\copyright" ?,A)(B) 49 ("{\\copyright}" ?©) ("\\copyright" ?©)
50 ("$^a$" ?,A*(B) 50 ("$^a$" ?ª)
51 ("\\={}" ?,A/(B) 51 ("\\={}" ?¯)
52 ("$\\pm$" ?,A1(B) ("\\pm" ?,A1(B) 52 ("$\\pm$" ?±) ("\\pm" ?±)
53 ("$^2$" ?,A2(B) 53 ("$^2$" ?²)
54 ("$^3$" ?,A3(B) 54 ("$^3$" ?³)
55 ("\\'{}" ?,A4(B) 55 ("\\'{}" ?´)
56 ("{\\P}" ?,A6(B) ("\\P" ?,A6(B) 56 ("{\\P}" ?) ("\\P" ?)
57 ;; Fixme: Yudit has the equivalent of ("\\cdot" ?$,1z%(B), for U+22C5, DOT 57 ;; Fixme: Yudit has the equivalent of ("\\cdot" ?), for U+22C5, DOT
58 ;; OPERATOR, whereas ,A7(B is MIDDLE DOT. JadeTeX translates both to 58 ;; OPERATOR, whereas · is MIDDLE DOT. JadeTeX translates both to
59 ;; \cdot. 59 ;; \cdot.
60 ("$\\cdot$" ?,A7(B) ("\\cdot" ?,A7(B) 60 ("$\\cdot$" ?·) ("\\cdot" ?·)
61 ("\\c{}" ?,A8(B) 61 ("\\c{}" ?¸)
62 ("$^1$" ?,A9(B) 62 ("$^1$" ?¹)
63 ("$^o$" ?,A:(B) 63 ("$^o$" ?º)
64 ("?`" ?,A?(B) 64 ("?`" ?¿)
65 65
66 ("\\`{A}" ?,A@(B) ("\\`A" ?,A@(B) 66 ("\\`{A}" ?À) ("\\`A" ?À)
67 ("\\'{A}" ?,AA(B) ("\\'A" ?,AA(B) 67 ("\\'{A}" ?Á) ("\\'A" ?Á)
68 ("\\^{A}" ?,AB(B) ("\\^A" ?,AB(B) 68 ("\\^{A}" ?Â) ("\\^A" ?Â)
69 ("\\~{A}" ?,AC(B) ("\\~A" ?,AC(B) 69 ("\\~{A}" ?Ã) ("\\~A" ?Ã)
70 ("\\\"{A}" ?,AD(B) ("\\\"A" ?,AD(B) 70 ("\\\"{A}" ?Ä) ("\\\"A" ?Ä)
71 ("\\\k{A}" ?$,1 $(B) 71 ("\\\k{A}" ?Ą)
72 ("{\\AA}" ?,AE(B) ("\\AA" ?,AE(B) 72 ("{\\AA}" ?Å) ("\\AA" ?Å)
73 ("{\\AE}" ?,AF(B) ("\\AE" ?,AF(B) 73 ("{\\AE}" ?Æ) ("\\AE" ?Æ)
74 ("\\c{C}" ?,AG(B) ("\\cC" ?,AG(B) 74 ("\\c{C}" ?Ç) ("\\cC" ?Ç)
75 ("\\`{E}" ?,AH(B) ("\\`E" ?,AH(B) 75 ("\\`{E}" ?È) ("\\`E" ?È)
76 ("\\'{E}" ?,AI(B) ("\\'E" ?,AI(B) 76 ("\\'{E}" ?É) ("\\'E" ?É)
77 ("\\^{E}" ?,AJ(B) ("\\^E" ?,AJ(B) 77 ("\\^{E}" ?Ê) ("\\^E" ?Ê)
78 ("\\\"{E}" ?,AK(B) ("\\\"E" ?,AK(B) 78 ("\\\"{E}" ?Ë) ("\\\"E" ?Ë)
79 ("\\\k{E}" ?$,1 8(B) 79 ("\\\k{E}" ?Ę)
80 ("\\`{I}" ?,AL(B) ("\\`I" ?,AL(B) 80 ("\\`{I}" ?Ì) ("\\`I" ?Ì)
81 ("\\'{I}" ?,AM(B) ("\\'I" ?,AM(B) 81 ("\\'{I}" ?Í) ("\\'I" ?Í)
82 ("\\^{I}" ?,AN(B) ("\\^I" ?,AN(B) 82 ("\\^{I}" ?Î) ("\\^I" ?Î)
83 ("\\\"{I}" ?,AO(B) ("\\\"I" ?,AO(B) 83 ("\\\"{I}" ?Ï) ("\\\"I" ?Ï)
84 ("\\\k{I}" ?$,1 N(B) 84 ("\\\k{I}" ?Į)
85 85
86 ("\\~{N}" ?,AQ(B) ("\\~N" ?,AQ(B) 86 ("\\~{N}" ?Ñ) ("\\~N" ?Ñ)
87 ("\\`{O}" ?,AR(B) ("\\`O" ?,AR(B) 87 ("\\`{O}" ?Ò) ("\\`O" ?Ò)
88 ("\\'{O}" ?,AS(B) ("\\'O" ?,AS(B) 88 ("\\'{O}" ?Ó) ("\\'O" ?Ó)
89 ("\\^{O}" ?,AT(B) ("\\^O" ?,AT(B) 89 ("\\^{O}" ?Ô) ("\\^O" ?Ô)
90 ("\\~{O}" ?,AU(B) ("\\~O" ?,AU(B) 90 ("\\~{O}" ?Õ) ("\\~O" ?Õ)
91 ("\\\"{O}" ?,AV(B) ("\\\"O" ?,AV(B) 91 ("\\\"{O}" ?Ö) ("\\\"O" ?Ö)
92 ("\\\k{O}" ?$,1"J(B) 92 ("\\\k{O}" ?Ǫ)
93 ("$\\times$" ?,AW(B) ("\\times" ?,AW(B) 93 ("$\\times$" ?×) ("\\times" ?×)
94 ("{\\O}" ?,AX(B) ("\\O" ?,AX(B) 94 ("{\\O}" ?Ø) ("\\O" ?Ø)
95 ("\\`{U}" ?,AY(B) ("\\`U" ?,AY(B) 95 ("\\`{U}" ?Ù) ("\\`U" ?Ù)
96 ("\\'{U}" ?,AZ(B) ("\\'U" ?,AZ(B) 96 ("\\'{U}" ?Ú) ("\\'U" ?Ú)
97 ("\\^{U}" ?,A[(B) ("\\^U" ?,A[(B) 97 ("\\^{U}" ?Û) ("\\^U" ?Û)
98 ("\\\"{U}" ?,A\(B) ("\\\"U" ?,A\(B) 98 ("\\\"{U}" ?Ü) ("\\\"U" ?Ü)
99 ("\\\k{U}" ?$,1!2(B) 99 ("\\\k{U}" ?Ų)
100 ("\\'{Y}" ?,A](B) ("\\'Y" ?,A](B) 100 ("\\'{Y}" ?Ý) ("\\'Y" ?Ý)
101 ("{\\ss}" ?,A_(B) ("\\ss" ?,A_(B) 101 ("{\\ss}" ?ß) ("\\ss" ?ß)
102 102
103 ("\\`{a}" ?,A`(B) ("\\`a" ?,A`(B) 103 ("\\`{a}" ?à) ("\\`a" ?à)
104 ("\\'{a}" ?,Aa(B) ("\\'a" ?,Aa(B) 104 ("\\'{a}" ?á) ("\\'a" ?á)
105 ("\\^{a}" ?,Ab(B) ("\\^a" ?,Ab(B) 105 ("\\^{a}" ?â) ("\\^a" ?â)
106 ("\\~{a}" ?,Ac(B) ("\\~a" ?,Ac(B) 106 ("\\~{a}" ?ã) ("\\~a" ?ã)
107 ("\\\"{a}" ?,Ad(B) ("\\\"a" ?,Ad(B) 107 ("\\\"{a}" ?ä) ("\\\"a" ?ä)
108 ("\\\k{a}" ?$,1 %(B) 108 ("\\\k{a}" ?ą)
109 ("{\\aa}" ?,Ae(B) ("\\aa" ?,Ae(B) 109 ("{\\aa}" ?å) ("\\aa" ?å)
110 ("{\\ae}" ?,Af(B) ("\\ae" ?,Af(B) 110 ("{\\ae}" ?æ) ("\\ae" ?æ)
111 ("\\c{c}" ?,Ag(B) ("\\cc" ?,Ag(B) 111 ("\\c{c}" ?ç) ("\\cc" ?ç)
112 ("\\`{e}" ?,Ah(B) ("\\`e" ?,Ah(B) 112 ("\\`{e}" ?è) ("\\`e" ?è)
113 ("\\'{e}" ?,Ai(B) ("\\'e" ?,Ai(B) 113 ("\\'{e}" ?é) ("\\'e" ?é)
114 ("\\^{e}" ?,Aj(B) ("\\^e" ?,Aj(B) 114 ("\\^{e}" ?ê) ("\\^e" ?ê)
115 ("\\\"{e}" ?,Ak(B) ("\\\"e" ?,Ak(B) 115 ("\\\"{e}" ?ë) ("\\\"e" ?ë)
116 ("\\\k{e}" ?$,1 9(B) 116 ("\\\k{e}" ?ę)
117 ("\\`{\\i}" ?,Al(B) ("\\`i" ?,Al(B) 117 ("\\`{\\i}" ?ì) ("\\`i" ?ì)
118 ("\\'{\\i}" ?,Am(B) ("\\'i" ?,Am(B) 118 ("\\'{\\i}" ?í) ("\\'i" ?í)
119 ("\\^{\\i}" ?,An(B) ("\\^i" ?,An(B) 119 ("\\^{\\i}" ?î) ("\\^i" ?î)
120 ("\\\"{\\i}" ?,Ao(B) ("\\\"i" ?,Ao(B) 120 ("\\\"{\\i}" ?ï) ("\\\"i" ?ï)
121 ("\\\k{i}" ?$,1 O(B) 121 ("\\\k{i}" ?į)
122 122
123 ("\\~{n}" ?,Aq(B) ("\\~n" ?,Aq(B) 123 ("\\~{n}" ?ñ) ("\\~n" ?ñ)
124 ("\\`{o}" ?,Ar(B) ("\\`o" ?,Ar(B) 124 ("\\`{o}" ?ò) ("\\`o" ?ò)
125 ("\\'{o}" ?,As(B) ("\\'o" ?,As(B) 125 ("\\'{o}" ?ó) ("\\'o" ?ó)
126 ("\\^{o}" ?,At(B) ("\\^o" ?,At(B) 126 ("\\^{o}" ?ô) ("\\^o" ?ô)
127 ("\\~{o}" ?,Au(B) ("\\~o" ?,Au(B) 127 ("\\~{o}" ?õ) ("\\~o" ?õ)
128 ("\\\"{o}" ?,Av(B) ("\\\"o" ?,Av(B) 128 ("\\\"{o}" ?ö) ("\\\"o" ?ö)
129 ("\\\k{o}" ?$,1"K(B) 129 ("\\\k{o}" ?ǫ)
130 ("$\\div$" ?,Aw(B) ("\\div" ?,Aw(B) 130 ("$\\div$" ?÷) ("\\div" ?÷)
131 ("{\\o}" ?,Ax(B) ("\\o" ?,Ax(B) 131 ("{\\o}" ?ø) ("\\o" ?ø)
132 ("\\`{u}" ?,Ay(B) ("\\`u" ?,Ay(B) 132 ("\\`{u}" ?ù) ("\\`u" ?ù)
133 ("\\'{u}" ?,Az(B) ("\\'u" ?,Az(B) 133 ("\\'{u}" ?ú) ("\\'u" ?ú)
134 ("\\^{u}" ?,A{(B) ("\\^u" ?,A{(B) 134 ("\\^{u}" ?û) ("\\^u" ?û)
135 ("\\\"{u}" ?,A|(B) ("\\\"u" ?,A|(B) 135 ("\\\"{u}" ?ü) ("\\\"u" ?ü)
136 ("\\\k{u}" ?$,1!3(B) 136 ("\\\k{u}" ?ų)
137 ("\\'{y}" ?,A}(B) ("\\'y" ?,A}(B) 137 ("\\'{y}" ?ý) ("\\'y" ?ý)
138 ("\\\"{y}" ?,A(B) ("\\\"y" ?,A(B) 138 ("\\\"{y}" ?ÿ) ("\\\"y" ?ÿ)
139 139
140 ("\\={A}" ?$,1 (B) ("\\=A" ?$,1 (B) 140 ("\\={A}" ?Ā) ("\\=A" ?Ā)
141 ("\\={a}" ?$,1 !(B) ("\\=a" ?$,1 !(B) 141 ("\\={a}" ?ā) ("\\=a" ?ā)
142 ("\\u{A}" ?$,1 "(B) ("\\uA" ?$,1 "(B) 142 ("\\u{A}" ?Ă) ("\\uA" ?Ă)
143 ("\\u{a}" ?$,1 #(B) ("\\ua" ?$,1 #(B) 143 ("\\u{a}" ?ă) ("\\ua" ?ă)
144 ("\\'{C}" ?$,1 &(B) ("\\'C" ?$,1 &(B) 144 ("\\'{C}" ?Ć) ("\\'C" ?Ć)
145 ("\\'{c}" ?$,1 '(B) ("\\'c" ?$,1 '(B) 145 ("\\'{c}" ?ć) ("\\'c" ?ć)
146 ("\\^{C}" ?$,1 ((B) ("\\^C" ?$,1 ((B) 146 ("\\^{C}" ?Ĉ) ("\\^C" ?Ĉ)
147 ("\\^{c}" ?$,1 )(B) ("\\^c" ?$,1 )(B) 147 ("\\^{c}" ?ĉ) ("\\^c" ?ĉ)
148 ("\\.{C}" ?$,1 *(B) ("\\.C" ?$,1 *(B) 148 ("\\.{C}" ?Ċ) ("\\.C" ?Ċ)
149 ("\\.{c}" ?$,1 +(B) ("\\.c" ?$,1 +(B) 149 ("\\.{c}" ?ċ) ("\\.c" ?ċ)
150 ("\\v{C}" ?$,1 ,(B) ("\\vC" ?$,1 ,(B) 150 ("\\v{C}" ?Č) ("\\vC" ?Č)
151 ("\\v{c}" ?$,1 -(B) ("\\vc" ?$,1 -(B) 151 ("\\v{c}" ?č) ("\\vc" ?č)
152 ("\\v{D}" ?$,1 .(B) ("\\vD" ?$,1 .(B) 152 ("\\v{D}" ?Ď) ("\\vD" ?Ď)
153 ("\\v{d}" ?$,1 /(B) ("\\vd" ?$,1 /(B) 153 ("\\v{d}" ?ď) ("\\vd" ?ď)
154 154
155 ("\\={E}" ?$,1 2(B) ("\\=E" ?$,1 2(B) 155 ("\\={E}" ?Ē) ("\\=E" ?Ē)
156 ("\\={e}" ?$,1 3(B) ("\\=e" ?$,1 3(B) 156 ("\\={e}" ?ē) ("\\=e" ?ē)
157 ("\\u{E}" ?$,1 4(B) ("\\uE" ?$,1 4(B) 157 ("\\u{E}" ?Ĕ) ("\\uE" ?Ĕ)
158 ("\\u{e}" ?$,1 5(B) ("\\ue" ?$,1 5(B) 158 ("\\u{e}" ?ĕ) ("\\ue" ?ĕ)
159 ("\\.{E}" ?$,1 6(B) ("\\.E" ?$,1 6(B) 159 ("\\.{E}" ?Ė) ("\\.E" ?Ė)
160 ("\\e{e}" ?$,1 7(B) ("\\ee" ?$,1 7(B) 160 ("\\e{e}" ?ė) ("\\ee" ?ė)
161 ("\\v{E}" ?$,1 :(B) ("\\vE" ?$,1 :(B) 161 ("\\v{E}" ?Ě) ("\\vE" ?Ě)
162 ("\\v{e}" ?$,1 ;(B) ("\\ve" ?$,1 ;(B) 162 ("\\v{e}" ?ě) ("\\ve" ?ě)
163 ("\\^{G}" ?$,1 <(B) ("\\^G" ?$,1 <(B) 163 ("\\^{G}" ?Ĝ) ("\\^G" ?Ĝ)
164 ("\\^{g}" ?$,1 =(B) ("\\^g" ?$,1 =(B) 164 ("\\^{g}" ?ĝ) ("\\^g" ?ĝ)
165 ("\\u{G}" ?$,1 >(B) ("\\uG" ?$,1 >(B) 165 ("\\u{G}" ?Ğ) ("\\uG" ?Ğ)
166 ("\\u{g}" ?$,1 ?(B) ("\\ug" ?$,1 ?(B) 166 ("\\u{g}" ?ğ) ("\\ug" ?ğ)
167 167
168 ("\\.{G}" ?$,1 @(B) ("\\.G" ?$,1 @(B) 168 ("\\.{G}" ?Ġ) ("\\.G" ?Ġ)
169 ("\\.{g}" ?$,1 A(B) ("\\.g" ?$,1 A(B) 169 ("\\.{g}" ?ġ) ("\\.g" ?ġ)
170 ("\\c{G}" ?$,1 B(B) ("\\cG" ?$,1 B(B) 170 ("\\c{G}" ?Ģ) ("\\cG" ?Ģ)
171 ("\\c{g}" ?$,1 C(B) ("\\cg" ?$,1 C(B) 171 ("\\c{g}" ?ģ) ("\\cg" ?ģ)
172 ("\\^{H}" ?$,1 D(B) ("\\^H" ?$,1 D(B) 172 ("\\^{H}" ?Ĥ) ("\\^H" ?Ĥ)
173 ("\\^{h}" ?$,1 E(B) ("\\^h" ?$,1 E(B) 173 ("\\^{h}" ?ĥ) ("\\^h" ?ĥ)
174 ("\\~{I}" ?$,1 H(B) ("\\~I" ?$,1 H(B) 174 ("\\~{I}" ?Ĩ) ("\\~I" ?Ĩ)
175 ("\\~{\\i}" ?$,1 I(B) ("\\~i" ?$,1 I(B) 175 ("\\~{\\i}" ?ĩ) ("\\~i" ?ĩ)
176 ("\\={I}" ?$,1 J(B) ("\\=I" ?$,1 J(B) 176 ("\\={I}" ?Ī) ("\\=I" ?Ī)
177 ("\\={\\i}" ?$,1 K(B) ("\\=i" ?$,1 K(B) 177 ("\\={\\i}" ?ī) ("\\=i" ?ī)
178 ("\\u{I}" ?$,1 L(B) ("\\uI" ?$,1 L(B) 178 ("\\u{I}" ?Ĭ) ("\\uI" ?Ĭ)
179 ("\\u{\\i}" ?$,1 M(B) ("\\ui" ?$,1 M(B) 179 ("\\u{\\i}" ?ĭ) ("\\ui" ?ĭ)
180 180
181 ("\\.{I}" ?$,1 P(B) ("\\.I" ?$,1 P(B) 181 ("\\.{I}" ?İ) ("\\.I" ?İ)
182 ("{\\i}" ?$,1 Q(B) ("\\i" ?$,1 Q(B) 182 ("{\\i}" ?ı) ("\\i" ?ı)
183 ("\\^{J}" ?$,1 T(B) ("\\^J" ?$,1 T(B) 183 ("\\^{J}" ?Ĵ) ("\\^J" ?Ĵ)
184 ("\\^{\\j}" ?$,1 U(B) ("\\^j" ?$,1 U(B) 184 ("\\^{\\j}" ?ĵ) ("\\^j" ?ĵ)
185 ("\\c{K}" ?$,1 V(B) ("\\cK" ?$,1 V(B) 185 ("\\c{K}" ?Ķ) ("\\cK" ?Ķ)
186 ("\\c{k}" ?$,1 W(B) ("\\ck" ?$,1 W(B) 186 ("\\c{k}" ?ķ) ("\\ck" ?ķ)
187 ("\\'{L}" ?$,1 Y(B) ("\\'L" ?$,1 Y(B) 187 ("\\'{L}" ?Ĺ) ("\\'L" ?Ĺ)
188 ("\\'{l}" ?$,1 Z(B) ("\\'l" ?$,1 Z(B) 188 ("\\'{l}" ?ĺ) ("\\'l" ?ĺ)
189 ("\\c{L}" ?$,1 [(B) ("\\cL" ?$,1 [(B) 189 ("\\c{L}" ?Ļ) ("\\cL" ?Ļ)
190 ("\\c{l}" ?$,1 \(B) ("\\cl" ?$,1 \(B) 190 ("\\c{l}" ?ļ) ("\\cl" ?ļ)
191 191
192 ("{\\L}" ?$,1 a(B) ("\\L" ?$,1 a(B) 192 ("{\\L}" ?Ł) ("\\L" ?Ł)
193 ("{\\l}" ?$,1 b(B) ("\\l" ?$,1 b(B) 193 ("{\\l}" ?ł) ("\\l" ?ł)
194 ("\\'{N}" ?$,1 c(B) ("\\'N" ?$,1 c(B) 194 ("\\'{N}" ?Ń) ("\\'N" ?Ń)
195 ("\\'{n}" ?$,1 d(B) ("\\'n" ?$,1 d(B) 195 ("\\'{n}" ?ń) ("\\'n" ?ń)
196 ("\\c{N}" ?$,1 e(B) ("\\cN" ?$,1 e(B) 196 ("\\c{N}" ?Ņ) ("\\cN" ?Ņ)
197 ("\\c{n}" ?$,1 f(B) ("\\cn" ?$,1 f(B) 197 ("\\c{n}" ?ņ) ("\\cn" ?ņ)
198 ("\\v{N}" ?$,1 g(B) ("\\vN" ?$,1 g(B) 198 ("\\v{N}" ?Ň) ("\\vN" ?Ň)
199 ("\\v{n}" ?$,1 h(B) ("\\vn" ?$,1 h(B) 199 ("\\v{n}" ?ň) ("\\vn" ?ň)
200 ("\\={O}" ?$,1 l(B) ("\\=O" ?$,1 l(B) 200 ("\\={O}" ?Ō) ("\\=O" ?Ō)
201 ("\\={o}" ?$,1 m(B) ("\\=o" ?$,1 m(B) 201 ("\\={o}" ?ō) ("\\=o" ?ō)
202 ("\\u{O}" ?$,1 n(B) ("\\uO" ?$,1 n(B) 202 ("\\u{O}" ?Ŏ) ("\\uO" ?Ŏ)
203 ("\\u{o}" ?$,1 o(B) ("\\uo" ?$,1 o(B) 203 ("\\u{o}" ?ŏ) ("\\uo" ?ŏ)
204 204
205 ("\\H{O}" ?$,1 p(B) ("\\HO" ?$,1 p(B) 205 ("\\H{O}" ?Ő) ("\\HO" ?Ő)
206 ("\\U{o}" ?$,1 q(B) ("\\Uo" ?$,1 q(B) 206 ("\\U{o}" ?ő) ("\\Uo" ?ő)
207 ("{\\OE}" ?$,1 r(B) ("\\OE" ?$,1 r(B) 207 ("{\\OE}" ?Œ) ("\\OE" ?Œ)
208 ("{\\oe}" ?$,1 s(B) ("\\oe" ?$,1 s(B) 208 ("{\\oe}" ?œ) ("\\oe" ?œ)
209 ("\\'{R}" ?$,1 t(B) ("\\'R" ?$,1 t(B) 209 ("\\'{R}" ?Ŕ) ("\\'R" ?Ŕ)
210 ("\\'{r}" ?$,1 u(B) ("\\'r" ?$,1 u(B) 210 ("\\'{r}" ?ŕ) ("\\'r" ?ŕ)
211 ("\\c{R}" ?$,1 v(B) ("\\cR" ?$,1 v(B) 211 ("\\c{R}" ?Ŗ) ("\\cR" ?Ŗ)
212 ("\\c{r}" ?$,1 w(B) ("\\cr" ?$,1 w(B) 212 ("\\c{r}" ?ŗ) ("\\cr" ?ŗ)
213 ("\\v{R}" ?$,1 x(B) ("\\vR" ?$,1 x(B) 213 ("\\v{R}" ?Ř) ("\\vR" ?Ř)
214 ("\\v{r}" ?$,1 y(B) ("\\vr" ?$,1 y(B) 214 ("\\v{r}" ?ř) ("\\vr" ?ř)
215 ("\\'{S}" ?$,1 z(B) ("\\'S" ?$,1 z(B) 215 ("\\'{S}" ?Ś) ("\\'S" ?Ś)
216 ("\\'{s}" ?$,1 {(B) ("\\'s" ?$,1 {(B) 216 ("\\'{s}" ?ś) ("\\'s" ?ś)
217 ("\\^{S}" ?$,1 |(B) ("\\^S" ?$,1 |(B) 217 ("\\^{S}" ?Ŝ) ("\\^S" ?Ŝ)
218 ("\\^{s}" ?$,1 }(B) ("\\^s" ?$,1 }(B) 218 ("\\^{s}" ?ŝ) ("\\^s" ?ŝ)
219 ("\\c{S}" ?$,1 ~(B) ("\\cS" ?$,1 ~(B) 219 ("\\c{S}" ?Ş) ("\\cS" ?Ş)
220 ("\\c{s}" ?$,1 (B) ("\\cs" ?$,1 (B) 220 ("\\c{s}" ?ş) ("\\cs" ?ş)
221 221
222 ("\\v{S}" ?$,1! (B) ("\\vS" ?$,1! (B) 222 ("\\v{S}" ?Š) ("\\vS" ?Š)
223 ("\\v{s}" ?$,1!!(B) ("\\vs" ?$,1!!(B) 223 ("\\v{s}" ?š) ("\\vs" ?š)
224 ("\\c{T}" ?$,1!"(B) ("\\cT" ?$,1!"(B) 224 ("\\c{T}" ?Ţ) ("\\cT" ?Ţ)
225 ("\\c{t}" ?$,1!#(B) ("\\ct" ?$,1!#(B) 225 ("\\c{t}" ?ţ) ("\\ct" ?ţ)
226 ("\\v{T}" ?$,1!$(B) ("\\vT" ?$,1!$(B) 226 ("\\v{T}" ?Ť) ("\\vT" ?Ť)
227 ("\\v{t}" ?$,1!%(B) ("\\vt" ?$,1!%(B) 227 ("\\v{t}" ?ť) ("\\vt" ?ť)
228 ("\\~{U}" ?$,1!((B) ("\\~U" ?$,1!((B) 228 ("\\~{U}" ?Ũ) ("\\~U" ?Ũ)
229 ("\\~{u}" ?$,1!)(B) ("\\~u" ?$,1!)(B) 229 ("\\~{u}" ?ũ) ("\\~u" ?ũ)
230 ("\\={U}" ?$,1!*(B) ("\\=U" ?$,1!*(B) 230 ("\\={U}" ?Ū) ("\\=U" ?Ū)
231 ("\\={u}" ?$,1!+(B) ("\\=u" ?$,1!+(B) 231 ("\\={u}" ?ū) ("\\=u" ?ū)
232 ("\\u{U}" ?$,1!,(B) ("\\uU" ?$,1!,(B) 232 ("\\u{U}" ?Ŭ) ("\\uU" ?Ŭ)
233 ("\\u{u}" ?$,1!-(B) ("\\uu" ?$,1!-(B) 233 ("\\u{u}" ?ŭ) ("\\uu" ?ŭ)
234 234
235 ("\\H{U}" ?$,1!0(B) ("\\HU" ?$,1!0(B) 235 ("\\H{U}" ?Ű) ("\\HU" ?Ű)
236 ("\\H{u}" ?$,1!1(B) ("\\Hu" ?$,1!1(B) 236 ("\\H{u}" ?ű) ("\\Hu" ?ű)
237 ("\\^{W}" ?$,1!4(B) ("\\^W" ?$,1!4(B) 237 ("\\^{W}" ?Ŵ) ("\\^W" ?Ŵ)
238 ("\\^{w}" ?$,1!5(B) ("\\^w" ?$,1!5(B) 238 ("\\^{w}" ?ŵ) ("\\^w" ?ŵ)
239 ("\\^{Y}" ?$,1!6(B) ("\\^Y" ?$,1!6(B) 239 ("\\^{Y}" ?Ŷ) ("\\^Y" ?Ŷ)
240 ("\\^{y}" ?$,1!7(B) ("\\^y" ?$,1!7(B) 240 ("\\^{y}" ?ŷ) ("\\^y" ?ŷ)
241 ("\\\"{Y}" ?$,1!8(B) ("\\\"Y" ?$,1!8(B) 241 ("\\\"{Y}" ?Ÿ) ("\\\"Y" ?Ÿ)
242 ("\\'{Z}" ?$,1!9(B) ("\\'Z" ?$,1!9(B) 242 ("\\'{Z}" ?Ź) ("\\'Z" ?Ź)
243 ("\\'{z}" ?$,1!:(B) ("\\'z" ?$,1!:(B) 243 ("\\'{z}" ?ź) ("\\'z" ?ź)
244 ("\\.{Z}" ?$,1!;(B) ("\\.Z" ?$,1!;(B) 244 ("\\.{Z}" ?Ż) ("\\.Z" ?Ż)
245 ("\\.{z}" ?$,1!<(B) ("\\.z" ?$,1!<(B) 245 ("\\.{z}" ?ż) ("\\.z" ?ż)
246 ("\\v{Z}" ?$,1!=(B) ("\\vZ" ?$,1!=(B) 246 ("\\v{Z}" ?Ž) ("\\vZ" ?Ž)
247 ("\\v{z}" ?$,1!>(B) ("\\vz" ?$,1!>(B) 247 ("\\v{z}" ?ž) ("\\vz" ?ž)
248 248
249 ("\\v{A}" ?$,1"-(B) ("\\vA" ?$,1"-(B) 249 ("\\v{A}" ?Ǎ) ("\\vA" ?Ǎ)
250 ("\\v{a}" ?$,1".(B) ("\\va" ?$,1".(B) 250 ("\\v{a}" ?ǎ) ("\\va" ?ǎ)
251 ("\\v{I}" ?$,1"/(B) ("\\vI" ?$,1"/(B) 251 ("\\v{I}" ?Ǐ) ("\\vI" ?Ǐ)
252 ("\\v{\\i}" ?$,1"0(B) ("\\vi" ?$,1"0(B) 252 ("\\v{\\i}" ?ǐ) ("\\vi" ?ǐ)
253 ("\\v{O}" ?$,1"1(B) ("\\vO" ?$,1"1(B) 253 ("\\v{O}" ?Ǒ) ("\\vO" ?Ǒ)
254 ("\\v{o}" ?$,1"2(B) ("\\vo" ?$,1"2(B) 254 ("\\v{o}" ?ǒ) ("\\vo" ?ǒ)
255 ("\\v{U}" ?$,1"3(B) ("\\vU" ?$,1"3(B) 255 ("\\v{U}" ?Ǔ) ("\\vU" ?Ǔ)
256 ("\\v{u}" ?$,1"4(B) ("\\vu" ?$,1"4(B) 256 ("\\v{u}" ?ǔ) ("\\vu" ?ǔ)
257 257
258 ("\\={\\AE}" ?$,1"B(B) ("\\=\\AE" ?$,1"B(B) 258 ("\\={\\AE}" ?Ǣ) ("\\=\\AE" ?Ǣ)
259 ("\\={\\ae}" ?$,1"C(B) ("\\=\\ae" ?$,1"C(B) 259 ("\\={\\ae}" ?ǣ) ("\\=\\ae" ?ǣ)
260 ("\\v{G}" ?$,1"F(B) ("\\vG" ?$,1"F(B) 260 ("\\v{G}" ?Ǧ) ("\\vG" ?Ǧ)
261 ("\\v{g}" ?$,1"G(B) ("\\vg" ?$,1"G(B) 261 ("\\v{g}" ?ǧ) ("\\vg" ?ǧ)
262 ("\\v{K}" ?$,1"H(B) ("\\vK" ?$,1"H(B) 262 ("\\v{K}" ?Ǩ) ("\\vK" ?Ǩ)
263 ("\\v{k}" ?k) ("\\vk" ?k) 263 ("\\v{k}" ?k) ("\\vk" ?k)
264 264
265 ("\\v{\\j}" ?$,1"P(B) ("\\vj" ?$,1"P(B) 265 ("\\v{\\j}" ?ǰ) ("\\vj" ?ǰ)
266 ("\\'{G}" ?$,1"T(B) ("\\'G" ?$,1"T(B) 266 ("\\'{G}" ?Ǵ) ("\\'G" ?Ǵ)
267 ("\\'{g}" ?$,1"U(B) ("\\'g" ?$,1"U(B) 267 ("\\'{g}" ?ǵ) ("\\'g" ?ǵ)
268 ("\\`{N}" ?$,1"X(B) ("\\`N" ?$,1"X(B) 268 ("\\`{N}" ?Ǹ) ("\\`N" ?Ǹ)
269 ("\\`{n}" ?$,1"Y(B) ("\\`n" ?$,1"Y(B) 269 ("\\`{n}" ?ǹ) ("\\`n" ?ǹ)
270 ("\\'{\\AE}" ?$,1"\(B) ("\\'\\AE" ?$,1"\(B) 270 ("\\'{\\AE}" ?Ǽ) ("\\'\\AE" ?Ǽ)
271 ("\\'{\\ae}" ?$,1"](B) ("\\'\\ae" ?$,1"](B) 271 ("\\'{\\ae}" ?ǽ) ("\\'\\ae" ?ǽ)
272 ("\\'{\\O}" ?$,1"^(B) ("\\'\\O" ?$,1"^(B) 272 ("\\'{\\O}" ?Ǿ) ("\\'\\O" ?Ǿ)
273 ("\\'{\\o}" ?$,1"_(B) ("\\'\\o" ?$,1"_(B) 273 ("\\'{\\o}" ?ǿ) ("\\'\\o" ?ǿ)
274 274
275 ("\\v{H}" ?$,1"~(B) ("\\vH" ?$,1"~(B) 275 ("\\v{H}" ?Ȟ) ("\\vH" ?Ȟ)
276 ("\\v{h}" ?$,1"(B) ("\\vh" ?$,1"(B) 276 ("\\v{h}" ?ȟ) ("\\vh" ?ȟ)
277 ("\\.{A}" ?$,1#&(B) ("\\.A" ?$,1#&(B) 277 ("\\.{A}" ?Ȧ) ("\\.A" ?Ȧ)
278 ("\\.{a}" ?$,1#'(B) ("\\.a" ?$,1#'(B) 278 ("\\.{a}" ?ȧ) ("\\.a" ?ȧ)
279 ("\\c{E}" ?$,1#((B) ("\\cE" ?$,1#((B) 279 ("\\c{E}" ?Ȩ) ("\\cE" ?Ȩ)
280 ("\\c{e}" ?$,1#)(B) ("\\ce" ?$,1#)(B) 280 ("\\c{e}" ?ȩ) ("\\ce" ?ȩ)
281 ("\\.{O}" ?$,1#.(B) ("\\.O" ?$,1#.(B) 281 ("\\.{O}" ?Ȯ) ("\\.O" ?Ȯ)
282 ("\\.{o}" ?$,1#/(B) ("\\.o" ?$,1#/(B) 282 ("\\.{o}" ?ȯ) ("\\.o" ?ȯ)
283 ("\\={Y}" ?$,1#2(B) ("\\=Y" ?$,1#2(B) 283 ("\\={Y}" ?Ȳ) ("\\=Y" ?Ȳ)
284 ("\\={y}" ?$,1#3(B) ("\\=y" ?$,1#3(B) 284 ("\\={y}" ?ȳ) ("\\=y" ?ȳ)
285 285
286 ("\\v{}" ?$,1$g(B) 286 ("\\v{}" ?ˇ)
287 ("\\u{}" ?$,1$x(B) 287 ("\\u{}" ?˘)
288 ("\\.{}" ?$,1$y(B) 288 ("\\.{}" ?˙)
289 ("\\~{}" ?$,1$|(B) 289 ("\\~{}" ?˜)
290 ("\\H{}" ?$,1$}(B) 290 ("\\H{}" ?˝)
291 291
292 ("\\'" ?$,1%A(B) 292 ("\\'" ?́)
293 ("\\'K" ?$,1mp(B) 293 ("\\'K" ?)
294 ("\\'M" ?$,1m~(B) 294 ("\\'M" ?)
295 ("\\'P" ?$,1n4(B) 295 ("\\'P" ?)
296 ("\\'W" ?$,1nb(B) 296 ("\\'W" ?)
297 ("\\'k" ?$,1mq(B) 297 ("\\'k" ?)
298 ("\\'m" ?$,1m(B) 298 ("\\'m" ?ḿ)
299 ("\\'p" ?$,1n5(B) 299 ("\\'p" ?)
300 ("\\'w" ?$,1nc(B) 300 ("\\'w" ?)
301 ("\\," ?$,1rf(B) 301 ("\\," ?)
302 ("\\." ?$,1%G(B) 302 ("\\." ?̇)
303 ("\\.B" ?$,1mB(B) 303 ("\\.B" ?)
304 ("\\.D" ?$,1mJ(B) 304 ("\\.D" ?)
305 ("\\.F" ?$,1m^(B) 305 ("\\.F" ?)
306 ("\\.H" ?$,1mb(B) 306 ("\\.H" ?)
307 ("\\.M" ?$,1n (B) 307 ("\\.M" ?)
308 ("\\.N" ?$,1n$(B) 308 ("\\.N" ?)
309 ("\\.P" ?$,1n6(B) 309 ("\\.P" ?)
310 ("\\.R" ?$,1n8(B) 310 ("\\.R" ?)
311 ("\\.S" ?$,1n@(B) 311 ("\\.S" ?)
312 ("\\.T" ?$,1nJ(B) 312 ("\\.T" ?)
313 ("\\.W" ?$,1nf(B) 313 ("\\.W" ?)
314 ("\\.X" ?$,1nj(B) 314 ("\\.X" ?)
315 ("\\.Y" ?$,1nn(B) 315 ("\\.Y" ?)
316 ("\\.b" ?$,1mC(B) 316 ("\\.b" ?)
317 ("\\.d" ?$,1mK(B) 317 ("\\.d" ?)
318 ("\\.e" ?$,1 7(B) 318 ("\\.e" ?ė)
319 ("\\.f" ?$,1m_(B) 319 ("\\.f" ?)
320 ("\\.h" ?$,1mc(B) 320 ("\\.h" ?)
321 ("\\.m" ?$,1n!(B) 321 ("\\.m" ?)
322 ("\\.n" ?$,1n%(B) 322 ("\\.n" ?)
323 ("\\.p" ?$,1n7(B) 323 ("\\.p" ?)
324 ("\\.r" ?$,1n9(B) 324 ("\\.r" ?)
325 ("\\.s" ?$,1nA(B) 325 ("\\.s" ?)
326 ("\\.t" ?$,1nK(B) 326 ("\\.t" ?)
327 ("\\.w" ?$,1ng(B) 327 ("\\.w" ?)
328 ("\\.x" ?$,1nk(B) 328 ("\\.x" ?)
329 ("\\.y" ?$,1no(B) 329 ("\\.y" ?)
330 ("\\/" ?$,1rl(B) 330 ("\\/" ?)
331 ("\\:" ?$,1re(B) 331 ("\\:" ?)
332 ("\\;" ?$,1rd(B) 332 ("\\;" ?)
333 ("\\=" ?$,1%D(B) 333 ("\\=" ?̄)
334 ("\\=G" ?$,1m`(B) 334 ("\\=G" ?)
335 ("\\=g" ?$,1ma(B) 335 ("\\=g" ?)
336 336
337 ("^(" ?$,1s}(B) 337 ("^(" ?)
338 ("^)" ?$,1s~(B) 338 ("^)" ?)
339 ("^+" ?$,1sz(B) 339 ("^+" ?)
340 ("^-" ?$,1s{(B) 340 ("^-" ?)
341 ("^0" ?$,1sp(B) 341 ("^0" ?)
342 ("^1" ?,A9(B) 342 ("^1" ?¹)
343 ("^2" ?,A2(B) 343 ("^2" ?²)
344 ("^3" ?,A3(B) 344 ("^3" ?³)
345 ("^4" ?$,1st(B) 345 ("^4" ?)
346 ("^5" ?$,1su(B) 346 ("^5" ?)
347 ("^6" ?$,1sv(B) 347 ("^6" ?)
348 ("^7" ?$,1sw(B) 348 ("^7" ?)
349 ("^8" ?$,1sx(B) 349 ("^8" ?)
350 ("^9" ?$,1sy(B) 350 ("^9" ?)
351 ("^=" ?$,1s|(B) 351 ("^=" ?)
352 ("^\\gamma" ?$,1% (B) 352 ("^\\gamma" ?ˠ)
353 ("^h" ?$,1$P(B) 353 ("^h" ?ʰ)
354 ("^j" ?$,1$R(B) 354 ("^j" ?ʲ)
355 ("^l" ?$,1%!(B) 355 ("^l" ?ˡ)
356 ("^n" ?$,1s(B) 356 ("^n" ?)
357 ("^o" ?,A:(B) 357 ("^o" ?º)
358 ("^r" ?$,1$S(B) 358 ("^r" ?ʳ)
359 ("^s" ?$,1%"(B) 359 ("^s" ?ˢ)
360 ("^w" ?$,1$W(B) 360 ("^w" ?ʷ)
361 ("^x" ?$,1%#(B) 361 ("^x" ?ˣ)
362 ("^y" ?$,1$X(B) 362 ("^y" ?ʸ)
363 ("^{SM}" ?$,1u`(B) 363 ("^{SM}" ?)
364 ("^{TEL}" ?$,1ua(B) 364 ("^{TEL}" ?)
365 ("^{TM}" ?$,1ub(B) 365 ("^{TM}" ?)
366 ("_(" ?$,1t-(B) 366 ("_(" ?)
367 ("_)" ?$,1t.(B) 367 ("_)" ?)
368 ("_+" ?$,1t*(B) 368 ("_+" ?)
369 ("_-" ?$,1t+(B) 369 ("_-" ?)
370 ("_0" ?$,1t (B) 370 ("_0" ?)
371 ("_1" ?$,1t!(B) 371 ("_1" ?)
372 ("_2" ?$,1t"(B) 372 ("_2" ?)
373 ("_3" ?$,1t#(B) 373 ("_3" ?)
374 ("_4" ?$,1t$(B) 374 ("_4" ?)
375 ("_5" ?$,1t%(B) 375 ("_5" ?)
376 ("_6" ?$,1t&(B) 376 ("_6" ?)
377 ("_7" ?$,1t'(B) 377 ("_7" ?)
378 ("_8" ?$,1t((B) 378 ("_8" ?)
379 ("_9" ?$,1t)(B) 379 ("_9" ?)
380 ("_=" ?$,1t,(B) 380 ("_=" ?)
381 381
382 ("\\~" ?$,1%C(B) 382 ("\\~" ?̃)
383 ("\\~E" ?$,1o<(B) 383 ("\\~E" ?)
384 ("\\~V" ?$,1n\(B) 384 ("\\~V" ?)
385 ("\\~Y" ?$,1ox(B) 385 ("\\~Y" ?)
386 ("\\~e" ?$,1o=(B) 386 ("\\~e" ?)
387 ("\\~v" ?$,1n](B) 387 ("\\~v" ?)
388 ("\\~y" ?$,1oy(B) 388 ("\\~y" ?)
389 389
390 ("\\\"" ?$,1%H(B) 390 ("\\\"" ?̈)
391 ("\\\"H" ?$,1mf(B) 391 ("\\\"H" ?)
392 ("\\\"W" ?$,1nd(B) 392 ("\\\"W" ?)
393 ("\\\"X" ?$,1nl(B) 393 ("\\\"X" ?)
394 ("\\\"h" ?$,1mg(B) 394 ("\\\"h" ?)
395 ("\\\"t" ?$,1nw(B) 395 ("\\\"t" ?)
396 ("\\\"w" ?$,1ne(B) 396 ("\\\"w" ?)
397 ("\\\"x" ?$,1nm(B) 397 ("\\\"x" ?)
398 ("\\^" ?$,1%B(B) 398 ("\\^" ?̂)
399 ("\\^Z" ?$,1np(B) 399 ("\\^Z" ?)
400 ("\\^z" ?$,1nq(B) 400 ("\\^z" ?)
401 ("\\`" ?$,1%@(B) 401 ("\\`" ?̀)
402 ("\\`W" ?$,1n`(B) 402 ("\\`W" ?)
403 ("\\`Y" ?$,1or(B) 403 ("\\`Y" ?)
404 ("\\`w" ?$,1na(B) 404 ("\\`w" ?)
405 ("\\`y" ?$,1os(B) 405 ("\\`y" ?)
406 ("\\b" ?$,1%q(B) 406 ("\\b" ?̱)
407 ("\\c" ?$,1%g(B) 407 ("\\c" ?̧)
408 ("\\c{D}" ?$,1mP(B) 408 ("\\c{D}" ?)
409 ("\\c{H}" ?$,1mh(B) 409 ("\\c{H}" ?)
410 ("\\c{d}" ?$,1mQ(B) 410 ("\\c{d}" ?)
411 ("\\c{h}" ?$,1mi(B) 411 ("\\c{h}" ?)
412 ("\\d" ?$,1%c(B) 412 ("\\d" ?̣)
413 ("\\d{A}" ?$,1o (B) 413 ("\\d{A}" ?)
414 ("\\d{B}" ?$,1mD(B) 414 ("\\d{B}" ?)
415 ("\\d{D}" ?$,1mL(B) 415 ("\\d{D}" ?)
416 ("\\d{E}" ?$,1o8(B) 416 ("\\d{E}" ?)
417 ("\\d{H}" ?$,1md(B) 417 ("\\d{H}" ?)
418 ("\\d{I}" ?$,1oJ(B) 418 ("\\d{I}" ?)
419 ("\\d{K}" ?$,1mr(B) 419 ("\\d{K}" ?)
420 ("\\d{L}" ?$,1mv(B) 420 ("\\d{L}" ?)
421 ("\\d{M}" ?$,1n"(B) 421 ("\\d{M}" ?)
422 ("\\d{N}" ?$,1n&(B) 422 ("\\d{N}" ?)
423 ("\\d{O}" ?$,1oL(B) 423 ("\\d{O}" ?)
424 ("\\d{R}" ?$,1n:(B) 424 ("\\d{R}" ?)
425 ("\\d{S}" ?$,1nB(B) 425 ("\\d{S}" ?)
426 ("\\d{T}" ?$,1nL(B) 426 ("\\d{T}" ?)
427 ("\\d{U}" ?$,1od(B) 427 ("\\d{U}" ?)
428 ("\\d{V}" ?$,1n^(B) 428 ("\\d{V}" ?)
429 ("\\d{W}" ?$,1nh(B) 429 ("\\d{W}" ?)
430 ("\\d{Y}" ?$,1ot(B) 430 ("\\d{Y}" ?)
431 ("\\d{Z}" ?$,1nr(B) 431 ("\\d{Z}" ?)
432 ("\\d{a}" ?$,1o!(B) 432 ("\\d{a}" ?)
433 ("\\d{b}" ?$,1mE(B) 433 ("\\d{b}" ?)
434 ("\\d{d}" ?$,1mM(B) 434 ("\\d{d}" ?)
435 ("\\d{e}" ?$,1o9(B) 435 ("\\d{e}" ?)
436 ("\\d{h}" ?$,1me(B) 436 ("\\d{h}" ?)
437 ("\\d{i}" ?$,1oK(B) 437 ("\\d{i}" ?)
438 ("\\d{k}" ?$,1ms(B) 438 ("\\d{k}" ?)
439 ("\\d{l}" ?$,1mw(B) 439 ("\\d{l}" ?)
440 ("\\d{m}" ?$,1n#(B) 440 ("\\d{m}" ?)
441 ("\\d{n}" ?$,1n'(B) 441 ("\\d{n}" ?)
442 ("\\d{o}" ?$,1oM(B) 442 ("\\d{o}" ?)
443 ("\\d{r}" ?$,1n;(B) 443 ("\\d{r}" ?)
444 ("\\d{s}" ?$,1nC(B) 444 ("\\d{s}" ?)
445 ("\\d{t}" ?$,1nM(B) 445 ("\\d{t}" ?)
446 ("\\d{u}" ?$,1oe(B) 446 ("\\d{u}" ?)
447 ("\\d{v}" ?$,1n_(B) 447 ("\\d{v}" ?ṿ)
448 ("\\d{w}" ?$,1ni(B) 448 ("\\d{w}" ?)
449 ("\\d{y}" ?$,1ou(B) 449 ("\\d{y}" ?)
450 ("\\d{z}" ?$,1ns(B) 450 ("\\d{z}" ?)
451 ("\\rq" ?$,1ry(B) 451 ("\\rq" ?)
452 ("\\u" ?$,1%F(B) 452 ("\\u" ?̆)
453 ("\\v" ?$,1%L(B) 453 ("\\v" ?̌)
454 ("\\v{L}" ?$,1 ](B) 454 ("\\v{L}" ?Ľ)
455 ("\\v{i}" ?$,1"0(B) 455 ("\\v{i}" ?ǐ)
456 ("\\v{j}" ?$,1"P(B) 456 ("\\v{j}" ?ǰ)
457 ("\\v{l}" ?$,1 ^(B) 457 ("\\v{l}" ?ľ)
458 ("\\yen" ?,A%(B) 458 ("\\yen" ?¥)
459 459
460 ("\\Box" ?$,2!a(B) 460 ("\\Box" ?)
461 ("\\Bumpeq" ?$,1xn(B) 461 ("\\Bumpeq" ?)
462 ("\\Cap" ?$,1z2(B) 462 ("\\Cap" ?)
463 ("\\Cup" ?$,1z3(B) 463 ("\\Cup" ?)
464 ("\\Delta" ?$,1&t(B) 464 ("\\Delta" ?Δ)
465 ("\\Diamond" ?$,2"'(B) 465 ("\\Diamond" ?)
466 ("\\Downarrow" ?$,1wS(B) 466 ("\\Downarrow" ?)
467 ("\\Gamma" ?$,1&s(B) 467 ("\\Gamma" ?Γ)
468 ("\\H" ?$,1%K(B) 468 ("\\H" ?̋)
469 ("\\H{o}" ?$,1 q(B) 469 ("\\H{o}" ?ő)
470 ("\\Im" ?$,1uQ(B) 470 ("\\Im" ?)
471 ("\\Join" ?$,1z((B) 471 ("\\Join" ?)
472 ("\\Lambda" ?$,1&{(B) 472 ("\\Lambda" ?Λ)
473 ("\\Leftarrow" ?$,1wP(B) 473 ("\\Leftarrow" ?)
474 ("\\Leftrightarrow" ?$,1wT(B) 474 ("\\Leftrightarrow" ?)
475 ("\\Ll" ?$,1z8(B) 475 ("\\Ll" ?)
476 ("\\Lleftarrow" ?$,1wZ(B) 476 ("\\Lleftarrow" ?)
477 ("\\Longleftarrow" ?$,1wP(B) 477 ("\\Longleftarrow" ?)
478 ("\\Longleftrightarrow" ?$,1wT(B) 478 ("\\Longleftrightarrow" ?)
479 ("\\Longrightarrow" ?$,1wR(B) 479 ("\\Longrightarrow" ?)
480 ("\\Lsh" ?$,1w0(B) 480 ("\\Lsh" ?)
481 ("\\Omega" ?$,1')(B) 481 ("\\Omega" ?Ω)
482 ("\\Phi" ?$,1'&(B) 482 ("\\Phi" ?Φ)
483 ("\\Pi" ?$,1' (B) 483 ("\\Pi" ?Π)
484 ("\\Psi" ?$,1'((B) 484 ("\\Psi" ?Ψ)
485 ("\\Re" ?$,1u\(B) 485 ("\\Re" ?)
486 ("\\Rightarrow" ?$,1wR(B) 486 ("\\Rightarrow" ?)
487 ("\\Rrightarrow" ?$,1w[(B) 487 ("\\Rrightarrow" ?)
488 ("\\Rsh" ?$,1w1(B) 488 ("\\Rsh" ?)
489 ("\\Sigma" ?$,1'#(B) 489 ("\\Sigma" ?Σ)
490 ("\\Subset" ?$,1z0(B) 490 ("\\Subset" ?)
491 ("\\Supset" ?$,1z1(B) 491 ("\\Supset" ?)
492 ("\\Theta" ?$,1&x(B) 492 ("\\Theta" ?Θ)
493 ("\\Uparrow" ?$,1wQ(B) 493 ("\\Uparrow" ?)
494 ("\\Updownarrow" ?$,1wU(B) 494 ("\\Updownarrow" ?)
495 ("\\Upsilon" ?$,1'%(B) 495 ("\\Upsilon" ?Υ)
496 ("\\Vdash" ?$,1yi(B) 496 ("\\Vdash" ?)
497 ("\\Vert" ?$,1rv(B) 497 ("\\Vert" ?)
498 ("\\Vvdash" ?$,1yj(B) 498 ("\\Vvdash" ?)
499 ("\\Xi" ?$,1&~(B) 499 ("\\Xi" ?Ξ)
500 ("\\aleph" ?$,1,p(B) 500 ("\\aleph" ?א)
501 ("\\alpha" ?$,1'1(B) 501 ("\\alpha" ?α)
502 ("\\amalg" ?$,1x0(B) 502 ("\\amalg" ?)
503 ("\\angle" ?$,1x@(B) 503 ("\\angle" ?)
504 ("\\approx" ?$,1xh(B) 504 ("\\approx" ?)
505 ("\\approxeq" ?$,1xj(B) 505 ("\\approxeq" ?)
506 ("\\ast" ?$,1x7(B) 506 ("\\ast" ?)
507 ("\\asymp" ?$,1xm(B) 507 ("\\asymp" ?)
508 ("\\backcong" ?$,1xl(B) 508 ("\\backcong" ?)
509 ("\\backepsilon" ?$,1x-(B) 509 ("\\backepsilon" ?)
510 ("\\backprime" ?$,1s5(B) 510 ("\\backprime" ?)
511 ("\\backsim" ?$,1x](B) 511 ("\\backsim" ?)
512 ("\\backsimeq" ?$,1z-(B) 512 ("\\backsimeq" ?)
513 ("\\backslash" ?\\) 513 ("\\backslash" ?\\)
514 ("\\barwedge" ?$,1y|(B) 514 ("\\barwedge" ?)
515 ("\\because" ?$,1xU(B) 515 ("\\because" ?)
516 ("\\beta" ?$,1'2(B) 516 ("\\beta" ?β)
517 ("\\beth" ?$,1,q(B) 517 ("\\beth" ?ב)
518 ("\\between" ?$,1y,(B) 518 ("\\between" ?)
519 ("\\bigcap" ?$,1z"(B) 519 ("\\bigcap" ?)
520 ("\\bigcirc" ?$,2"O(B) 520 ("\\bigcirc" ?)
521 ("\\bigcup" ?$,1z#(B) 521 ("\\bigcup" ?)
522 ("\\bigstar" ?$,2"e(B) 522 ("\\bigstar" ?)
523 ("\\bigtriangledown" ?$,2!}(B) 523 ("\\bigtriangledown" ?)
524 ("\\bigtriangleup" ?$,2!s(B) 524 ("\\bigtriangleup" ?)
525 ("\\bigvee" ?$,1z!(B) 525 ("\\bigvee" ?)
526 ("\\bigwedge" ?$,1z (B) 526 ("\\bigwedge" ?)
527 ("\\blacklozenge" ?$,2%f(B) 527 ("\\blacklozenge" ?)
528 ("\\blacksquare" ?$,2!j(B) 528 ("\\blacksquare" ?)
529 ("\\blacktriangle" ?$,2!t(B) 529 ("\\blacktriangle" ?)
530 ("\\blacktriangledown" ?$,2!~(B) 530 ("\\blacktriangledown" ?)
531 ("\\blacktriangleleft" ?$,2""(B) 531 ("\\blacktriangleleft" ?)
532 ("\\blacktriangleright" ?$,2!x(B) 532 ("\\blacktriangleright" ?)
533 ("\\bot" ?$,1ye(B) 533 ("\\bot" ?)
534 ("\\bowtie" ?$,1z((B) 534 ("\\bowtie" ?)
535 ("\\boxminus" ?$,1y_(B) 535 ("\\boxminus" ?)
536 ("\\boxplus" ?$,1y^(B) 536 ("\\boxplus" ?)
537 ("\\boxtimes" ?$,1y`(B) 537 ("\\boxtimes" ?)
538 ("\\bullet" ?$,1s"(B) 538 ("\\bullet" ?)
539 ("\\bumpeq" ?$,1xo(B) 539 ("\\bumpeq" ?)
540 ("\\cap" ?$,1xI(B) 540 ("\\cap" ?)
541 ("\\cdots" ?$,1zO(B) 541 ("\\cdots" ?)
542 ("\\centerdot" ?,A7(B) 542 ("\\centerdot" ?·)
543 ("\\checkmark" ?$,2%S(B) 543 ("\\checkmark" ?)
544 ("\\chi" ?$,1'G(B) 544 ("\\chi" ?χ)
545 ("\\circ" ?$,2"+(B) 545 ("\\circ" ?)
546 ("\\circeq" ?$,1xw(B) 546 ("\\circeq" ?)
547 ("\\circlearrowleft" ?$,1w:(B) 547 ("\\circlearrowleft" ?)
548 ("\\circlearrowright" ?$,1w;(B) 548 ("\\circlearrowright" ?)
549 ("\\circledR" ?,A.(B) 549 ("\\circledR" ?®)
550 ("\\circledS" ?$,1H(B) 550 ("\\circledS" ?)
551 ("\\circledast" ?$,1y[(B) 551 ("\\circledast" ?)
552 ("\\circledcirc" ?$,1yZ(B) 552 ("\\circledcirc" ?)
553 ("\\circleddash" ?$,1y](B) 553 ("\\circleddash" ?)
554 ("\\clubsuit" ?$,2#c(B) 554 ("\\clubsuit" ?)
555 ("\\colon" ?:) 555 ("\\colon" ?:)
556 ("\\coloneq" ?$,1xt(B) 556 ("\\coloneq" ?)
557 ("\\complement" ?$,1x!(B) 557 ("\\complement" ?)
558 ("\\cong" ?$,1xe(B) 558 ("\\cong" ?)
559 ("\\coprod" ?$,1x0(B) 559 ("\\coprod" ?)
560 ("\\cup" ?$,1xJ(B) 560 ("\\cup" ?)
561 ("\\curlyeqprec" ?$,1z>(B) 561 ("\\curlyeqprec" ?)
562 ("\\curlyeqsucc" ?$,1z?(B) 562 ("\\curlyeqsucc" ?)
563 ("\\curlypreceq" ?$,1y<(B) 563 ("\\curlypreceq" ?)
564 ("\\curlyvee" ?$,1z.(B) 564 ("\\curlyvee" ?)
565 ("\\curlywedge" ?$,1z/(B) 565 ("\\curlywedge" ?)
566 ("\\curvearrowleft" ?$,1w6(B) 566 ("\\curvearrowleft" ?)
567 ("\\curvearrowright" ?$,1w7(B) 567 ("\\curvearrowright" ?)
568 568
569 ("\\dag" ?$,1s (B) 569 ("\\dag" ?)
570 ("\\dagger" ?$,1s (B) 570 ("\\dagger" ?)
571 ("\\daleth" ?$,1,s(B) 571 ("\\daleth" ?ד)
572 ("\\dashv" ?$,1yc(B) 572 ("\\dashv" ?)
573 ("\\ddag" ?$,1s!(B) 573 ("\\ddag" ?)
574 ("\\ddagger" ?$,1s!(B) 574 ("\\ddagger" ?)
575 ("\\ddots" ?$,1zQ(B) 575 ("\\ddots" ?)
576 ("\\delta" ?$,1'4(B) 576 ("\\delta" ?δ)
577 ("\\diamond" ?$,1z$(B) 577 ("\\diamond" ?)
578 ("\\diamondsuit" ?$,2#b(B) 578 ("\\diamondsuit" ?)
579 ("\\digamma" ?$,1'\(B) 579 ("\\digamma" ?Ϝ)
580 ("\\divideontimes" ?$,1z'(B) 580 ("\\divideontimes" ?)
581 ("\\doteq" ?$,1xp(B) 581 ("\\doteq" ?)
582 ("\\doteqdot" ?$,1xq(B) 582 ("\\doteqdot" ?)
583 ("\\dotplus" ?$,1x4(B) 583 ("\\dotplus" ?)
584 ("\\dotsquare" ?$,1ya(B) 584 ("\\dotsquare" ?)
585 ("\\downarrow" ?$,1vs(B) 585 ("\\downarrow" ?)
586 ("\\downdownarrows" ?$,1wJ(B) 586 ("\\downdownarrows" ?)
587 ("\\downleftharpoon" ?$,1wC(B) 587 ("\\downleftharpoon" ?)
588 ("\\downrightharpoon" ?$,1wB(B) 588 ("\\downrightharpoon" ?)
589 ("\\ell" ?$,1uS(B) 589 ("\\ell" ?)
590 ("\\emptyset" ?$,1x%(B) 590 ("\\emptyset" ?)
591 ("\\epsilon" ?$,1'5(B) 591 ("\\epsilon" ?ε)
592 ("\\eqcirc" ?$,1xv(B) 592 ("\\eqcirc" ?)
593 ("\\eqcolon" ?$,1xu(B) 593 ("\\eqcolon" ?)
594 ("\\eqslantgtr" ?$,1z=(B) 594 ("\\eqslantgtr" ?)
595 ("\\eqslantless" ?$,1z<(B) 595 ("\\eqslantless" ?)
596 ("\\equiv" ?$,1y!(B) 596 ("\\equiv" ?)
597 ("\\eta" ?$,1'7(B) 597 ("\\eta" ?η)
598 ("\\euro" ?$,1tL(B) 598 ("\\euro" ?)
599 ("\\exists" ?$,1x#(B) 599 ("\\exists" ?)
600 ("\\fallingdotseq" ?$,1xr(B) 600 ("\\fallingdotseq" ?)
601 ("\\flat" ?$,2#m(B) 601 ("\\flat" ?)
602 ("\\forall" ?$,1x (B) 602 ("\\forall" ?)
603 ("\\frac1" ?$,1v?(B) 603 ("\\frac1" ?)
604 ("\\frac12" ?,A=(B) 604 ("\\frac12" ?½)
605 ("\\frac13" ?$,1v3(B) 605 ("\\frac13" ?)
606 ("\\frac14" ?,A<(B) 606 ("\\frac14" ?¼)
607 ("\\frac15" ?$,1v5(B) 607 ("\\frac15" ?)
608 ("\\frac16" ?$,1v9(B) 608 ("\\frac16" ?)
609 ("\\frac18" ?$,1v;(B) 609 ("\\frac18" ?)
610 ("\\frac23" ?$,1v4(B) 610 ("\\frac23" ?)
611 ("\\frac25" ?$,1v6(B) 611 ("\\frac25" ?)
612 ("\\frac34" ?,A>(B) 612 ("\\frac34" ?¾)
613 ("\\frac35" ?$,1v7(B) 613 ("\\frac35" ?)
614 ("\\frac38" ?$,1v<(B) 614 ("\\frac38" ?)
615 ("\\frac45" ?$,1v8(B) 615 ("\\frac45" ?)
616 ("\\frac56" ?$,1v:(B) 616 ("\\frac56" ?)
617 ("\\frac58" ?$,1v=(B) 617 ("\\frac58" ?)
618 ("\\frac78" ?$,1v>(B) 618 ("\\frac78" ?)
619 ("\\frown" ?$,1{"(B) 619 ("\\frown" ?)
620 ("\\gamma" ?$,1'3(B) 620 ("\\gamma" ?γ)
621 ("\\ge" ?$,1y%(B) 621 ("\\ge" ?)
622 ("\\geq" ?$,1y%(B) 622 ("\\geq" ?)
623 ("\\geqq" ?$,1y'(B) 623 ("\\geqq" ?)
624 ("\\geqslant" ?$,1y%(B) 624 ("\\geqslant" ?)
625 ("\\gets" ?$,1vp(B) 625 ("\\gets" ?)
626 ("\\gg" ?$,1y+(B) 626 ("\\gg" ?)
627 ("\\ggg" ?$,1z9(B) 627 ("\\ggg" ?)
628 ("\\gimel" ?$,1,r(B) 628 ("\\gimel" ?ג)
629 ("\\gnapprox" ?$,1zG(B) 629 ("\\gnapprox" ?)
630 ("\\gneq" ?$,1y)(B) 630 ("\\gneq" ?)
631 ("\\gneqq" ?$,1y)(B) 631 ("\\gneqq" ?)
632 ("\\gnsim" ?$,1zG(B) 632 ("\\gnsim" ?)
633 ("\\gtrapprox" ?$,1y3(B) 633 ("\\gtrapprox" ?)
634 ("\\gtrdot" ?$,1z7(B) 634 ("\\gtrdot" ?)
635 ("\\gtreqless" ?$,1z;(B) 635 ("\\gtreqless" ?)
636 ("\\gtreqqless" ?$,1z;(B) 636 ("\\gtreqqless" ?)
637 ("\\gtrless" ?$,1y7(B) 637 ("\\gtrless" ?)
638 ("\\gtrsim" ?$,1y3(B) 638 ("\\gtrsim" ?)
639 ("\\gvertneqq" ?$,1y)(B) 639 ("\\gvertneqq" ?)
640 ("\\hbar" ?$,1uO(B) 640 ("\\hbar" ?)
641 ("\\heartsuit" ?$,2#e(B) 641 ("\\heartsuit" ?)
642 ("\\hookleftarrow" ?$,1w)(B) 642 ("\\hookleftarrow" ?)
643 ("\\hookrightarrow" ?$,1w*(B) 643 ("\\hookrightarrow" ?)
644 ("\\iff" ?$,1wT(B) 644 ("\\iff" ?)
645 ("\\imath" ?$,1 Q(B) 645 ("\\imath" ?ı)
646 ("\\in" ?$,1x((B) 646 ("\\in" ?)
647 ("\\infty" ?$,1x>(B) 647 ("\\infty" ?)
648 ("\\int" ?$,1xK(B) 648 ("\\int" ?)
649 ("\\intercal" ?$,1yz(B) 649 ("\\intercal" ?)
650 ("\\iota" ?$,1'9(B) 650 ("\\iota" ?ι)
651 ("\\kappa" ?$,1':(B) 651 ("\\kappa" ?κ)
652 ("\\lambda" ?$,1';(B) 652 ("\\lambda" ?λ)
653 ("\\langle" ?$,1{)(B) 653 ("\\langle" ?)
654 ("\\lbrace" ?{) 654 ("\\lbrace" ?{)
655 ("\\lbrack" ?[) 655 ("\\lbrack" ?[)
656 ("\\lceil" ?$,1zh(B) 656 ("\\lceil" ?)
657 ("\\ldots" ?$,1s&(B) 657 ("\\ldots" ?)
658 ("\\le" ?$,1y$(B) 658 ("\\le" ?)
659 ("\\leadsto" ?$,1v}(B) 659 ("\\leadsto" ?)
660 ("\\leftarrow" ?$,1vp(B) 660 ("\\leftarrow" ?)
661 ("\\leftarrowtail" ?$,1w"(B) 661 ("\\leftarrowtail" ?)
662 ("\\leftharpoondown" ?$,1w=(B) 662 ("\\leftharpoondown" ?)
663 ("\\leftharpoonup" ?$,1w<(B) 663 ("\\leftharpoonup" ?)
664 ("\\leftleftarrows" ?$,1wG(B) 664 ("\\leftleftarrows" ?)
665 ("\\leftparengtr" ?$,1{)(B) 665 ("\\leftparengtr" ?)
666 ("\\leftrightarrow" ?$,1vt(B) 666 ("\\leftrightarrow" ?)
667 ("\\leftrightarrows" ?$,1wF(B) 667 ("\\leftrightarrows" ?)
668 ("\\leftrightharpoons" ?$,1wK(B) 668 ("\\leftrightharpoons" ?)
669 ("\\leftrightsquigarrow" ?$,1w-(B) 669 ("\\leftrightsquigarrow" ?)
670 ("\\leftthreetimes" ?$,1z+(B) 670 ("\\leftthreetimes" ?)
671 ("\\leq" ?$,1y$(B) 671 ("\\leq" ?)
672 ("\\leqq" ?$,1y&(B) 672 ("\\leqq" ?)
673 ("\\leqslant" ?$,1y$(B) 673 ("\\leqslant" ?)
674 ("\\lessapprox" ?$,1y2(B) 674 ("\\lessapprox" ?)
675 ("\\lessdot" ?$,1z6(B) 675 ("\\lessdot" ?)
676 ("\\lesseqgtr" ?$,1z:(B) 676 ("\\lesseqgtr" ?)
677 ("\\lesseqqgtr" ?$,1z:(B) 677 ("\\lesseqqgtr" ?)
678 ("\\lessgtr" ?$,1y6(B) 678 ("\\lessgtr" ?)
679 ("\\lesssim" ?$,1y2(B) 679 ("\\lesssim" ?)
680 ("\\lfloor" ?$,1zj(B) 680 ("\\lfloor" ?)
681 ("\\lhd" ?$,2"!(B) 681 ("\\lhd" ?)
682 ("\\rhd" ?$,2!w(B) 682 ("\\rhd" ?)
683 ("\\ll" ?$,1y*(B) 683 ("\\ll" ?)
684 ("\\llcorner" ?$,1z~(B) 684 ("\\llcorner" ?)
685 ("\\lnapprox" ?$,1zF(B) 685 ("\\lnapprox" ?)
686 ("\\lneq" ?$,1y((B) 686 ("\\lneq" ?)
687 ("\\lneqq" ?$,1y((B) 687 ("\\lneqq" ?)
688 ("\\lnsim" ?$,1zF(B) 688 ("\\lnsim" ?)
689 ("\\longleftarrow" ?$,1vp(B) 689 ("\\longleftarrow" ?)
690 ("\\longleftrightarrow" ?$,1vt(B) 690 ("\\longleftrightarrow" ?)
691 ("\\longmapsto" ?$,1w&(B) 691 ("\\longmapsto" ?)
692 ("\\longrightarrow" ?$,1vr(B) 692 ("\\longrightarrow" ?)
693 ("\\looparrowleft" ?$,1w+(B) 693 ("\\looparrowleft" ?)
694 ("\\looparrowright" ?$,1w,(B) 694 ("\\looparrowright" ?)
695 ("\\lozenge" ?$,2%g(B) 695 ("\\lozenge" ?)
696 ("\\lq" ?$,1rx(B) 696 ("\\lq" ?)
697 ("\\lrcorner" ?$,1z(B) 697 ("\\lrcorner" ?)
698 ("\\ltimes" ?$,1z)(B) 698 ("\\ltimes" ?)
699 ("\\lvertneqq" ?$,1y((B) 699 ("\\lvertneqq" ?)
700 ("\\maltese" ?$,2%`(B) 700 ("\\maltese" ?)
701 ("\\mapsto" ?$,1w&(B) 701 ("\\mapsto" ?)
702 ("\\measuredangle" ?$,1xA(B) 702 ("\\measuredangle" ?)
703 ("\\mho" ?$,1ug(B) 703 ("\\mho" ?)
704 ("\\mid" ?$,1xC(B) 704 ("\\mid" ?)
705 ("\\models" ?$,1yg(B) 705 ("\\models" ?)
706 ("\\mp" ?$,1x3(B) 706 ("\\mp" ?)
707 ("\\multimap" ?$,1yx(B) 707 ("\\multimap" ?)
708 ("\\nLeftarrow" ?$,1wM(B) 708 ("\\nLeftarrow" ?)
709 ("\\nLeftrightarrow" ?$,1wN(B) 709 ("\\nLeftrightarrow" ?)
710 ("\\nRightarrow" ?$,1wO(B) 710 ("\\nRightarrow" ?)
711 ("\\nVDash" ?$,1yo(B) 711 ("\\nVDash" ?)
712 ("\\nVdash" ?$,1yn(B) 712 ("\\nVdash" ?)
713 ("\\nabla" ?$,1x'(B) 713 ("\\nabla" ?)
714 ("\\napprox" ?$,1xi(B) 714 ("\\napprox" ?)
715 ("\\natural" ?$,2#n(B) 715 ("\\natural" ?)
716 ("\\ncong" ?$,1xg(B) 716 ("\\ncong" ?)
717 ("\\ne" ?$,1y (B) 717 ("\\ne" ?)
718 ("\\nearrow" ?$,1vw(B) 718 ("\\nearrow" ?)
719 ("\\neg" ?,A,(B) 719 ("\\neg" ?¬)
720 ("\\neq" ?$,1y (B) 720 ("\\neq" ?)
721 ("\\nequiv" ?$,1y"(B) 721 ("\\nequiv" ?)
722 ("\\newline" ?$,1s((B) 722 ("\\newline" ?)
723 ("\\nexists" ?$,1x$(B) 723 ("\\nexists" ?)
724 ("\\ngeq" ?$,1y1(B) 724 ("\\ngeq" ?)
725 ("\\ngeqq" ?$,1y1(B) 725 ("\\ngeqq" ?)
726 ("\\ngeqslant" ?$,1y1(B) 726 ("\\ngeqslant" ?)
727 ("\\ngtr" ?$,1y/(B) 727 ("\\ngtr" ?)
728 ("\\ni" ?$,1x+(B) 728 ("\\ni" ?)
729 ("\\nleftarrow" ?$,1vz(B) 729 ("\\nleftarrow" ?)
730 ("\\nleftrightarrow" ?$,1w.(B) 730 ("\\nleftrightarrow" ?)
731 ("\\nleq" ?$,1y0(B) 731 ("\\nleq" ?)
732 ("\\nleqq" ?$,1y0(B) 732 ("\\nleqq" ?)
733 ("\\nleqslant" ?$,1y0(B) 733 ("\\nleqslant" ?)
734 ("\\nless" ?$,1y.(B) 734 ("\\nless" ?)
735 ("\\nmid" ?$,1xD(B) 735 ("\\nmid" ?)
736 ("\\not" ?$,1%x(B) 736 ("\\not" ?̸)
737 ("\\notin" ?$,1x)(B) 737 ("\\notin" ?)
738 ("\\nparallel" ?$,1xF(B) 738 ("\\nparallel" ?)
739 ("\\nprec" ?$,1y@(B) 739 ("\\nprec" ?)
740 ("\\npreceq" ?$,1z@(B) 740 ("\\npreceq" ?)
741 ("\\nrightarrow" ?$,1v{(B) 741 ("\\nrightarrow" ?)
742 ("\\nshortmid" ?$,1xD(B) 742 ("\\nshortmid" ?)
743 ("\\nshortparallel" ?$,1xF(B) 743 ("\\nshortparallel" ?)
744 ("\\nsim" ?$,1xa(B) 744 ("\\nsim" ?)
745 ("\\nsimeq" ?$,1xd(B) 745 ("\\nsimeq" ?)
746 ("\\nsubset" ?$,1yD(B) 746 ("\\nsubset" ?)
747 ("\\nsubseteq" ?$,1yH(B) 747 ("\\nsubseteq" ?)
748 ("\\nsubseteqq" ?$,1yH(B) 748 ("\\nsubseteqq" ?)
749 ("\\nsucc" ?$,1yA(B) 749 ("\\nsucc" ?)
750 ("\\nsucceq" ?$,1zA(B) 750 ("\\nsucceq" ?)
751 ("\\nsupset" ?$,1yE(B) 751 ("\\nsupset" ?)
752 ("\\nsupseteq" ?$,1yI(B) 752 ("\\nsupseteq" ?)
753 ("\\nsupseteqq" ?$,1yI(B) 753 ("\\nsupseteqq" ?)
754 ("\\ntriangleleft" ?$,1zJ(B) 754 ("\\ntriangleleft" ?)
755 ("\\ntrianglelefteq" ?$,1zL(B) 755 ("\\ntrianglelefteq" ?)
756 ("\\ntriangleright" ?$,1zK(B) 756 ("\\ntriangleright" ?)
757 ("\\ntrianglerighteq" ?$,1zM(B) 757 ("\\ntrianglerighteq" ?)
758 ("\\nu" ?$,1'=(B) 758 ("\\nu" ?ν)
759 ("\\nvDash" ?$,1ym(B) 759 ("\\nvDash" ?)
760 ("\\nvdash" ?$,1yl(B) 760 ("\\nvdash" ?)
761 ("\\nwarrow" ?$,1vv(B) 761 ("\\nwarrow" ?)
762 ("\\odot" ?$,1yY(B) 762 ("\\odot" ?)
763 ("\\oint" ?$,1xN(B) 763 ("\\oint" ?)
764 ("\\omega" ?$,1'I(B) 764 ("\\omega" ?ω)
765 ("\\ominus" ?$,1yV(B) 765 ("\\ominus" ?)
766 ("\\oplus" ?$,1yU(B) 766 ("\\oplus" ?)
767 ("\\oslash" ?$,1yX(B) 767 ("\\oslash" ?)
768 ("\\otimes" ?$,1yW(B) 768 ("\\otimes" ?)
769 ("\\par" ?$,1s)(B) 769 ("\\par" ?)
770 ("\\parallel" ?$,1xE(B) 770 ("\\parallel" ?)
771 ("\\partial" ?$,1x"(B) 771 ("\\partial" ?)
772 ("\\perp" ?$,1ye(B) 772 ("\\perp" ?)
773 ("\\phi" ?$,1'F(B) 773 ("\\phi" ?φ)
774 ("\\pi" ?$,1'@(B) 774 ("\\pi" ?π)
775 ("\\pitchfork" ?$,1z4(B) 775 ("\\pitchfork" ?)
776 ("\\prec" ?$,1y:(B) 776 ("\\prec" ?)
777 ("\\precapprox" ?$,1y>(B) 777 ("\\precapprox" ?)
778 ("\\preceq" ?$,1y<(B) 778 ("\\preceq" ?)
779 ("\\precnapprox" ?$,1zH(B) 779 ("\\precnapprox" ?)
780 ("\\precnsim" ?$,1zH(B) 780 ("\\precnsim" ?)
781 ("\\precsim" ?$,1y>(B) 781 ("\\precsim" ?)
782 ("\\prime" ?$,1s2(B) 782 ("\\prime" ?)
783 ("\\prod" ?$,1x/(B) 783 ("\\prod" ?)
784 ("\\propto" ?$,1x=(B) 784 ("\\propto" ?)
785 ("\\psi" ?$,1'H(B) 785 ("\\psi" ?ψ)
786 ("\\quad" ?$,1ra(B) 786 ("\\quad" ?)
787 ("\\rangle" ?$,1{*(B) 787 ("\\rangle" ?)
788 ("\\rbrace" ?}) 788 ("\\rbrace" ?})
789 ("\\rbrack" ?]) 789 ("\\rbrack" ?])
790 ("\\rceil" ?$,1zi(B) 790 ("\\rceil" ?)
791 ("\\rfloor" ?$,1zk(B) 791 ("\\rfloor" ?)
792 ("\\rightarrow" ?$,1vr(B) 792 ("\\rightarrow" ?)
793 ("\\rightarrowtail" ?$,1w#(B) 793 ("\\rightarrowtail" ?)
794 ("\\rightharpoondown" ?$,1wA(B) 794 ("\\rightharpoondown" ?)
795 ("\\rightharpoonup" ?$,1w@(B) 795 ("\\rightharpoonup" ?)
796 ("\\rightleftarrows" ?$,1wD(B) 796 ("\\rightleftarrows" ?)
797 ("\\rightleftharpoons" ?$,1wL(B) 797 ("\\rightleftharpoons" ?)
798 ("\\rightparengtr" ?$,1{*(B) 798 ("\\rightparengtr" ?)
799 ("\\rightrightarrows" ?$,1wI(B) 799 ("\\rightrightarrows" ?)
800 ("\\rightthreetimes" ?$,1z,(B) 800 ("\\rightthreetimes" ?)
801 ("\\risingdotseq" ?$,1xs(B) 801 ("\\risingdotseq" ?)
802 ("\\rtimes" ?$,1z*(B) 802 ("\\rtimes" ?)
803 ("\\sbs" ?$,3q((B) 803 ("\\sbs" ?)
804 ("\\searrow" ?$,1vx(B) 804 ("\\searrow" ?)
805 ("\\setminus" ?$,1x6(B) 805 ("\\setminus" ?)
806 ("\\sharp" ?$,2#o(B) 806 ("\\sharp" ?)
807 ("\\shortmid" ?$,1xC(B) 807 ("\\shortmid" ?)
808 ("\\shortparallel" ?$,1xE(B) 808 ("\\shortparallel" ?)
809 ("\\sigma" ?$,1'C(B) 809 ("\\sigma" ?σ)
810 ("\\sim" ?$,1x\(B) 810 ("\\sim" ?)
811 ("\\simeq" ?$,1xc(B) 811 ("\\simeq" ?)
812 ("\\smallamalg" ?$,1x0(B) 812 ("\\smallamalg" ?)
813 ("\\smallsetminus" ?$,1x6(B) 813 ("\\smallsetminus" ?)
814 ("\\smallsmile" ?$,1{#(B) 814 ("\\smallsmile" ?)
815 ("\\smile" ?$,1{#(B) 815 ("\\smile" ?)
816 ("\\spadesuit" ?$,2#`(B) 816 ("\\spadesuit" ?)
817 ("\\sphericalangle" ?$,1xB(B) 817 ("\\sphericalangle" ?)
818 ("\\sqcap" ?$,1yS(B) 818 ("\\sqcap" ?)
819 ("\\sqcup" ?$,1yT(B) 819 ("\\sqcup" ?)
820 ("\\sqsubset" ?$,1yO(B) 820 ("\\sqsubset" ?)
821 ("\\sqsubseteq" ?$,1yQ(B) 821 ("\\sqsubseteq" ?)
822 ("\\sqsupset" ?$,1yP(B) 822 ("\\sqsupset" ?)
823 ("\\sqsupseteq" ?$,1yR(B) 823 ("\\sqsupseteq" ?)
824 ("\\square" ?$,2!a(B) 824 ("\\square" ?)
825 ("\\squigarrowright" ?$,1w](B) 825 ("\\squigarrowright" ?)
826 ("\\star" ?$,1z&(B) 826 ("\\star" ?)
827 ("\\straightphi" ?$,1'F(B) 827 ("\\straightphi" ?φ)
828 ("\\subset" ?$,1yB(B) 828 ("\\subset" ?)
829 ("\\subseteq" ?$,1yF(B) 829 ("\\subseteq" ?)
830 ("\\subseteqq" ?$,1yF(B) 830 ("\\subseteqq" ?)
831 ("\\subsetneq" ?$,1yJ(B) 831 ("\\subsetneq" ?)
832 ("\\subsetneqq" ?$,1yJ(B) 832 ("\\subsetneqq" ?)
833 ("\\succ" ?$,1y;(B) 833 ("\\succ" ?)
834 ("\\succapprox" ?$,1y?(B) 834 ("\\succapprox" ?)
835 ("\\succcurlyeq" ?$,1y=(B) 835 ("\\succcurlyeq" ?)
836 ("\\succeq" ?$,1y=(B) 836 ("\\succeq" ?)
837 ("\\succnapprox" ?$,1zI(B) 837 ("\\succnapprox" ?)
838 ("\\succnsim" ?$,1zI(B) 838 ("\\succnsim" ?)
839 ("\\succsim" ?$,1y?(B) 839 ("\\succsim" ?)
840 ("\\sum" ?$,1x1(B) 840 ("\\sum" ?)
841 ("\\supset" ?$,1yC(B) 841 ("\\supset" ?)
842 ("\\supseteq" ?$,1yG(B) 842 ("\\supseteq" ?)
843 ("\\supseteqq" ?$,1yG(B) 843 ("\\supseteqq" ?)
844 ("\\supsetneq" ?$,1yK(B) 844 ("\\supsetneq" ?)
845 ("\\supsetneqq" ?$,1yK(B) 845 ("\\supsetneqq" ?)
846 ("\\surd" ?$,1x:(B) 846 ("\\surd" ?)
847 ("\\swarrow" ?$,1vy(B) 847 ("\\swarrow" ?)
848 ("\\tau" ?$,1'D(B) 848 ("\\tau" ?τ)
849 ("\\therefore" ?$,1xT(B) 849 ("\\therefore" ?)
850 ("\\theta" ?$,1'8(B) 850 ("\\theta" ?θ)
851 ("\\thickapprox" ?$,1xh(B) 851 ("\\thickapprox" ?)
852 ("\\thicksim" ?$,1x\(B) 852 ("\\thicksim" ?)
853 ("\\to" ?$,1vr(B) 853 ("\\to" ?)
854 ("\\top" ?$,1yd(B) 854 ("\\top" ?)
855 ("\\triangle" ?$,2!u(B) 855 ("\\triangle" ?)
856 ("\\triangledown" ?$,2!(B) 856 ("\\triangledown" ?)
857 ("\\triangleleft" ?$,2"#(B) 857 ("\\triangleleft" ?)
858 ("\\trianglelefteq" ?$,1yt(B) 858 ("\\trianglelefteq" ?)
859 ("\\triangleq" ?$,1x|(B) 859 ("\\triangleq" ?)
860 ("\\triangleright" ?$,2!y(B) 860 ("\\triangleright" ?)
861 ("\\trianglerighteq" ?$,1yu(B) 861 ("\\trianglerighteq" ?)
862 ("\\twoheadleftarrow" ?$,1v~(B) 862 ("\\twoheadleftarrow" ?)
863 ("\\twoheadrightarrow" ?$,1w (B) 863 ("\\twoheadrightarrow" ?)
864 ("\\ulcorner" ?$,1z|(B) 864 ("\\ulcorner" ?)
865 ("\\uparrow" ?$,1vq(B) 865 ("\\uparrow" ?)
866 ("\\updownarrow" ?$,1vu(B) 866 ("\\updownarrow" ?)
867 ("\\upleftharpoon" ?$,1w?(B) 867 ("\\upleftharpoon" ?)
868 ("\\uplus" ?$,1yN(B) 868 ("\\uplus" ?)
869 ("\\uprightharpoon" ?$,1w>(B) 869 ("\\uprightharpoon" ?)
870 ("\\upsilon" ?$,1'E(B) 870 ("\\upsilon" ?υ)
871 ("\\upuparrows" ?$,1wH(B) 871 ("\\upuparrows" ?)
872 ("\\urcorner" ?$,1z}(B) 872 ("\\urcorner" ?)
873 ("\\u{i}" ?$,1 M(B) 873 ("\\u{i}" ?ĭ)
874 ("\\vDash" ?$,1yh(B) 874 ("\\vDash" ?)
875 ("\\varkappa" ?$,1'p(B) 875 ("\\varkappa" ?ϰ)
876 ("\\varphi" ?$,1'U(B) 876 ("\\varphi" ?ϕ)
877 ("\\varpi" ?$,1'V(B) 877 ("\\varpi" ?ϖ)
878 ("\\varprime" ?$,1s2(B) 878 ("\\varprime" ?)
879 ("\\varpropto" ?$,1x=(B) 879 ("\\varpropto" ?)
880 ("\\varrho" ?$,1'q(B) 880 ("\\varrho" ?ϱ)
881 ("\\varsigma" ?$,1'B(B) 881 ("\\varsigma" ?ς)
882 ("\\vartheta" ?$,1'Q(B) 882 ("\\vartheta" ?ϑ)
883 ("\\vartriangleleft" ?$,1yr(B) 883 ("\\vartriangleleft" ?)
884 ("\\vartriangleright" ?$,1ys(B) 884 ("\\vartriangleright" ?)
885 ("\\vdash" ?$,1yb(B) 885 ("\\vdash" ?)
886 ("\\vdots" ?$,1zN(B) 886 ("\\vdots" ?)
887 ("\\vee" ?$,1xH(B) 887 ("\\vee" ?)
888 ("\\veebar" ?$,1y{(B) 888 ("\\veebar" ?)
889 ("\\vert" ?|) 889 ("\\vert" ?|)
890 ("\\wedge" ?$,1xG(B) 890 ("\\wedge" ?)
891 ("\\wp" ?$,1uX(B) 891 ("\\wp" ?)
892 ("\\wr" ?$,1x`(B) 892 ("\\wr" ?)
893 ("\\xi" ?$,1'>(B) 893 ("\\xi" ?ξ)
894 ("\\zeta" ?$,1'6(B) 894 ("\\zeta" ?ζ)
895 895
896 ("\\Bbb{N}" ?$,1uU(B) ; AMS commands for blackboard bold 896 ("\\Bbb{N}" ?) ; AMS commands for blackboard bold
897 ("\\Bbb{P}" ?$,1uY(B) ; Also sometimes \mathbb. 897 ("\\Bbb{P}" ?) ; Also sometimes \mathbb.
898 ("\\Bbb{R}" ?$,1u](B) 898 ("\\Bbb{R}" ?)
899 ("\\Bbb{Z}" ?$,1ud(B) 899 ("\\Bbb{Z}" ?)
900 ("--" ?$,1rs(B) 900 ("--" ?)
901 ("---" ?$,1rt(B) 901 ("---" ?)
902 ("~" ?,A (B) ; nbsp 902 ("~" ? ) ; nbsp
903 ("\\mu" ?$,1'<(B) 903 ("\\mu" ?μ)
904 ("\\rho" ?$,1'A(B) 904 ("\\rho" ?ρ)
905 ("\\mathscr{I}" ?$,1uP(B) ; moment of inertia 905 ("\\mathscr{I}" ?) ; moment of inertia
906 ("\\Smiley" ?$,2#:(B) 906 ("\\Smiley" ?)
907 ("\\blacksmiley" ?$,2#;(B) 907 ("\\blacksmiley" ?)
908 ("\\Frowny" ?$,2#9(B) 908 ("\\Frowny" ?)
909 ("\\Letter" ?$,2%I(B) 909 ("\\Letter" ?)
910 ("\\permil" ?$,1s0(B) 910 ("\\permil" ?)
911;;; Probably not useful enough: 911;;; Probably not useful enough:
912;;; ("\\Telefon" ?$,2"n(B) ; there are other possibilities 912;;; ("\\Telefon" ?) ; there are other possibilities
913;;; ("\\Radioactivity" ?$,2#"(B) 913;;; ("\\Radioactivity" ?)
914;;; ("\Biohazard" ?$,2##(B) 914;;; ("\Biohazard" ?)
915;;; ("\\Male" ?$,2#B(B) 915;;; ("\\Male" ?)
916;;; ("\\Female" ?$,2#@(B) 916;;; ("\\Female" ?)
917;;; ("\\Lightning" ?$,2"g(B) 917;;; ("\\Lightning" ?)
918;;; ("\\Mercury" ?$,2#?(B) 918;;; ("\\Mercury" ?)
919;;; ("\\Earth" ?$,2#A(B) 919;;; ("\\Earth" ?)
920;;; ("\\Jupiter" ?$,2#C(B) 920;;; ("\\Jupiter" ?)
921;;; ("\\Saturn" ?$,2#D(B) 921;;; ("\\Saturn" ?)
922;;; ("\\Uranus" ?$,2#E(B) 922;;; ("\\Uranus" ?)
923;;; ("\\Neptune" ?$,2#F(B) 923;;; ("\\Neptune" ?)
924;;; ("\\Pluto" ?$,2#G(B) 924;;; ("\\Pluto" ?)
925;;; ("\\Sun" ?$,2"i(B) 925;;; ("\\Sun" ?)
926;;; ("\\Writinghand" ?$,2%M(B) 926;;; ("\\Writinghand" ?)
927;;; ("\\\\Yinyang" ?$,2#/(B) 927;;; ("\\\\Yinyang" ?)
928;;; ("\\Heart" ?$,2#a(B) 928;;; ("\\Heart" ?)
929 ("\\registered" ?,A.(B) 929 ("\\registered" ?®)
930 ("\\currency" ?,A$(B) 930 ("\\currency" ?¤)
931 ("\\dh" ?,Ap(B) 931 ("\\dh" ?ð)
932 ("\\DH" ?,AP(B) 932 ("\\DH" ?Ð)
933 ("\\th" ?,A~(B) 933 ("\\th" ?þ)
934 ("\\TH" ?,A^(B) 934 ("\\TH" ?Þ)
935 ("\\micro" ?,A5(B) 935 ("\\micro" ?µ)
936 ("\\lnot" ?,A,(B) 936 ("\\lnot" ?¬)
937 ("\\ordfeminine" ?,A*(B) 937 ("\\ordfeminine" ?ª)
938 ("\\ordmasculine" ?,A:(B) 938 ("\\ordmasculine" ?º)
939 ("\\lambdabar" ?$,1![(B) 939 ("\\lambdabar" ?ƛ)
940 ("\\celsius" ?$,1uC(B) 940 ("\\celsius" ?)
941 ;; by analogy with lq, rq: 941 ;; by analogy with lq, rq:
942 ("\\ldq" ?\$,1r|(B) 942 ("\\ldq" ?\“)
943 ("\\rdq" ?\$,1r}(B) 943 ("\\rdq" ?\”)
944 ("\\minus" ?$,1x2(B) 944 ("\\minus" ?−)
945 ("\\defs" ?$,1xy(B) ; per fuzz/zed 945 ("\\defs" ?≙) ; per fuzz/zed
946;; ("\\sqrt[3]" ?$,1x;(B) 946;; ("\\sqrt[3]" ?∛)
947 ("\\llbracket" ?\$,2=Z(B) ; stmaryrd 947 ("\\llbracket" ?\〚) ; stmaryrd
948 ("\\rrbracket" ?\$,2=[(B) 948 ("\\rrbracket" ?\〛)
949;; ("\\lbag" ?\$,2=Z(B) ; fuzz 949;; ("\\lbag" ?\〚) ; fuzz
950;; ("\\rbag" ?\$,2=[(B) 950;; ("\\rbag" ?\〛)
951 ("\\ldata" ?\$,2=J(B) ; fuzz/zed 951 ("\\ldata" ?\《) ; fuzz/zed
952 ("\\rdata" ?\$,2=K(B) 952 ("\\rdata" ?\》)
953 ;; From Karl Eichwalder.
954 ("\\glq" ?‚)
955 ("\\grq" ?‘)
956 ("\\glqq" ?„) ("\"`" ?„)
957 ("\\grqq" ?“) ("\"'" ?“)
958 ("\\flq" ?‹)
959 ("\\frq" ?›)
960 ("\\flqq" ?«) ("\"<" ?«)
961 ("\\frqq" ?») ("\">" ?»)
953 ) 962 )
954 963
955;;; arch-tag: 3daae613-2c53-446e-a0a1-ee2e1ebed15f 964;; arch-tag: 3daae613-2c53-446e-a0a1-ee2e1ebed15f
956;;; latin-ltx.el ends here 965;;; latin-ltx.el ends here
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index e2fcc6cc939..b280abc4111 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,3 +1,7 @@
12004-05-03 Jason Rumney <jasonr@gnu.org>
2
3 * makefile.nt: Remove.
4
12004-04-26 Eli Zaretskii <eliz@gnu.org> 52004-04-26 Eli Zaretskii <eliz@gnu.org>
2 6
3 * make-docfile.c (IS_DIRECTORY_SEP): New macro. 7 * make-docfile.c (IS_DIRECTORY_SEP): New macro.
diff --git a/lib-src/makefile.nt b/lib-src/makefile.nt
deleted file mode 100644
index 29282eea45d..00000000000
--- a/lib-src/makefile.nt
+++ /dev/null
@@ -1,417 +0,0 @@
1# Makefile for GNU Emacs lib-src directory.
2# Geoff Voelker (voelker@cs.washington.edu)
3# Copyright (C) 1994 Free Software Foundation, Inc.
4#
5# This file is part of GNU Emacs.
6#
7# GNU Emacs is free software; you can redistribute it and/or modify
8# it under the terms of the GNU General Public License as published by
9# the Free Software Foundation; either version 2, or (at your option)
10# any later version.
11#
12# GNU Emacs is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with GNU Emacs; see the file COPYING. If not, write to the
19# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20# Boston, MA 02111-1307, USA.
21#
22
23#
24# Sets up the system dependent macros.
25#
26!include ..\nt\makefile.def
27
28LOCAL_FLAGS = -DWINDOWSNT -DDOS_NT -DSTDC_HEADERS=1 -DNO_LDAV=1 \
29 -DNO_ARCHIVES=1 -DHAVE_CONFIG_H=1 -I..\nt\inc -I..\src
30
31LINK_FLAGS = $(ARCH_LDFLAGS) -debug:PARTIAL -machine:$(ARCH) -subsystem:console -entry:mainCRTStartup setargv.obj
32
33ALL = $(BLD)\make-docfile.exe \
34 $(BLD)\hexl.exe \
35 $(BLD)\ctags.exe \
36 $(BLD)\etags.exe \
37 $(BLD)\ebrowse.exe \
38 $(BLD)\movemail.exe
39
40
41# don't know what (if) to do with these yet...
42#
43# $(BLD)\sorted-doc.exe \
44# $(BLD)\env.exe \
45# $(BLD)\server.exe \
46# $(BLD)\emacstool.exe \
47# $(BLD)\leditcfns.exe \
48# $(BLD)\emacsclient.exe \
49# $(BLD)\cvtmail.exe \
50# $(BLD)\digest-doc.exe \
51# $(BLD)\test-distrib.exe \
52
53
54LIBS = $(BASE_LIBS)
55
56$(BLD)\make-docfile.exe: $(BLD)\make-docfile.obj $(BLD)\ntlib.obj
57 $(LINK) -out:$@ $(LINK_FLAGS) $(BLD)\make-docfile.obj $(BLD)\ntlib.obj $(LIBS)
58$(BLD)\hexl.exe: $(BLD)\hexl.obj
59$(BLD)\fakemail.exe: $(BLD)\fakemail.obj $(BLD)\ntlib.obj
60 $(LINK) -out:$@ $(LINK_FLAGS) -debug:full $(BLD)\fakemail.obj $(BLD)\ntlib.obj $(LIBS)
61
62make-docfile: $(BLD) $(BLD)\make-docfile.exe
63etags: $(BLD) $(BLD)\etags.exe
64ebrowse: $(BLD) $(BLD)\ebrowse.exe
65hexl: $(BLD) $(BLD)\hexl.exe
66movemail: $(BLD) $(BLD)\movemail.exe
67fakemail: $(BLD) $(BLD)\fakemail.exe
68
69GETOPTOBJS = $(BLD)\getopt.obj $(BLD)\getopt1.obj
70GETOPTDEPS = $(GETOPTOBJS) getopt.h
71MOVEMAILOBJS = $(BLD)\movemail.obj \
72 $(BLD)\pop.obj \
73 $(BLD)\ntlib.obj \
74 $(GETOPTOBJS)
75
76$(BLD)\movemail.exe: $(MOVEMAILOBJS) getopt.h
77# put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib
78 $(LINK) -out:$@ $(LINK_FLAGS) -debug:FULL $(MOVEMAILOBJS) wsock32.lib $(LIBS)
79
80ETAGSOBJ = $(BLD)\etags.obj \
81 $(BLD)\getopt.obj \
82 $(BLD)\getopt1.obj \
83 $(BLD)\ntlib.obj \
84 $(BLD)\regex.obj
85
86
87$(BLD)\etags.exe: $(ETAGSOBJ)
88 $(LINK) -out:$@ $(LINK_FLAGS) $(ETAGSOBJ) $(LIBS)
89
90
91$(BLD)\regex.obj: ../src/regex.c ../src/regex.h ../src/config.h
92 $(CC) $(CFLAGS) -DCONFIG_BROKETS -DINHIBIT_STRING_HEADER \
93 ../src/regex.c -Fo$@
94
95ETAGS_CFLAGS = -DETAGS_REGEXPS -DHAVE_GETCWD
96$(BLD)\etags.obj: etags.c
97 $(CC) $(CFLAGS) $(ETAGS_CFLAGS) -Fo$@ etags.c
98
99CTAGSOBJ = $(BLD)\ctags.obj \
100 $(BLD)\getopt.obj \
101 $(BLD)\getopt1.obj \
102 $(BLD)\ntlib.obj \
103 $(BLD)\regex.obj
104
105$(BLD)\ctags.exe: ctags.c $(CTAGSOBJ)
106 $(LINK) -out:$@ $(LINK_FLAGS) $(CTAGSOBJ) $(LIBS)
107
108ctags.c: etags.c
109 - $(DEL) ctags.c
110 copy etags.c ctags.c
111
112CTAGS_CFLAGS = -DCTAGS $(ETAGS_CFLAGS)
113$(BLD)\ctags.obj: ctags.c
114 $(CC) $(CFLAGS) $(CTAGS_CFLAGS) -Fo$@ ctags.c
115
116EBROWSE_OBJ = $(BLD)\ebrowse.obj \
117 $(BLD)\getopt.obj \
118 $(BLD)\getopt1.obj \
119 $(BLD)\ntlib.obj
120
121$(BLD)\ebrowse.exe: $(EBROWSE_OBJ)
122 $(LINK) -out:$@ $(LINK_FLAGS) $(EBROWSE_OBJ) $(LIBS)
123
124$(BLD)\ebrowse.obj: ebrowse.c ..\src\config.h
125 $(CC) $(CFLAGS) -DVERSION=\"$(VERSION)\" -Fo$@ ebrowse.c
126#
127# don't know what to do with these yet...
128#
129# $(BLD)\sorted-doc.exe: $(BLD)\sorted-doc.obj
130# $(BLD)\yow.exe: $(BLD)\yow.obj
131# $(BLD)\emacstool.exe: $(BLD)\emacstool.obj
132# $(BLD)\leditcfns.exe: $(BLD)\leditcfns.obj
133# $(BLD)\server.exe: $(BLD)\server.obj
134# $(BLD)\cvtmail.exe: $(BLD)\cvtmail.obj
135# $(BLD)\digest-doc.exe: $(BLD)\digest-doc.obj
136# $(BLD)\emacsclient.exe: $(BLD)\emacsclient.obj
137# $(BLD)\test-distrib.exe: $(BLD)\test-distrib.obj
138
139#
140# From ..\src\makefile.nt.
141#
142obj = abbrev.c alloc.c alloca.c buffer.c bytecode.c callint.c callproc.c casefiddle.c cm.c cmds.c charset.c coding.c category.c ccl.c data.c dired.c dispnew.c doc.c doprnt.c editfns.c emacs.c eval.c fileio.c filelock.c filemode.c fns.c fontset.c indent.c insdel.c keyboard.c keymap.c lastfile.c lread.c macros.c marker.c minibuf.c xfaces.c print.c process.c regex.c scroll.c search.c syntax.c sysdep.c term.c termcap.c tparam.c undo.c unexw32.c window.c xdisp.c casetab.c floatfns.c frame.c gmalloc.c intervals.c ralloc.c textprop.c vm-limit.c region-cache.c strftime.c w32.c w32console.c w32faces.c w32fns.c w32heap.c w32inevt.c w32proc.c w32reg.c w32menu.c w32select.c w32term.c w32xfns.c
143
144#
145# These are the lisp files that are loaded up in loadup.el
146#
147lispsource = ../lisp/
148
149FACE_SUPPORT = $(lispsource)facemenu.elc
150MOUSE_SUPPORT = $(lispsource)select.elc $(lispsource)scroll-bar.elc $(lispsource)mouse.elc
151FLOAT_SUPPORT = $(lispsource)float-sup.elc
152WINNT_SUPPORT = $(lispsource)ls-lisp.elc $(lispsource)w32-fns.elc $(lispsource)dos-w32.elc
153
154lisp= \
155 $(lispsource)abbrev.elc \
156 $(lispsource)buff-menu.elc \
157 $(lispsource)byte-run.elc \
158 $(lispsource)cus-start.el \
159 $(lispsource)custom.elc \
160 $(lispsource)disp-table.elc \
161 $(lispsource)faces.elc \
162 $(lispsource)files.elc \
163 $(lispsource)textmodes/fill.elc \
164 $(lispsource)format.elc \
165 $(FACE_SUPPORT) \
166 $(MOUSE_SUPPORT) \
167 $(FLOAT_SUPPORT) \
168 $(lispsource)frame.elc\
169 $(X_WINDOWS_SUPPORT) \
170 $(lispsource)help.elc \
171 $(lispsource)indent.elc \
172 $(lispsource)isearch.elc \
173 $(lispsource)emacs-lisp/lisp-mode.elc \
174 $(lispsource)emacs-lisp/lisp.elc \
175 $(lispsource)loadup.el \
176 $(lispsource)loaddefs.el \
177 $(lispsource)bindings.el \
178 $(lispsource)map-ynp.elc \
179 $(lispsource)menu-bar.elc \
180 $(lispsource)international/mule.elc \
181 $(lispsource)international/mule-conf.el \
182 $(lispsource)international/mule-cmds.elc \
183 $(lispsource)international/characters.elc \
184 $(lispsource)international/ccl.elc \
185 $(lispsource)international/codepage.elc \
186 $(lispsource)international/utf-8.elc \
187 $(lispsource)case-table.elc \
188 $(lispsource)language/chinese.elc \
189 $(lispsource)language/cyrillic.elc \
190 $(lispsource)language/devanagari.elc \
191 $(lispsource)language/english.elc \
192 $(lispsource)language/ethiopic.elc \
193 $(lispsource)language/european.elc \
194 $(lispsource)language/czech.elc \
195 $(lispsource)language/slovak.elc \
196 $(lispsource)language/romanian.elc \
197 $(lispsource)language/greek.elc \
198 $(lispsource)language/hebrew.elc \
199 $(lispsource)language/indian.elc \
200 $(lispsource)language/japanese.elc \
201 $(lispsource)language/korean.elc \
202 $(lispsource)language/lao.elc \
203 $(lispsource)language/thai.elc \
204 $(lispsource)language/tibetan.elc \
205 $(lispsource)language/vietnamese.elc \
206 $(lispsource)language/misc-lang.elc \
207 $(lispsource)textmodes/page.elc \
208 $(lispsource)textmodes/paragraphs.elc \
209 $(lispsource)paths.el \
210 $(lispsource)register.elc \
211 $(lispsource)replace.elc \
212 $(lispsource)simple.elc \
213 $(lispsource)startup.elc \
214 $(lispsource)subr.elc \
215 $(lispsource)term/tty-colors.elc \
216 $(lispsource)textmodes/text-mode.elc \
217 $(lispsource)vc-hooks.elc \
218 $(lispsource)ediff-hook.elc \
219 $(VMS_SUPPORT) \
220 $(MSDOS_SUPPORT) \
221 $(WINNT_SUPPORT) \
222 $(lispsource)widget.elc \
223 $(lispsource)window.elc \
224 $(lispsource)version.el
225
226
227DOC = DOC
228$(DOC): $(BLD)\make-docfile.exe
229 - $(DEL) $(DOC)
230 $(BLD)\make-docfile -d ..\src $(obj) > $(DOC)
231 $(BLD)\make-docfile -d ..\src $(lisp) >> $(DOC)
232 $(CP) $(DOC) ..\etc\DOC-X
233 - mkdir ..\src\$(OBJDIR)
234 - mkdir ..\src\$(OBJDIR)\etc
235 $(CP) $(DOC) ..\src\$(OBJDIR)\etc\DOC-X
236
237{$(BLD)}.obj{$(BLD)}.exe:
238 $(LINK) -out:$@ $(LINK_FLAGS) $*.obj $(LIBS)
239
240#
241# Build the executables
242#
243all: $(BLD) $(ALL) $(DOC)
244
245#
246# Assuming INSTALL_DIR is defined, build and install emacs in it.
247#
248INSTALL_FILES = $(ALL)
249install: $(INSTALL_FILES)
250 - mkdir $(INSTALL_DIR)\bin
251 $(CP) $(BLD)\etags.exe $(INSTALL_DIR)\bin
252 $(CP) $(BLD)\ctags.exe $(INSTALL_DIR)\bin
253 $(CP) $(BLD)\hexl.exe $(INSTALL_DIR)\bin
254 $(CP) $(BLD)\movemail.exe $(INSTALL_DIR)\bin
255 - mkdir $(INSTALL_DIR)\etc
256 $(CP) $(DOC) $(INSTALL_DIR)\etc
257
258# Don't install fakemail by default, as it sends mail into a
259# blackhole if /bin/mail is not installed.
260# $(CP) $(BLD)\fakemail.exe $(INSTALL_DIR)\bin
261
262#
263# Maintenance
264#
265clean:; - $(DEL) *~ *.pdb DOC*
266 - $(DEL) *.orig *.rej *.crlf ctags.c
267 - $(DEL_TREE) deleted
268 - $(DEL_TREE) obj
269 - $(DEL_TREE) obj-spd
270
271#
272# Headers we would preprocess if we could.
273#
274..\src\config.h: ..\nt\$(CONFIG_H)
275 $(CP) $** $@
276..\src\paths.h: ..\nt\paths.h
277 $(CP) $** $@
278
279### DEPENDENCIES ###
280
281EMACS_ROOT = ..
282SRC = .
283
284$(BLD)\b2m.obj : \
285 $(SRC)\b2m.c \
286 $(EMACS_ROOT)\src\s\ms-w32.h \
287 $(EMACS_ROOT)\src\m\intel386.h \
288 $(EMACS_ROOT)\lib-src\..\src\config.h
289
290$(BLD)\ctags.obj : \
291 $(SRC)\ctags.c \
292 $(EMACS_ROOT)\nt\inc\sys\param.h \
293 $(EMACS_ROOT)\src\s\ms-w32.h \
294 $(EMACS_ROOT)\src\m\intel386.h \
295 $(EMACS_ROOT)\lib-src\..\src\config.h \
296 $(SRC)\ntlib.h \
297 $(SRC)\getopt.h
298
299$(BLD)\cvtmail.obj : \
300 $(SRC)\cvtmail.c
301
302$(BLD)\digest-doc.obj : \
303 $(SRC)\digest-doc.c
304
305$(BLD)\emacsclient.obj : \
306 $(SRC)\emacsclient.c \
307 $(EMACS_ROOT)\src\s\ms-w32.h \
308 $(EMACS_ROOT)\src\m\intel386.h \
309 $(EMACS_ROOT)\lib-src\..\src\config.h
310
311$(BLD)\emacstool.obj : \
312 $(SRC)\emacstool.c \
313 $(EMACS_ROOT)\nt\inc\sys\file.h
314
315$(BLD)\etags.obj : \
316 $(SRC)\etags.c \
317 $(EMACS_ROOT)\nt\inc\sys\param.h \
318 $(EMACS_ROOT)\src\s\ms-w32.h \
319 $(EMACS_ROOT)\src\m\intel386.h \
320 $(EMACS_ROOT)\lib-src\..\src\config.h \
321 $(SRC)\ntlib.h \
322 $(SRC)\getopt.h
323
324$(BLD)\fakemail.obj : \
325 $(SRC)\fakemail.c \
326 $(SRC)\ntlib.h \
327 $(EMACS_ROOT)\src\s\ms-w32.h \
328 $(EMACS_ROOT)\src\m\intel386.h \
329 $(EMACS_ROOT)\lib-src\..\src\config.h \
330 $(EMACS_ROOT)\nt\inc\pwd.h
331
332$(BLD)\getdate.obj : \
333 $(SRC)\getdate.c \
334 $(EMACS_ROOT)\src\s\ms-w32.h \
335 $(EMACS_ROOT)\src\m\intel386.h \
336 $(EMACS_ROOT)\src\config.h \
337 $(MSTOOLS_SYS)\types.h
338
339$(BLD)\getopt.obj : \
340 $(SRC)\getopt.c \
341 $(EMACS_ROOT)\src\s\ms-w32.h \
342 $(EMACS_ROOT)\src\m\intel386.h \
343 $(EMACS_ROOT)\src\config.h \
344 $(SRC)\ntlib.h \
345 $(SRC)\getopt.h
346
347$(BLD)\getopt1.obj : \
348 $(SRC)\getopt1.c \
349 $(EMACS_ROOT)\src\s\ms-w32.h \
350 $(EMACS_ROOT)\src\m\intel386.h \
351 $(EMACS_ROOT)\src\config.h \
352 $(SRC)\getopt.h
353
354$(BLD)\hexl.obj : \
355 $(SRC)\hexl.c
356
357$(BLD)\leditcfns.obj : \
358 $(SRC)\leditcfns.c
359
360$(BLD)\make-docfile.obj : \
361 $(SRC)\make-docfile.c \
362 $(EMACS_ROOT)\src\config.h
363
364$(BLD)\make-path.obj : \
365 $(SRC)\make-path.c
366
367$(BLD)\movemail.obj : \
368 $(SRC)\movemail.c \
369 $(EMACS_ROOT)\src\s\ms-w32.h \
370 $(EMACS_ROOT)\src\m\intel386.h \
371 $(EMACS_ROOT)\lib-src\..\src\config.h \
372 $(EMACS_ROOT)\nt\inc\sys\file.h \
373 $(EMACS_ROOT)\lib-src\..\src\syswait.h \
374 $(EMACS_ROOT)\nt\inc\pwd.h \
375 $(SRC)\ntlib.h
376 $(CC) $(CFLAGS) -DUSG -Fo$@ movemail.c
377
378$(BLD)\ntlib.obj : \
379 $(SRC)\ntlib.c \
380 $(SRC)\ntlib.h \
381 $(EMACS_ROOT)\nt\inc\pwd.h
382
383$(BLD)\pop.obj : \
384 $(SRC)\pop.c \
385 $(SRC)\pop.h \
386 $(SRC)\ntlib.h
387
388$(BLD)\profile.obj : \
389 $(SRC)\profile.c \
390 $(EMACS_ROOT)\src\s\ms-w32.h \
391 $(EMACS_ROOT)\src\m\intel386.h \
392 $(EMACS_ROOT)\lib-src\..\src\config.h \
393 $(EMACS_ROOT)\lib-src\..\src\systime.h
394
395$(BLD)\qsort.obj : \
396 $(SRC)\qsort.c
397
398$(BLD)\sorted-doc.obj : \
399 $(SRC)\sorted-doc.c
400
401$(BLD)\tcp.obj : \
402 $(SRC)\tcp.c
403
404$(BLD)\test-distrib.obj : \
405 $(SRC)\test-distrib.c
406
407$(BLD)\timer.obj : \
408 $(SRC)\timer.c \
409 $(EMACS_ROOT)\src\s\ms-w32.h \
410 $(EMACS_ROOT)\src\m\intel386.h \
411 $(EMACS_ROOT)\lib-src\..\src\config.h
412
413$(BLD)\yow.obj : \
414 $(SRC)\yow.c \
415 $(EMACS_ROOT)\lib-src\..\src\paths.h
416
417# arch-tag: 59e1b54b-4cc2-4086-bb0b-ecfad4b683e9
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 4b61e5ceabb..a13e786365e 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,273 @@
1
22004-05-07 Juanma Barranquero <lektu@terra.es>
3
4 * emacs-lisp/byte-run.el (make-obsolete, make-obsolete-variable):
5 Make argument names match their use in docstring.
6
7 * subr.el (lambda): Add arglist description to docstring.
8 (declare): Fix typo in docstring.
9 (open-network-stream): Fix docstring.
10 (process-kill-without-query): Fix docstring and add obsolescence
11 info.
12 (last, butlast, nbutlast): Make arguments match their use in docstring.
13 (insert-buffer-substring-no-properties): Likewise.
14 (insert-buffer-substring-as-yank): Likewise.
15 (split-string): Fix docstring.
16
17 * emacs-lisp/re-builder.el (reb-auto-update): Fix typo in docstring.
18
192004-05-06 Nick Roberts <nickrob@gnu.org>
20
21 * progmodes/gdb-ui.el: Improve/extend documentation strings.
22 Fit first sentence on one line for apropos-command.
23
242004-05-06 Stefan Monnier <monnier@iro.umontreal.ca>
25
26 Changes largely merged in from Dave Love's code.
27 * progmodes/python.el: Doc fixes.
28 (python-mode-map): Add python-complete-symbol.
29 (python-comment-line-p, python-beginning-of-string): Use syntax-ppss.
30 (python-comment-indent, python-complete-symbol)
31 (python-symbol-completions, python-partial-symbol)
32 (python-try-complete): New.
33 (python-indent-line): Remove optional arg. Use python-block-end-p.
34 (python-check): Bind compilation-error-regexp-alist.
35 (inferior-python-mode): Use rx. Move keybindings to top level.
36 Set comint-input-filter.
37 (python-preoutput-filter): Use rx.
38 (python-input-filter): Re-introduce.
39 (python-proc): Start new process if necessary.
40 Check python-buffer non-nil.
41 (view-return-to-alist): Defvar.
42 (python-send-receive): New.
43 (python-eldoc-function): Use it.
44 (python-mode-running): Don't defvar.
45 (python-mode): Set comment-indent-function.
46 Maybe update hippie-expand-try-functions-list.
47 (python-indentation-levels): Initialize differently.
48 (python-block-end-p): New.
49 (python-indent-line): Use it.
50 (python-compilation-regexp-alist): Augment.
51 (run-python): Import `emacs' module to Python rather than loading
52 code directly. Set python-buffer differently.
53 (python-send-region): Use emacs.eexecfile. Fix orig-start calculation.
54 Use python-proc.
55 (python-send-command): Go to end of comint buffer.
56 (python-load-file): Use python-proc, emacs.eimport.
57 (python-describe-symbol): Simplify interactive form.
58 Use emacs.help. Do use temp-buffer-show-hook.
59 Call print-help-return-message.
60 (hippie-exp): Require when compiling.
61 (python-preoutput-continuation): Use rx.
62
63 * diff-mode.el (diff-make-unified): Fix regexp.
64
652004-05-06 Romain Francoise <romain@orebokech.com> (tiny change)
66
67 * ibuffer.el (ibuffer-redisplay-engine): Do not remove folded
68 filter groups from the buffer when rebuilding the Ibuffer buffer
69 and `ibuffer-show-empty-filter-groups' is nil.
70
712004-05-06 Vinicius Jose Latorre <viniciusjl@ig.com.br>
72
73 * ps-print.el (ps-print-quote): Call ps-value-string.
74 (ps-setup): Call ps-comment-string.
75 (ps-value-string, ps-comment-string): New funs.
76
772004-05-06 Juanma Barranquero <lektu@terra.es>
78
79 * help-fns.el (help-argument-name): Default to bold; don't inherit
80 from font-lock-variable-name-face.
81 (help-do-arg-highlight): Grok also ARGth occurrences in the docstring.
82
83 * ehelp.el (electric-help-command-loop): Check whether the last
84 character is visible, not (point-max).
85
862004-05-05 Kenichi Handa <handa@m17n.org>
87
88 * descr-text.el (describe-char): Copy the character with text
89 properties and overlays into the first line, and call
90 describe-text-properties on it.
91
922004-05-05 Stephen Eglen <stephen@anc.ed.ac.uk>
93
94 * iswitchb.el (iswitchb-global-map): Fix typo.
95 Remove unwanted ###autoloads from source file.
96
972004-05-05 Lars Hansen <larsh@math.ku.dk>
98
99 * wdired.el (wdired-change-to-wdired-mode): Quote wdired-mode-hook
100 in run-hooks. Use substitute-command-keys in message.
101 (wdired-abort-changes): Add message.
102
1032004-05-03 Michael Mauger <mmaug@yahoo.com>
104
105 * emacs/lisp/progmodes/sql.el (sql-xemacs-p, sql-emacs19-p)
106 (sql-emacs20-p): Remove.
107 (sql-mode-syntax-table): Use shared GNU EMacs/XEmacs syntax.
108 (sql-builtin-face, sql-doc-face): Remove.
109 (sql-mode-ansi-font-lock-keywords)
110 (sql-mode-oracle-font-lock-keywords)
111 (sql-mode-postgres-font-lock-keywords)
112 (sql-mode-linter-font-lock-keywords)
113 (sql-mode-ms-font-lock-keywords)
114 (sql-mode-mysql-font-lock-keywords): Use standard fonts.
115 (sql-product-font-lock): Fix font-lock reset when font rules change.
116 (sql-highlight-product): Remove incorrect font-lock reset logic.
117
1182004-05-04 Jonathan Yavner <jyavner@member.fsf.org>
119
120 * ses.el (ses-set-parameter): Fix typo.
121
1222004-05-04 Kim F. Storm <storm@cua.dk>
123
124 * ido.el (ido-read-internal): Fix call to read-file-name for edit.
125 Must expand directory for completion to work; and don't mess with
126 process-environment.
127 (ido-read-file-name): If command has ido property, don't use ido
128 if value is ignore, or read as directory if value is dir.
129 Set ido ignore property for dired-do-rename command.
130
1312004-05-04 Juanma Barranquero <lektu@terra.es>
132
133 * help-fns.el (help-argument-name): New face, inheriting from
134 font-lock-variable-name-face, to highlight function arguments in
135 `describe-function' and `describe-key'.
136 (help-do-arg-highlight): Auxiliary function to highlight a given
137 list of arguments in a string.
138 (help-highlight-arguments): Highlight the function arguments and
139 all uses of them in the docstring.
140 (describe-function-1): Use it. Do docstring output via `insert',
141 not 'princ', so text attributes are preserved.
142
143 * winner.el (winner-mode-map): Move winner-undo and winner-redo to
144 C-c <left> and C-c <right>, respectively (the previous bindings
145 conflict with prev-buffer, next-buffer).
146
147 * ehelp.el (electric-help-command-loop, electric-help-undefined)
148 (electric-help-help): Check against unmapped commands.
149
1502004-05-03 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
151
152 * textmodes/bibtex.el (bibtex-progress-message): Fix docstring.
153 (bibtex-entry-update): New command bound to C-c C-u.
154 (bibtex-text-in-string): Fix regexp.
155 (bibtex-assoc-of-regexp): Remove.
156 (bibtex-progress-message): Fix docstring.
157 (bibtex-inside-field): Use if.
158 (bibtex-assoc-regexp): New function.
159 (bibtex-format-entry): Make code more robust so that it formats
160 also old entries.
161 (bibtex-autokey-demangle-title): Merge with obsolete function
162 bibtex-assoc-of-regexp.
163 (bibtex-field-list): New function.
164 (bibtex-entry): Use bibtex-field-list.
165 (bibtex-parse-entry): Fix docstring.
166 (bibtex-print-help-message): Use bibtex-field-list.
167 (bibtex-make-field): Use bibtex-field-list.
168 (bibtex-entry-index): Bugfix. Return crossref key if required.
169 (bibtex-lessp): Fix docstring.
170
1712004-05-03 Luc Teirlinck <teirllm@auburn.edu>
172
173 * select.el (xselect-convert-to-string): Move comment to intended line.
174
1752004-05-03 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
176
177 * toolbar/tool-bar.el (tool-bar-setup): Use lookup-key for
178 cut/copy/paste in case menu-bar-enable-clipboard is in effect.
179
1802004-05-03 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
181
182 * term/x-win.el (x-clipboard-yank): Don't exit on error from
183 x-get-selection.
184
1852004-05-03 Jason Rumney <jasonr@gnu.org>
186
187 * makefile.nt: Remove.
188
1892004-05-03 Kim F. Storm <storm@cua.dk>
190
191 * emulation/cua-base.el (cua--update-indications): Fix last change.
192 (cua-mode): Deactivate mark when cua-mode is enabled.
193
1942004-05-02 Luc Teirlinck <teirllm@auburn.edu>
195
196 * select.el (xselect-convert-to-string): Bind `inhibit-read-only' to t.
197
1982004-05-03 Nick Roberts <nickrob@gnu.org>
199
200 * progmodes/gdb-ui.el (gud-watch, gdb-display-buffer)
201 (gdb-display-source-buffer, gdb-put-breakpoint-icon)
202 (gdb-remove-breakpoint-icons, gdb-assembler-custom): Look for
203 window over visible frames.
204 (gdb-goto-breakpoint): Make buffer display file at breakpoint.
205
2062004-05-02 Stefan Monnier <monnier@iro.umontreal.ca>
207
208 * progmodes/compile.el (compilation-gcpro): New var.
209 (compilation-fake-loc): Use it.
210 (compilation-forget-errors): Reset it.
211
2122004-05-02 Dan Nicolaescu <dann@ics.uci.edu>
213
214 * diff-mode.el (diff-header-face, diff-file-header-face):
215 Use min-colors.
216
2172004-05-02 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
218
219 * textmodes/bibtex.el (bibtex-sort-buffer): Remove error message.
220 (bibtex-clean-entry): Disentangle code.
221 (bibtex-realign): New function.
222 (bibtex-reformat): Use mapcar and bibtex-realign. Do not use
223 bibtex-beginning-of-first-entry and bibtex-skip-to-valid-entry.
224 Remove undocumented optional arg called-by-convert-alien.
225 (bibtex-convert-alien): Use bibtex-realign. Use bibtex-reformat
226 for sorting instead of bibtex-sort-buffer.
227
2282004-05-02 Eli Zaretskii <eliz@gnu.org>
229
230 * progmodes/compile.el (compilation-start): In the
231 no-async-subprocesses branch, call sit-for to give redisplay a
232 chance to show the updated process status in the mode line, and
233 fontify the buffer explicitly after the process exits.
234
2352004-05-01 Stefan Monnier <monnier@iro.umontreal.ca>
236
237 * progmodes/python.el (python-compilation-line-number): Remove.
238 (python-compilation-regexp-alist): Don't use it any more.
239 (python-orig-start, python-input-filter): Remove.
240 (inferior-python-mode): Don't set up comint-input-filter-functions.
241 (python-send-region): Use compilation-fake-loc.
242
243 * progmodes/compile.el (compilation-messages-start): New var.
244 (compilation-mode): Don't setup next-error-function here.
245 (compilation-setup): Set it up here instead (for minor modes as well).
246 Make compilation-messages-start buffer local.
247 (compilation-next-error-function): Use it.
248 (compilation-forget-errors): Set compilation-messages-start.
249
2502004-05-01 Luc Teirlinck <teirllm@auburn.edu>
251
252 * ielm.el (ielm-prompt-read-only): Update docstring.
253
254 * comint.el (comint-prompt-read-only): Update docstring.
255 (comint-update-fence, comint-kill-whole-line)
256 (comint-kill-region): New functions.
257
258 * simple.el (kill-whole-line): Use "p" instead of "P" in
259 interactive form.
260
2612004-05-01 Juanma Barranquero <lektu@terra.es>
262
263 * help-fns.el (help-add-fundoc-usage): Use %S instead of %s to
264 format arglist so default values in CL-style argument lists are
265 correctly shown.
266
2672004-05-01 Jason Rumney <jasonr@gnu.org>
268
269 * term/w32-win.el (w32-drag-n-drop): Use x-dnd.el functions.
270
12004-05-01 Kenichi Handa <handa@m17n.org> 2712004-05-01 Kenichi Handa <handa@m17n.org>
2 272
3 * international/titdic-cnv.el (miscdic-convert): Don't generate a 273 * international/titdic-cnv.el (miscdic-convert): Don't generate a
@@ -35,7 +305,7 @@
35 * delsel.el: Don't put `delete-selection' property 305 * delsel.el: Don't put `delete-selection' property
36 on `insert-parentheses' symbol to take advantage of 306 on `insert-parentheses' symbol to take advantage of
37 region handling in `insert-pair' function. 307 region handling in `insert-pair' function.
38 Suggested by Stephan Stahl <stahl@eos.franken.de> 308 Suggested by Stephan Stahl <stahl@eos.franken.de>.
39 309
402004-04-30 Kim F. Storm <storm@cua.dk> 3102004-04-30 Kim F. Storm <storm@cua.dk>
41 311
@@ -65,7 +335,7 @@
65 New defmacro. 335 New defmacro.
66 (cua-upcase-rectangle, cua-downcase-rectangle): Use it. 336 (cua-upcase-rectangle, cua-downcase-rectangle): Use it.
67 (cua-upcase-initials-rectangle, cua-capitalize-rectangle): 337 (cua-upcase-initials-rectangle, cua-capitalize-rectangle):
68 New commands (suggested by Jordan Breeding).. 338 New commands (suggested by Jordan Breeding).
69 339
702004-04-30 Juanma Barranquero <lektu@terra.es> 3402004-04-30 Juanma Barranquero <lektu@terra.es>
71 341
@@ -5779,7 +6049,7 @@
57792003-08-12 Juri Linkov <juri@jurta.org> (tiny change) 60492003-08-12 Juri Linkov <juri@jurta.org> (tiny change)
5780 6050
5781 * simple.el (backward-word, forward-to-indentation) 6051 * simple.el (backward-word, forward-to-indentation)
5782 (backward-to-indentation): Argument changed to optional. 6052 (backward-to-indentation): Argument changed to optional.
5783 (next-line, previous-line): Use `or' instead of `unless'. 6053 (next-line, previous-line): Use `or' instead of `unless'.
5784 6054
57852003-08-12 Vinicius Jose Latorre <viniciusjl@ig.com.br> 60552003-08-12 Vinicius Jose Latorre <viniciusjl@ig.com.br>
@@ -5961,7 +6231,7 @@
5961 behaviour of `calendar-day-name' and `calendar-month-name' functions. 6231 behaviour of `calendar-day-name' and `calendar-month-name' functions.
5962 (diary-name-pattern): Use abbrev arrays, rather than fixing 6232 (diary-name-pattern): Use abbrev arrays, rather than fixing
5963 abbrevs at three chars. Calling syntax change. 6233 abbrevs at three chars. Calling syntax change.
5964 (mark-diary-entries): Adapt for new behaviours of 6234 (mark-diary-entries): Adapt for new behaviours of
5965 `diary-name-pattern' and `calendar-make-alist' functions. 6235 `diary-name-pattern' and `calendar-make-alist' functions.
5966 (fancy-diary-font-lock-keywords): Adapt for new behaviour of 6236 (fancy-diary-font-lock-keywords): Adapt for new behaviour of
5967 `diary-name-pattern' function. 6237 `diary-name-pattern' function.
@@ -6412,7 +6682,7 @@
6412 6682
64132003-07-08 Markus Rost <rost@math.ohio-state.edu> 66832003-07-08 Markus Rost <rost@math.ohio-state.edu>
6414 6684
6415 * subr.el (dolist, dotimes): Doc fix. 6685 * subr.el (dolist, dotimes): Doc fix.
6416 6686
64172003-07-08 Kim F. Storm <storm@cua.dk> 66872003-07-08 Kim F. Storm <storm@cua.dk>
6418 6688
diff --git a/lisp/comint.el b/lisp/comint.el
index 52217fa8ad6..c5e903fc58f 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -173,8 +173,25 @@ This is a good thing to set in mode hooks.")
173 173
174(defcustom comint-prompt-read-only nil 174(defcustom comint-prompt-read-only nil
175 "If non-nil, the comint prompt is read only. 175 "If non-nil, the comint prompt is read only.
176The read only region includes the newline before the prompt.
176This does not affect existing prompts. 177This does not affect existing prompts.
177Certain derived modes may override this option." 178Certain derived modes may override this option.
179
180If you set this option to t, then the safe way to temporarily
181override the read-only-ness of comint prompts is to call
182`comint-kill-whole-line' or `comint-kill-region' with no
183narrowing in effect. This way you will be certain that none of
184the remaining prompts will be accidentally messed up. You may
185wish to put something like the following in your `.emacs' file:
186
187\(add-hook 'comint-mode-hook
188 '(lambda ()
189 (define-key comint-mode-map \"\C-w\" 'comint-kill-region)
190 (define-key comint-mode-map [C-S-backspace]
191 'comint-kill-whole-line)))
192
193If you sometimes use comint-mode on text-only terminals or with `emacs-nw',
194you might wish to use another binding for `comint-kill-whole-line'."
178 :type 'boolean 195 :type 'boolean
179 :group 'comint 196 :group 'comint
180 :version "21.4") 197 :version "21.4")
@@ -2311,6 +2328,83 @@ This command is like `M-.' in bash."
2311 (just-one-space))) 2328 (just-one-space)))
2312 2329
2313 2330
2331;; Support editing with `comint-prompt-read-only' set to t.
2332
2333(defun comint-update-fence ()
2334 "Update read-only status of newline before point.
2335The `fence' read-only property is used to indicate that a newline
2336is read-only for no other reason than to \"fence off\" a
2337following front-sticky read-only region. This is used to
2338implement comint read-only prompts. If the text after a newline
2339changes, the read-only status of that newline may need updating.
2340That is what this function does.
2341
2342This function does nothing if point is not at the beginning of a
2343line, or is at the beginning of the accessible portion of the buffer.
2344Otherwise, if the character after point has a front-sticky
2345read-only property, then the preceding newline is given a
2346read-only property of `fence', unless it already is read-only.
2347If the character after point does not have a front-sticky
2348read-only property, any read-only property of `fence' on the
2349preceding newline is removed."
2350 (let* ((pt (point)) (lst (get-text-property pt 'front-sticky)))
2351 (and (bolp)
2352 (not (bobp))
2353 (if (and (get-text-property pt 'read-only)
2354 (if (listp lst) (memq 'read-only lst) t))
2355 (unless (get-text-property (1- pt) 'read-only)
2356 (put-text-property (1- pt) pt 'read-only 'fence))
2357 (when (eq (get-text-property (1- pt) 'read-only) 'fence)
2358 (remove-list-of-text-properties (1- pt) pt '(read-only)))))))
2359
2360(defun comint-kill-whole-line (&optional arg)
2361 "Kill current line, ignoring read-only and field properties.
2362With prefix arg, kill that many lines starting from the current line.
2363If arg is negative, kill backward. Also kill the preceding newline,
2364instead of the trailing one. \(This is meant to make C-x z work well
2365with negative arguments.)
2366If arg is zero, kill current line but exclude the trailing newline.
2367The read-only status of newlines is updated with `comint-update-fence',
2368if necessary."
2369 (interactive "p")
2370 (let ((inhibit-read-only t) (inhibit-field-text-motion t))
2371 (kill-whole-line arg)
2372 (when (>= arg 0) (comint-update-fence))))
2373
2374(defun comint-kill-region (beg end &optional yank-handler)
2375 "Like `kill-region', but ignores read-only properties, if safe.
2376This command assumes that the buffer contains read-only
2377\"prompts\" which are regions with front-sticky read-only
2378properties at the beginning of a line, with the preceding newline
2379being read-only to protect the prompt. This is true of the
2380comint prompts if `comint-prompt-read-only' is non-nil. This
2381command will not delete the region if this would create mutilated
2382or out of place prompts. That is, if any part of a prompt is
2383deleted, the entire prompt must be deleted and all remaining
2384prompts should stay at the beginning of a line. If this is not
2385the case, this command just calls `kill-region' with all
2386read-only properties intact. The read-only status of newlines is
2387updated using `comint-update-fence', if necessary."
2388 (interactive "r")
2389 (save-excursion
2390 (let* ((true-beg (min beg end))
2391 (true-end (max beg end))
2392 (beg-bolp (progn (goto-char true-beg) (bolp)))
2393 (beg-lst (get-text-property true-beg 'front-sticky))
2394 (beg-bad (and (get-text-property true-beg 'read-only)
2395 (if (listp beg-lst) (memq 'read-only beg-lst) t)))
2396 (end-bolp (progn (goto-char true-end) (bolp)))
2397 (end-lst (get-text-property true-end 'front-sticky))
2398 (end-bad (and (get-text-property true-end 'read-only)
2399 (if (listp end-lst) (memq 'read-only end-lst) t))))
2400 (if (or (and (not beg-bolp) (or beg-bad end-bad))
2401 (and (not end-bolp) end-bad))
2402 (kill-region beg end yank-handler)
2403 (let ((inhibit-read-only t))
2404 (kill-region beg end yank-handler)
2405 (comint-update-fence))))))
2406
2407
2314;; Support for source-file processing commands. 2408;; Support for source-file processing commands.
2315;;============================================================================ 2409;;============================================================================
2316;; Many command-interpreters (e.g., Lisp, Scheme, Soar) have 2410;; Many command-interpreters (e.g., Lisp, Scheme, Soar) have
diff --git a/lisp/descr-text.el b/lisp/descr-text.el
index c73cfeb02c3..4b6605aa426 100644
--- a/lisp/descr-text.el
+++ b/lisp/descr-text.el
@@ -465,6 +465,7 @@ as well as widgets, buttons, overlays, and text properties."
465 (if (>= pos (point-max)) 465 (if (>= pos (point-max))
466 (error "No character follows specified position")) 466 (error "No character follows specified position"))
467 (let* ((char (char-after pos)) 467 (let* ((char (char-after pos))
468 (char-string (buffer-substring pos (1+ pos)))
468 (charset (char-charset char)) 469 (charset (char-charset char))
469 (buffer (current-buffer)) 470 (buffer (current-buffer))
470 (composition (find-composition pos nil nil t)) 471 (composition (find-composition pos nil nil t))
@@ -474,16 +475,11 @@ as well as widgets, buttons, overlays, and text properties."
474 standard-display-table)) 475 standard-display-table))
475 (disp-vector (and display-table (aref display-table char))) 476 (disp-vector (and display-table (aref display-table char)))
476 (multibyte-p enable-multibyte-characters) 477 (multibyte-p enable-multibyte-characters)
477 text-prop-description 478 (overlays (mapcar #'(lambda (o) (overlay-properties o))
479 (overlays-at pos)))
478 item-list max-width unicode) 480 item-list max-width unicode)
479 (if (eq charset 'unknown) 481 (if (eq charset 'unknown)
480 (setq item-list 482 (setq item-list '("character"))
481 `(("character"
482 ,(format "%s (0%o, %d, 0x%x) -- invalid character code"
483 (if (< char 256)
484 (single-key-description char)
485 (char-to-string char))
486 char char char))))
487 483
488 (if (or (< char 256) 484 (if (or (< char 256)
489 (memq 'mule-utf-8 (find-coding-systems-region pos (1+ pos))) 485 (memq 'mule-utf-8 (find-coding-systems-region pos (1+ pos)))
@@ -491,14 +487,7 @@ as well as widgets, buttons, overlays, and text properties."
491 (setq unicode (or (get-char-property pos 'untranslated-utf-8) 487 (setq unicode (or (get-char-property pos 'untranslated-utf-8)
492 (encode-char char 'ucs)))) 488 (encode-char char 'ucs))))
493 (setq item-list 489 (setq item-list
494 `(("character" 490 `(("character")
495 ,(format "%s (0%o, %d, 0x%x%s)" (if (< char 256)
496 (single-key-description char)
497 (char-to-string char))
498 char char char
499 (if unicode
500 (format ", U+%04X" unicode)
501 "")))
502 ("charset" 491 ("charset"
503 ,(symbol-name charset) 492 ,(symbol-name charset)
504 ,(format "(%s)" (charset-description charset))) 493 ,(format "(%s)" (charset-description charset)))
@@ -583,18 +572,31 @@ as well as widgets, buttons, overlays, and text properties."
583 (cons (list "Unicode data" " ") unicodedata)))))) 572 (cons (list "Unicode data" " ") unicodedata))))))
584 (setq max-width (apply #'max (mapcar #'(lambda (x) (length (car x))) 573 (setq max-width (apply #'max (mapcar #'(lambda (x) (length (car x)))
585 item-list))) 574 item-list)))
586 (setq text-prop-description 575 (pop item-list)
587 (with-temp-buffer
588 (let ((buf (current-buffer)))
589 (save-excursion
590 (set-buffer buffer)
591 (describe-text-properties pos buf)))
592 (buffer-string)))
593 576
594 (with-output-to-temp-buffer "*Help*" 577 (with-output-to-temp-buffer "*Help*"
595 (with-current-buffer standard-output 578 (with-current-buffer standard-output
596 (set-buffer-multibyte multibyte-p) 579 (set-buffer-multibyte multibyte-p)
597 (let ((formatter (format "%%%ds:" max-width))) 580 (let ((formatter (format "%%%ds:" max-width)))
581 (insert (format formatter "character") " ")
582 (setq pos (point))
583 (insert char-string
584 (format " (`%s', 0%o, %d, 0x%x"
585 (if (< char 256)
586 (single-key-description char)
587 (char-to-string char))
588 char char char)
589 (if (eq charset 'unknown)
590 ") -- invalid character code\n"
591 (if unicode
592 (format ", U+%04X)\n" unicode)
593 ")\n")))
594 (mapc #'(lambda (props)
595 (let ((o (make-overlay pos (1+ pos))))
596 (while props
597 (overlay-put o (car props) (nth 1 props))
598 (setq props (cddr props)))))
599 overlays)
598 (dolist (elt item-list) 600 (dolist (elt item-list)
599 (when (cadr elt) 601 (when (cadr elt)
600 (insert (format formatter (car elt))) 602 (insert (format formatter (car elt)))
@@ -665,7 +667,7 @@ as well as widgets, buttons, overlays, and text properties."
665 (insert "\nSee the variable `reference-point-alist' for " 667 (insert "\nSee the variable `reference-point-alist' for "
666 "the meaning of the rule.\n")) 668 "the meaning of the rule.\n"))
667 669
668 (insert text-prop-description) 670 (describe-text-properties pos (current-buffer))
669 (describe-text-mode))))) 671 (describe-text-mode)))))
670 672
671(defalias 'describe-char-after 'describe-char) 673(defalias 'describe-char-after 'describe-char)
diff --git a/lisp/diff-mode.el b/lisp/diff-mode.el
index 17602317958..9b00eae050d 100644
--- a/lisp/diff-mode.el
+++ b/lisp/diff-mode.el
@@ -169,27 +169,27 @@ when editing big diffs)."
169;;;; 169;;;;
170 170
171(defface diff-header-face 171(defface diff-header-face
172 '((((type tty pc) (class color) (background light)) 172 '((((class color) (min-colors 88) (background light))
173 (:foreground "blue1" :weight bold))
174 (((type tty pc) (class color) (background dark))
175 (:foreground "green" :weight bold))
176 (((class color) (background light))
177 (:background "grey85")) 173 (:background "grey85"))
178 (((class color) (background dark)) 174 (((class color) (min-colors 88) (background dark))
179 (:background "grey45")) 175 (:background "grey45"))
176 (((class color) (background light))
177 (:foreground "blue1" :weight bold))
178 (((class color) (background dark))
179 (:foreground "green" :weight bold))
180 (t (:weight bold))) 180 (t (:weight bold)))
181 "`diff-mode' face inherited by hunk and index header faces.") 181 "`diff-mode' face inherited by hunk and index header faces.")
182(defvar diff-header-face 'diff-header-face) 182(defvar diff-header-face 'diff-header-face)
183 183
184(defface diff-file-header-face 184(defface diff-file-header-face
185 '((((type tty pc) (class color) (background light)) 185 '((((class color) (min-colors 88) (background light))
186 (:foreground "yellow" :weight bold))
187 (((type tty pc) (class color) (background dark))
188 (:foreground "cyan" :weight bold))
189 (((class color) (background light))
190 (:background "grey70" :weight bold)) 186 (:background "grey70" :weight bold))
191 (((class color) (background dark)) 187 (((class color) (min-colors 88) (background dark))
192 (:background "grey60" :weight bold)) 188 (:background "grey60" :weight bold))
189 (((class color) (background light))
190 (:foreground "yellow" :weight bold))
191 (((class color) (background dark))
192 (:foreground "cyan" :weight bold))
193 (t (:weight bold))) ; :height 1.3 193 (t (:weight bold))) ; :height 1.3
194 "`diff-mode' face used to highlight file header lines.") 194 "`diff-mode' face used to highlight file header lines.")
195(defvar diff-file-header-face 'diff-file-header-face) 195(defvar diff-file-header-face 'diff-file-header-face)
@@ -976,7 +976,7 @@ a diff with \\[diff-reverse-direction]."
976 "Turn context diffs into unified diffs if applicable." 976 "Turn context diffs into unified diffs if applicable."
977 (if (save-excursion 977 (if (save-excursion
978 (goto-char (point-min)) 978 (goto-char (point-min))
979 (looking-at "\\*\\*\\* ")) 979 (and (looking-at diff-hunk-header-re) (eq (char-after) ?*)))
980 (let ((mod (buffer-modified-p))) 980 (let ((mod (buffer-modified-p)))
981 (unwind-protect 981 (unwind-protect
982 (diff-context->unified (point-min) (point-max)) 982 (diff-context->unified (point-min) (point-max))
diff --git a/lisp/ehelp.el b/lisp/ehelp.el
index 12ebbeb0c0d..e80c129d3ea 100644
--- a/lisp/ehelp.el
+++ b/lisp/ehelp.el
@@ -1,6 +1,6 @@
1;;; ehelp.el --- bindings for electric-help mode 1;;; ehelp.el --- bindings for electric-help mode
2 2
3;; Copyright (C) 1986, 1995, 2000, 2001 Free Software Foundation, Inc. 3;; Copyright (C) 1986, 1995, 2000, 2001, 2004 Free Software Foundation, Inc.
4 4
5;; Maintainer: FSF 5;; Maintainer: FSF
6;; Keywords: help, extensions 6;; Keywords: help, extensions
@@ -200,13 +200,13 @@ BUFFER is put into `default-major-mode' (or `fundamental-mode') when we exit."
200 (progn (setq unread-command-events nil) 200 (progn (setq unread-command-events nil)
201 (throw 'exit t))))) 201 (throw 'exit t)))))
202 (let (up down both neither 202 (let (up down both neither
203 (standard (and (eq (key-binding " ") 203 (standard (and (eq (key-binding " " nil t)
204 'scroll-up) 204 'scroll-up)
205 (eq (key-binding "\^?") 205 (eq (key-binding "\^?" nil t)
206 'scroll-down) 206 'scroll-down)
207 (eq (key-binding "q") 207 (eq (key-binding "q" nil t)
208 'electric-help-exit) 208 'electric-help-exit)
209 (eq (key-binding "r") 209 (eq (key-binding "r" nil t)
210 'electric-help-retain)))) 210 'electric-help-retain))))
211 (Electric-command-loop 211 (Electric-command-loop
212 'exit 212 'exit
@@ -215,7 +215,7 @@ BUFFER is put into `default-major-mode' (or `fundamental-mode') when we exit."
215 ;beginning-of-buffer - otherwise pos-visible-in-window-p 215 ;beginning-of-buffer - otherwise pos-visible-in-window-p
216 ;will yield a wrong result. 216 ;will yield a wrong result.
217 (let ((min (pos-visible-in-window-p (point-min))) 217 (let ((min (pos-visible-in-window-p (point-min)))
218 (max (pos-visible-in-window-p (point-max)))) 218 (max (pos-visible-in-window-p (1- (point-max)))))
219 (cond (isearch-mode 'noprompt) 219 (cond (isearch-mode 'noprompt)
220 ((and min max) 220 ((and min max)
221 (cond (standard "Press q to exit, r to retain ") 221 (cond (standard "Press q to exit, r to retain ")
@@ -272,7 +272,7 @@ will select it.)"
272 (interactive) 272 (interactive)
273 (error "%s is undefined -- Press %s to exit" 273 (error "%s is undefined -- Press %s to exit"
274 (mapconcat 'single-key-description (this-command-keys) " ") 274 (mapconcat 'single-key-description (this-command-keys) " ")
275 (if (eq (key-binding "q") 'electric-help-exit) 275 (if (eq (key-binding "q" nil t) 'electric-help-exit)
276 "q" 276 "q"
277 (substitute-command-keys "\\[electric-help-exit]")))) 277 (substitute-command-keys "\\[electric-help-exit]"))))
278 278
@@ -280,10 +280,10 @@ will select it.)"
280;>>> this needs to be hairified (recursive help, anybody?) 280;>>> this needs to be hairified (recursive help, anybody?)
281(defun electric-help-help () 281(defun electric-help-help ()
282 (interactive) 282 (interactive)
283 (if (and (eq (key-binding "q") 'electric-help-exit) 283 (if (and (eq (key-binding "q" nil t) 'electric-help-exit)
284 (eq (key-binding " ") 'scroll-up) 284 (eq (key-binding " " nil t) 'scroll-up)
285 (eq (key-binding "\^?") 'scroll-down) 285 (eq (key-binding "\^?" nil t) 'scroll-down)
286 (eq (key-binding "r") 'electric-help-retain)) 286 (eq (key-binding "r" nil t) 'electric-help-retain))
287 (message "SPC scrolls up, DEL scrolls down, q exits burying help buffer, r exits") 287 (message "SPC scrolls up, DEL scrolls down, q exits burying help buffer, r exits")
288 (message "%s" (substitute-command-keys "\\[scroll-up] scrolls up, \\[scroll-down] scrolls down, \\[electric-help-exit] exits burying help buffer, \\[electric-help-retain] exits"))) 288 (message "%s" (substitute-command-keys "\\[scroll-up] scrolls up, \\[scroll-down] scrolls down, \\[electric-help-exit] exits burying help buffer, \\[electric-help-retain] exits")))
289 (sit-for 2)) 289 (sit-for 2))
diff --git a/lisp/emacs-lisp/byte-run.el b/lisp/emacs-lisp/byte-run.el
index 4ed47129fc9..2cd0896c835 100644
--- a/lisp/emacs-lisp/byte-run.el
+++ b/lisp/emacs-lisp/byte-run.el
@@ -76,21 +76,21 @@
76 (eval-and-compile 76 (eval-and-compile
77 (put ',name 'byte-optimizer 'byte-compile-inline-expand)))) 77 (put ',name 'byte-optimizer 'byte-compile-inline-expand))))
78 78
79(defun make-obsolete (fn new &optional when) 79(defun make-obsolete (function new &optional when)
80 "Make the byte-compiler warn that FUNCTION is obsolete. 80 "Make the byte-compiler warn that FUNCTION is obsolete.
81The warning will say that NEW should be used instead. 81The warning will say that NEW should be used instead.
82If NEW is a string, that is the `use instead' message. 82If NEW is a string, that is the `use instead' message.
83If provided, WHEN should be a string indicating when the function 83If provided, WHEN should be a string indicating when the function
84was first made obsolete, for example a date or a release number." 84was first made obsolete, for example a date or a release number."
85 (interactive "aMake function obsolete: \nxObsoletion replacement: ") 85 (interactive "aMake function obsolete: \nxObsoletion replacement: ")
86 (let ((handler (get fn 'byte-compile))) 86 (let ((handler (get function 'byte-compile)))
87 (if (eq 'byte-compile-obsolete handler) 87 (if (eq 'byte-compile-obsolete handler)
88 (setq handler (nth 1 (get fn 'byte-obsolete-info))) 88 (setq handler (nth 1 (get function 'byte-obsolete-info)))
89 (put fn 'byte-compile 'byte-compile-obsolete)) 89 (put function 'byte-compile 'byte-compile-obsolete))
90 (put fn 'byte-obsolete-info (list new handler when))) 90 (put function 'byte-obsolete-info (list new handler when)))
91 fn) 91 function)
92 92
93(defun make-obsolete-variable (var new &optional when) 93(defun make-obsolete-variable (variable new &optional when)
94 "Make the byte-compiler warn that VARIABLE is obsolete. 94 "Make the byte-compiler warn that VARIABLE is obsolete.
95The warning will say that NEW should be used instead. 95The warning will say that NEW should be used instead.
96If NEW is a string, that is the `use instead' message. 96If NEW is a string, that is the `use instead' message.
@@ -102,8 +102,8 @@ was first made obsolete, for example a date or a release number."
102 (if (equal str "") (error "")) 102 (if (equal str "") (error ""))
103 (intern str)) 103 (intern str))
104 (car (read-from-string (read-string "Obsoletion replacement: "))))) 104 (car (read-from-string (read-string "Obsoletion replacement: ")))))
105 (put var 'byte-obsolete-variable (cons new when)) 105 (put variable 'byte-obsolete-variable (cons new when))
106 var) 106 variable)
107 107
108(put 'dont-compile 'lisp-indent-hook 0) 108(put 'dont-compile 'lisp-indent-hook 0)
109(defmacro dont-compile (&rest body) 109(defmacro dont-compile (&rest body)
diff --git a/lisp/emacs-lisp/re-builder.el b/lisp/emacs-lisp/re-builder.el
index 9c904e6c0bc..83d3649006e 100644
--- a/lisp/emacs-lisp/re-builder.el
+++ b/lisp/emacs-lisp/re-builder.el
@@ -494,7 +494,7 @@ If SUBEXP is non-nil mark only the corresponding sub-expressions."
494 494
495(defun reb-auto-update (beg end lenold &optional force) 495(defun reb-auto-update (beg end lenold &optional force)
496 "Called from `after-update-functions' to update the display. 496 "Called from `after-update-functions' to update the display.
497BEG END and LENOLD are passed in from the hook. 497BEG, END and LENOLD are passed in from the hook.
498An actual update is only done if the regexp has changed or if the 498An actual update is only done if the regexp has changed or if the
499optional fourth argument FORCE is non-nil." 499optional fourth argument FORCE is non-nil."
500 (let ((prev-valid reb-valid-string) 500 (let ((prev-valid reb-valid-string)
diff --git a/lisp/emulation/cua-base.el b/lisp/emulation/cua-base.el
index c248dbbdcf2..51b47b104d0 100644
--- a/lisp/emulation/cua-base.el
+++ b/lisp/emulation/cua-base.el
@@ -1039,7 +1039,7 @@ If ARG is the atom `-', scroll upward by nearly full screen."
1039 (set-cursor-color color)) 1039 (set-cursor-color color))
1040 (if (and type 1040 (if (and type
1041 (symbolp type) 1041 (symbolp type)
1042 (not (eq type (frame-parameter nil 'cursor-type)))) 1042 (not (eq type default-cursor-type)))
1043 (setq default-cursor-type type)))) 1043 (setq default-cursor-type type))))
1044 1044
1045 1045
@@ -1336,6 +1336,7 @@ paste (in addition to the normal emacs bindings)."
1336 (delete-selection-mode -1)) 1336 (delete-selection-mode -1))
1337 (if (and (boundp 'pc-selection-mode) pc-selection-mode) 1337 (if (and (boundp 'pc-selection-mode) pc-selection-mode)
1338 (pc-selection-mode -1)) 1338 (pc-selection-mode -1))
1339 (cua--deactivate)
1339 (setq transient-mark-mode (and cua-mode 1340 (setq transient-mark-mode (and cua-mode
1340 (if cua-highlight-region-shift-only 1341 (if cua-highlight-region-shift-only
1341 (not cua--explicit-region-start) 1342 (not cua--explicit-region-start)
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index dc39720f79b..ac1bad7e3ab 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,7 @@
12004-05-06 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * nnimap.el (nnimap-demule): Avoid string-as-multibyte.
4
12004-03-27 Juanma Barranquero <lektu@terra.es> 52004-03-27 Juanma Barranquero <lektu@terra.es>
2 6
3 * gnus-srvr.el (gnus-server-prepare): Remove spurious call to `cdr'. 7 * gnus-srvr.el (gnus-server-prepare): Remove spurious call to `cdr'.
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index 02cb87af28b..a7cf82317b5 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -1,5 +1,6 @@
1;;; nnimap.el --- imap backend for Gnus 1;;; nnimap.el --- imap backend for Gnus
2;; Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. 2
3;; Copyright (C) 1998,1999,2000,01,02,2004 Free Software Foundation, Inc.
3 4
4;; Author: Simon Josefsson <jas@pdc.kth.se> 5;; Author: Simon Josefsson <jas@pdc.kth.se>
5;; Jim Radford <radford@robby.caltech.edu> 6;; Jim Radford <radford@robby.caltech.edu>
@@ -671,9 +672,12 @@ function is generally only called when Gnus is shutting down."
671 (nnoo-status-message 'nnimap server))) 672 (nnoo-status-message 'nnimap server)))
672 673
673(defun nnimap-demule (string) 674(defun nnimap-demule (string)
674 (funcall (if (and (fboundp 'string-as-multibyte) 675 ;; BEWARE: we used to use string-as-multibyte here which is braindead
675 (subrp (symbol-function 'string-as-multibyte))) 676 ;; because it will turn accidental emacs-mule-valid byte sequences
676 'string-as-multibyte 677 ;; into multibyte chars. --Stef
678 (funcall (if (and (fboundp 'string-to-multibyte)
679 (subrp (symbol-function 'string-to-multibyte)))
680 'string-to-multibyte
677 'identity) 681 'identity)
678 (or string ""))) 682 (or string "")))
679 683
@@ -1383,5 +1387,5 @@ sure of changing the value of `foo'."
1383 1387
1384(provide 'nnimap) 1388(provide 'nnimap)
1385 1389
1386;;; arch-tag: 2b001f20-3ff9-4094-a0ad-46807c1ba70b 1390;; arch-tag: 2b001f20-3ff9-4094-a0ad-46807c1ba70b
1387;;; nnimap.el ends here 1391;;; nnimap.el ends here
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index 4e57ea6d74e..a94c0ed9dea 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -181,7 +181,7 @@ ARGLIST can also be t or a string of the form \"(fun ARG1 ARG2 ...)\"."
181 (unless (stringp doc) (setq doc "Not documented")) 181 (unless (stringp doc) (setq doc "Not documented"))
182 (if (or (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" doc) (eq arglist t)) 182 (if (or (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" doc) (eq arglist t))
183 doc 183 doc
184 (format "%s%s%s" doc 184 (format "%s%s%S" doc
185 (if (string-match "\n?\n\\'" doc) 185 (if (string-match "\n?\n\\'" doc)
186 (if (< (- (match-end 0) (match-beginning 0)) 2) "\n" "") 186 (if (< (- (match-end 0) (match-beginning 0)) 2) "\n" "")
187 "\n\n") 187 "\n\n")
@@ -237,6 +237,43 @@ KIND should be `var' for a variable or `subr' for a subroutine."
237 (concat "src/" file) 237 (concat "src/" file)
238 file))))) 238 file)))))
239 239
240(defface help-argument-name '((t (:weight bold)))
241 "Face to highlight function arguments in docstrings.")
242
243(defun help-do-arg-highlight (doc args)
244 (while args
245 (let ((arg (prog1 (car args) (setq args (cdr args)))))
246 (setq doc (replace-regexp-in-string
247 (concat "\\<\\(" arg "\\)\\(?:es\\|s\\|th\\)?\\>")
248 (propertize arg 'face 'help-argument-name)
249 doc t t 1))))
250 doc)
251
252(defun help-highlight-arguments (usage doc &rest args)
253 (when usage
254 (let ((case-fold-search nil)
255 (next (not args)))
256 ;; Make a list of all arguments
257 (with-temp-buffer
258 (insert usage)
259 (goto-char (point-min))
260 ;; Make a list of all arguments
261 (while next
262 (if (not (re-search-forward " \\([\\[(]?\\)\\([^] &)\.]+\\)" nil t))
263 (setq next nil)
264 (setq args (cons (match-string 2) args))
265 (when (string= (match-string 1) "(")
266 ;; A pesky CL-style optional argument with default value,
267 ;; so let's skip over it
268 (search-backward "(")
269 (goto-char (scan-sexps (point) 1)))))
270 ;; Highlight aguments in the USAGE string
271 (setq usage (help-do-arg-highlight (buffer-string) args)))
272 ;; Highlight arguments in the DOC string
273 (setq doc (and doc (help-do-arg-highlight doc args)))
274 ;; Return value is like the one from help-split-fundoc, but highlighted
275 (cons usage doc))))
276
240;;;###autoload 277;;;###autoload
241(defun describe-function-1 (function) 278(defun describe-function-1 (function)
242 (let* ((def (if (symbolp function) 279 (let* ((def (if (symbolp function)
@@ -339,7 +376,7 @@ KIND should be `var' for a variable or `subr' for a subroutine."
339 ;; FIXME: This list can be very long (f.ex. for self-insert-command). 376 ;; FIXME: This list can be very long (f.ex. for self-insert-command).
340 ;; If there are many, remove them from KEYS. 377 ;; If there are many, remove them from KEYS.
341 (if (< (length non-modified-keys) 10) 378 (if (< (length non-modified-keys) 10)
342 (princ (mapconcat 'key-description keys ", ")) 379 (princ (mapconcat 'key-description keys ", "))
343 (dolist (key non-modified-keys) 380 (dolist (key non-modified-keys)
344 (setq keys (delq key keys))) 381 (setq keys (delq key keys)))
345 (if keys 382 (if keys
@@ -353,40 +390,44 @@ KIND should be `var' for a variable or `subr' for a subroutine."
353 (let* ((arglist (help-function-arglist def)) 390 (let* ((arglist (help-function-arglist def))
354 (doc (documentation function)) 391 (doc (documentation function))
355 (usage (help-split-fundoc doc function))) 392 (usage (help-split-fundoc doc function)))
356 ;; If definition is a keymap, skip arglist note. 393 (with-current-buffer standard-output
357 (unless (keymapp def) 394 ;; If definition is a keymap, skip arglist note.
358 (princ (cond 395 (unless (keymapp def)
359 (usage (setq doc (cdr usage)) (car usage)) 396 (let* ((use (cond
360 ((listp arglist) (help-make-usage function arglist)) 397 (usage (setq doc (cdr usage)) (car usage))
361 ((stringp arglist) arglist) 398 ((listp arglist)
362 ;; Maybe the arglist is in the docstring of the alias. 399 (format "%S" (help-make-usage function arglist)))
363 ((let ((fun function)) 400 ((stringp arglist) arglist)
364 (while (and (symbolp fun) 401 ;; Maybe the arglist is in the docstring of the alias.
365 (setq fun (symbol-function fun)) 402 ((let ((fun function))
366 (not (setq usage (help-split-fundoc 403 (while (and (symbolp fun)
367 (documentation fun) 404 (setq fun (symbol-function fun))
368 function))))) 405 (not (setq usage (help-split-fundoc
369 usage) 406 (documentation fun)
370 (car usage)) 407 function)))))
371 ((or (stringp def) 408 usage)
372 (vectorp def)) 409 (car usage))
373 (format "\nMacro: %s" (format-kbd-macro def))) 410 ((or (stringp def)
374 (t "[Missing arglist. Please make a bug report.]"))) 411 (vectorp def))
375 (terpri)) 412 (format "\nMacro: %s" (format-kbd-macro def)))
376 (let ((obsolete (and 413 (t "[Missing arglist. Please make a bug report.]")))
377 ;; function might be a lambda construct. 414 (high (help-highlight-arguments use doc)))
378 (symbolp function) 415 (insert (car high) "\n")
379 (get function 'byte-obsolete-info)))) 416 (setq doc (cdr high))))
380 (when obsolete 417 (let ((obsolete (and
381 (terpri) 418 ;; function might be a lambda construct.
382 (princ "This function is obsolete") 419 (symbolp function)
383 (if (nth 2 obsolete) (princ (format " since %s" (nth 2 obsolete)))) 420 (get function 'byte-obsolete-info))))
384 (princ ";") (terpri) 421 (when obsolete
385 (princ (if (stringp (car obsolete)) (car obsolete) 422 (princ "\nThis function is obsolete")
386 (format "use `%s' instead." (car obsolete)))) 423 (when (nth 2 obsolete)
387 (terpri))) 424 (insert (format " since %s" (nth 2 obsolete))))
388 (terpri) 425 (insert ";\n"
389 (princ (or doc "Not documented."))))) 426 (if (stringp (car obsolete)) (car obsolete)
427 (format "use `%s' instead." (car obsolete)))
428 "\n"))
429 (insert "\n"
430 (or doc "Not documented.")))))))
390 431
391 432
392;; Variables 433;; Variables
diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el
index a1fd3195d46..ab8290cfae8 100644
--- a/lisp/ibuffer.el
+++ b/lisp/ibuffer.el
@@ -1,6 +1,6 @@
1;;; ibuffer.el --- operate on buffers like dired 1;;; ibuffer.el --- operate on buffers like dired
2 2
3;; Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. 3;; Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
4 4
5;; Author: Colin Walters <walters@verbum.org> 5;; Author: Colin Walters <walters@verbum.org>
6;; Maintainer: John Paul Wallington <jpw@gnu.org> 6;; Maintainer: John Paul Wallington <jpw@gnu.org>
@@ -2166,6 +2166,7 @@ If optional arg SILENT is non-nil, do not display progress messages."
2166 (member name ibuffer-hidden-filter-groups))) 2166 (member name ibuffer-hidden-filter-groups)))
2167 (bmarklist (cdr group))) 2167 (bmarklist (cdr group)))
2168 (unless (and (null bmarklist) 2168 (unless (and (null bmarklist)
2169 (not disabled)
2169 ext-loaded 2170 ext-loaded
2170 (null ibuffer-show-empty-filter-groups)) 2171 (null ibuffer-show-empty-filter-groups))
2171 (ibuffer-insert-filter-group 2172 (ibuffer-insert-filter-group
diff --git a/lisp/ido.el b/lisp/ido.el
index 6a66ce0388d..4cbc88cf037 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -1,6 +1,6 @@
1;;; ido.el --- interactively do things with buffers and files. 1;;; ido.el --- interactively do things with buffers and files.
2 2
3;; Copyright (C) 1996-2003 Free Software Foundation, Inc. 3;; Copyright (C) 1996-2004 Free Software Foundation, Inc.
4 4
5;; Author: Kim F. Storm <storm@cua.dk> 5;; Author: Kim F. Storm <storm@cua.dk>
6;; Based on: iswitchb by Stephen Eglen <stephen@cns.ed.ac.uk> 6;; Based on: iswitchb by Stephen Eglen <stephen@cns.ed.ac.uk>
@@ -30,8 +30,9 @@
30;; for ido-switch-buffer and found the inspiration for ido-find-file. 30;; for ido-switch-buffer and found the inspiration for ido-find-file.
31;; The ido package would never have existed without his work. 31;; The ido package would never have existed without his work.
32 32
33;; Also thanks to Klaus Berndl, Rohit Namjoshi, Robert Fenk, Alex Schroeder, 33;; Also thanks to Klaus Berndl, Rohit Namjoshi, Robert Fenk, Alex
34;; Bill Benedetto, and Stephen Eglen for bug fixes and improvements. 34;; Schroeder, Bill Benedetto, Stephen Eglen, and many others for bug
35;; fixes and improvements.
35 36
36;;; History 37;;; History
37 38
@@ -55,7 +56,7 @@
55;; so I invented a common "ido-" namespace for the merged packages. 56;; so I invented a common "ido-" namespace for the merged packages.
56;; 57;;
57;; This version is based on ido.el version 1.57 released on 58;; This version is based on ido.el version 1.57 released on
58;; gnu.emacs.sources adapted for emacs 21.4 to use command remapping 59;; gnu.emacs.sources adapted for emacs 21.5 to use command remapping
59;; and optionally hooking the read-buffer and read-file-name functions. 60;; and optionally hooking the read-buffer and read-file-name functions.
60;; 61;;
61;; Prefix matching was added by Klaus Berndl <klaus.berndl@sdm.de> based on 62;; Prefix matching was added by Klaus Berndl <klaus.berndl@sdm.de> based on
@@ -1667,8 +1668,7 @@ If INITIAL is non-nil, it specifies the initial input string."
1667 ((memq ido-exit '(edit chdir)) 1668 ((memq ido-exit '(edit chdir))
1668 (cond 1669 (cond
1669 ((memq ido-cur-item '(file dir)) 1670 ((memq ido-cur-item '(file dir))
1670 (let* ((process-environment (cons "HOME=/" process-environment)) ;; cheat read-file-name 1671 (let* ((read-file-name-function nil)
1671 (read-file-name-function nil)
1672 (edit (eq ido-exit 'edit)) 1672 (edit (eq ido-exit 'edit))
1673 (d ido-current-directory) 1673 (d ido-current-directory)
1674 (f ido-text-init) 1674 (f ido-text-init)
@@ -1676,7 +1676,9 @@ If INITIAL is non-nil, it specifies the initial input string."
1676 (setq ido-text-init "") 1676 (setq ido-text-init "")
1677 (while new 1677 (while new
1678 (setq new (if edit 1678 (setq new (if edit
1679 (read-file-name (concat prompt "[EDIT] ") d (concat d f) nil f) 1679 (read-file-name (concat prompt "[EDIT] ")
1680 (expand-file-name d)
1681 (concat d f) nil f)
1680 f) 1682 f)
1681 d (or (file-name-directory new) "/") 1683 d (or (file-name-directory new) "/")
1682 f (file-name-nondirectory new) 1684 f (file-name-nondirectory new)
@@ -3807,15 +3809,19 @@ For details of keybindings, do `\\[describe-function] ido-find-file'."
3807 3809
3808;;; Helper functions for other programs 3810;;; Helper functions for other programs
3809 3811
3812(put 'dired-do-rename 'ido 'ignore)
3813
3810;;;###autoload 3814;;;###autoload
3811(defun ido-read-file-name (prompt &optional dir default-filename mustmatch initial predicate) 3815(defun ido-read-file-name (prompt &optional dir default-filename mustmatch initial predicate)
3812 "Read file name, prompting with PROMPT and completing in directory DIR. 3816 "Read file name, prompting with PROMPT and completing in directory DIR.
3813See `read-file-name' for additional parameters." 3817See `read-file-name' for additional parameters."
3814 (cond 3818 (cond
3815 ((or (eq predicate 'file-directory-p) 3819 ((or (eq predicate 'file-directory-p)
3820 (eq (get this-command 'ido) 'dir)
3816 (memq this-command ido-read-file-name-as-directory-commands)) 3821 (memq this-command ido-read-file-name-as-directory-commands))
3817 (ido-read-directory-name prompt dir default-filename mustmatch initial)) 3822 (ido-read-directory-name prompt dir default-filename mustmatch initial))
3818 ((and (not (memq this-command ido-read-file-name-non-ido)) 3823 ((and (not (eq (get this-command 'ido) 'ignore))
3824 (not (memq this-command ido-read-file-name-non-ido))
3819 (or (null predicate) (eq predicate 'file-exists-p))) 3825 (or (null predicate) (eq predicate 'file-exists-p)))
3820 (let* (filename 3826 (let* (filename
3821 ido-saved-vc-hb 3827 ido-saved-vc-hb
diff --git a/lisp/ielm.el b/lisp/ielm.el
index 53e3d83cdaa..944e2453cb9 100644
--- a/lisp/ielm.el
+++ b/lisp/ielm.el
@@ -51,9 +51,30 @@
51 51
52(defcustom ielm-prompt-read-only t 52(defcustom ielm-prompt-read-only t
53 "If non-nil, the IELM prompt is read only. 53 "If non-nil, the IELM prompt is read only.
54The read only region includes the newline before the prompt.
54Setting this variable does not affect existing IELM runs. 55Setting this variable does not affect existing IELM runs.
55This works by setting the buffer-local value of `comint-prompt-read-only'. 56This works by setting the buffer-local value of `comint-prompt-read-only'.
56Setting that value directly affects new prompts in the current buffer." 57Setting that value directly affects new prompts in the current buffer.
58
59If this option is enabled, then the safe way to temporarily
60override the read-only-ness of ielm prompts is to call
61`comint-kill-whole-line' or `comint-kill-region' with no
62narrowing in effect. This way you will be certain that none of
63the remaining prompts will be accidentally messed up. You may
64wish to put something like the following in your `.emacs' file:
65
66\(add-hook 'ielm-mode-hook
67 '(lambda ()
68 (define-key ielm-map \"\C-w\" 'comint-kill-region)
69 (define-key ielm-map [C-S-backspace]
70 'comint-kill-whole-line)))
71
72If you set `comint-prompt-read-only' to t, you might wish to use
73`comint-mode-hook' and `comint-mode-map' instead of
74`ielm-mode-hook' and `ielm-map'. That will affect all comint
75buffers, including ielm buffers. If you sometimes use ielm on
76text-only terminals or with `emacs -nw', you might wish to use
77another binding for `comint-kill-whole-line'."
57 :type 'boolean 78 :type 'boolean
58 :group 'ielm 79 :group 'ielm
59 :version "21.4") 80 :version "21.4")
diff --git a/lisp/iswitchb.el b/lisp/iswitchb.el
index f3744a38337..7bada72310c 100644
--- a/lisp/iswitchb.el
+++ b/lisp/iswitchb.el
@@ -464,7 +464,7 @@ interfere with other minibuffer usage.")
464 (substitute-key-definition 'display-buffer ; C-x 4 C-o 464 (substitute-key-definition 'display-buffer ; C-x 4 C-o
465 'iswitchb-display-buffer map global-map) 465 'iswitchb-display-buffer map global-map)
466 map) 466 map)
467 "Global keymap for `iswtichb-mode'.") 467 "Global keymap for `iswitchb-mode'.")
468 468
469(defvar iswitchb-history nil 469(defvar iswitchb-history nil
470 "History of buffers selected using `iswitchb-buffer'.") 470 "History of buffers selected using `iswitchb-buffer'.")
@@ -571,7 +571,6 @@ in a separate window.
571 (iswitchb-possible-new-buffer buf))) 571 (iswitchb-possible-new-buffer buf)))
572 )))) 572 ))))
573 573
574;;;###autoload
575(defun iswitchb-read-buffer (prompt &optional default require-match) 574(defun iswitchb-read-buffer (prompt &optional default require-match)
576 "Replacement for the built-in `read-buffer'. 575 "Replacement for the built-in `read-buffer'.
577Return the name of a buffer selected. 576Return the name of a buffer selected.
@@ -1073,7 +1072,6 @@ If BUFFER is visible in the current frame, return nil."
1073 (get-buffer-window buffer 0) ; better than 'visible 1072 (get-buffer-window buffer 0) ; better than 'visible
1074 ))) 1073 )))
1075 1074
1076;;;###autoload
1077(defun iswitchb-default-keybindings () 1075(defun iswitchb-default-keybindings ()
1078 "Set up default keybindings for `iswitchb-buffer'. 1076 "Set up default keybindings for `iswitchb-buffer'.
1079Call this function to override the normal bindings. This function also 1077Call this function to override the normal bindings. This function also
@@ -1087,7 +1085,6 @@ Obsolescent. Use `iswitchb-mode'."
1087 (global-set-key "\C-x4\C-o" 'iswitchb-display-buffer) 1085 (global-set-key "\C-x4\C-o" 'iswitchb-display-buffer)
1088 (global-set-key "\C-x5b" 'iswitchb-buffer-other-frame)) 1086 (global-set-key "\C-x5b" 'iswitchb-buffer-other-frame))
1089 1087
1090;;;###autoload
1091(defun iswitchb-buffer () 1088(defun iswitchb-buffer ()
1092 "Switch to another buffer. 1089 "Switch to another buffer.
1093 1090
@@ -1100,7 +1097,6 @@ For details of keybindings, do `\\[describe-function] iswitchb'."
1100 (setq iswitchb-method iswitchb-default-method) 1097 (setq iswitchb-method iswitchb-default-method)
1101 (iswitchb)) 1098 (iswitchb))
1102 1099
1103;;;###autoload
1104(defun iswitchb-buffer-other-window () 1100(defun iswitchb-buffer-other-window ()
1105 "Switch to another buffer and show it in another window. 1101 "Switch to another buffer and show it in another window.
1106The buffer name is selected interactively by typing a substring. 1102The buffer name is selected interactively by typing a substring.
@@ -1109,7 +1105,6 @@ For details of keybindings, do `\\[describe-function] iswitchb'."
1109 (setq iswitchb-method 'otherwindow) 1105 (setq iswitchb-method 'otherwindow)
1110 (iswitchb)) 1106 (iswitchb))
1111 1107
1112;;;###autoload
1113(defun iswitchb-display-buffer () 1108(defun iswitchb-display-buffer ()
1114 "Display a buffer in another window but don't select it. 1109 "Display a buffer in another window but don't select it.
1115The buffer name is selected interactively by typing a substring. 1110The buffer name is selected interactively by typing a substring.
@@ -1118,7 +1113,6 @@ For details of keybindings, do `\\[describe-function] iswitchb'."
1118 (setq iswitchb-method 'display) 1113 (setq iswitchb-method 'display)
1119 (iswitchb)) 1114 (iswitchb))
1120 1115
1121;;;###autoload
1122(defun iswitchb-buffer-other-frame () 1116(defun iswitchb-buffer-other-frame ()
1123 "Switch to another buffer and show it in another frame. 1117 "Switch to another buffer and show it in another frame.
1124The buffer name is selected interactively by typing a substring. 1118The buffer name is selected interactively by typing a substring.
diff --git a/lisp/makefile.nt b/lisp/makefile.nt
deleted file mode 100644
index 069ef96ac98..00000000000
--- a/lisp/makefile.nt
+++ /dev/null
@@ -1,284 +0,0 @@
1# Hacked up Nmake makefile for GNU Emacs
2# Geoff Voelker (voelker@cs.washington.edu)
3# Copyright (c) 1994 Free Software Foundation, Inc.
4#
5# This file is part of GNU Emacs.
6#
7# GNU Emacs is free software; you can redistribute it and/or modify
8# it under the terms of the GNU General Public License as published by
9# the Free Software Foundation; either version 2, or (at your option)
10# any later version.
11#
12# GNU Emacs is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with GNU Emacs; see the file COPYING. If not, write to the
19# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20# Boston, MA 02111-1307, USA.
21#
22
23!include ..\nt\makefile.def
24
25all:
26
27#lisp=$(MAKEDIR:\=/)
28lisp=.
29
30# You can specify a different executable on the make command line,
31# e.g. "make EMACS=../src/emacs ...".
32
33EMACS = ..\bin\emacs.exe
34
35# Command line flags for Emacs. This must include --multibyte,
36# otherwise some files will not compile.
37
38EMACSOPT = -batch --no-init-file --no-site-file --multibyte
39
40lisptagsfiles1 = $(lisp)/*.el
41lisptagsfiles2 = $(lisp)/*/*.el
42ETAGS = ..\lib-src\$(BLD)\etags
43
44# Files which should not be compiled.
45# - emacs-lisp/cl-specs.el: only contains `def-edebug-spec's so there's
46# no point compiling it, although it doesn't hurt.
47
48DONTCOMPILE = \
49 $(lisp)/cus-load.el \
50 $(lisp)/cus-start.el \
51 $(lisp)/emacs-lisp/cl-specs.el \
52 $(lisp)/eshell/esh-maint.el \
53 $(lisp)/eshell/esh-groups.el \
54 $(lisp)/finder-inf.el \
55 $(lisp)/forms-d2.el \
56 $(lisp)/forms-pass.el \
57 $(lisp)/generic-x.el \
58 $(lisp)/international/latin-1.el \
59 $(lisp)/international/latin-2.el \
60 $(lisp)/international/latin-3.el \
61 $(lisp)/international/latin-4.el \
62 $(lisp)/international/latin-5.el \
63 $(lisp)/international/latin-8.el \
64 $(lisp)/international/latin-9.el \
65 $(lisp)/international/mule-conf.el \
66 $(lisp)/loaddefs.el \
67 $(lisp)/loadup.el \
68 $(lisp)/mail/blessmail.el \
69 $(lisp)/patcomp.el \
70 $(lisp)/paths.el \
71 $(lisp)/play/bruce.el \
72 $(lisp)/subdirs.el \
73 $(lisp)/term/internal.el \
74 $(lisp)/term/AT386.el \
75 $(lisp)/term/apollo.el \
76 $(lisp)/term/bobcat.el \
77 $(lisp)/term/iris-ansi.el \
78 $(lisp)/term/keyswap.el \
79 $(lisp)/term/linux.el \
80 $(lisp)/term/lk201.el \
81 $(lisp)/term/news.el \
82 $(lisp)/term/vt102.el \
83 $(lisp)/term/vt125.el \
84 $(lisp)/term/vt200.el \
85 $(lisp)/term/vt201.el \
86 $(lisp)/term/vt220.el \
87 $(lisp)/term/vt240.el \
88 $(lisp)/term/vt300.el \
89 $(lisp)/term/vt320.el \
90 $(lisp)/term/vt400.el \
91 $(lisp)/term/vt420.el \
92 $(lisp)/term/wyse50.el \
93 $(lisp)/term/xterm.el \
94 $(lisp)/version.el
95
96# Files to compile before others during a bootstrap. This is done
97# to speed up the bootstrap process.
98
99COMPILE_FIRST = \
100 $(lisp)/emacs-lisp/byte-opt.el \
101 $(lisp)/emacs-lisp/bytecomp.el \
102 $(lisp)/subr.el
103
104# The actual Emacs command run in the targets below.
105
106emacs = $(EMACS) $(EMACSOPT)
107
108# Common command to find subdirectories
109
110# setwins=subdirs=`find $$wd -type d -print`; \
111# for file in $$subdirs; do \
112# case $$file in */Old | */RCS | */CVS | */CVS/* | */=* ) ;; \
113# *) wins="$$wins $$file" ;; \
114# esac; \
115# done
116
117# Have to define the list of subdirs manually
118WINS=\
119 calendar \
120 emacs-lisp \
121 emulation \
122 eshell \
123 gnus \
124 international \
125 language \
126 mail \
127 mh-e \
128 net \
129 play \
130 progmodes \
131 term \
132 textmodes
133
134doit:
135
136cus-load.el:
137 touch $@
138custom-deps: cus-load.el doit
139 @echo Directories: $(WINS)
140 $(emacs) -l cus-dep --eval "(setq find-file-hooks nil)" -f custom-make-dependencies $(lisp) $(WINS)
141
142finder-inf.el:
143 echo (provide 'finder-inf)>> $@
144
145finder-data: finder-inf.el doit
146 @echo Directories: $(WINS)
147 $(emacs) -l finder -f finder-compile-keywords-make-dist $(lisp) $(WINS)
148
149loaddefs.el:
150 echo ;;; loaddefs.el --- automatically extracted autoloads> $@
151 echo ;;; Code:>> $@
152 echo >> $@
153 echo ;;; Local Variables:>> $@
154 echo ;;; version-control: never>> $@
155 echo ;;; no-byte-compile: t>> $@
156 echo ;;; no-update-autoloads: t>> $@
157 echo ;;; End:>> $@
158 echo ;;; loaddefs.el ends here>> $@
159
160autoloads: loaddefs.el doit
161 @echo Directories: $(WINS)
162 $(emacs) -l autoload --eval "(setq find-file-hooks nil generated-autoload-file \"$(lisp)/loaddefs.el\")" -f batch-update-autoloads $(lisp) $(WINS)
163
164subdirs.el:
165 $(MAKE) $(MFLAGS) -f makefile.nt update-subdirs
166update-subdirs: doit
167 @set QWINS=
168 @for %d in ($(WINS)) do if not (%d)==(term) set QWINS=%QWINS% "%d"
169 echo ;; In load-path, after this directory should come> subdirs.el
170 echo ;; certain of its subdirectories. Here we specify them.>> subdirs.el
171 echo (normal-top-level-add-to-load-path '(%QWINS%))>> subdirs.el
172
173updates: update-subdirs autoloads finder-data custom-deps
174
175TAGS: $(lisptagsfiles1) $(lisptagsfiles2)
176 $(ETAGS) $(lisptagsfiles1) $(lisptagsfiles2)
177
178TAGS-LISP: $(lispsource)$(lisptagsfiles1) $(lispsource)$(lisptagsfiles2)
179 $(ETAGS) -o TAGS-LISP $(lispsource)$(lisptagsfiles1) $(lispsource)$(lisptagsfiles2)
180
181.SUFFIXES: .elc .el
182
183.el.elc:
184 -$(emacs) -f batch-byte-compile $<
185
186$(DONTCOMPILE:.el=.elc):
187 -$(DEL) $@
188
189# Compile all Lisp files, except those from DONTCOMPILE. This
190# compiles files unconditionally. All .elc files are made writable
191# before compilation in case we checked out read-only (CVS option -r).
192# Files MUST be compiled one by one. If we compile several files in a
193# row we can't make sure that the compilation environment is clean.
194# We also set the load-path of the Emacs used for compilation to the
195# current directory and its subdirectories, to make sure require's and
196# load's in the files being compiled find the right files.
197
198compile-files: subdirs.el doit
199# -for %f in ($(lisp) $(WINS)) do for %g in (%f\*.elc) do @attrib -r %g
200 for %f in ($(COMPILE_FIRST)) do $(emacs) -f batch-byte-compile %f
201 for %f in ($(lisp) $(WINS)) do for %g in (%f/*.el) do $(emacs) -f batch-byte-compile %f/%g
202
203# Backup compiled Lisp files in elc.tar.gz. If that file already
204# exists, make a backup of it.
205
206backup-compiled-files:
207 -mv $(lisp)/elc.tar.gz $(lisp)/elc.tar.gz~
208 -tar czf $(lisp)/elc.tar.gz $(lisp)/*.elc $(lisp)/*/*.elc
209
210# Compile Lisp files, but save old compiled files first.
211
212compile: backup-compiled-files compile-files
213
214# Recompile all Lisp files which are newer than their .elc files.
215# Note that this doesn't create .elc files. It only recompiles if an
216# .elc is present.
217
218recompile: doit
219 $(emacs) -f batch-byte-recompile-directory .
220
221# Prepare a bootstrap in the lisp subdirectory. Build loaddefs.el,
222# because it's not sure it's up-to-date, and if it's not, that might
223# lead to errors during the bootstrap because something fails to
224# autoload as expected. Remove compiled Lisp files so that
225# bootstrap-emacs will be built from sources only.
226
227bootstrap-clean:
228 if exist $(EMACS) $(MAKE) $(MFLAGS) -f makefile.nt autoloads
229 -for %f in ($(lisp) $(WINS)) do for %g in (%f\*.elc) do @$(DEL) %g
230
231# Generate/update files for the bootstrap process.
232
233bootstrap: autoloads compile-files custom-deps
234
235#
236# Assuming INSTALL_DIR is defined, copy the elisp files to it
237# Windows 95 makes this harder than it should be.
238#
239install:
240 - mkdir $(INSTALL_DIR)\lisp
241 - $(DEL) .\same-dir.tst
242 - $(DEL) $(INSTALL_DIR)\lisp\same-dir.tst
243 echo SameDirTest > $(INSTALL_DIR)\lisp\same-dir.tst
244!ifdef COPY_LISP_SOURCE
245 if not exist .\same-dir.tst $(CP_DIR) . $(INSTALL_DIR)\lisp
246!else
247 if not exist .\same-dir.tst $(CP_DIR) *.elc $(INSTALL_DIR)\lisp
248 if not exist .\same-dir.tst $(CP) cus-load.el $(INSTALL_DIR)\lisp
249 if not exist .\same-dir.tst $(CP) cus-start.el $(INSTALL_DIR)\lisp
250 if not exist .\same-dir.tst $(CP) emacs-lisp\cl-specs.el $(INSTALL_DIR)\lisp\emacs-lisp
251 if not exist .\same-dir.tst $(CP) eshell\esh-maint.el $(INSTALL_DIR)\lisp\eshell
252 if not exist .\same-dir.tst $(CP) eshell\esh-groups.el $(INSTALL_DIR)\lisp\eshell
253 if not exist .\same-dir.tst $(CP) finder-inf.el $(INSTALL_DIR)\lisp
254 if not exist .\same-dir.tst $(CP) forms*.el $(INSTALL_DIR)\lisp
255 if not exist .\same-dir.tst $(CP) generic-x.el $(INSTALL_DIR)\lisp
256 if not exist .\same-dir.tst $(CP) patcomp.el $(INSTALL_DIR)\lisp
257 if not exist .\same-dir.tst $(CP) subdirs.el $(INSTALL_DIR)\lisp
258 if not exist .\same-dir.tst $(CP) version.el $(INSTALL_DIR)\lisp
259 if not exist .\same-dir.tst $(CP) mail\blessmail.el $(INSTALL_DIR)\lisp\mail
260 if not exist .\same-dir.tst $(CP) play\bruce.el $(INSTALL_DIR)\lisp\play
261 if not exist .\same-dir.tst $(CP) international\latin-*.el $(INSTALL_DIR)\lisp\international
262 if not exist .\same-dir.tst $(CP) international\mule-conf.el $(INSTALL_DIR)\lisp\international
263 - $(DEL) $(INSTALL_DIR)\lisp\same-dir.tst
264!endif
265
266#
267# Maintenance
268#
269clean:
270 - $(DEL) *~ term\*~
271 - $(DEL) *.orig *.rej *.crlf
272 - $(DEL) emacs-lisp\*.orig emacs-lisp\*.rej emacs-lisp\*.crlf
273 - $(DEL) emulation\*.orig emulation\*.rej emulation\*.crlf
274 - $(DEL) gnus\*.orig gnus\*.rej gnus\*.crlf
275 - $(DEL) international\*.orig international\*.rej international\*.crlf
276 - $(DEL) language\*.orig language\*.rej language\*.crlf
277 - $(DEL) mail\*.orig mail\*.rej mail\*.crlf
278 - $(DEL) play\*.orig play\*.rej play\*.crlf
279 - $(DEL) progmodes\*.orig progmodes\*.rej progmodes\*.crlf
280 - $(DEL) term\*.orig term\*.rej term\*.crlf
281 - $(DEL) textmodes\*.orig textmodes\*.rej textmodes\*.crlf
282 - $(DEL_TREE) deleted
283
284# arch-tag: 01ddeb44-fb4c-4366-8478-4a6c21a68fb3
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index 4c6f88813c0..ec381ad8a15 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -944,6 +944,7 @@ Returns the compilation buffer created."
944 ;; Fake modeline display as if `start-process' were run. 944 ;; Fake modeline display as if `start-process' were run.
945 (setq mode-line-process ":run") 945 (setq mode-line-process ":run")
946 (force-mode-line-update) 946 (force-mode-line-update)
947 (sit-for 0) ; Force redisplay
947 (let ((status (call-process shell-file-name nil outbuf nil "-c" 948 (let ((status (call-process shell-file-name nil outbuf nil "-c"
948 command))) 949 command)))
949 (cond ((numberp status) 950 (cond ((numberp status)
@@ -958,6 +959,10 @@ exited abnormally with code %d\n"
958 (concat status "\n"))) 959 (concat status "\n")))
959 (t 960 (t
960 (compilation-handle-exit 'bizarre status status)))) 961 (compilation-handle-exit 'bizarre status status))))
962 ;; Without async subprocesses, the buffer is not yet
963 ;; fontified, so fontify it now.
964 (let ((font-lock-verbose nil)) ; shut up font-lock messages
965 (font-lock-fontify-buffer))
961 (message "Executing `%s'...done" command))) 966 (message "Executing `%s'...done" command)))
962 (if (buffer-local-value 'compilation-scroll-output outbuf) 967 (if (buffer-local-value 'compilation-scroll-output outbuf)
963 (save-selected-window 968 (save-selected-window
@@ -1095,10 +1100,6 @@ Runs `compilation-mode-hook' with `run-hooks' (which see)."
1095 (set (make-local-variable 'page-delimiter) 1100 (set (make-local-variable 'page-delimiter)
1096 compilation-page-delimiter) 1101 compilation-page-delimiter)
1097 (compilation-setup) 1102 (compilation-setup)
1098 ;; note that compilation-next-error-function is for interfacing
1099 ;; with the next-error function in simple.el, and it's only
1100 ;; coincidentally named similarly to compilation-next-error
1101 (setq next-error-function 'compilation-next-error-function)
1102 (run-mode-hooks 'compilation-mode-hook)) 1103 (run-mode-hooks 'compilation-mode-hook))
1103 1104
1104(defmacro define-compilation-mode (mode name doc &rest body) 1105(defmacro define-compilation-mode (mode name doc &rest body)
@@ -1150,6 +1151,10 @@ variable exists."
1150 "Marker to the location from where the next error will be found. 1151 "Marker to the location from where the next error will be found.
1151The global commands next/previous/first-error/goto-error use this.") 1152The global commands next/previous/first-error/goto-error use this.")
1152 1153
1154(defvar compilation-messages-start nil
1155 "Buffer position of the beginning of the compilation messages.
1156If nil, use the beginning of buffer.")
1157
1153;; A function name can't be a hook, must be something with a value. 1158;; A function name can't be a hook, must be something with a value.
1154(defconst compilation-turn-on-font-lock 'turn-on-font-lock) 1159(defconst compilation-turn-on-font-lock 'turn-on-font-lock)
1155 1160
@@ -1158,8 +1163,13 @@ The global commands next/previous/first-error/goto-error use this.")
1158Optional argument MINOR indicates this is called from 1163Optional argument MINOR indicates this is called from
1159`compilation-minor-mode'." 1164`compilation-minor-mode'."
1160 (make-local-variable 'compilation-current-error) 1165 (make-local-variable 'compilation-current-error)
1166 (make-local-variable 'compilation-messages-start)
1161 (make-local-variable 'compilation-error-screen-columns) 1167 (make-local-variable 'compilation-error-screen-columns)
1162 (make-local-variable 'overlay-arrow-position) 1168 (make-local-variable 'overlay-arrow-position)
1169 ;; Note that compilation-next-error-function is for interfacing
1170 ;; with the next-error function in simple.el, and it's only
1171 ;; coincidentally named similarly to compilation-next-error.
1172 (setq next-error-function 'compilation-next-error-function)
1163 (set (make-local-variable 'font-lock-extra-managed-props) 1173 (set (make-local-variable 'font-lock-extra-managed-props)
1164 '(directory message help-echo mouse-face debug)) 1174 '(directory message help-echo mouse-face debug))
1165 (set (make-local-variable 'compilation-locs) 1175 (set (make-local-variable 'compilation-locs)
@@ -1404,16 +1414,16 @@ Use this command in a compilation log buffer. Sets the mark at point there."
1404 (let* ((columns compilation-error-screen-columns) ; buffer's local value 1414 (let* ((columns compilation-error-screen-columns) ; buffer's local value
1405 (last 1) 1415 (last 1)
1406 (loc (compilation-next-error (or n 1) nil 1416 (loc (compilation-next-error (or n 1) nil
1407 (or compilation-current-error (point-min)))) 1417 (or compilation-current-error
1418 compilation-messages-start
1419 (point-min))))
1408 (end-loc (nth 2 loc)) 1420 (end-loc (nth 2 loc))
1409 (marker (point-marker))) 1421 (marker (point-marker)))
1410 (setq compilation-current-error (point-marker) 1422 (setq compilation-current-error (point-marker)
1411 overlay-arrow-position 1423 overlay-arrow-position
1412 (if (bolp) 1424 (if (bolp)
1413 compilation-current-error 1425 compilation-current-error
1414 (save-excursion 1426 (copy-marker (line-beginning-position)))
1415 (beginning-of-line)
1416 (point-marker)))
1417 loc (car loc)) 1427 loc (car loc))
1418 ;; If loc contains no marker, no error in that file has been visited. If 1428 ;; If loc contains no marker, no error in that file has been visited. If
1419 ;; the marker is invalid the buffer has been killed. So, recalculate all 1429 ;; the marker is invalid the buffer has been killed. So, recalculate all
@@ -1447,6 +1457,10 @@ Use this command in a compilation log buffer. Sets the mark at point there."
1447 (compilation-goto-locus marker (nth 3 loc) (nth 3 end-loc)) 1457 (compilation-goto-locus marker (nth 3 loc) (nth 3 end-loc))
1448 (setcdr (nthcdr 3 loc) t))) ; Set this one as visited. 1458 (setcdr (nthcdr 3 loc) t))) ; Set this one as visited.
1449 1459
1460(defvar compilation-gcpro nil
1461 "Internal variable used to keep some values from being GC'd.")
1462(make-variable-buffer-local 'compilation-gcpro)
1463
1450(defun compilation-fake-loc (marker file &optional line col) 1464(defun compilation-fake-loc (marker file &optional line col)
1451 "Preassociate MARKER with FILE. 1465 "Preassociate MARKER with FILE.
1452FILE should be ABSOLUTE-FILENAME or (RELATIVE-FILENAME . DIRNAME). 1466FILE should be ABSOLUTE-FILENAME or (RELATIVE-FILENAME . DIRNAME).
@@ -1466,6 +1480,11 @@ call this several times, once each for the last line of one
1466region and the first line of the next region." 1480region and the first line of the next region."
1467 (or (consp file) (setq file (list file))) 1481 (or (consp file) (setq file (list file)))
1468 (setq file (compilation-get-file-structure file)) 1482 (setq file (compilation-get-file-structure file))
1483 ;; Between the current call to compilation-fake-loc and the first occurrence
1484 ;; of an error message referring to `file', the data is only kept is the
1485 ;; weak hash-table compilation-locs, so we need to prevent this entry
1486 ;; in compilation-locs from being GC'd away. --Stef
1487 (push file compilation-gcpro)
1469 (let ((loc (compilation-assq (or line 1) (cdr file)))) 1488 (let ((loc (compilation-assq (or line 1) (cdr file))))
1470 (setq loc (compilation-assq col loc)) 1489 (setq loc (compilation-assq col loc))
1471 (if (cdr loc) 1490 (if (cdr loc)
@@ -1715,10 +1734,12 @@ FILE should be (ABSOLUTE-FILENAME) or (RELATIVE-FILENAME . DIRNAME)."
1715 (goto-char limit) 1734 (goto-char limit)
1716 nil) 1735 nil)
1717 1736
1737;; Beware: this is not only compatiblity code. New code stil uses it. --Stef
1718(defun compilation-forget-errors () 1738(defun compilation-forget-errors ()
1719 ;; In case we hit the same file/line specs, we want to recompute a new 1739 ;; In case we hit the same file/line specs, we want to recompute a new
1720 ;; marker for them, so flush our cache. 1740 ;; marker for them, so flush our cache.
1721 (setq compilation-locs (make-hash-table :test 'equal :weakness 'value)) 1741 (setq compilation-locs (make-hash-table :test 'equal :weakness 'value))
1742 (setq compilation-gcpro nil)
1722 ;; FIXME: the old code reset the directory-stack, so maybe we should 1743 ;; FIXME: the old code reset the directory-stack, so maybe we should
1723 ;; put a `directory change' marker of some sort, but where? -stef 1744 ;; put a `directory change' marker of some sort, but where? -stef
1724 ;; 1745 ;;
@@ -1730,9 +1751,19 @@ FILE should be (ABSOLUTE-FILENAME) or (RELATIVE-FILENAME . DIRNAME)."
1730 ;; something equivalent to point-max. So we speculatively move 1751 ;; something equivalent to point-max. So we speculatively move
1731 ;; compilation-current-error to point-max (since the external package 1752 ;; compilation-current-error to point-max (since the external package
1732 ;; won't know that it should do it). --stef 1753 ;; won't know that it should do it). --stef
1733 (setq compilation-current-error (point-max))) 1754 (setq compilation-current-error nil)
1755 (let* ((proc (get-buffer-process (current-buffer)))
1756 (mark (if proc (process-mark proc)))
1757 (pos (or mark (point-max))))
1758 (setq compilation-messages-start
1759 ;; In the future, ignore the text already present in the buffer.
1760 ;; Since many process filter functions insert before markers,
1761 ;; we need to put ours just before the insertion point rather
1762 ;; than at the insertion point. If that's not possible, then
1763 ;; don't use a marker. --Stef
1764 (if (> pos (point-min)) (copy-marker (1- pos)) pos))))
1734 1765
1735(provide 'compile) 1766(provide 'compile)
1736 1767
1737;;; arch-tag: 12465727-7382-4f72-b234-79855a00dd8c 1768;; arch-tag: 12465727-7382-4f72-b234-79855a00dd8c
1738;;; compile.el ends here 1769;;; compile.el ends here
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el
index 2e836fb82b2..fc3196cdb4f 100644
--- a/lisp/progmodes/gdb-ui.el
+++ b/lisp/progmodes/gdb-ui.el
@@ -217,9 +217,10 @@ speedbar."
217 (gdb-enqueue-input 217 (gdb-enqueue-input
218 (list (concat "server interpreter mi \"-var-create - * " expr "\"\n") 218 (list (concat "server interpreter mi \"-var-create - * " expr "\"\n")
219 `(lambda () (gdb-var-create-handler ,expr)))))) 219 `(lambda () (gdb-var-create-handler ,expr))))))
220 (select-window (get-buffer-window gud-comint-buffer))) 220 (select-window (get-buffer-window gud-comint-buffer 'visible)))
221 221
222(defun gdb-goto-info () 222(defun gdb-goto-info ()
223 "Go to Emacs info node: GDB Graphical Interface."
223 (interactive) 224 (interactive)
224 (select-frame (make-frame)) 225 (select-frame (make-frame))
225 (require 'info) 226 (require 'info)
@@ -1117,7 +1118,7 @@ static char *magick[] = {
1117 (if (gdb-get-buffer 'gdb-assembler-buffer) (gdb-assembler-custom))) 1118 (if (gdb-get-buffer 'gdb-assembler-buffer) (gdb-assembler-custom)))
1118 1119
1119(defun gdb-mouse-toggle-breakpoint (event) 1120(defun gdb-mouse-toggle-breakpoint (event)
1120 "Toggle breakpoint with mouse click in left margin." 1121 "Toggle breakpoint in left fringe/margin with mouse click"
1121 (interactive "e") 1122 (interactive "e")
1122 (mouse-minibuffer-check event) 1123 (mouse-minibuffer-check event)
1123 (let ((posn (event-end event))) 1124 (let ((posn (event-end event)))
@@ -1137,6 +1138,7 @@ static char *magick[] = {
1137 (concat "*breakpoints of " (gdb-get-target-string) "*"))) 1138 (concat "*breakpoints of " (gdb-get-target-string) "*")))
1138 1139
1139(defun gdb-display-breakpoints-buffer () 1140(defun gdb-display-breakpoints-buffer ()
1141 "Display status of user-settable breakpoints."
1140 (interactive) 1142 (interactive)
1141 (gdb-display-buffer 1143 (gdb-display-buffer
1142 (gdb-get-create-buffer 'gdb-breakpoints-buffer))) 1144 (gdb-get-create-buffer 'gdb-breakpoints-buffer)))
@@ -1149,6 +1151,7 @@ static char *magick[] = {
1149 (minibuffer . nil))) 1151 (minibuffer . nil)))
1150 1152
1151(defun gdb-frame-breakpoints-buffer () 1153(defun gdb-frame-breakpoints-buffer ()
1154 "Display status of user-settable breakpoints in a new frame."
1152 (interactive) 1155 (interactive)
1153 (select-frame (make-frame gdb-frame-parameters)) 1156 (select-frame (make-frame gdb-frame-parameters))
1154 (switch-to-buffer (gdb-get-create-buffer 'gdb-breakpoints-buffer)) 1157 (switch-to-buffer (gdb-get-create-buffer 'gdb-breakpoints-buffer))
@@ -1205,8 +1208,7 @@ static char *magick[] = {
1205 (list (concat "server delete " (match-string 1) "\n") 'ignore)))) 1208 (list (concat "server delete " (match-string 1) "\n") 'ignore))))
1206 1209
1207(defun gdb-goto-breakpoint () 1210(defun gdb-goto-breakpoint ()
1208 "Display the file in the source buffer at the breakpoint specified on the 1211 "Display the breakpoint location specified at current line."
1209current line."
1210 (interactive) 1212 (interactive)
1211 (save-excursion 1213 (save-excursion
1212 (beginning-of-line 1) 1214 (beginning-of-line 1)
@@ -1216,14 +1218,16 @@ current line."
1216 (let ((line (match-string 2)) 1218 (let ((line (match-string 2))
1217 (file (match-string 1))) 1219 (file (match-string 1)))
1218 (save-selected-window 1220 (save-selected-window
1219 (gdb-display-buffer (find-file-noselect 1221 (let* ((buf (find-file-noselect (if (file-exists-p file)
1220 (if (file-exists-p file) 1222 file
1221 file 1223 (expand-file-name file gdb-cdir))))
1222 (expand-file-name file gdb-cdir)))) 1224 (window (gdb-display-buffer buf)))
1223 (goto-line (string-to-number line)))))) 1225 (with-current-buffer buf
1226 (goto-line (string-to-number line))
1227 (set-window-point window (point))))))))
1224 1228
1225(defun gdb-mouse-goto-breakpoint (event) 1229(defun gdb-mouse-goto-breakpoint (event)
1226 "Display the file in the source buffer at the selected breakpoint." 1230 "Display the breakpoint location that you click on."
1227 (interactive "e") 1231 (interactive "e")
1228 (mouse-set-point event) 1232 (mouse-set-point event)
1229 (gdb-goto-breakpoint)) 1233 (gdb-goto-breakpoint))
@@ -1266,11 +1270,13 @@ current line."
1266 (concat "*stack frames of " (gdb-get-target-string) "*"))) 1270 (concat "*stack frames of " (gdb-get-target-string) "*")))
1267 1271
1268(defun gdb-display-stack-buffer () 1272(defun gdb-display-stack-buffer ()
1273 "Display backtrace of current stack."
1269 (interactive) 1274 (interactive)
1270 (gdb-display-buffer 1275 (gdb-display-buffer
1271 (gdb-get-create-buffer 'gdb-stack-buffer))) 1276 (gdb-get-create-buffer 'gdb-stack-buffer)))
1272 1277
1273(defun gdb-frame-stack-buffer () 1278(defun gdb-frame-stack-buffer ()
1279 "Display backtrace of current stack in a new frame."
1274 (interactive) 1280 (interactive)
1275 (select-frame (make-frame gdb-frame-parameters)) 1281 (select-frame (make-frame gdb-frame-parameters))
1276 (switch-to-buffer (gdb-get-create-buffer 'gdb-stack-buffer)) 1282 (switch-to-buffer (gdb-get-create-buffer 'gdb-stack-buffer))
@@ -1301,16 +1307,14 @@ current line."
1301 n))) 1307 n)))
1302 1308
1303(defun gdb-frames-select () 1309(defun gdb-frames-select ()
1304 "Make the frame on the current line become the current frame and display the 1310 "Select the frame and display the relevant source."
1305source in the source buffer."
1306 (interactive) 1311 (interactive)
1307 (gdb-enqueue-input 1312 (gdb-enqueue-input
1308 (list (concat "server frame " (gdb-get-frame-number) "\n") 'ignore)) 1313 (list (concat "server frame " (gdb-get-frame-number) "\n") 'ignore))
1309 (gud-display-frame)) 1314 (gud-display-frame))
1310 1315
1311(defun gdb-frames-mouse-select (event) 1316(defun gdb-frames-mouse-select (event)
1312 "Make the selected frame become the current frame and display the source in 1317 "Select the frame you click on and display the relevant source."
1313the source buffer."
1314 (interactive "e") 1318 (interactive "e")
1315 (mouse-set-point event) 1319 (mouse-set-point event)
1316 (gdb-frames-select)) 1320 (gdb-frames-select))
@@ -1343,11 +1347,13 @@ the source buffer."
1343 (concat "*threads of " (gdb-get-target-string) "*"))) 1347 (concat "*threads of " (gdb-get-target-string) "*")))
1344 1348
1345(defun gdb-display-threads-buffer () 1349(defun gdb-display-threads-buffer ()
1350 "Display IDs of currently known threads."
1346 (interactive) 1351 (interactive)
1347 (gdb-display-buffer 1352 (gdb-display-buffer
1348 (gdb-get-create-buffer 'gdb-threads-buffer))) 1353 (gdb-get-create-buffer 'gdb-threads-buffer)))
1349 1354
1350(defun gdb-frame-threads-buffer () 1355(defun gdb-frame-threads-buffer ()
1356 "Display IDs of currently known threads in a new frame."
1351 (interactive) 1357 (interactive)
1352 (select-frame (make-frame gdb-frame-parameters)) 1358 (select-frame (make-frame gdb-frame-parameters))
1353 (switch-to-buffer (gdb-get-create-buffer 'gdb-threads-buffer)) 1359 (switch-to-buffer (gdb-get-create-buffer 'gdb-threads-buffer))
@@ -1376,16 +1382,14 @@ the source buffer."
1376 (match-string-no-properties 1))) 1382 (match-string-no-properties 1)))
1377 1383
1378(defun gdb-threads-select () 1384(defun gdb-threads-select ()
1379 "Make the thread on the current line become the current thread and display the 1385 "Select the thread and display the relevant source."
1380source in the source buffer."
1381 (interactive) 1386 (interactive)
1382 (gdb-enqueue-input 1387 (gdb-enqueue-input
1383 (list (concat "thread " (gdb-get-thread-number) "\n") 'ignore)) 1388 (list (concat "thread " (gdb-get-thread-number) "\n") 'ignore))
1384 (gud-display-frame)) 1389 (gud-display-frame))
1385 1390
1386(defun gdb-threads-mouse-select (event) 1391(defun gdb-threads-mouse-select (event)
1387 "Make the selected frame become the current frame and display the source in 1392 "Select the thread you click on and display the relevant source."
1388the source buffer."
1389 (interactive "e") 1393 (interactive "e")
1390 (mouse-set-point event) 1394 (mouse-set-point event)
1391 (gdb-threads-select)) 1395 (gdb-threads-select))
@@ -1425,11 +1429,13 @@ the source buffer."
1425 (concat "*registers of " (gdb-get-target-string) "*"))) 1429 (concat "*registers of " (gdb-get-target-string) "*")))
1426 1430
1427(defun gdb-display-registers-buffer () 1431(defun gdb-display-registers-buffer ()
1432 "Display integer register contents."
1428 (interactive) 1433 (interactive)
1429 (gdb-display-buffer 1434 (gdb-display-buffer
1430 (gdb-get-create-buffer 'gdb-registers-buffer))) 1435 (gdb-get-create-buffer 'gdb-registers-buffer)))
1431 1436
1432(defun gdb-frame-registers-buffer () 1437(defun gdb-frame-registers-buffer ()
1438 "Display integer register contents in a new frame."
1433 (interactive) 1439 (interactive)
1434 (select-frame (make-frame gdb-frame-parameters)) 1440 (select-frame (make-frame gdb-frame-parameters))
1435 (switch-to-buffer (gdb-get-create-buffer 'gdb-registers-buffer)) 1441 (switch-to-buffer (gdb-get-create-buffer 'gdb-registers-buffer))
@@ -1497,11 +1503,13 @@ the source buffer."
1497 (concat "*locals of " (gdb-get-target-string) "*"))) 1503 (concat "*locals of " (gdb-get-target-string) "*")))
1498 1504
1499(defun gdb-display-locals-buffer () 1505(defun gdb-display-locals-buffer ()
1506 "Display local variables of current stack and their values."
1500 (interactive) 1507 (interactive)
1501 (gdb-display-buffer 1508 (gdb-display-buffer
1502 (gdb-get-create-buffer 'gdb-locals-buffer))) 1509 (gdb-get-create-buffer 'gdb-locals-buffer)))
1503 1510
1504(defun gdb-frame-locals-buffer () 1511(defun gdb-frame-locals-buffer ()
1512 "Display local variables of current stack and their values in a new frame."
1505 (interactive) 1513 (interactive)
1506 (select-frame (make-frame gdb-frame-parameters)) 1514 (select-frame (make-frame gdb-frame-parameters))
1507 (switch-to-buffer (gdb-get-create-buffer 'gdb-locals-buffer)) 1515 (switch-to-buffer (gdb-get-create-buffer 'gdb-locals-buffer))
@@ -1524,7 +1532,7 @@ the source buffer."
1524 #'(lambda (win) 1532 #'(lambda (win)
1525 (if (eq gud-comint-buffer (window-buffer win)) 1533 (if (eq gud-comint-buffer (window-buffer win))
1526 (set-window-dedicated-p win t)))) 1534 (set-window-dedicated-p win t))))
1527 (setq answer (get-buffer-window buf)) 1535 (setq answer (get-buffer-window buf 'visible))
1528 (if (not answer) 1536 (if (not answer)
1529 (let ((window (get-lru-window 'visible))) 1537 (let ((window (get-lru-window 'visible)))
1530 (if window 1538 (if window
@@ -1548,7 +1556,7 @@ the source buffer."
1548 (if (eq gdb-selected-view 'source) 1556 (if (eq gdb-selected-view 'source)
1549 (gdb-display-buffer buffer) 1557 (gdb-display-buffer buffer)
1550 (gdb-display-buffer (gdb-get-buffer 'gdb-assembler-buffer))) 1558 (gdb-display-buffer (gdb-get-buffer 'gdb-assembler-buffer)))
1551 (get-buffer-window buffer)) 1559 (get-buffer-window buffer 'visible))
1552 1560
1553 1561
1554;;; Shared keymap initialization: 1562;;; Shared keymap initialization:
@@ -1557,11 +1565,11 @@ the source buffer."
1557 (define-key gud-menu-map [frames] 1565 (define-key gud-menu-map [frames]
1558 `(menu-item "GDB-Frames" ,menu :visible (eq gud-minor-mode 'gdba))) 1566 `(menu-item "GDB-Frames" ,menu :visible (eq gud-minor-mode 'gdba)))
1559 (define-key menu [gdb] '("Gdb" . gdb-frame-gdb-buffer)) 1567 (define-key menu [gdb] '("Gdb" . gdb-frame-gdb-buffer))
1560 (define-key menu [locals] '("Locals" . gdb-frame-locals-buffer)) 1568 (define-key menu [threads] '("Threads" . gdb-frame-threads-buffer))
1561 (define-key menu [registers] '("Registers" . gdb-frame-registers-buffer)) 1569 (define-key menu [registers] '("Registers" . gdb-frame-registers-buffer))
1570 (define-key menu [locals] '("Locals" . gdb-frame-locals-buffer))
1562 (define-key menu [frames] '("Stack" . gdb-frame-stack-buffer)) 1571 (define-key menu [frames] '("Stack" . gdb-frame-stack-buffer))
1563 (define-key menu [breakpoints] '("Breakpoints" . gdb-frame-breakpoints-buffer)) 1572 (define-key menu [breakpoints] '("Breakpoints" . gdb-frame-breakpoints-buffer))
1564 (define-key menu [threads] '("Threads" . gdb-frame-threads-buffer))
1565; (define-key menu [assembler] '("Machine" . gdb-frame-assembler-buffer)) 1573; (define-key menu [assembler] '("Machine" . gdb-frame-assembler-buffer))
1566) 1574)
1567 1575
@@ -1569,11 +1577,11 @@ the source buffer."
1569 (define-key gud-menu-map [displays] 1577 (define-key gud-menu-map [displays]
1570 `(menu-item "GDB-Windows" ,menu :visible (eq gud-minor-mode 'gdba))) 1578 `(menu-item "GDB-Windows" ,menu :visible (eq gud-minor-mode 'gdba)))
1571 (define-key menu [gdb] '("Gdb" . gdb-display-gdb-buffer)) 1579 (define-key menu [gdb] '("Gdb" . gdb-display-gdb-buffer))
1572 (define-key menu [locals] '("Locals" . gdb-display-locals-buffer)) 1580 (define-key menu [threads] '("Threads" . gdb-display-threads-buffer))
1573 (define-key menu [registers] '("Registers" . gdb-display-registers-buffer)) 1581 (define-key menu [registers] '("Registers" . gdb-display-registers-buffer))
1582 (define-key menu [locals] '("Locals" . gdb-display-locals-buffer))
1574 (define-key menu [frames] '("Stack" . gdb-display-stack-buffer)) 1583 (define-key menu [frames] '("Stack" . gdb-display-stack-buffer))
1575 (define-key menu [breakpoints] '("Breakpoints" . gdb-display-breakpoints-buffer)) 1584 (define-key menu [breakpoints] '("Breakpoints" . gdb-display-breakpoints-buffer))
1576 (define-key menu [threads] '("Threads" . gdb-display-threads-buffer))
1577; (define-key menu [assembler] '("Machine" . gdb-display-assembler-buffer)) 1585; (define-key menu [assembler] '("Machine" . gdb-display-assembler-buffer))
1578) 1586)
1579 1587
@@ -1601,12 +1609,14 @@ the source buffer."
1601 "Display locals, stack and breakpoint information"))) 1609 "Display locals, stack and breakpoint information")))
1602 1610
1603(defun gdb-frame-gdb-buffer () 1611(defun gdb-frame-gdb-buffer ()
1612 "Display GUD buffer in a new frame."
1604 (interactive) 1613 (interactive)
1605 (select-frame (make-frame gdb-frame-parameters)) 1614 (select-frame (make-frame gdb-frame-parameters))
1606 (switch-to-buffer (gdb-get-create-buffer 'gdba)) 1615 (switch-to-buffer (gdb-get-create-buffer 'gdba))
1607 (set-window-dedicated-p (selected-window) t)) 1616 (set-window-dedicated-p (selected-window) t))
1608 1617
1609(defun gdb-display-gdb-buffer () 1618(defun gdb-display-gdb-buffer ()
1619 "Display GUD buffer."
1610 (interactive) 1620 (interactive)
1611 (gdb-display-buffer 1621 (gdb-display-buffer
1612 (gdb-get-create-buffer 'gdba))) 1622 (gdb-get-create-buffer 'gdba)))
@@ -1614,6 +1624,7 @@ the source buffer."
1614(defvar gdb-main-file nil "Source file from which program execution begins.") 1624(defvar gdb-main-file nil "Source file from which program execution begins.")
1615 1625
1616(defun gdb-view-source-function () 1626(defun gdb-view-source-function ()
1627 "Select source view."
1617 (interactive) 1628 (interactive)
1618 (if gdb-view-source 1629 (if gdb-view-source
1619 (gdb-display-buffer 1630 (gdb-display-buffer
@@ -1623,6 +1634,7 @@ the source buffer."
1623 (setq gdb-selected-view 'source)) 1634 (setq gdb-selected-view 'source))
1624 1635
1625(defun gdb-view-assembler() 1636(defun gdb-view-assembler()
1637 "Select disassembly view."
1626 (interactive) 1638 (interactive)
1627 (gdb-display-buffer (gdb-get-create-buffer 'gdb-assembler-buffer)) 1639 (gdb-display-buffer (gdb-get-create-buffer 'gdb-assembler-buffer))
1628 (gdb-invalidate-assembler) 1640 (gdb-invalidate-assembler)
@@ -1805,11 +1817,10 @@ BUFFER nil or omitted means use the current buffer."
1805 (when (< left-margin-width 2) 1817 (when (< left-margin-width 2)
1806 (save-current-buffer 1818 (save-current-buffer
1807 (setq left-margin-width 2) 1819 (setq left-margin-width 2)
1808 (if (get-buffer-window (current-buffer)) 1820 (if (get-buffer-window (current-buffer) 'visible)
1809 (set-window-margins (get-buffer-window 1821 (set-window-margins
1810 (current-buffer)) 1822 (get-buffer-window (current-buffer) 'visible)
1811 left-margin-width 1823 left-margin-width right-margin-width))))
1812 right-margin-width))))
1813 (put-image 1824 (put-image
1814 (if enabled 1825 (if enabled
1815 (or breakpoint-enabled-icon 1826 (or breakpoint-enabled-icon
@@ -1833,11 +1844,10 @@ BUFFER nil or omitted means use the current buffer."
1833 (when (< left-margin-width 2) 1844 (when (< left-margin-width 2)
1834 (save-current-buffer 1845 (save-current-buffer
1835 (setq left-margin-width 2) 1846 (setq left-margin-width 2)
1836 (if (get-buffer-window (current-buffer)) 1847 (if (get-buffer-window (current-buffer) 'visible)
1837 (set-window-margins (get-buffer-window 1848 (set-window-margins
1838 (current-buffer)) 1849 (get-buffer-window (current-buffer) 'visible)
1839 left-margin-width 1850 left-margin-width right-margin-width))))
1840 right-margin-width))))
1841 (gdb-put-string (if enabled "B" "b") (1+ start))))) 1851 (gdb-put-string (if enabled "B" "b") (1+ start)))))
1842 1852
1843(defun gdb-remove-breakpoint-icons (start end &optional remove-margin) 1853(defun gdb-remove-breakpoint-icons (start end &optional remove-margin)
@@ -1846,11 +1856,10 @@ BUFFER nil or omitted means use the current buffer."
1846 (remove-images start end)) 1856 (remove-images start end))
1847 (when remove-margin 1857 (when remove-margin
1848 (setq left-margin-width 0) 1858 (setq left-margin-width 0)
1849 (if (get-buffer-window (current-buffer)) 1859 (if (get-buffer-window (current-buffer) 'visible)
1850 (set-window-margins (get-buffer-window 1860 (set-window-margins
1851 (current-buffer)) 1861 (get-buffer-window (current-buffer) 'visible)
1852 left-margin-width 1862 left-margin-width right-margin-width))))
1853 right-margin-width))))
1854 1863
1855 1864
1856;; 1865;;
@@ -1901,7 +1910,7 @@ BUFFER nil or omitted means use the current buffer."
1901 (if (re-search-forward address nil t) 1910 (if (re-search-forward address nil t)
1902 (gdb-put-breakpoint-icon (eq flag ?y)))))))) 1911 (gdb-put-breakpoint-icon (eq flag ?y))))))))
1903 (if (not (equal gdb-current-address "main")) 1912 (if (not (equal gdb-current-address "main"))
1904 (set-window-point (get-buffer-window buffer) pos)))) 1913 (set-window-point (get-buffer-window buffer 'visible) pos))))
1905 1914
1906(defvar gdb-assembler-mode-map 1915(defvar gdb-assembler-mode-map
1907 (let ((map (make-sparse-keymap))) 1916 (let ((map (make-sparse-keymap)))
@@ -1927,11 +1936,13 @@ BUFFER nil or omitted means use the current buffer."
1927 (concat "*Machine Code " (gdb-get-target-string) "*"))) 1936 (concat "*Machine Code " (gdb-get-target-string) "*")))
1928 1937
1929(defun gdb-display-assembler-buffer () 1938(defun gdb-display-assembler-buffer ()
1939 "Display disassembly view."
1930 (interactive) 1940 (interactive)
1931 (gdb-display-buffer 1941 (gdb-display-buffer
1932 (gdb-get-create-buffer 'gdb-assembler-buffer))) 1942 (gdb-get-create-buffer 'gdb-assembler-buffer)))
1933 1943
1934(defun gdb-frame-assembler-buffer () 1944(defun gdb-frame-assembler-buffer ()
1945 "Display disassembly view in a new frame."
1935 (interactive) 1946 (interactive)
1936 (select-frame (make-frame gdb-frame-parameters)) 1947 (select-frame (make-frame gdb-frame-parameters))
1937 (switch-to-buffer (gdb-get-create-buffer 'gdb-assembler-buffer)) 1948 (switch-to-buffer (gdb-get-create-buffer 'gdb-assembler-buffer))
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el
index 9eaba9027b8..0fdaf652e50 100644
--- a/lisp/progmodes/python.el
+++ b/lisp/progmodes/python.el
@@ -46,19 +46,18 @@
46;; I've installed a minor mode to do the job properly in Emacs 22. 46;; I've installed a minor mode to do the job properly in Emacs 22.
47;; Other things seem more natural or canonical here, e.g. the 47;; Other things seem more natural or canonical here, e.g. the
48;; {beginning,end}-of-defun implementation dealing with nested 48;; {beginning,end}-of-defun implementation dealing with nested
49;; definitions, and the inferior mode following `cmuscheme'. (The 49;; definitions, and the inferior mode following `cmuscheme'. The
50;; inferior mode should be able to find the source of errors from 50;; inferior mode can find the source of errors from
51;; `python-send-region' & al via `compilation-minor-mode', but I can't 51;; `python-send-region' & al via `compilation-minor-mode'. Successive
52;; make that work with the current (March '04) compile.el.) 52;; TABs cycle between possible indentations for the line. There is
53;; Successive TABs cycle between possible indentations for the line. 53;; symbol completion using lookup in Python.
54 54
55;; Even where it has similar facilities, this is incompatible with 55;; Even where it has similar facilities, this is incompatible with
56;; python-mode.el in various respects. For instance, various key 56;; python-mode.el in various respects. For instance, various key
57;; bindings are changed to obey Emacs conventions, and things like 57;; bindings are changed to obey Emacs conventions, and things like
58;; marking blocks and `beginning-of-defun' behave differently. 58;; marking blocks and `beginning-of-defun' behave differently.
59 59
60;; TODO: See various Fixmes below. It should be possible to arrange 60;; TODO: See various Fixmes below.
61;; some sort of completion using the inferior interpreter.
62 61
63;;; Code: 62;;; Code:
64 63
@@ -203,6 +202,8 @@ Used for syntactic keywords. N is the match number (1, 2 or 3)."
203 (define-key map "\C-c\C-z" 'python-switch-to-python) 202 (define-key map "\C-c\C-z" 'python-switch-to-python)
204 (define-key map "\C-c\C-m" 'python-load-file) 203 (define-key map "\C-c\C-m" 'python-load-file)
205 (define-key map "\C-c\C-l" 'python-load-file) ; a la cmuscheme 204 (define-key map "\C-c\C-l" 'python-load-file) ; a la cmuscheme
205 (substitute-key-definition 'complete-symbol 'python-complete-symbol
206 map global-map)
206 ;; Fixme: Add :help to menu. 207 ;; Fixme: Add :help to menu.
207 (easy-menu-define python-menu map "Python Mode menu" 208 (easy-menu-define python-menu map "Python Mode menu"
208 '("Python" 209 '("Python"
@@ -261,9 +262,7 @@ Used for syntactic keywords. N is the match number (1, 2 or 3)."
261;;;; Utility stuff 262;;;; Utility stuff
262 263
263(defsubst python-in-string/comment () 264(defsubst python-in-string/comment ()
264 "Return non-nil if point is in a Python literal (a comment or string). 265 "Return non-nil if point is in a Python literal (a comment or string)."
265Optional argument LIM indicates the beginning of the containing form,
266i.e. the limit on how far back to scan."
267 (syntax-ppss-context (syntax-ppss))) 266 (syntax-ppss-context (syntax-ppss)))
268 267
269(defconst python-space-backslash-table 268(defconst python-space-backslash-table
@@ -300,14 +299,17 @@ comments and strings, or that the bracket/paren nesting depth is nonzero."
300(defun python-comment-line-p () 299(defun python-comment-line-p ()
301 "Return non-nil if current line has only a comment or is blank." 300 "Return non-nil if current line has only a comment or is blank."
302 (save-excursion 301 (save-excursion
303 (back-to-indentation) 302 (end-of-line)
304 (looking-at (rx (or (syntax comment-start) line-end))))) 303 ;; FIXME: This looks wrong because it returns nil for empty lines. --Stef
304 (when (eq 'comment (syntax-ppss-context (syntax-ppss)))
305 (back-to-indentation)
306 (looking-at (rx (or (syntax comment-start) line-end))))))
305 307
306(defun python-beginning-of-string () 308(defun python-beginning-of-string ()
307 "Go to beginning of string around point. 309 "Go to beginning of string around point.
308Do nothing if not in string." 310Do nothing if not in string."
309 (let ((state (syntax-ppss))) 311 (let ((state (syntax-ppss)))
310 (when (nth 3 state) 312 (when (eq 'string (syntax-ppss-context state))
311 (goto-char (nth 8 state))))) 313 (goto-char (nth 8 state)))))
312 314
313(defun python-open-block-statement-p (&optional bos) 315(defun python-open-block-statement-p (&optional bos)
@@ -383,7 +385,8 @@ Otherwise indent them to column zero."
383(defcustom python-honour-comment-indentation nil 385(defcustom python-honour-comment-indentation nil
384 "Non-nil means indent relative to preceding comment line. 386 "Non-nil means indent relative to preceding comment line.
385Only do this for comments where the leading comment character is followed 387Only do this for comments where the leading comment character is followed
386by space." 388by space. This doesn't apply to comment lines, which are always indented
389in lines with preceding comments."
387 :type 'boolean 390 :type 'boolean
388 :group 'python) 391 :group 'python)
389 392
@@ -513,6 +516,16 @@ Set `python-indent' locally to the value guessed."
513 (- python-indent))) 516 (- python-indent)))
514 0))))))))) 517 0)))))))))
515 518
519(defun python-comment-indent ()
520 "`comment-indent-function' for Python."
521 ;; If previous non-blank line was a comment, use its indentation.
522 ;; FIXME: This seems unnecessary since the default code delegates to
523 ;; indent-according-to-mode. --Stef
524 (unless (bobp)
525 (save-excursion
526 (forward-comment -1)
527 (if (eq ?# (char-after)) (current-column)))))
528
516;;;; Cycling through the possible indentations with successive TABs. 529;;;; Cycling through the possible indentations with successive TABs.
517 530
518;; These don't need to be buffer-local since they're only relevant 531;; These don't need to be buffer-local since they're only relevant
@@ -537,11 +550,17 @@ Set `python-indent' locally to the value guessed."
537 (point)))) 550 (point))))
538 551
539(defun python-indentation-levels () 552(defun python-indentation-levels ()
540 "Return a list of possible indentations for this statement. 553 "Return a list of possible indentations for this line.
541Includes the default indentation and those which would close all 554Includes the default indentation and those which would close all
542enclosing blocks." 555enclosing blocks. Assumes the line has already been indented per
556`python-indent-line'. Elements of the list are actually pairs:
557\(INDENTATION . TEXT), where TEXT is the initial text of the
558corresponding block opening (or nil)."
543 (save-excursion 559 (save-excursion
544 (let ((levels (list (cons (current-indentation) nil)))) 560 (let ((levels (list (cons (current-indentation)
561 (save-excursion
562 (if (python-beginning-of-block)
563 (python-initial-text)))))))
545 ;; Only one possibility if we immediately follow a block open or 564 ;; Only one possibility if we immediately follow a block open or
546 ;; are in a continuation line. 565 ;; are in a continuation line.
547 (unless (or (python-continuation-line-p) 566 (unless (or (python-continuation-line-p)
@@ -567,8 +586,7 @@ enclosing blocks."
567 (if (> (- (point-max) pos) (point)) 586 (if (> (- (point-max) pos) (point))
568 (goto-char (- (point-max) pos)))))) 587 (goto-char (- (point-max) pos))))))
569 588
570;; Fixme: Is the arg necessary? 589(defun python-indent-line ()
571(defun python-indent-line (&optional arg)
572 "Indent current line as Python code. 590 "Indent current line as Python code.
573When invoked via `indent-for-tab-command', cycle through possible 591When invoked via `indent-for-tab-command', cycle through possible
574indentations for current line. The cycle is broken by a command different 592indentations for current line. The cycle is broken by a command different
@@ -585,13 +603,30 @@ from `indent-for-tab-command', i.e. successive TABs do the cycling."
585 (beginning-of-line) 603 (beginning-of-line)
586 (delete-horizontal-space) 604 (delete-horizontal-space)
587 (indent-to (car (nth python-indent-index python-indent-list))) 605 (indent-to (car (nth python-indent-index python-indent-list)))
588 (let ((text (cdr (nth python-indent-index 606 (if (python-block-end-p)
589 python-indent-list)))) 607 (let ((text (cdr (nth python-indent-index
590 (if text (message "Closes: %s" text))))) 608 python-indent-list))))
609 (if text
610 (message "Closes: %s" text))))))
591 (python-indent-line-1) 611 (python-indent-line-1)
592 (setq python-indent-list (python-indentation-levels) 612 (setq python-indent-list (python-indentation-levels)
593 python-indent-list-length (length python-indent-list) 613 python-indent-list-length (length python-indent-list)
594 python-indent-index (1- python-indent-list-length))))) 614 python-indent-index (1- python-indent-list-length)))))
615
616(defun python-block-end-p ()
617 "Non-nil if this is a line in a statement closing a block,
618or a blank line indented to where it would close a block."
619 (and (not (python-comment-line-p))
620 (or (python-close-block-statement-p t)
621 (< (current-indentation)
622 (save-excursion
623 (python-previous-statement)
624 (current-indentation))))))
625
626;; Fixme: Define an indent-region-function. It should probably leave
627;; lines alone if the indentation is already at one of the allowed
628;; levels. Otherwise, M-C-\ typically keeps indenting more deeply
629;; down a function.
595 630
596;;;; Movement. 631;;;; Movement.
597 632
@@ -628,8 +663,7 @@ start of buffer."
628 "`end-of-defun-function' for Python. 663 "`end-of-defun-function' for Python.
629Finds end of innermost nested class or method definition." 664Finds end of innermost nested class or method definition."
630 (let ((orig (point)) 665 (let ((orig (point))
631 (pattern (rx (and line-start (0+ space) 666 (pattern (rx (and line-start (0+ space) (or "def" "class") space))))
632 (or "def" "class") space))))
633 ;; Go to start of current block and check whether it's at top 667 ;; Go to start of current block and check whether it's at top
634 ;; level. If it is, and not a block start, look forward for 668 ;; level. If it is, and not a block start, look forward for
635 ;; definition statement. 669 ;; definition statement.
@@ -914,13 +948,20 @@ See `python-check-command' for the default."
914 (file-name-nondirectory name)))))))) 948 (file-name-nondirectory name))))))))
915 (setq python-saved-check-command command) 949 (setq python-saved-check-command command)
916 (save-some-buffers (not compilation-ask-about-save) nil) 950 (save-some-buffers (not compilation-ask-about-save) nil)
917 (compilation-start command)) 951 (let ((compilation-error-regexp-alist
952 (cons '("(\\([^,]+\\), line \\([0-9]+\\))" 1 2)
953 compilation-error-regexp-alist)))
954 (compilation-start command)))
918 955
919;;;; Inferior mode stuff (following cmuscheme). 956;;;; Inferior mode stuff (following cmuscheme).
920 957
958;; Fixme: Make sure we can work with IPython.
959
921(defcustom python-python-command "python" 960(defcustom python-python-command "python"
922 "*Shell command to run Python interpreter. 961 "*Shell command to run Python interpreter.
923Any arguments can't contain whitespace." 962Any arguments can't contain whitespace.
963Note that IPython may not work properly; it must at least be used with the
964`-cl' flag, i.e. use `ipython -cl'."
924 :group 'python 965 :group 'python
925 :type 'string) 966 :type 'string)
926 967
@@ -970,12 +1011,31 @@ et al.")
970 ) 1011 )
971 1012
972(defconst python-compilation-regexp-alist 1013(defconst python-compilation-regexp-alist
1014 ;; FIXME: maybe these should move to compilation-error-regexp-alist-alist.
973 `((,(rx (and line-start (1+ (any " \t")) "File \"" 1015 `((,(rx (and line-start (1+ (any " \t")) "File \""
974 (group (1+ (not (any "\"<")))) ; avoid `<stdin>' &c 1016 (group (1+ (not (any "\"<")))) ; avoid `<stdin>' &c
975 "\", line " (group (1+ digit)))) 1017 "\", line " (group (1+ digit))))
976 1 python-compilation-line-number)) 1018 1 2)
1019 (,(rx (and " in file " (group (1+ not-newline)) " on line "
1020 (group (1+ digit))))
1021 1 2))
977 "`compilation-error-regexp-alist' for inferior Python.") 1022 "`compilation-error-regexp-alist' for inferior Python.")
978 1023
1024(defvar inferior-python-mode-map
1025 (let ((map (make-sparse-keymap)))
1026 ;; This will inherit from comint-mode-map.
1027 (define-key map "\C-c\C-l" 'python-load-file)
1028 (define-key map "\C-c\C-z" 'python-switch-to-python) ;What for? --Stef
1029 (define-key map "\C-c\C-v" 'python-check)
1030 ;; Note that we _can_ still use these commands which send to the
1031 ;; Python process even at the prompt iff we have a normal prompt,
1032 ;; i.e. '>>> ' and not '... '. See the comment before
1033 ;; python-send-region. Fixme: uncomment these if we address that.
1034
1035 ;; (define-key map [(meta ?\t)] 'python-complete-symbol)
1036 ;; (define-key map "\C-c\C-f" 'python-describe-symbol)
1037 map))
1038
979;; Fixme: This should inherit some stuff from python-mode, but I'm not 1039;; Fixme: This should inherit some stuff from python-mode, but I'm not
980;; sure how much: at least some keybindings, like C-c C-f; syntax?; 1040;; sure how much: at least some keybindings, like C-c C-f; syntax?;
981;; font-locking, e.g. for triple-quoted strings? 1041;; font-locking, e.g. for triple-quoted strings?
@@ -999,15 +1059,13 @@ For running multiple processes in multiple buffers, see `python-buffer'.
999 :group 'python 1059 :group 'python
1000 (set-syntax-table python-mode-syntax-table) 1060 (set-syntax-table python-mode-syntax-table)
1001 (setq mode-line-process '(":%s")) 1061 (setq mode-line-process '(":%s"))
1002 ;; Fixme: Maybe install some python-mode bindings too. 1062 (set (make-local-variable 'comint-input-filter) 'python-input-filter)
1003 (define-key inferior-python-mode-map "\C-c\C-l" 'python-load-file)
1004 (define-key inferior-python-mode-map "\C-c\C-z" 'python-switch-to-python)
1005 (add-hook 'comint-input-filter-functions 'python-input-filter nil t)
1006 (add-hook 'comint-preoutput-filter-functions #'python-preoutput-filter 1063 (add-hook 'comint-preoutput-filter-functions #'python-preoutput-filter
1007 nil t) 1064 nil t)
1008 ;; Still required by `comint-redirect-send-command', for instance 1065 ;; Still required by `comint-redirect-send-command', for instance
1009 ;; (and we need to match things like `>>> ... >>> '): 1066 ;; (and we need to match things like `>>> ... >>> '):
1010 (set (make-local-variable 'comint-prompt-regexp) "^\\([>.]\\{3\\} \\)+") 1067 (set (make-local-variable 'comint-prompt-regexp)
1068 (rx (and line-start (1+ (and (repeat 3 (any ">.")) ?\ )))))
1011 (set (make-local-variable 'compilation-error-regexp-alist) 1069 (set (make-local-variable 'compilation-error-regexp-alist)
1012 python-compilation-regexp-alist) 1070 python-compilation-regexp-alist)
1013 (compilation-shell-minor-mode 1)) 1071 (compilation-shell-minor-mode 1))
@@ -1018,15 +1076,9 @@ Default ignores all inputs of 0, 1, or 2 non-blank characters."
1018 :type 'regexp 1076 :type 'regexp
1019 :group 'python) 1077 :group 'python)
1020 1078
1021(defvar python-orig-start nil
1022 "Marker to the start of the region passed to the inferior Python.
1023It can also be a filename.")
1024
1025(defun python-input-filter (str) 1079(defun python-input-filter (str)
1026 "`comint-input-filter' function for inferior Python. 1080 "`comint-input-filter' function for inferior Python.
1027Don't save anything for STR matching `inferior-python-filter-regexp'. 1081Don't save anything for STR matching `inferior-python-filter-regexp'."
1028Also resets variables for adjusting error messages."
1029 (setq python-orig-start nil)
1030 (not (string-match inferior-python-filter-regexp str))) 1082 (not (string-match inferior-python-filter-regexp str)))
1031 1083
1032;; Fixme: Loses with quoted whitespace. 1084;; Fixme: Loses with quoted whitespace.
@@ -1039,25 +1091,8 @@ Also resets variables for adjusting error messages."
1039 (t (let ((pos (string-match "[^ \t]" string))) 1091 (t (let ((pos (string-match "[^ \t]" string)))
1040 (if pos (python-args-to-list (substring string pos)))))))) 1092 (if pos (python-args-to-list (substring string pos))))))))
1041 1093
1042(defun python-compilation-line-number (file col)
1043 "Return error descriptor of error found for FILE, column COL.
1044Used as line-number hook function in `python-compilation-regexp-alist'."
1045 (let ((line (string-to-number (match-string 2))))
1046 (cons (point-marker)
1047 (if (and (markerp python-orig-start)
1048 (marker-buffer python-orig-start))
1049 (let ((start python-orig-start))
1050 (with-current-buffer (marker-buffer python-orig-start)
1051 (goto-char start)
1052 (forward-line (1- line))
1053 (point-marker)))
1054 (list (if (stringp python-orig-start)
1055 (list python-orig-start default-directory)
1056 file)
1057 line col)))))
1058
1059(defvar python-preoutput-result nil 1094(defvar python-preoutput-result nil
1060 "Data from output line last `_emacs_out' line seen by the preoutput filter.") 1095 "Data from last `_emacs_out' line seen by the preoutput filter.")
1061 1096
1062(defvar python-preoutput-continuation nil 1097(defvar python-preoutput-continuation nil
1063 "If non-nil, funcall this when `python-preoutput-filter' sees `_emacs_ok'.") 1098 "If non-nil, funcall this when `python-preoutput-filter' sees `_emacs_ok'.")
@@ -1068,7 +1103,9 @@ Used as line-number hook function in `python-compilation-regexp-alist'."
1068;; `python-preoutput-continuation' if we get it. 1103;; `python-preoutput-continuation' if we get it.
1069(defun python-preoutput-filter (s) 1104(defun python-preoutput-filter (s)
1070 "`comint-preoutput-filter-functions' function: ignore prompts not at bol." 1105 "`comint-preoutput-filter-functions' function: ignore prompts not at bol."
1071 (cond ((and (string-match "\\`[.>]\\{3\\} \\'" s) 1106 (cond ((and (string-match (rx (and string-start (repeat 3 (any ".>"))
1107 " " string-end))
1108 s)
1072 (/= (let ((inhibit-field-text-motion t)) 1109 (/= (let ((inhibit-field-text-motion t))
1073 (line-beginning-position)) 1110 (line-beginning-position))
1074 (point))) 1111 (point)))
@@ -1089,10 +1126,10 @@ Used as line-number hook function in `python-compilation-regexp-alist'."
1089CMD is the Python command to run. NOSHOW non-nil means don't show the 1126CMD is the Python command to run. NOSHOW non-nil means don't show the
1090buffer automatically. 1127buffer automatically.
1091If there is a process already running in `*Python*', switch to 1128If there is a process already running in `*Python*', switch to
1092that buffer. Interactively a prefix arg, allows you to edit the initial 1129that buffer. Interactively, a prefix arg allows you to edit the initial
1093command line (default is the value of `python-command'); `-i' etc. args 1130command line (default is `python-command'); `-i' etc. args will be added
1094will be added to this as appropriate. Runs the hooks 1131to this as appropriate. Runs the hook `inferior-python-mode-hook'
1095`inferior-python-mode-hook' (after the `comint-mode-hook' is run). 1132\(after the `comint-mode-hook' is run).
1096\(Type \\[describe-mode] in the process buffer for a list of commands.)" 1133\(Type \\[describe-mode] in the process buffer for a list of commands.)"
1097 (interactive (list (if current-prefix-arg 1134 (interactive (list (if current-prefix-arg
1098 (read-string "Run Python: " python-command) 1135 (read-string "Run Python: " python-command)
@@ -1102,47 +1139,34 @@ will be added to this as appropriate. Runs the hooks
1102 ;; Fixme: Consider making `python-buffer' buffer-local as a buffer 1139 ;; Fixme: Consider making `python-buffer' buffer-local as a buffer
1103 ;; (not a name) in Python buffers from which `run-python' &c is 1140 ;; (not a name) in Python buffers from which `run-python' &c is
1104 ;; invoked. Would support multiple processes better. 1141 ;; invoked. Would support multiple processes better.
1105 (unless (comint-check-proc "*Python*") 1142 (unless (comint-check-proc python-buffer)
1106 (let ((cmdlist (append (python-args-to-list cmd) '("-i")))) 1143 (let ((cmdlist (append (python-args-to-list cmd) '("-i")))
1144 (process-environment ; to import emacs.py
1145 (push (concat "PYTHONPATH=" data-directory)
1146 process-environment)))
1107 (set-buffer (apply 'make-comint "Python" (car cmdlist) nil 1147 (set-buffer (apply 'make-comint "Python" (car cmdlist) nil
1108 (cdr cmdlist)))) 1148 (cdr cmdlist)))
1149 (setq python-buffer "*Python*"))
1109 (inferior-python-mode) 1150 (inferior-python-mode)
1110 ;; Load function defintions we need. 1151 ;; Load function defintions we need.
1111 ;; Before the preoutput function was used, this was done via -c in 1152 ;; Before the preoutput function was used, this was done via -c in
1112 ;; cmdlist, but that loses the banner and doesn't run the startup 1153 ;; cmdlist, but that loses the banner and doesn't run the startup
1113 ;; file. 1154 ;; file. The code might be inline here, but there's enough that it
1114 (python-send-string "\ 1155 ;; seems worth putting in a separate file, and it's probably cleaner
1115def _emacs_execfile (file): # execute file and remove it 1156 ;; to put it in a module.
1116 from os import remove 1157 (python-send-string "import emacs"))
1117 try: execfile (file, globals (), globals ()) 1158 (unless noshow (pop-to-buffer python-buffer)))
1118 finally: remove (file) 1159
1119 1160;; Fixme: We typically lose if the inferior isn't in the normal REPL,
1120def _emacs_args (name): # get arglist of name for eldoc &c 1161;; e.g. prompt is `help> '. Probably raise an error if the form of
1121 import inspect 1162;; the prompt is unexpected; actually, it needs to be `>>> ', not
1122 parts = name.split ('.') 1163;; `... ', i.e. we're not inputting a block &c. However, this may not
1123 if len (parts) > 1: 1164;; be the place to do it, e.g. we might actually want to send commands
1124 try: exec 'import ' + parts[0] 1165;; having set up such a state.
1125 except: return None
1126 try: exec 'func='+name # lose if name is keyword or undefined
1127 except: return None
1128 if inspect.isbuiltin (func):
1129 doc = func.__doc__
1130 if doc.find (' ->') != -1:
1131 print '_emacs_out', doc.split (' ->')[0]
1132 elif doc.find ('\\n') != -1:
1133 print '_emacs_out', doc.split ('\\n')[0]
1134 return None
1135 if inspect.ismethod (func): func = func.im_func
1136 if not inspect.isfunction (func):
1137 return None
1138 (args, varargs, varkw, defaults) = inspect.getargspec (func)
1139 print '_emacs_out', func.__name__+inspect.formatargspec (args, varargs, varkw, defaults)
1140
1141print '_emacs_ok'"))
1142 (unless noshow (pop-to-buffer (setq python-buffer "*Python*"))))
1143 1166
1144(defun python-send-command (command) 1167(defun python-send-command (command)
1145 "Like `python-send-string' but resets `compilation-minor-mode'." 1168 "Like `python-send-string' but resets `compilation-minor-mode'."
1169 (goto-char (point-max))
1146 (let ((end (marker-position (process-mark (python-proc))))) 1170 (let ((end (marker-position (process-mark (python-proc)))))
1147 (compilation-forget-errors) 1171 (compilation-forget-errors)
1148 (python-send-string command) 1172 (python-send-string command)
@@ -1154,35 +1178,37 @@ print '_emacs_ok'"))
1154 ;; The region is evaluated from a temporary file. This avoids 1178 ;; The region is evaluated from a temporary file. This avoids
1155 ;; problems with blank lines, which have different semantics 1179 ;; problems with blank lines, which have different semantics
1156 ;; interactively and in files. It also saves the inferior process 1180 ;; interactively and in files. It also saves the inferior process
1157 ;; buffer filling up with interpreter prompts. We need a function 1181 ;; buffer filling up with interpreter prompts. We need a Python
1158 ;; to remove the temporary file when it has been evaluated, which 1182 ;; function to remove the temporary file when it has been evaluated
1159 ;; unfortunately means using a not-quite pristine interpreter 1183 ;; (though we could probably do it in Lisp with a Comint output
1160 ;; initially. Unfortunately we also get tracebacks which look like: 1184 ;; filter). This function also catches exceptions and truncates
1161 ;; 1185 ;; tracebacks not to mention the frame of the function itself.
1162 ;; >>> Traceback (most recent call last):
1163 ;; File "<stdin>", line 1, in ?
1164 ;; File "<string>", line 4, in _emacs_execfile
1165 ;; File "/tmp/py7734RSB", line 11
1166 ;; 1186 ;;
1167 ;; The compilation-minor-mode parsing takes care of relating the 1187 ;; The compilation-minor-mode parsing takes care of relating the
1168 ;; reference to the temporary file to the source. Fixme: 1188 ;; reference to the temporary file to the source.
1169 ;; comint-filter the first two lines of the traceback? 1189 ;;
1190 ;; Fixme: Write a `coding' header to the temp file if the region is
1191 ;; non-ASCII.
1170 (interactive "r") 1192 (interactive "r")
1171 (let* ((f (make-temp-file "py")) 1193 (let* ((f (make-temp-file "py"))
1172 (command (format "_emacs_execfile(%S)" f)) 1194 (command (format "emacs.eexecfile(%S)" f))
1173 (orig-start (copy-marker start))) 1195 (orig-start (copy-marker start)))
1174 (if (save-excursion 1196 (when (save-excursion
1175 (goto-char start) 1197 (goto-char start)
1176 (/= 0 (current-indentation))) ; need dummy block 1198 (/= 0 (current-indentation))) ; need dummy block
1177 (write-region "if True:\n" nil f nil 'nomsg)) 1199 (save-excursion
1200 (goto-char orig-start)
1201 ;; Wrong if we had indented code at buffer start.
1202 (set-marker orig-start (line-beginning-position 0)))
1203 (write-region "if True:\n" nil f nil 'nomsg))
1178 (write-region start end f t 'nomsg) 1204 (write-region start end f t 'nomsg)
1179 (when python-buffer 1205 (let ((proc (python-proc))) ;Make sure we're running a process.
1180 (with-current-buffer python-buffer 1206 (with-current-buffer python-buffer
1181 (set (make-local-variable 'python-orig-start) orig-start) 1207 (python-send-command command)
1182 (let ((comint-input-filter-functions 1208 ;; Tell compile.el to redirect error locations in file `f' to
1183 ;; Don't reset python-orig-start. 1209 ;; positions past marker `orig-start'. It has to be done *after*
1184 (remq 'python-input-filter comint-input-filter-functions))) 1210 ;; python-send-command's call to compilation-forget-errors.
1185 (python-send-command command)))))) 1211 (compilation-fake-loc orig-start f)))))
1186 1212
1187(defun python-send-string (string) 1213(defun python-send-string (string)
1188 "Evaluate STRING in inferior Python process." 1214 "Evaluate STRING in inferior Python process."
@@ -1195,6 +1221,8 @@ print '_emacs_ok'"))
1195 (interactive) 1221 (interactive)
1196 (python-send-region (point-min) (point-max))) 1222 (python-send-region (point-min) (point-max)))
1197 1223
1224;; Fixme: Try to define the function or class within the relevant
1225;; module, not just at top level.
1198(defun python-send-defun () 1226(defun python-send-defun ()
1199 "Send the current defun (class or method) to the inferior Python process." 1227 "Send the current defun (class or method) to the inferior Python process."
1200 (interactive) 1228 (interactive)
@@ -1241,11 +1269,11 @@ function location information for debugging, and supports users of
1241module-qualified names." 1269module-qualified names."
1242 (interactive (comint-get-source "Load Python file: " python-prev-dir/file 1270 (interactive (comint-get-source "Load Python file: " python-prev-dir/file
1243 python-source-modes 1271 python-source-modes
1244 t)) ; because execfile needs exact name 1272 t)) ; because execfile needs exact name
1245 (comint-check-source file-name) ; Check to see if buffer needs saved. 1273 (comint-check-source file-name) ; Check to see if buffer needs saving.
1246 (setq python-prev-dir/file (cons (file-name-directory file-name) 1274 (setq python-prev-dir/file (cons (file-name-directory file-name)
1247 (file-name-nondirectory file-name))) 1275 (file-name-nondirectory file-name)))
1248 (when python-buffer 1276 (let ((proc (python-proc))) ;Make sure we have a process.
1249 (with-current-buffer python-buffer 1277 (with-current-buffer python-buffer
1250 ;; Fixme: I'm not convinced by this logic from python-mode.el. 1278 ;; Fixme: I'm not convinced by this logic from python-mode.el.
1251 (python-send-command 1279 (python-send-command
@@ -1253,19 +1281,22 @@ module-qualified names."
1253 ;; Fixme: make sure the directory is in the path list 1281 ;; Fixme: make sure the directory is in the path list
1254 (let ((module (file-name-sans-extension 1282 (let ((module (file-name-sans-extension
1255 (file-name-nondirectory file-name)))) 1283 (file-name-nondirectory file-name))))
1256 (format "\ 1284 (format "emacs.eimport(%S,%S)"
1257if globals().has_key(%S): reload(%s) 1285 module (file-name-directory file-name)))
1258else: import %s 1286 (format "execfile(%S)" file-name)))
1259" module module module)) 1287 (message "%s loaded" file-name))))
1260 (format "execfile('%s')" file-name))))))
1261 1288
1262;; Fixme: Should this start a process if there isn't one? (Unlike cmuscheme.) 1289;; Fixme: If we need to start the process, wait until we've got the OK
1290;; from the startup.
1263(defun python-proc () 1291(defun python-proc ()
1264 "Return the current Python process. See variable `python-buffer'." 1292 "Return the current Python process.
1265 (let ((proc (get-buffer-process (if (eq major-mode 'inferior-python-mode) 1293See variable `python-buffer'. Starts a new process if necessary."
1266 (current-buffer) 1294 (or (if python-buffer
1267 python-buffer)))) 1295 (get-buffer-process (if (eq major-mode 'inferior-python-mode)
1268 (or proc (error "No current process. See variable `python-buffer'")))) 1296 (current-buffer)
1297 python-buffer)))
1298 (progn (run-python nil t)
1299 (python-proc))))
1269 1300
1270;;;; Context-sensitive help. 1301;;;; Context-sensitive help.
1271 1302
@@ -1277,33 +1308,46 @@ else: import %s
1277 "Syntax table giving `.' symbol syntax. 1308 "Syntax table giving `.' symbol syntax.
1278Otherwise inherits from `python-mode-syntax-table'.") 1309Otherwise inherits from `python-mode-syntax-table'.")
1279 1310
1311(defvar view-return-to-alist)
1312
1280;; Fixme: Should this actually be used instead of info-look, i.e. be 1313;; Fixme: Should this actually be used instead of info-look, i.e. be
1281;; bound to C-h S? 1314;; bound to C-h S? Can we use other pydoc stuff before python 2.2?
1282(defun python-describe-symbol (symbol) 1315(defun python-describe-symbol (symbol)
1283 "Get help on SYMBOL using `pydoc'. 1316 "Get help on SYMBOL using `help'.
1284Interactively, prompt for symbol." 1317Interactively, prompt for symbol.
1285 ;; Note that we do this in the inferior process, not a separate one to 1318
1319Symbol may be anything recognized by the interpreter's `help' command --
1320e.g. `CALLS' -- not just variables in scope.
1321This only works for Python version 2.2 or newer since earlier interpreters
1322don't support `help'."
1323 ;; Note that we do this in the inferior process, not a separate one, to
1286 ;; ensure the environment is appropriate. 1324 ;; ensure the environment is appropriate.
1287 (interactive 1325 (interactive
1288 (let ((symbol (with-syntax-table python-dotty-syntax-table 1326 (let ((symbol (with-syntax-table python-dotty-syntax-table
1289 (current-word))) 1327 (current-word)))
1290 (enable-recursive-minibuffers t) 1328 (enable-recursive-minibuffers t))
1291 val) 1329 (list (read-string (if symbol
1292 (setq val (read-string (if symbol 1330 (format "Describe symbol (default %s): " symbol)
1293 (format "Describe symbol (default %s): " 1331 "Describe symbol: ")
1294 symbol) 1332 nil nil symbol))))
1295 "Describe symbol: ")
1296 nil nil symbol))
1297 (list (or val symbol))))
1298 (if (equal symbol "") (error "No symbol")) 1333 (if (equal symbol "") (error "No symbol"))
1299 (let* ((func `(lambda () 1334 (let* ((func `(lambda ()
1300 (comint-redirect-send-command (format "help(%S)\n" ,symbol) 1335 (comint-redirect-send-command (format "emacs.ehelp(%S)\n"
1336 ,symbol)
1301 "*Help*" nil)))) 1337 "*Help*" nil))))
1302 ;; Ensure we have a suitable help buffer. 1338 ;; Ensure we have a suitable help buffer.
1303 (let (temp-buffer-show-hook) ; avoid xref stuff 1339 ;; Fixme: Maybe process `Related help topics' a la help xrefs and
1304 (with-output-to-temp-buffer "*Help*" 1340 ;; allow C-c C-f in help buffer.
1341 (let ((temp-buffer-show-hook ; avoid xref stuff
1342 (lambda ()
1343 (toggle-read-only 1)
1344 (setq view-return-to-alist
1345 (list (cons (selected-window) help-return-method))))))
1346 (help-setup-xref (list 'python-describe-symbol symbol))
1347 (with-output-to-temp-buffer (help-buffer)
1305 (with-current-buffer standard-output 1348 (with-current-buffer standard-output
1306 (set (make-local-variable 'comint-redirect-subvert-readonly) t)))) 1349 (set (make-local-variable 'comint-redirect-subvert-readonly) t)
1350 (print-help-return-message))))
1307 (if (and python-buffer (get-buffer python-buffer)) 1351 (if (and python-buffer (get-buffer python-buffer))
1308 (with-current-buffer python-buffer 1352 (with-current-buffer python-buffer
1309 (funcall func)) 1353 (funcall func))
@@ -1312,6 +1356,15 @@ Interactively, prompt for symbol."
1312 1356
1313(add-to-list 'debug-ignored-errors "^No symbol") 1357(add-to-list 'debug-ignored-errors "^No symbol")
1314 1358
1359(defun python-send-receive (string)
1360 "Send STRING to inferior Python (if any) and return result.
1361The result is what follows `_emacs_out' in the output (or nil)."
1362 (let ((proc (python-proc)))
1363 (python-send-string string)
1364 (setq python-preoutput-result nil)
1365 (accept-process-output proc 5)
1366 python-preoutput-result))
1367
1315;; Fixme: try to make it work with point in the arglist. Also, is 1368;; Fixme: try to make it work with point in the arglist. Also, is
1316;; there anything reasonable we can do with random methods? 1369;; there anything reasonable we can do with random methods?
1317;; (Currently only works with functions.) 1370;; (Currently only works with functions.)
@@ -1320,14 +1373,9 @@ Interactively, prompt for symbol."
1320Only works when point is in a function name, not its arglist, for instance. 1373Only works when point is in a function name, not its arglist, for instance.
1321Assumes an inferior Python is running." 1374Assumes an inferior Python is running."
1322 (let ((symbol (with-syntax-table python-dotty-syntax-table 1375 (let ((symbol (with-syntax-table python-dotty-syntax-table
1323 (current-word))) 1376 (current-word))))
1324 (proc (and python-buffer (python-proc)))) 1377 (when symbol
1325 (when (and proc symbol) 1378 (python-send-receive (format "emacs.eargs(%S)" symbol)))))
1326 (python-send-string
1327 (format "_emacs_args(%S)" symbol))
1328 (setq python-preoutput-result nil)
1329 (accept-process-output proc 1)
1330 python-preoutput-result)))
1331 1379
1332;;;; Info-look functionality. 1380;;;; Info-look functionality.
1333 1381
@@ -1530,11 +1578,97 @@ Uses `python-beginning-of-block', `python-end-of-block'."
1530 (python-end-of-block) 1578 (python-end-of-block)
1531 (exchange-point-and-mark)) 1579 (exchange-point-and-mark))
1532 1580
1581;;;; Completion.
1582
1583(defun python-symbol-completions (symbol)
1584 "Return a list of completions of the string SYMBOL from Python process.
1585The list is sorted."
1586 (when symbol
1587 (let ((completions
1588 (condition-case ()
1589 (car (read-from-string (python-send-receive
1590 (format "emacs.complete(%S)" symbol))))
1591 (error nil))))
1592 (sort
1593 ;; We can get duplicates from the above -- don't know why.
1594 (delete-dups completions)
1595 #'string<))))
1596
1597(defun python-partial-symbol ()
1598 "Return the partial symbol before point (for completion)."
1599 (let ((end (point))
1600 (start (save-excursion
1601 (and (re-search-backward
1602 (rx (and (or buffer-start (regexp "[^[:alnum:]._]"))
1603 (group (1+ (regexp "[[:alnum:]._]")))
1604 point))
1605 nil t)
1606 (match-beginning 1)))))
1607 (if start (buffer-substring-no-properties start end))))
1608
1609;; Fixme: We should have an abstraction of this sort of thing in the
1610;; core.
1611(defun python-complete-symbol ()
1612 "Perform completion on the Python symbol preceding point.
1613Repeating the command scrolls the completion window."
1614 (interactive)
1615 (let ((window (get-buffer-window "*Completions*")))
1616 (if (and (eq last-command this-command)
1617 window (window-live-p window) (window-buffer window)
1618 (buffer-name (window-buffer window)))
1619 (with-current-buffer (window-buffer window)
1620 (if (pos-visible-in-window-p (point-max) window)
1621 (set-window-start window (point-min))
1622 (save-selected-window
1623 (select-window window)
1624 (scroll-up))))
1625 ;; Do completion.
1626 (let* ((end (point))
1627 (symbol (python-partial-symbol))
1628 (completions (python-symbol-completions symbol))
1629 (completion (if completions
1630 (try-completion symbol completions))))
1631 (when symbol
1632 (cond ((eq completion t))
1633 ((null completion)
1634 (message "Can't find completion for \"%s\"" symbol)
1635 (ding))
1636 ((not (string= symbol completion))
1637 (delete-region (- end (length symbol)) end)
1638 (insert completion))
1639 (t
1640 (message "Making completion list...")
1641 (with-output-to-temp-buffer "*Completions*"
1642 (display-completion-list completions))
1643 (message "Making completion list...%s" "done"))))))))
1644
1645(eval-when-compile (require 'hippie-exp))
1646
1647(defun python-try-complete (old)
1648 "Completion function for Python for use with `hippie-expand'."
1649 (when (eq major-mode 'python-mode) ; though we only add it locally
1650 (unless old
1651 (let ((symbol (python-partial-symbol)))
1652 (he-init-string (- (point) (length symbol)) (point))
1653 (if (not (he-string-member he-search-string he-tried-table))
1654 (push he-search-string he-tried-table))
1655 (setq he-expand-list
1656 (and symbol (python-symbol-completions symbol)))))
1657 (while (and he-expand-list
1658 (he-string-member (car he-expand-list) he-tried-table))
1659 (pop he-expand-list))
1660 (if he-expand-list
1661 (progn
1662 (he-substitute-string (pop he-expand-list))
1663 t)
1664 (if old (he-reset-string))
1665 nil)))
1666
1533;;;; Modes. 1667;;;; Modes.
1534 1668
1535(defvar outline-heading-end-regexp) 1669(defvar outline-heading-end-regexp)
1536(defvar eldoc-print-current-symbol-info-function) 1670(defvar eldoc-print-current-symbol-info-function)
1537(defvar python-mode-running) 1671
1538;;;###autoload 1672;;;###autoload
1539(define-derived-mode python-mode fundamental-mode "Python" 1673(define-derived-mode python-mode fundamental-mode "Python"
1540 "Major mode for editing Python files. 1674 "Major mode for editing Python files.
@@ -1576,11 +1710,10 @@ lines count as headers.
1576 )) 1710 ))
1577 (set (make-local-variable 'parse-sexp-lookup-properties) t) 1711 (set (make-local-variable 'parse-sexp-lookup-properties) t)
1578 (set (make-local-variable 'comment-start) "# ") 1712 (set (make-local-variable 'comment-start) "# ")
1579 ;; Fixme: define a comment-indent-function? 1713 (set (make-local-variable 'comment-indent-function) #'python-comment-indent)
1580 (set (make-local-variable 'indent-line-function) #'python-indent-line) 1714 (set (make-local-variable 'indent-line-function) #'python-indent-line)
1581 (set (make-local-variable 'paragraph-start) "\\s-*$") 1715 (set (make-local-variable 'paragraph-start) "\\s-*$")
1582 (set (make-local-variable 'fill-paragraph-function) 1716 (set (make-local-variable 'fill-paragraph-function) 'python-fill-paragraph)
1583 'python-fill-paragraph)
1584 (set (make-local-variable 'require-final-newline) t) 1717 (set (make-local-variable 'require-final-newline) t)
1585 (set (make-local-variable 'add-log-current-defun-function) 1718 (set (make-local-variable 'add-log-current-defun-function)
1586 #'python-current-defun) 1719 #'python-current-defun)
@@ -1598,6 +1731,9 @@ lines count as headers.
1598 #'python-eldoc-function) 1731 #'python-eldoc-function)
1599 (add-hook 'eldoc-mode-hook 1732 (add-hook 'eldoc-mode-hook
1600 '(lambda () (run-python 0 t)) nil t) ; need it running 1733 '(lambda () (run-python 0 t)) nil t) ; need it running
1734 (if (featurep 'hippie-exp)
1735 (set (make-local-variable 'hippie-expand-try-functions-list)
1736 (cons 'python-try-complete hippie-expand-try-functions-list)))
1601 (unless font-lock-mode (font-lock-mode 1)) 1737 (unless font-lock-mode (font-lock-mode 1))
1602 (when python-guess-indent (python-guess-indent)) 1738 (when python-guess-indent (python-guess-indent))
1603 (set (make-local-variable 'python-command) python-python-command) 1739 (set (make-local-variable 'python-command) python-python-command)
diff --git a/lisp/progmodes/sql.el b/lisp/progmodes/sql.el
index 420b5f226b0..0e0d89b07e1 100644
--- a/lisp/progmodes/sql.el
+++ b/lisp/progmodes/sql.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Alex Schroeder <alex@gnu.org> 5;; Author: Alex Schroeder <alex@gnu.org>
6;; Maintainer: Michael Mauger <mmaug@yahoo.com> 6;; Maintainer: Michael Mauger <mmaug@yahoo.com>
7;; Version: 2.0.0 7;; Version: 2.0.1
8;; Keywords: comm languages processes 8;; Keywords: comm languages processes
9;; URL: http://savannah.gnu.org/cgi-bin/viewcvs/emacs/emacs/lisp/progmodes/sql.el 9;; URL: http://savannah.gnu.org/cgi-bin/viewcvs/emacs/emacs/lisp/progmodes/sql.el
10;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?SqlMode 10;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?SqlMode
@@ -200,8 +200,11 @@
200;; Gregor Zych <zych@pool.informatik.rwth-aachen.de> 200;; Gregor Zych <zych@pool.informatik.rwth-aachen.de>
201;; nino <nino@inform.dk> 201;; nino <nino@inform.dk>
202;; Berend de Boer <berend@pobox.com> 202;; Berend de Boer <berend@pobox.com>
203;; Michael Mauger <mmaug@yahoo.com>
204;; Adam Jenkins <adam@thejenkins.org> 203;; Adam Jenkins <adam@thejenkins.org>
204;; Michael Mauger <mmaug@yahoo.com> -- improved product support
205;; Drew Adams <drew.adams@oracle.com> -- Emacs 20 support
206;; Harald Maier <maierh@myself.com> -- sql-send-string
207;; Stefan Monnier <monnier@iro.umontreal.ca> -- font-lock corrections
205 208
206 209
207 210
@@ -693,18 +696,6 @@ Starts `sql-interactive-mode' after doing some setup."
693 696
694;;; Variables which do not need customization 697;;; Variables which do not need customization
695 698
696(defvar sql-xemacs-p
697 (string-match "XEmacs\\|Lucid" emacs-version)
698 "Is this a non-GNU Emacs?")
699
700(defvar sql-emacs19-p
701 (string-match "GNU Emacs 19" emacs-version)
702 "Is this a GNU Emacs 19?")
703
704(defvar sql-emacs20-p
705 (string-match "20" emacs-version)
706 "Is this a GNU Emacs 20?")
707
708(defvar sql-user-history nil 699(defvar sql-user-history nil
709 "History of usernames used.") 700 "History of usernames used.")
710 701
@@ -876,9 +867,7 @@ Based on `comint-mode-map'.")
876 (modify-syntax-entry ?/ ". 14" table) 867 (modify-syntax-entry ?/ ". 14" table)
877 (modify-syntax-entry ?* ". 23" table) 868 (modify-syntax-entry ?* ". 23" table)
878 ;; double-dash starts comment 869 ;; double-dash starts comment
879 (if sql-xemacs-p 870 (modify-syntax-entry ?- ". 12b" table)
880 (modify-syntax-entry ?- ". 56" table)
881 (modify-syntax-entry ?- ". 12b" table))
882 ;; newline and formfeed end coments 871 ;; newline and formfeed end coments
883 (modify-syntax-entry ?\n "> b" table) 872 (modify-syntax-entry ?\n "> b" table)
884 (modify-syntax-entry ?\f "> b" table) 873 (modify-syntax-entry ?\f "> b" table)
@@ -905,25 +894,6 @@ The pattern matches the name in a CREATE, DROP or ALTER
905statement. The format of variable should be a valid 894statement. The format of variable should be a valid
906`font-lock-keywords' entry.") 895`font-lock-keywords' entry.")
907 896
908(defvar sql-builtin-face
909 (if sql-xemacs-p
910 ;; XEmacs doesn't have the builtin face
911 'font-lock-preprocessor-face
912 ;; GNU Emacs 19 doesn't either
913 (if sql-emacs19-p
914 'font-lock-keyword-face
915 ;; Emacs 2x
916 'font-lock-builtin-face))
917 "Builtin face for font-lock in SQL mode.")
918
919(defvar sql-doc-face
920 (if (or sql-xemacs-p
921 sql-emacs19-p
922 sql-emacs20-p)
923 'font-lock-string-face
924 'font-lock-doc-face)
925 "Documentation face for font-lock in SQL mode.")
926
927(defmacro sql-keywords-re (&rest keywords) 897(defmacro sql-keywords-re (&rest keywords)
928 "Compile-time generation of regexp matching any one of KEYWORDS." 898 "Compile-time generation of regexp matching any one of KEYWORDS."
929 `(eval-when-compile 899 `(eval-when-compile
@@ -1020,7 +990,7 @@ statement. The format of variable should be a valid
1020 990
1021 `((,ansi-non-reserved . font-lock-keyword-face) 991 `((,ansi-non-reserved . font-lock-keyword-face)
1022 (,ansi-reserved . font-lock-keyword-face) 992 (,ansi-reserved . font-lock-keyword-face)
1023 (,ansi-funcs . ,sql-builtin-face) 993 (,ansi-funcs . font-lock-builtin-face)
1024 (,ansi-types . font-lock-type-face))) 994 (,ansi-types . font-lock-type-face)))
1025 995
1026 "ANSI SQL keywords used by font-lock. 996 "ANSI SQL keywords used by font-lock.
@@ -1230,11 +1200,11 @@ add functions and PL/SQL keywords.")
1230 "\\b.*$" 1200 "\\b.*$"
1231 )))) 1201 ))))
1232 1202
1233 `((,sqlplus-commands . ,sql-doc-face) 1203 `((,sqlplus-commands . font-lock-doc-face)
1234 (,oracle-functions . ,sql-builtin-face) 1204 (,oracle-functions . font-lock-builtin-face)
1235 (,oracle-keywords . font-lock-keyword-face) 1205 (,oracle-keywords . font-lock-keyword-face)
1236 (,oracle-types . font-lock-type-face) 1206 (,oracle-types . font-lock-type-face)
1237 (,plsql-functions . ,sql-builtin-face) 1207 (,plsql-functions . font-lock-builtin-face)
1238 (,plsql-keywords . font-lock-keyword-face) 1208 (,plsql-keywords . font-lock-keyword-face)
1239 (,plsql-type . font-lock-type-face) 1209 (,plsql-type . font-lock-type-face)
1240 (,plsql-warning . font-lock-warning-face))) 1210 (,plsql-warning . font-lock-warning-face)))
@@ -1323,7 +1293,7 @@ to add functions and PL/SQL keywords.")
1323"timestamp" "varchar" "varying" "void" "zone" 1293"timestamp" "varchar" "varying" "void" "zone"
1324))) 1294)))
1325 1295
1326 `((,pg-funcs . ,sql-builtin-face) 1296 `((,pg-funcs . font-lock-builtin-face)
1327 (,pg-reserved . font-lock-keyword-face) 1297 (,pg-reserved . font-lock-keyword-face)
1328 (,pg-types . font-lock-type-face))) 1298 (,pg-types . font-lock-type-face)))
1329 1299
@@ -1404,7 +1374,7 @@ you define your own sql-mode-postgres-font-lock-keywords.")
1404 1374
1405 `((,linter-keywords . font-lock-keyword-face) 1375 `((,linter-keywords . font-lock-keyword-face)
1406 (,linter-reserved . font-lock-keyword-face) 1376 (,linter-reserved . font-lock-keyword-face)
1407 (,linter-functions . ,sql-builtin-face) 1377 (,linter-functions . font-lock-builtin-face)
1408 (,linter-types . font-lock-type-face))) 1378 (,linter-types . font-lock-type-face)))
1409 1379
1410 "Linter SQL keywords used by font-lock. 1380 "Linter SQL keywords used by font-lock.
@@ -1507,9 +1477,9 @@ function `regexp-opt'.")
1507) t) 1477) t)
1508 "\\)\\)\\|go\\s-*\\|use\\s-+\\|setuser\\s-+\\|dbcc\\s-+\\).*$")))) 1478 "\\)\\)\\|go\\s-*\\|use\\s-+\\|setuser\\s-+\\|dbcc\\s-+\\).*$"))))
1509 1479
1510 `((,ms-commands . ,sql-doc-face) 1480 `((,ms-commands . font-lock-doc-face)
1511 (,ms-reserved . font-lock-keyword-face) 1481 (,ms-reserved . font-lock-keyword-face)
1512 (,ms-functions . ,sql-builtin-face) 1482 (,ms-functions . font-lock-builtin-face)
1513 (,ms-vars . font-lock-variable-name-face) 1483 (,ms-vars . font-lock-variable-name-face)
1514 (,ms-types . font-lock-type-face))) 1484 (,ms-types . font-lock-type-face)))
1515 1485
@@ -1626,7 +1596,7 @@ you define your own sql-mode-solid-font-lock-keywords.")
1626"zerofill" 1596"zerofill"
1627))) 1597)))
1628 1598
1629 `((,mysql-funcs . ,sql-builtin-face) 1599 `((,mysql-funcs . font-lock-builtin-face)
1630 (,mysql-keywords . font-lock-keyword-face) 1600 (,mysql-keywords . font-lock-keyword-face)
1631 (,mysql-types . font-lock-type-face))) 1601 (,mysql-types . font-lock-type-face)))
1632 1602
@@ -1687,17 +1657,36 @@ the product-specific keywords and syntax-alists defined in
1687 ;; Get the product-specific keywords. 1657 ;; Get the product-specific keywords.
1688 (setq sql-mode-font-lock-keywords 1658 (setq sql-mode-font-lock-keywords
1689 (append 1659 (append
1690 (eval (sql-product-feature :font-lock)) 1660 (unless (eq sql-product 'ansi)
1661 (eval (sql-product-feature :font-lock)))
1662 ;; Always highlight ANSI keywords
1691 (eval (sql-product-feature :font-lock 'ansi)) 1663 (eval (sql-product-feature :font-lock 'ansi))
1664 ;; Fontify object names in CREATE, DROP and ALTER DDL
1665 ;; statements
1692 (list sql-mode-font-lock-object-name))) 1666 (list sql-mode-font-lock-object-name)))
1693 1667
1694 ;; Setup font-lock. (What is the minimum we should have to do 1668 ;; Setup font-lock. Force re-parsing of `font-lock-defaults'.
1695 ;; here?) 1669 (set (make-local-variable 'font-lock-set-defaults) nil)
1696 (setq font-lock-set-defaults nil 1670 (setq font-lock-defaults (list 'sql-mode-font-lock-keywords
1697 font-lock-keywords sql-mode-font-lock-keywords
1698 font-lock-defaults (list 'sql-mode-font-lock-keywords
1699 keywords-only t syntax-alist)) 1671 keywords-only t syntax-alist))
1700 1672
1673 ;; Force font lock to reinitialize if it is already on
1674 ;; Otherwise, we can wait until it can be started.
1675 (when (and (fboundp 'font-lock-mode)
1676 font-lock-mode)
1677 (font-lock-mode-internal nil)
1678 (font-lock-mode-internal t))
1679
1680 (add-hook 'font-lock-mode-hook
1681 (lambda ()
1682 ;; Provide defaults for new font-lock faces.
1683 (defvar font-lock-builtin-face
1684 (if (boundp 'font-lock-preprocessor-face)
1685 font-lock-preprocessor-face
1686 font-lock-keyword-face))
1687 (defvar font-lock-doc-face font-lock-string-face))
1688 nil t)
1689
1701 ;; Setup imenu; it needs the same syntax-alist. 1690 ;; Setup imenu; it needs the same syntax-alist.
1702 (when imenu 1691 (when imenu
1703 (setq imenu-syntax-alist syntax-alist)))) 1692 (setq imenu-syntax-alist syntax-alist))))
@@ -1744,11 +1733,6 @@ selected."
1744 ;; Setup font-lock 1733 ;; Setup font-lock
1745 (sql-product-font-lock nil t) 1734 (sql-product-font-lock nil t)
1746 1735
1747 ;; Force fontification, if its enabled.
1748 (if (and (boundp 'font-lock-mode)
1749 font-lock-mode)
1750 (font-lock-fontify-buffer))
1751
1752 ;; Set the mode name to include the product. 1736 ;; Set the mode name to include the product.
1753 (setq mode-name (concat "SQL[" (prin1-to-string sql-product) "]")))) 1737 (setq mode-name (concat "SQL[" (prin1-to-string sql-product) "]"))))
1754 1738
diff --git a/lisp/ps-print.el b/lisp/ps-print.el
index e60eebe07cf..a7b32e8b264 100644
--- a/lisp/ps-print.el
+++ b/lisp/ps-print.el
@@ -3501,6 +3501,11 @@ The table depends on the current ps-print setup."
3501 #'ps-print-quote 3501 #'ps-print-quote
3502 (list 3502 (list
3503 (concat "\n;;; ps-print version " ps-print-version "\n") 3503 (concat "\n;;; ps-print version " ps-print-version "\n")
3504 ";; internal vars"
3505 (ps-comment-string "ps-print-emacs-type" ps-print-emacs-type)
3506 (ps-comment-string "ps-windows-system " ps-windows-system)
3507 (ps-comment-string "ps-lp-system " ps-lp-system)
3508 nil
3504 '(25 . ps-print-color-p) 3509 '(25 . ps-print-color-p)
3505 '(25 . ps-lpr-command) 3510 '(25 . ps-lpr-command)
3506 '(25 . ps-lpr-switches) 3511 '(25 . ps-lpr-switches)
@@ -3657,14 +3662,28 @@ If `ps-prefix-quote' is nil, it's set to t after generating string."
3657 (if (> col len) 3662 (if (> col len)
3658 (make-string (- col len) ?\ ) 3663 (make-string (- col len) ?\ )
3659 " ") 3664 " ")
3660 (cond ((null val) "nil") 3665 (ps-value-string val))))
3661 ((eq val t) "t")
3662 ((or (symbolp val) (listp val)) (format "'%S" val))
3663 (t (format "%S" val))))))
3664 (t "") 3666 (t "")
3665 )) 3667 ))
3666 3668
3667 3669
3670(defun ps-value-string (val)
3671 "Return a string representation of VAL. Used by `ps-print-quote'."
3672 (cond ((null val)
3673 "nil")
3674 ((eq val t)
3675 "t")
3676 ((or (symbolp val) (listp val))
3677 (format "'%S" val))
3678 (t
3679 (format "%S" val))))
3680
3681
3682(defun ps-comment-string (str value)
3683 "Return a comment string like \";; STR = VALUE\"."
3684 (format ";; %s = %s" str (ps-value-string value)))
3685
3686
3668(defun ps-value (alist-sym key) 3687(defun ps-value (alist-sym key)
3669 "Return value from association list ALIST-SYM which car is `eq' to KEY." 3688 "Return value from association list ALIST-SYM which car is `eq' to KEY."
3670 (cdr (assq key (symbol-value alist-sym)))) 3689 (cdr (assq key (symbol-value alist-sym))))
diff --git a/lisp/select.el b/lisp/select.el
index 01b227d8712..c095ea50c44 100644
--- a/lisp/select.el
+++ b/lisp/select.el
@@ -176,47 +176,48 @@ Cut buffers are considered obsolete; you should use selections instead."
176 (if coding 176 (if coding
177 (setq coding (coding-system-base coding)) 177 (setq coding (coding-system-base coding))
178 (setq coding 'raw-text)) 178 (setq coding 'raw-text))
179 ;; Suppress producing escape sequences for compositions. 179 (let ((inhibit-read-only t))
180 (remove-text-properties 0 (length str) '(composition nil) str) 180 ;; Suppress producing escape sequences for compositions.
181 (cond 181 (remove-text-properties 0 (length str) '(composition nil) str)
182 ((eq type 'TEXT) 182 (cond
183 (if (not (multibyte-string-p str)) 183 ((eq type 'TEXT)
184 ;; Don't have to encode unibyte string. 184 (if (not (multibyte-string-p str))
185 (setq type 'STRING) 185 ;; Don't have to encode unibyte string.
186 ;; If STR contains only ASCII, Latin-1, and raw bytes, 186 (setq type 'STRING)
187 ;; encode STR by iso-latin-1, and return it as type 187 ;; If STR contains only ASCII, Latin-1, and raw bytes,
188 ;; `STRING'. Otherwise, encode STR by CODING. In that 188 ;; encode STR by iso-latin-1, and return it as type
189 ;; case, the returing type depends on CODING. 189 ;; `STRING'. Otherwise, encode STR by CODING. In that
190 (let ((charsets (find-charset-string str))) 190 ;; case, the returing type depends on CODING.
191 (setq charsets 191 (let ((charsets (find-charset-string str)))
192 (delq 'ascii 192 (setq charsets
193 (delq 'latin-iso8859-1 193 (delq 'ascii
194 (delq 'eight-bit-control 194 (delq 'latin-iso8859-1
195 (delq 'eight-bit-graphic charsets))))) 195 (delq 'eight-bit-control
196 (if charsets 196 (delq 'eight-bit-graphic charsets)))))
197 (setq str (encode-coding-string str coding) 197 (if charsets
198 type (if (memq coding '(compound-text 198 (setq str (encode-coding-string str coding)
199 compound-text-with-extensions)) 199 type (if (memq coding '(compound-text
200 'COMPOUND_TEXT 200 compound-text-with-extensions))
201 'STRING)) 201 'COMPOUND_TEXT
202 (setq type 'STRING 202 'STRING))
203 str (encode-coding-string str 'iso-latin-1)))))) 203 (setq type 'STRING
204 204 str (encode-coding-string str 'iso-latin-1))))))
205 ((eq type 'COMPOUND_TEXT) 205
206 (setq str (encode-coding-string str coding))) 206 ((eq type 'COMPOUND_TEXT)
207 207 (setq str (encode-coding-string str coding)))
208 ((eq type 'STRING) 208
209 (if (memq coding '(compound-text 209 ((eq type 'STRING)
210 compound-text-with-extensions)) 210 (if (memq coding '(compound-text
211 (setq str (string-make-unibyte str)) 211 compound-text-with-extensions))
212 (setq str (encode-coding-string str coding)))) 212 (setq str (string-make-unibyte str))
213 213 (setq str (encode-coding-string str coding))))
214 ((eq type 'UTF8_STRING) 214
215 (setq str (encode-coding-string str 'utf-8))) 215 ((eq type 'UTF8_STRING)
216 216 (setq str (encode-coding-string str 'utf-8)))
217 (t 217
218 (error "Unknow selection type: %S" type)) 218 (t
219 )) 219 (error "Unknow selection type: %S" type))
220 )))
220 221
221 (setq next-selection-coding-system nil) 222 (setq next-selection-coding-system nil)
222 (cons type str)))) 223 (cons type str))))
diff --git a/lisp/ses.el b/lisp/ses.el
index a5cc6bf657c..9439d98c481 100644
--- a/lisp/ses.el
+++ b/lisp/ses.el
@@ -983,7 +983,7 @@ be set to VALUE."
983 (ses-aset-with-undo (symbol-value def) elem value) 983 (ses-aset-with-undo (symbol-value def) elem value)
984 (ses-set-with-undo def value)) 984 (ses-set-with-undo def value))
985 (let ((inhibit-read-only t) 985 (let ((inhibit-read-only t)
986 (fmt (plist-get '(ses--column-widths "(ses-column-widths %S)" 986 (fmt (plist-get '(ses--col-widths "(ses-column-widths %S)"
987 ses--col-printers "(ses-column-printers %S)" 987 ses--col-printers "(ses-column-printers %S)"
988 ses--default-printer "(ses-default-printer %S)" 988 ses--default-printer "(ses-default-printer %S)"
989 ses--header-row "(ses-header-row %S)" 989 ses--header-row "(ses-header-row %S)"
diff --git a/lisp/simple.el b/lisp/simple.el
index b557507fba1..fc6d64ae4a3 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -2401,8 +2401,7 @@ With prefix arg, kill that many lines starting from the current line.
2401If arg is negative, kill backward. Also kill the preceding newline. 2401If arg is negative, kill backward. Also kill the preceding newline.
2402\(This is meant to make C-x z work well with negative arguments.\) 2402\(This is meant to make C-x z work well with negative arguments.\)
2403If arg is zero, kill current line but exclude the trailing newline." 2403If arg is zero, kill current line but exclude the trailing newline."
2404 (interactive "P") 2404 (interactive "p")
2405 (setq arg (prefix-numeric-value arg))
2406 (if (and (> arg 0) (eobp) (save-excursion (forward-visible-line 0) (eobp))) 2405 (if (and (> arg 0) (eobp) (save-excursion (forward-visible-line 0) (eobp)))
2407 (signal 'end-of-buffer nil)) 2406 (signal 'end-of-buffer nil))
2408 (if (and (< arg 0) (bobp) (save-excursion (end-of-visible-line) (bobp))) 2407 (if (and (< arg 0) (bobp) (save-excursion (end-of-visible-line) (bobp)))
diff --git a/lisp/subr.el b/lisp/subr.el
index e81713ebf29..f90b5f774cb 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -90,7 +90,9 @@ DOCSTRING is an optional documentation string.
90 But documentation strings are usually not useful in nameless functions. 90 But documentation strings are usually not useful in nameless functions.
91INTERACTIVE should be a call to the function `interactive', which see. 91INTERACTIVE should be a call to the function `interactive', which see.
92It may also be omitted. 92It may also be omitted.
93BODY should be a list of Lisp expressions." 93BODY should be a list of Lisp expressions.
94
95\(fn ARGS [DOCSTRING] [INTERACTIVE] BODY)"
94 ;; Note that this definition should not use backquotes; subr.el should not 96 ;; Note that this definition should not use backquotes; subr.el should not
95 ;; depend on backquote.el. 97 ;; depend on backquote.el.
96 (list 'function (cons 'lambda cdr))) 98 (list 'function (cons 'lambda cdr)))
@@ -161,7 +163,7 @@ the return value (nil if RESULT is omitted).
161(defmacro declare (&rest specs) 163(defmacro declare (&rest specs)
162 "Do not evaluate any arguments and return nil. 164 "Do not evaluate any arguments and return nil.
163Treated as a declaration when used at the right place in a 165Treated as a declaration when used at the right place in a
164`defmacro' form. \(See Info anchor `(elisp)Definition of declare'." 166`defmacro' form. \(See Info anchor `(elisp)Definition of declare'.)"
165 nil) 167 nil)
166 168
167(defsubst caar (x) 169(defsubst caar (x)
@@ -180,34 +182,34 @@ Treated as a declaration when used at the right place in a
180 "Return the cdr of the cdr of X." 182 "Return the cdr of the cdr of X."
181 (cdr (cdr x))) 183 (cdr (cdr x)))
182 184
183(defun last (x &optional n) 185(defun last (list &optional n)
184 "Return the last link of the list X. Its car is the last element. 186 "Return the last link of LIST. Its car is the last element.
185If X is nil, return nil. 187If LIST is nil, return nil.
186If N is non-nil, return the Nth-to-last link of X. 188If N is non-nil, return the Nth-to-last link of LIST.
187If N is bigger than the length of X, return X." 189If N is bigger than the length of LIST, return LIST."
188 (if n 190 (if n
189 (let ((m 0) (p x)) 191 (let ((m 0) (p list))
190 (while (consp p) 192 (while (consp p)
191 (setq m (1+ m) p (cdr p))) 193 (setq m (1+ m) p (cdr p)))
192 (if (<= n 0) p 194 (if (<= n 0) p
193 (if (< n m) (nthcdr (- m n) x) x))) 195 (if (< n m) (nthcdr (- m n) list) list)))
194 (while (consp (cdr x)) 196 (while (consp (cdr list))
195 (setq x (cdr x))) 197 (setq list (cdr list)))
196 x)) 198 list))
197 199
198(defun butlast (x &optional n) 200(defun butlast (list &optional n)
199 "Returns a copy of LIST with the last N elements removed." 201 "Returns a copy of LIST with the last N elements removed."
200 (if (and n (<= n 0)) x 202 (if (and n (<= n 0)) list
201 (nbutlast (copy-sequence x) n))) 203 (nbutlast (copy-sequence list) n)))
202 204
203(defun nbutlast (x &optional n) 205(defun nbutlast (list &optional n)
204 "Modifies LIST to remove the last N elements." 206 "Modifies LIST to remove the last N elements."
205 (let ((m (length x))) 207 (let ((m (length list)))
206 (or n (setq n 1)) 208 (or n (setq n 1))
207 (and (< n m) 209 (and (< n m)
208 (progn 210 (progn
209 (if (> n 0) (setcdr (nthcdr (- (1- m) n) x) nil)) 211 (if (> n 0) (setcdr (nthcdr (- (1- m) n) list) nil))
210 x)))) 212 list))))
211 213
212(defun delete-dups (list) 214(defun delete-dups (list)
213 "Destructively remove `equal' duplicates from LIST. 215 "Destructively remove `equal' duplicates from LIST.
@@ -1114,6 +1116,7 @@ FILE should be the name of a library, with no directory name."
1114 "Open a TCP connection for a service to a host. 1116 "Open a TCP connection for a service to a host.
1115Returns a subprocess-object to represent the connection. 1117Returns a subprocess-object to represent the connection.
1116Input and output work as for subprocesses; `delete-process' closes it. 1118Input and output work as for subprocesses; `delete-process' closes it.
1119
1117Args are NAME BUFFER HOST SERVICE. 1120Args are NAME BUFFER HOST SERVICE.
1118NAME is name for process. It is modified if necessary to make it unique. 1121NAME is name for process. It is modified if necessary to make it unique.
1119BUFFER is the buffer (or buffer-name) to associate with the process. 1122BUFFER is the buffer (or buffer-name) to associate with the process.
@@ -1178,12 +1181,13 @@ does not use these function."
1178 1181
1179;; compatibility 1182;; compatibility
1180 1183
1184(make-obsolete 'process-kill-without-query
1185 "use `process-query-on-exit-flag'\nor `set-process-query-on-exit-flag'."
1186 "21.5")
1181(defun process-kill-without-query (process &optional flag) 1187(defun process-kill-without-query (process &optional flag)
1182 "Say no query needed if PROCESS is running when Emacs is exited. 1188 "Say no query needed if PROCESS is running when Emacs is exited.
1183Optional second argument if non-nil says to require a query. 1189Optional second argument if non-nil says to require a query.
1184Value is t if a query was formerly required. 1190Value is t if a query was formerly required."
1185New code should not use this function; use `process-query-on-exit-flag'
1186or `set-process-query-on-exit-flag' instead."
1187 (let ((old (process-query-on-exit-flag process))) 1191 (let ((old (process-query-on-exit-flag process)))
1188 (set-process-query-on-exit-flag process nil) 1192 (set-process-query-on-exit-flag process nil)
1189 old)) 1193 old))
@@ -1693,26 +1697,27 @@ If UNDO is present and non-nil, it is a function that will be called
1693 (if (nth 4 handler) ;; COMMAND 1697 (if (nth 4 handler) ;; COMMAND
1694 (setq this-command (nth 4 handler))))) 1698 (setq this-command (nth 4 handler)))))
1695 1699
1696(defun insert-buffer-substring-no-properties (buf &optional start end) 1700(defun insert-buffer-substring-no-properties (buffer &optional start end)
1697 "Insert before point a substring of buffer BUFFER, without text properties. 1701 "Insert before point a substring of BUFFER, without text properties.
1698BUFFER may be a buffer or a buffer name. 1702BUFFER may be a buffer or a buffer name.
1699Arguments START and END are character numbers specifying the substring. 1703Arguments START and END are character numbers specifying the substring.
1700They default to the beginning and the end of BUFFER." 1704They default to the beginning and the end of BUFFER."
1701 (let ((opoint (point))) 1705 (let ((opoint (point)))
1702 (insert-buffer-substring buf start end) 1706 (insert-buffer-substring buffer start end)
1703 (let ((inhibit-read-only t)) 1707 (let ((inhibit-read-only t))
1704 (set-text-properties opoint (point) nil)))) 1708 (set-text-properties opoint (point) nil))))
1705 1709
1706(defun insert-buffer-substring-as-yank (buf &optional start end) 1710(defun insert-buffer-substring-as-yank (buffer &optional start end)
1707 "Insert before point a part of buffer BUFFER, stripping some text properties. 1711 "Insert before point a part of BUFFER, stripping some text properties.
1708BUFFER may be a buffer or a buffer name. Arguments START and END are 1712BUFFER may be a buffer or a buffer name.
1709character numbers specifying the substring. They default to the 1713Arguments START and END are character numbers specifying the substring.
1710beginning and the end of BUFFER. Strip text properties from the 1714They default to the beginning and the end of BUFFER.
1711inserted text according to `yank-excluded-properties'." 1715Strip text properties from the inserted text according to
1716`yank-excluded-properties'."
1712 ;; Since the buffer text should not normally have yank-handler properties, 1717 ;; Since the buffer text should not normally have yank-handler properties,
1713 ;; there is no need to handle them here. 1718 ;; there is no need to handle them here.
1714 (let ((opoint (point))) 1719 (let ((opoint (point)))
1715 (insert-buffer-substring buf start end) 1720 (insert-buffer-substring buffer start end)
1716 (remove-yank-excluded-properties opoint (point)))) 1721 (remove-yank-excluded-properties opoint (point))))
1717 1722
1718 1723
@@ -2073,7 +2078,7 @@ which separates, but is not part of, the substrings. If nil it defaults to
2073`split-string-default-separators', normally \"[ \\f\\t\\n\\r\\v]+\", and 2078`split-string-default-separators', normally \"[ \\f\\t\\n\\r\\v]+\", and
2074OMIT-NULLS is forced to t. 2079OMIT-NULLS is forced to t.
2075 2080
2076If OMIT-NULLs is t, zero-length substrings are omitted from the list \(so 2081If OMIT-NULLS is t, zero-length substrings are omitted from the list \(so
2077that for the default value of SEPARATORS leading and trailing whitespace 2082that for the default value of SEPARATORS leading and trailing whitespace
2078are effectively trimmed). If nil, all zero-length substrings are retained, 2083are effectively trimmed). If nil, all zero-length substrings are retained,
2079which correctly parses CSV format, for example. 2084which correctly parses CSV format, for example.
diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el
index f43d8b235d1..1ffab849406 100644
--- a/lisp/term/w32-win.el
+++ b/lisp/term/w32-win.el
@@ -76,6 +76,7 @@
76(require 'faces) 76(require 'faces)
77(require 'select) 77(require 'select)
78(require 'menu-bar) 78(require 'menu-bar)
79(require 'x-dnd)
79;; Conditional on new-fontset so bootstrapping works on non-GUI compiles 80;; Conditional on new-fontset so bootstrapping works on non-GUI compiles
80(if (fboundp 'new-fontset) 81(if (fboundp 'new-fontset)
81 (require 'fontset)) 82 (require 'fontset))
@@ -105,7 +106,10 @@ Switch to a buffer editing the last file dropped."
105 (y (cdr coords))) 106 (y (cdr coords)))
106 (if (and (> x 0) (> y 0)) 107 (if (and (> x 0) (> y 0))
107 (set-frame-selected-window nil window)) 108 (set-frame-selected-window nil window))
108 (mapcar 'find-file (car (cdr (cdr event))))) 109 (mapcar (lambda (file-name)
110 (x-dnd-handle-one-url window 'private
111 (concat "file:" file-name)))
112 (car (cdr (cdr event)))))
109 (raise-frame))) 113 (raise-frame)))
110 114
111(defun w32-drag-n-drop-other-frame (event) 115(defun w32-drag-n-drop-other-frame (event)
diff --git a/lisp/term/x-win.el b/lisp/term/x-win.el
index cd26352a962..381ee606300 100644
--- a/lisp/term/x-win.el
+++ b/lisp/term/x-win.el
@@ -2334,7 +2334,10 @@ order until succeed.")
2334(defun x-clipboard-yank () 2334(defun x-clipboard-yank ()
2335 "Insert the clipboard contents, or the last stretch of killed text." 2335 "Insert the clipboard contents, or the last stretch of killed text."
2336 (interactive) 2336 (interactive)
2337 (let ((clipboard-text (x-get-selection 'CLIPBOARD)) 2337 (let ((clipboard-text
2338 (condition-case nil
2339 (x-get-selection 'CLIPBOARD)
2340 (error nil)))
2338 (x-select-enable-clipboard t)) 2341 (x-select-enable-clipboard t))
2339 (if (and clipboard-text (> (length clipboard-text) 0)) 2342 (if (and clipboard-text (> (length clipboard-text) 0))
2340 (kill-new clipboard-text)) 2343 (kill-new clipboard-text))
diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el
index 82b15cf4eb5..5c95b138720 100644
--- a/lisp/textmodes/bibtex.el
+++ b/lisp/textmodes/bibtex.el
@@ -1,6 +1,7 @@
1;;; bibtex.el --- BibTeX mode for GNU Emacs 1;;; bibtex.el --- BibTeX mode for GNU Emacs
2 2
3;; Copyright (C) 1992,94,95,96,97,98,1999,2003 Free Software Foundation, Inc. 3;; Copyright (C) 1992,94,95,96,97,98,1999,2003,2004
4;; Free Software Foundation, Inc.
4 5
5;; Author: Stefan Schoef <schoef@offis.uni-oldenburg.de> 6;; Author: Stefan Schoef <schoef@offis.uni-oldenburg.de>
6;; Bengt Martensson <bengt@mathematik.uni-Bremen.de> 7;; Bengt Martensson <bengt@mathematik.uni-Bremen.de>
@@ -811,6 +812,7 @@ If non-nil, the column for the equal sign is the value of
811 (define-key km "\C-c\M-y" 'bibtex-yank-pop) 812 (define-key km "\C-c\M-y" 'bibtex-yank-pop)
812 (define-key km "\C-c\C-d" 'bibtex-empty-field) 813 (define-key km "\C-c\C-d" 'bibtex-empty-field)
813 (define-key km "\C-c\C-f" 'bibtex-make-field) 814 (define-key km "\C-c\C-f" 'bibtex-make-field)
815 (define-key km "\C-c\C-u" 'bibtex-entry-update)
814 (define-key km "\C-c$" 'bibtex-ispell-abstract) 816 (define-key km "\C-c$" 'bibtex-ispell-abstract)
815 (define-key km "\M-\C-a" 'bibtex-beginning-of-entry) 817 (define-key km "\M-\C-a" 'bibtex-beginning-of-entry)
816 (define-key km "\M-\C-e" 'bibtex-end-of-entry) 818 (define-key km "\M-\C-e" 'bibtex-end-of-entry)
@@ -1122,44 +1124,6 @@ function `bibtex-parse-field-name'.")
1122 '(bibtex-mode "@\\S(*\\s(" "\\s)" nil bibtex-hs-forward-sexp nil)) 1124 '(bibtex-mode "@\\S(*\\s(" "\\s)" nil bibtex-hs-forward-sexp nil))
1123 1125
1124 1126
1125(defconst bibtex-braced-string-syntax-table
1126 (let ((st (make-syntax-table)))
1127 (modify-syntax-entry ?\{ "(}" st)
1128 (modify-syntax-entry ?\} "){" st)
1129 (modify-syntax-entry ?\[ "." st)
1130 (modify-syntax-entry ?\] "." st)
1131 (modify-syntax-entry ?\( "." st)
1132 (modify-syntax-entry ?\) "." st)
1133 (modify-syntax-entry ?\\ "." st)
1134 (modify-syntax-entry ?\" "." st)
1135 st)
1136 "Syntax-table to parse matched braces.")
1137
1138(defconst bibtex-quoted-string-syntax-table
1139 (let ((st (make-syntax-table)))
1140 (modify-syntax-entry ?\\ "\\" st)
1141 (modify-syntax-entry ?\" "\"" st)
1142 st)
1143 "Syntax-table to parse matched quotes.")
1144
1145(defun bibtex-parse-field-string ()
1146 "Parse a field string enclosed by braces or quotes.
1147If a syntactically correct string is found, a pair containing the start and
1148end position of the field string is returned, nil otherwise."
1149 (let ((end-point
1150 (or (and (eq (following-char) ?\")
1151 (save-excursion
1152 (with-syntax-table bibtex-quoted-string-syntax-table
1153 (forward-sexp 1))
1154 (point)))
1155 (and (eq (following-char) ?\{)
1156 (save-excursion
1157 (with-syntax-table bibtex-braced-string-syntax-table
1158 (forward-sexp 1))
1159 (point))))))
1160 (if end-point
1161 (cons (point) end-point))))
1162
1163(defun bibtex-parse-association (parse-lhs parse-rhs) 1127(defun bibtex-parse-association (parse-lhs parse-rhs)
1164 "Parse a string of the format <left-hand-side = right-hand-side>. 1128 "Parse a string of the format <left-hand-side = right-hand-side>.
1165The functions PARSE-LHS and PARSE-RHS are used to parse the corresponding 1129The functions PARSE-LHS and PARSE-RHS are used to parse the corresponding
@@ -1199,6 +1163,44 @@ BibTeX field as necessary."
1199 ;; Now try again. 1163 ;; Now try again.
1200 (bibtex-parse-field-name)))) 1164 (bibtex-parse-field-name))))
1201 1165
1166(defconst bibtex-braced-string-syntax-table
1167 (let ((st (make-syntax-table)))
1168 (modify-syntax-entry ?\{ "(}" st)
1169 (modify-syntax-entry ?\} "){" st)
1170 (modify-syntax-entry ?\[ "." st)
1171 (modify-syntax-entry ?\] "." st)
1172 (modify-syntax-entry ?\( "." st)
1173 (modify-syntax-entry ?\) "." st)
1174 (modify-syntax-entry ?\\ "." st)
1175 (modify-syntax-entry ?\" "." st)
1176 st)
1177 "Syntax-table to parse matched braces.")
1178
1179(defconst bibtex-quoted-string-syntax-table
1180 (let ((st (make-syntax-table)))
1181 (modify-syntax-entry ?\\ "\\" st)
1182 (modify-syntax-entry ?\" "\"" st)
1183 st)
1184 "Syntax-table to parse matched quotes.")
1185
1186(defun bibtex-parse-field-string ()
1187 "Parse a field string enclosed by braces or quotes.
1188If a syntactically correct string is found, a pair containing the start and
1189end position of the field string is returned, nil otherwise."
1190 (let ((end-point
1191 (or (and (eq (following-char) ?\")
1192 (save-excursion
1193 (with-syntax-table bibtex-quoted-string-syntax-table
1194 (forward-sexp 1))
1195 (point)))
1196 (and (eq (following-char) ?\{)
1197 (save-excursion
1198 (with-syntax-table bibtex-braced-string-syntax-table
1199 (forward-sexp 1))
1200 (point))))))
1201 (if end-point
1202 (cons (point) end-point))))
1203
1202(defun bibtex-parse-field-text () 1204(defun bibtex-parse-field-text ()
1203 "Parse the text part of a BibTeX field. 1205 "Parse the text part of a BibTeX field.
1204The text part is either a string, or an empty string, or a constant followed 1206The text part is either a string, or an empty string, or a constant followed
@@ -1410,7 +1412,7 @@ delimiters if present."
1410 (let ((content (buffer-substring-no-properties (nth 0 (cdr bounds)) 1412 (let ((content (buffer-substring-no-properties (nth 0 (cdr bounds))
1411 (nth 1 (cdr bounds))))) 1413 (nth 1 (cdr bounds)))))
1412 (if (and remove-delim 1414 (if (and remove-delim
1413 (string-match "\\`{\\(.*\\)}\\'" content)) 1415 (string-match "\\`[{\"]\\(.*\\)[}\"]\\'" content))
1414 (substring content (match-beginning 1) (match-end 1)) 1416 (substring content (match-beginning 1) (match-end 1))
1415 content))) 1417 content)))
1416 1418
@@ -1455,16 +1457,6 @@ The value is actually the tail of LIST whose car matches STRING."
1455 (setq list (cdr list))) 1457 (setq list (cdr list)))
1456 list)) 1458 list))
1457 1459
1458(defun bibtex-assoc-of-regexp (string alist)
1459 "Return non-nil if STRING is exactly matched by the car of an
1460element of ALIST (case ignored). The value is actually the element
1461of LIST whose car matches STRING."
1462 (let ((case-fold-search t))
1463 (while (and alist
1464 (not (string-match (concat "\\`\\(?:" (caar alist) "\\)\\'") string)))
1465 (setq alist (cdr alist)))
1466 (car alist)))
1467
1468(defun bibtex-skip-to-valid-entry (&optional backward) 1460(defun bibtex-skip-to-valid-entry (&optional backward)
1469 "Unless at beginning of a valid BibTeX entry, move point to beginning of the 1461 "Unless at beginning of a valid BibTeX entry, move point to beginning of the
1470next valid one. With optional argument BACKWARD non-nil, move backward to 1462next valid one. With optional argument BACKWARD non-nil, move backward to
@@ -1519,8 +1511,8 @@ FUN will not be called for @String entries."
1519If FLAG is a string, the message is initialized (in this case a 1511If FLAG is a string, the message is initialized (in this case a
1520value for INTERVAL may be given as well (if not this is set to 5)). 1512value for INTERVAL may be given as well (if not this is set to 5)).
1521If FLAG is done, the message is deinitialized. 1513If FLAG is done, the message is deinitialized.
1522If FLAG is absent, a message is echoed if point was incremented 1514If FLAG is nil, a message is echoed if point was incremented at least
1523at least INTERVAL percent since last message was echoed." 1515`bibtex-progress-interval' percent since last message was echoed."
1524 (cond ((stringp flag) 1516 (cond ((stringp flag)
1525 (setq bibtex-progress-lastmes flag) 1517 (setq bibtex-progress-lastmes flag)
1526 (setq bibtex-progress-interval (or interval 5) 1518 (setq bibtex-progress-interval (or interval 5)
@@ -1685,11 +1677,11 @@ are defined, but only for the head part of the entry
1685 "Try to avoid point being at end of a BibTeX field." 1677 "Try to avoid point being at end of a BibTeX field."
1686 (end-of-line) 1678 (end-of-line)
1687 (skip-chars-backward " \t") 1679 (skip-chars-backward " \t")
1688 (cond ((= (preceding-char) ?,) 1680 (if (= (preceding-char) ?,)
1689 (forward-char -2))) 1681 (forward-char -2))
1690 (cond ((or (= (preceding-char) ?}) 1682 (if (or (= (preceding-char) ?})
1691 (= (preceding-char) ?\")) 1683 (= (preceding-char) ?\"))
1692 (forward-char -1)))) 1684 (forward-char -1)))
1693 1685
1694(defun bibtex-enclosing-field (&optional noerr) 1686(defun bibtex-enclosing-field (&optional noerr)
1695 "Search for BibTeX field enclosing point. Point moves to end of field. 1687 "Search for BibTeX field enclosing point. Point moves to end of field.
@@ -1749,6 +1741,15 @@ Beginning (but not end) of entry is given by (`match-beginning' 0)."
1749 (error "Unknown tag field: %s. Please submit a bug report" 1741 (error "Unknown tag field: %s. Please submit a bug report"
1750 bibtex-last-kill-command)))))) 1742 bibtex-last-kill-command))))))
1751 1743
1744(defun bibtex-assoc-regexp (regexp alist)
1745 "Return non-nil if REGEXP matches the car of an element of ALIST.
1746The value is actually the element of ALIST matched by REGEXP.
1747Case is ignored if `case-fold-search' is non-nil in the current buffer."
1748 (while (and alist
1749 (not (string-match regexp (caar alist))))
1750 (setq alist (cdr alist)))
1751 (car alist))
1752
1752(defun bibtex-format-entry () 1753(defun bibtex-format-entry ()
1753 "Helper function for `bibtex-clean-entry'. 1754 "Helper function for `bibtex-clean-entry'.
1754Formats current entry according to variable `bibtex-entry-format'." 1755Formats current entry according to variable `bibtex-entry-format'."
@@ -1763,7 +1764,7 @@ Formats current entry according to variable `bibtex-entry-format'."
1763 unify-case inherit-booktitle) 1764 unify-case inherit-booktitle)
1764 bibtex-entry-format)) 1765 bibtex-entry-format))
1765 crossref-key bounds alternatives-there non-empty-alternative 1766 crossref-key bounds alternatives-there non-empty-alternative
1766 entry-list req creq field-done field-list) 1767 entry-list req-field-list field-done field-list)
1767 1768
1768 ;; identify entry type 1769 ;; identify entry type
1769 (goto-char (point-min)) 1770 (goto-char (point-min))
@@ -1772,9 +1773,7 @@ Formats current entry according to variable `bibtex-entry-format'."
1772 (end-type (match-end 0))) 1773 (end-type (match-end 0)))
1773 (setq entry-list (assoc-ignore-case (buffer-substring-no-properties 1774 (setq entry-list (assoc-ignore-case (buffer-substring-no-properties
1774 beg-type end-type) 1775 beg-type end-type)
1775 bibtex-entry-field-alist) 1776 bibtex-entry-field-alist))
1776 req (nth 0 (nth 1 entry-list)) ; required part
1777 creq (nth 0 (nth 2 entry-list))) ; crossref part
1778 1777
1779 ;; unify case of entry name 1778 ;; unify case of entry name
1780 (when (memq 'unify-case format) 1779 (when (memq 'unify-case format)
@@ -1791,20 +1790,32 @@ Formats current entry according to variable `bibtex-entry-format'."
1791 ;; determine if entry has crossref field and if at least 1790 ;; determine if entry has crossref field and if at least
1792 ;; one alternative is non-empty 1791 ;; one alternative is non-empty
1793 (goto-char (point-min)) 1792 (goto-char (point-min))
1794 (while (setq bounds (bibtex-search-forward-field 1793 (let* ((fields-alist (bibtex-parse-entry))
1795 bibtex-field-name)) 1794 (case-fold-search t)
1796 (goto-char (bibtex-start-of-name-in-field bounds)) 1795 (field (bibtex-assoc-regexp "\\(OPT\\)?crossref\\>"
1797 (cond ((looking-at "ALT") 1796 fields-alist)))
1798 (setq alternatives-there t) 1797 (setq crossref-key (and field
1799 (goto-char (bibtex-start-of-text-in-field bounds)) 1798 (not (string-match bibtex-empty-field-re
1800 (if (not (looking-at bibtex-empty-field-re)) 1799 (cdr field)))
1801 (setq non-empty-alternative t))) 1800 (cdr field))
1802 ((and (looking-at "\\(OPT\\)?crossref\\>") 1801 req-field-list (if crossref-key
1803 (progn (goto-char (bibtex-start-of-text-in-field bounds)) 1802 (nth 0 (nth 2 entry-list)) ; crossref part
1804 (not (looking-at bibtex-empty-field-re)))) 1803 (nth 0 (nth 1 entry-list)))) ; required part
1805 (setq crossref-key 1804
1806 (bibtex-text-in-field-bounds bounds t)))) 1805 (dolist (rfield req-field-list)
1807 (goto-char (bibtex-end-of-field bounds))) 1806 (when (nth 3 rfield) ; we should have an alternative
1807 (setq alternatives-there t
1808 field (bibtex-assoc-regexp
1809 (concat "\\(ALT\\)?" (car rfield) "\\>")
1810 fields-alist))
1811 (if (and field
1812 (not (string-match bibtex-empty-field-re
1813 (cdr field))))
1814 (cond ((not non-empty-alternative)
1815 (setq non-empty-alternative t))
1816 ((memq 'required-fields format)
1817 (error "More than one non-empty alternative.")))))))
1818
1808 (if (and alternatives-there 1819 (if (and alternatives-there
1809 (not non-empty-alternative) 1820 (not non-empty-alternative)
1810 (memq 'required-fields format)) 1821 (memq 'required-fields format))
@@ -1832,18 +1843,23 @@ Formats current entry according to variable `bibtex-entry-format'."
1832 ;; quite some redundancy compared with what we need to do 1843 ;; quite some redundancy compared with what we need to do
1833 ;; anyway. So for speed-up we avoid using them. 1844 ;; anyway. So for speed-up we avoid using them.
1834 1845
1835 (when (and opt-alt 1846 (if (memq 'opts-or-alts format)
1836 (memq 'opts-or-alts format)) 1847 (cond ((and empty-field
1837 (if empty-field 1848 (or opt-alt
1838 ;; Either it is an empty ALT field. Then we have checked 1849 (let ((field (assoc-ignore-case
1839 ;; already that we have one non-empty alternative. 1850 field-name req-field-list)))
1840 ;; Or it is an empty OPT field that we do not miss anyway. 1851 (or (not field) ; OPT field
1841 ;; So we can safely delete this field. 1852 (nth 3 field))))) ; ALT field
1842 (progn (delete-region beg-field end-field) 1853 ;; Either it is an empty ALT field. Then we have checked
1843 (setq deleted t)) 1854 ;; already that we have one non-empty alternative. Or it
1844 ;; otherwise: not empty, delete "OPT" or "ALT" 1855 ;; is an empty OPT field that we do not miss anyway.
1845 (goto-char beg-name) 1856 ;; So we can safely delete this field.
1846 (delete-char 3))) 1857 (delete-region beg-field end-field)
1858 (setq deleted t))
1859 ;; otherwise: not empty, delete "OPT" or "ALT"
1860 (opt-alt
1861 (goto-char beg-name)
1862 (delete-char 3))))
1847 1863
1848 (unless deleted 1864 (unless deleted
1849 (push field-name field-list) 1865 (push field-name field-list)
@@ -1902,8 +1918,7 @@ Formats current entry according to variable `bibtex-entry-format'."
1902 ;; if empty field, complain 1918 ;; if empty field, complain
1903 (if (and empty-field 1919 (if (and empty-field
1904 (memq 'required-fields format) 1920 (memq 'required-fields format)
1905 (assoc-ignore-case field-name 1921 (assoc-ignore-case field-name req-field-list))
1906 (if crossref-key creq req)))
1907 (error "Mandatory field `%s' is empty" field-name)) 1922 (error "Mandatory field `%s' is empty" field-name))
1908 1923
1909 ;; unify case of field name 1924 ;; unify case of field name
@@ -1925,8 +1940,8 @@ Formats current entry according to variable `bibtex-entry-format'."
1925 1940
1926 ;; check whether all required fields are present 1941 ;; check whether all required fields are present
1927 (if (memq 'required-fields format) 1942 (if (memq 'required-fields format)
1928 (let (altlist (found 0)) 1943 (let ((found 0) altlist)
1929 (dolist (fname (if crossref-key creq req)) 1944 (dolist (fname req-field-list)
1930 (if (nth 3 fname) 1945 (if (nth 3 fname)
1931 (push (car fname) altlist)) 1946 (push (car fname) altlist))
1932 (unless (or (member (car fname) field-list) 1947 (unless (or (member (car fname) field-list)
@@ -1940,7 +1955,7 @@ Formats current entry according to variable `bibtex-entry-format'."
1940 (error "Alternative mandatory field `%s' is missing" 1955 (error "Alternative mandatory field `%s' is missing"
1941 altlist)) 1956 altlist))
1942 ((> found 1) 1957 ((> found 1)
1943 (error "Alternative fields `%s' is defined %s times" 1958 (error "Alternative fields `%s' are defined %s times"
1944 altlist found)))))) 1959 altlist found))))))
1945 1960
1946 ;; update point 1961 ;; update point
@@ -2051,8 +2066,8 @@ and return results as a list."
2051 (setq titlestring (substring titlestring 0 (match-beginning 0)))))) 2066 (setq titlestring (substring titlestring 0 (match-beginning 0))))))
2052 ;; gather words from titlestring into a list. Ignore 2067 ;; gather words from titlestring into a list. Ignore
2053 ;; specific words and use only a specific amount of words. 2068 ;; specific words and use only a specific amount of words.
2054 (let (case-fold-search titlewords titlewords-extra titleword end-match 2069 (let ((counter 0)
2055 (counter 0)) 2070 case-fold-search titlewords titlewords-extra titleword end-match)
2056 (while (and (or (not (numberp bibtex-autokey-titlewords)) 2071 (while (and (or (not (numberp bibtex-autokey-titlewords))
2057 (< counter (+ bibtex-autokey-titlewords 2072 (< counter (+ bibtex-autokey-titlewords
2058 bibtex-autokey-titlewords-stretch))) 2073 bibtex-autokey-titlewords-stretch)))
@@ -2079,10 +2094,14 @@ and return results as a list."
2079 "Do some abbreviations on TITLEWORD. 2094 "Do some abbreviations on TITLEWORD.
2080The rules are defined in `bibtex-autokey-titleword-abbrevs' 2095The rules are defined in `bibtex-autokey-titleword-abbrevs'
2081and `bibtex-autokey-titleword-length'." 2096and `bibtex-autokey-titleword-length'."
2082 (let ((abbrev (bibtex-assoc-of-regexp 2097 (let ((case-folde-search t)
2083 titleword bibtex-autokey-titleword-abbrevs))) 2098 (alist bibtex-autokey-titleword-abbrevs))
2084 (if abbrev 2099 (while (and alist
2085 (cdr abbrev) 2100 (not (string-match (concat "\\`\\(?:" (caar alist) "\\)\\'")
2101 titleword)))
2102 (setq alist (cdr alist)))
2103 (if alist
2104 (cdar alist)
2086 (bibtex-autokey-abbrev titleword 2105 (bibtex-autokey-abbrev titleword
2087 bibtex-autokey-titleword-length)))) 2106 bibtex-autokey-titleword-length))))
2088 2107
@@ -2384,6 +2403,7 @@ of a word, all strings are listed. Return completion."
2384 (display-completion-list (all-completions part-of-word 2403 (display-completion-list (all-completions part-of-word
2385 completions))) 2404 completions)))
2386 (message "Making completion list...done") 2405 (message "Making completion list...done")
2406 ;; return value is handled by choose-completion-string-functions
2387 nil)))) 2407 nil))))
2388 2408
2389(defun bibtex-complete-string-cleanup (str) 2409(defun bibtex-complete-string-cleanup (str)
@@ -2629,6 +2649,34 @@ non-nil.
2629 (easy-menu-add bibtex-entry-menu) 2649 (easy-menu-add bibtex-entry-menu)
2630 (run-hooks 'bibtex-mode-hook)) 2650 (run-hooks 'bibtex-mode-hook))
2631 2651
2652(defun bibtex-field-list (entry-type)
2653 "Return list of allowed fields for entry ENTRY-TYPE.
2654More specifically, the return value is a cons pair (REQUIRED . OPTIONAL),
2655where REQUIRED and OPTIONAL are lists of the required and optional field
2656names for ENTRY-TYPE according to `bibtex-entry-field-alist'."
2657 (let ((e (assoc-ignore-case entry-type bibtex-entry-field-alist))
2658 required optional)
2659 (unless e
2660 (error "Bibtex entry type %s not defined" entry-type))
2661 (if (and (member-ignore-case entry-type bibtex-include-OPTcrossref)
2662 (nth 2 e))
2663 (setq required (nth 0 (nth 2 e))
2664 optional (nth 1 (nth 2 e)))
2665 (setq required (nth 0 (nth 1 e))
2666 optional (nth 1 (nth 1 e))))
2667 (if bibtex-include-OPTkey
2668 (push (list "key"
2669 "Used for reference key creation if author and editor fields are missing"
2670 (if (or (stringp bibtex-include-OPTkey)
2671 (fboundp bibtex-include-OPTkey))
2672 bibtex-include-OPTkey))
2673 optional))
2674 (if (member-ignore-case entry-type bibtex-include-OPTcrossref)
2675 (push '("crossref" "Reference key of the cross-referenced entry")
2676 optional))
2677 (setq optional (append optional bibtex-user-optional-fields))
2678 (cons required optional)))
2679
2632(defun bibtex-entry (entry-type) 2680(defun bibtex-entry (entry-type)
2633 "Insert a new BibTeX entry. 2681 "Insert a new BibTeX entry.
2634After insertion it calls the functions in `bibtex-add-entry-hook'." 2682After insertion it calls the functions in `bibtex-add-entry-hook'."
@@ -2638,38 +2686,17 @@ After insertion it calls the functions in `bibtex-add-entry-hook'."
2638 bibtex-entry-field-alist 2686 bibtex-entry-field-alist
2639 nil t nil 'bibtex-entry-type-history))) 2687 nil t nil 'bibtex-entry-type-history)))
2640 (list e-t))) 2688 (list e-t)))
2641 (let* (required optional 2689 (let ((key (if bibtex-maintain-sorted-entries
2642 (key (if bibtex-maintain-sorted-entries 2690 (bibtex-read-key (format "%s key: " entry-type))))
2643 (bibtex-read-key (format "%s key: " entry-type)))) 2691 (field-list (bibtex-field-list entry-type)))
2644 (e (assoc-ignore-case entry-type bibtex-entry-field-alist))
2645 (r-n-o (elt e 1))
2646 (c-ref (elt e 2)))
2647 (if (not e)
2648 (error "Bibtex entry type %s not defined" entry-type))
2649 (if (and (member entry-type bibtex-include-OPTcrossref)
2650 c-ref)
2651 (setq required (elt c-ref 0)
2652 optional (elt c-ref 1))
2653 (setq required (elt r-n-o 0)
2654 optional (elt r-n-o 1)))
2655 (unless (bibtex-prepare-new-entry (list key nil entry-type)) 2692 (unless (bibtex-prepare-new-entry (list key nil entry-type))
2656 (error "Entry with key `%s' already exists" key)) 2693 (error "Entry with key `%s' already exists" key))
2657 (indent-to-column bibtex-entry-offset) 2694 (indent-to-column bibtex-entry-offset)
2658 (insert "@" entry-type (bibtex-entry-left-delimiter)) 2695 (insert "@" entry-type (bibtex-entry-left-delimiter))
2659 (if key 2696 (if key (insert key))
2660 (insert key))
2661 (save-excursion 2697 (save-excursion
2662 (mapcar 'bibtex-make-field required) 2698 (mapcar 'bibtex-make-field (car field-list))
2663 (if (member entry-type bibtex-include-OPTcrossref) 2699 (mapcar 'bibtex-make-optional-field (cdr field-list))
2664 (bibtex-make-optional-field '("crossref")))
2665 (if bibtex-include-OPTkey
2666 (if (or (stringp bibtex-include-OPTkey)
2667 (fboundp bibtex-include-OPTkey))
2668 (bibtex-make-optional-field
2669 (list "key" nil bibtex-include-OPTkey))
2670 (bibtex-make-optional-field '("key"))))
2671 (mapcar 'bibtex-make-optional-field optional)
2672 (mapcar 'bibtex-make-optional-field bibtex-user-optional-fields)
2673 (if bibtex-comma-after-last-field 2700 (if bibtex-comma-after-last-field
2674 (insert ",")) 2701 (insert ","))
2675 (insert "\n") 2702 (insert "\n")
@@ -2680,10 +2707,31 @@ After insertion it calls the functions in `bibtex-add-entry-hook'."
2680 (bibtex-autofill-entry)) 2707 (bibtex-autofill-entry))
2681 (run-hooks 'bibtex-add-entry-hook))) 2708 (run-hooks 'bibtex-add-entry-hook)))
2682 2709
2710(defun bibtex-entry-update ()
2711 "Update an existing BibTeX entry.
2712In the BibTeX entry at point, make new fields for those items that may occur
2713according to `bibtex-entry-field-alist', but are not yet present."
2714 (interactive)
2715 (save-excursion
2716 (bibtex-beginning-of-entry)
2717 ;; For inserting new fields, we use the fact that
2718 ;; bibtex-parse-entry moves point to the end of the last field.
2719 (let* ((fields-alist (bibtex-parse-entry))
2720 (field-list (bibtex-field-list
2721 (substring (cdr (assoc "=type=" fields-alist))
2722 1)))) ; don't want @
2723 (dolist (field (car field-list))
2724 (unless (assoc-ignore-case (car field) fields-alist)
2725 (bibtex-make-field field)))
2726 (dolist (field (cdr field-list))
2727 (unless (assoc-ignore-case (car field) fields-alist)
2728 (bibtex-make-optional-field field))))))
2729
2683(defun bibtex-parse-entry () 2730(defun bibtex-parse-entry ()
2684 "Parse entry at point, return an alist. 2731 "Parse entry at point, return an alist.
2685The alist elements have the form (FIELD . TEXT), where FIELD can also be 2732The alist elements have the form (FIELD . TEXT), where FIELD can also be
2686the special strings \"=type=\" and \"=key=\"." 2733the special strings \"=type=\" and \"=key=\".
2734Move point to the end of the last field."
2687 (let (alist bounds) 2735 (let (alist bounds)
2688 (when (looking-at bibtex-entry-head) 2736 (when (looking-at bibtex-entry-head)
2689 (push (cons "=type=" (match-string bibtex-type-in-head)) alist) 2737 (push (cons "=type=" (match-string bibtex-type-in-head)) alist)
@@ -2774,28 +2822,14 @@ the special strings \"=type=\" and \"=key=\"."
2774 (looking-at "OPT\\|ALT")) 2822 (looking-at "OPT\\|ALT"))
2775 (match-end 0) mb) 2823 (match-end 0) mb)
2776 (bibtex-end-of-name-in-field bounds))) 2824 (bibtex-end-of-name-in-field bounds)))
2777 (entry-type (progn (re-search-backward 2825 (field-list (bibtex-field-list (progn (re-search-backward
2778 bibtex-entry-maybe-empty-head nil t) 2826 bibtex-entry-maybe-empty-head nil t)
2779 (bibtex-type-in-head))) 2827 (bibtex-type-in-head))))
2780 (entry-list (assoc-ignore-case entry-type 2828 (comment (assoc-ignore-case field-name
2781 bibtex-entry-field-alist)) 2829 (append (car field-list)
2782 (c-r-list (elt entry-list 2)) 2830 (cdr field-list)))))
2783 (req-opt-list (if (and (member entry-type
2784 bibtex-include-OPTcrossref)
2785 c-r-list)
2786 c-r-list
2787 (elt entry-list 1)))
2788 (list-of-entries (append (elt req-opt-list 0)
2789 (elt req-opt-list 1)
2790 bibtex-user-optional-fields
2791 (if (member entry-type
2792 bibtex-include-OPTcrossref)
2793 '(("crossref" "Reference key of the cross-referenced entry")))
2794 (if bibtex-include-OPTkey
2795 '(("key" "Used for reference key creation if author and editor fields are missing")))))
2796 (comment (assoc-ignore-case field-name list-of-entries)))
2797 (if comment 2831 (if comment
2798 (message (elt comment 1)) 2832 (message (nth 1 comment))
2799 (message "No comment available"))))) 2833 (message "No comment available")))))
2800 2834
2801(defun bibtex-make-field (field &optional called-by-yank) 2835(defun bibtex-make-field (field &optional called-by-yank)
@@ -2804,24 +2838,13 @@ FIELD is either a string or a list of the form
2804\(FIELD-NAME COMMENT-STRING INIT ALTERNATIVE-FLAG) as in 2838\(FIELD-NAME COMMENT-STRING INIT ALTERNATIVE-FLAG) as in
2805`bibtex-entry-field-alist'." 2839`bibtex-entry-field-alist'."
2806 (interactive 2840 (interactive
2807 (list (let* ((entry-type 2841 (list (let ((completion-ignore-case t)
2808 (save-excursion 2842 (field-list (bibtex-field-list
2809 (bibtex-enclosing-entry-maybe-empty-head) 2843 (save-excursion
2810 (bibtex-type-in-head))) 2844 (bibtex-enclosing-entry-maybe-empty-head)
2811 ;; "preliminary" completion list 2845 (bibtex-type-in-head)))))
2812 (fl (nth 1 (assoc-ignore-case 2846 (completing-read "BibTeX field name: "
2813 entry-type bibtex-entry-field-alist))) 2847 (append (car field-list) (cdr field-list))
2814 ;; "full" completion list
2815 (field-list (append (nth 0 fl)
2816 (nth 1 fl)
2817 bibtex-user-optional-fields
2818 (if (member entry-type
2819 bibtex-include-OPTcrossref)
2820 '(("crossref")))
2821 (if bibtex-include-OPTkey
2822 '(("key")))))
2823 (completion-ignore-case t))
2824 (completing-read "BibTeX field name: " field-list
2825 nil nil nil bibtex-field-history)))) 2848 nil nil nil bibtex-field-history))))
2826 (unless (consp field) 2849 (unless (consp field)
2827 (setq field (list field))) 2850 (setq field (list field)))
@@ -2848,8 +2871,9 @@ FIELD is either a string or a list of the form
2848 ((fboundp init) 2871 ((fboundp init)
2849 (insert (funcall init))))) 2872 (insert (funcall init)))))
2850 (if (not called-by-yank) (insert (bibtex-field-right-delimiter))) 2873 (if (not called-by-yank) (insert (bibtex-field-right-delimiter)))
2851 (if (interactive-p) 2874 (when (interactive-p)
2852 (forward-char -1))) 2875 (forward-char -1)
2876 (bibtex-print-help-message)))
2853 2877
2854(defun bibtex-beginning-of-entry () 2878(defun bibtex-beginning-of-entry ()
2855 "Move to beginning of BibTeX entry (beginning of line). 2879 "Move to beginning of BibTeX entry (beginning of line).
@@ -2982,13 +3006,14 @@ the entries of the BibTeX buffer. Return nil if no entry found."
2982 "\\(OPT\\)?crossref" t))) 3006 "\\(OPT\\)?crossref" t)))
2983 (list key 3007 (list key
2984 (if bounds (bibtex-text-in-field-bounds bounds t)) 3008 (if bounds (bibtex-text-in-field-bounds bounds t))
2985 entry-name)))) 3009 entry-name)))
2986 (list key nil entry-name))))) 3010 (list key nil entry-name))))))
2987 3011
2988(defun bibtex-lessp (index1 index2) 3012(defun bibtex-lessp (index1 index2)
2989 "Predicate for sorting BibTeX entries with indices INDEX1 and INDEX2. 3013 "Predicate for sorting BibTeX entries with indices INDEX1 and INDEX2.
2990Each index is a list (KEY CROSSREF-KEY ENTRY-NAME). 3014Each index is a list (KEY CROSSREF-KEY ENTRY-NAME).
2991The predicate depends on the variable `bibtex-maintain-sorted-entries'." 3015The predicate depends on the variable `bibtex-maintain-sorted-entries'.
3016If its value is nil use plain sorting."
2992 (cond ((not index1) (not index2)) ; indices can be nil 3017 (cond ((not index1) (not index2)) ; indices can be nil
2993 ((not index2) nil) 3018 ((not index2) nil)
2994 ((equal bibtex-maintain-sorted-entries 'crossref) 3019 ((equal bibtex-maintain-sorted-entries 'crossref)
@@ -3017,12 +3042,10 @@ The predicate depends on the variable `bibtex-maintain-sorted-entries'."
3017(defun bibtex-sort-buffer () 3042(defun bibtex-sort-buffer ()
3018 "Sort BibTeX buffer alphabetically by key. 3043 "Sort BibTeX buffer alphabetically by key.
3019The predicate for sorting is defined via `bibtex-maintain-sorted-entries'. 3044The predicate for sorting is defined via `bibtex-maintain-sorted-entries'.
3020Text outside of BibTeX entries is not affected. If 3045If its value is nil use plain sorting. Text outside of BibTeX entries is not
3021`bibtex-sort-ignore-string-entries' is non-nil, @String entries will be 3046affected. If `bibtex-sort-ignore-string-entries' is non-nil, @String entries
3022ignored." 3047will be ignored."
3023 (interactive) 3048 (interactive)
3024 (unless bibtex-maintain-sorted-entries
3025 (error "You must choose a sorting scheme"))
3026 (save-restriction 3049 (save-restriction
3027 (narrow-to-region (bibtex-beginning-of-first-entry) 3050 (narrow-to-region (bibtex-beginning-of-first-entry)
3028 (save-excursion (goto-char (point-max)) 3051 (save-excursion (goto-char (point-max))
@@ -3523,27 +3546,30 @@ At end of the cleaning process, the functions in
3523 (match-end bibtex-key-in-head))) 3546 (match-end bibtex-key-in-head)))
3524 (insert key)) 3547 (insert key))
3525 ;; sorting 3548 ;; sorting
3526 (let* ((start (bibtex-beginning-of-entry)) 3549 (unless called-by-reformat
3527 (end (progn (bibtex-end-of-entry) 3550 (let* ((start (bibtex-beginning-of-entry))
3528 (if (re-search-forward 3551 (end (progn (bibtex-end-of-entry)
3529 bibtex-entry-maybe-empty-head nil 'move) 3552 (if (re-search-forward
3530 (goto-char (match-beginning 0))) 3553 bibtex-entry-maybe-empty-head nil 'move)
3531 (point))) 3554 (goto-char (match-beginning 0)))
3532 (entry (buffer-substring start end)) 3555 (point)))
3533 (index (progn (goto-char start) 3556 (entry (buffer-substring start end))
3534 (bibtex-entry-index)))) 3557 (index (progn (goto-char start)
3535 (delete-region start end) 3558 (bibtex-entry-index)))
3536 (unless (prog1 (or called-by-reformat 3559 no-error)
3537 (if (and bibtex-maintain-sorted-entries 3560 (if (and bibtex-maintain-sorted-entries
3538 (not (and bibtex-sort-ignore-string-entries 3561 (not (and bibtex-sort-ignore-string-entries
3539 (equal entry-type "string")))) 3562 (equal entry-type "string"))))
3540 (bibtex-prepare-new-entry index) 3563 (progn
3541 (not (bibtex-find-entry (car index))))) 3564 (delete-region start end)
3542 (insert entry) 3565 (setq no-error (bibtex-prepare-new-entry index))
3543 (forward-char -1) 3566 (insert entry)
3544 (bibtex-beginning-of-entry) ; moves backward 3567 (forward-char -1)
3545 (re-search-forward bibtex-entry-head)) 3568 (bibtex-beginning-of-entry) ; moves backward
3546 (error "New inserted entry yields duplicate key"))) 3569 (re-search-forward bibtex-entry-head))
3570 (setq no-error (bibtex-find-entry (car index))))
3571 (unless no-error
3572 (error "New inserted entry yields duplicate key"))))
3547 ;; final clean up 3573 ;; final clean up
3548 (unless called-by-reformat 3574 (unless called-by-reformat
3549 (save-excursion 3575 (save-excursion
@@ -3621,91 +3647,89 @@ If `bibtex-align-at-equal-sign' is non-nil, align equal signs, too."
3621 (indent-to-column bibtex-entry-offset) 3647 (indent-to-column bibtex-entry-offset)
3622 (goto-char pnt))) 3648 (goto-char pnt)))
3623 3649
3624(defun bibtex-reformat (&optional additional-options called-by-convert-alien) 3650(defun bibtex-realign ()
3651 "Realign BibTeX entries such that they are separated by one blank line."
3652 (goto-char (point-min))
3653 (let ((case-fold-search t))
3654 (when (looking-at bibtex-valid-entry-whitespace-re)
3655 (replace-match "\\1"))
3656 (while (re-search-forward bibtex-valid-entry-whitespace-re nil t)
3657 (replace-match "\n\n\\1"))))
3658
3659(defun bibtex-reformat (&optional read-options)
3625 "Reformat all BibTeX entries in buffer or region. 3660 "Reformat all BibTeX entries in buffer or region.
3626With prefix argument, read options for reformatting from minibuffer. 3661With prefix argument, read options for reformatting from minibuffer.
3627With \\[universal-argument] \\[universal-argument] prefix argument, reuse previous answers (if any) again. 3662With \\[universal-argument] \\[universal-argument] prefix argument, reuse previous answers (if any) again.
3628If mark is active it reformats entries in region, if not in whole buffer." 3663If mark is active reformat entries in region, if not in whole buffer."
3629 (interactive "*P") 3664 (interactive "*P")
3630 (let* ((pnt (point)) 3665 (let* ((pnt (point))
3631 (use-previous-options 3666 (use-previous-options
3632 (and (equal (prefix-numeric-value additional-options) 16) 3667 (and (equal (prefix-numeric-value read-options) 16)
3633 (or bibtex-reformat-previous-options 3668 (or bibtex-reformat-previous-options
3634 bibtex-reformat-previous-reference-keys))) 3669 bibtex-reformat-previous-reference-keys)))
3635 (bibtex-entry-format 3670 (bibtex-entry-format
3636 (if additional-options 3671 (if read-options
3637 (if use-previous-options 3672 (if use-previous-options
3638 bibtex-reformat-previous-options 3673 bibtex-reformat-previous-options
3639 (setq bibtex-reformat-previous-options 3674 (setq bibtex-reformat-previous-options
3640 (delq nil (list 3675 (mapcar (lambda (option)
3641 (if (or called-by-convert-alien 3676 (if (y-or-n-p (car option)) (cdr option)))
3642 (y-or-n-p "Realign entries (recommended)? ")) 3677 `(("Realign entries (recommended)? " . 'realign)
3643 'realign) 3678 ("Remove empty optional and alternative fields? " . 'opts-or-alts)
3644 (if (y-or-n-p "Remove empty optional and alternative fields? ") 3679 ("Remove delimiters around pure numerical fields? " . 'numerical-fields)
3645 'opts-or-alts) 3680 (,(concat (if bibtex-comma-after-last-field "Insert" "Remove")
3646 (if (y-or-n-p "Remove delimiters around pure numerical fields? ") 3681 " comma at end of entry? ") . 'last-comma)
3647 'numerical-fields) 3682 ("Replace double page dashes by single ones? " . 'page-dashes)
3648 (if (y-or-n-p (concat (if bibtex-comma-after-last-field "Insert" "Remove") 3683 ("Force delimiters? " . 'delimiters)
3649 " comma at end of entry? ")) 3684 ("Unify case of entry types and field names? " . 'unify-case)))))
3650 'last-comma)
3651 (if (y-or-n-p "Replace double page dashes by single ones? ")
3652 'page-dashes)
3653 (if (y-or-n-p "Force delimiters? ")
3654 'delimiters)
3655 (if (y-or-n-p "Unify case of entry types and field names? ")
3656 'unify-case)))))
3657 '(realign))) 3685 '(realign)))
3658 (reformat-reference-keys (if additional-options 3686 (reformat-reference-keys
3659 (if use-previous-options 3687 (if read-options
3660 bibtex-reformat-previous-reference-keys 3688 (if use-previous-options
3661 (setq bibtex-reformat-previous-reference-keys 3689 bibtex-reformat-previous-reference-keys
3662 (y-or-n-p "Generate new reference keys automatically? "))))) 3690 (setq bibtex-reformat-previous-reference-keys
3663 bibtex-autokey-edit-before-use 3691 (y-or-n-p "Generate new reference keys automatically? ")))))
3664 (bibtex-sort-ignore-string-entries t)
3665 (start-point (if (bibtex-mark-active) 3692 (start-point (if (bibtex-mark-active)
3666 (region-beginning) 3693 (region-beginning)
3667 (bibtex-beginning-of-first-entry) 3694 (point-min)))
3668 (bibtex-skip-to-valid-entry)
3669 (point)))
3670 (end-point (if (bibtex-mark-active) 3695 (end-point (if (bibtex-mark-active)
3671 (region-end) 3696 (region-end)
3672 (point-max)))) 3697 (point-max)))
3698 (bibtex-sort-ignore-string-entries t)
3699 bibtex-autokey-edit-before-use)
3700
3673 (save-restriction 3701 (save-restriction
3674 (narrow-to-region start-point end-point) 3702 (narrow-to-region start-point end-point)
3675 (when (memq 'realign bibtex-entry-format) 3703 (if (memq 'realign bibtex-entry-format)
3676 (goto-char (point-min)) 3704 (bibtex-realign))
3677 (while (re-search-forward bibtex-valid-entry-whitespace-re nil t)
3678 (replace-match "\n\\1")))
3679 (goto-char start-point) 3705 (goto-char start-point)
3680 (bibtex-progress-message "Formatting" 1) 3706 (bibtex-progress-message "Formatting" 1)
3681 (bibtex-map-entries (lambda (key beg end) 3707 (bibtex-map-entries (lambda (key beg end)
3682 (bibtex-progress-message) 3708 (bibtex-progress-message)
3683 (bibtex-clean-entry reformat-reference-keys t) 3709 (bibtex-clean-entry reformat-reference-keys t)))
3684 (when (memq 'realign bibtex-entry-format) 3710 (when (memq 'realign bibtex-entry-format)
3685 (goto-char end) 3711 (bibtex-delete-whitespace)
3686 (bibtex-delete-whitespace) 3712 (open-line (if (eobp) 1 2)))
3687 (open-line 2))))
3688 (bibtex-progress-message 'done)) 3713 (bibtex-progress-message 'done))
3689 (when (and reformat-reference-keys 3714 (when (and reformat-reference-keys
3690 bibtex-maintain-sorted-entries 3715 bibtex-maintain-sorted-entries)
3691 (not called-by-convert-alien)) 3716 (bibtex-progress-message "Sorting" 1)
3692 (bibtex-sort-buffer) 3717 (bibtex-sort-buffer)
3693 (kill-local-variable 'bibtex-reference-keys)) 3718 (kill-local-variable 'bibtex-reference-keys)
3719 (bibtex-progress-message 'done))
3694 (goto-char pnt))) 3720 (goto-char pnt)))
3695 3721
3696(defun bibtex-convert-alien (&optional do-additional-reformatting) 3722(defun bibtex-convert-alien (&optional read-options)
3697 "Convert an alien BibTeX buffer to be fully usable by BibTeX mode. 3723 "Convert an alien BibTeX buffer to be fully usable by BibTeX mode.
3698If a file does not conform with some standards used by BibTeX mode, 3724If a file does not conform with all standards used by BibTeX mode,
3699some of the high-level features of BibTeX mode will not be available. 3725some of the high-level features of BibTeX mode will not be available.
3700This function tries to convert current buffer to conform with these standards. 3726This function tries to convert current buffer to conform with these standards.
3701With prefix argument DO-ADDITIONAL-REFORMATTING 3727With prefix argument READ-OPTIONS non-nil, read options for reformatting
3702non-nil, read options for reformatting entries from minibuffer." 3728entries from minibuffer."
3703 (interactive "*P") 3729 (interactive "*P")
3704 (message "Starting to validate buffer...") 3730 (message "Starting to validate buffer...")
3705 (sit-for 1 nil t) 3731 (sit-for 1 nil t)
3706 (goto-char (point-min)) 3732 (bibtex-realign)
3707 (while (re-search-forward "[ \t\n]+@" nil t)
3708 (replace-match "\n@"))
3709 (message 3733 (message
3710 "If errors occur, correct them and call `bibtex-convert-alien' again") 3734 "If errors occur, correct them and call `bibtex-convert-alien' again")
3711 (sit-for 5 nil t) 3735 (sit-for 5 nil t)
@@ -3714,10 +3738,7 @@ non-nil, read options for reformatting entries from minibuffer."
3714 (bibtex-validate)) 3738 (bibtex-validate))
3715 (message "Starting to reformat entries...") 3739 (message "Starting to reformat entries...")
3716 (sit-for 2 nil t) 3740 (sit-for 2 nil t)
3717 (bibtex-reformat do-additional-reformatting t) 3741 (bibtex-reformat read-options)
3718 (when bibtex-maintain-sorted-entries
3719 (message "Starting to sort buffer...")
3720 (bibtex-sort-buffer))
3721 (goto-char (point-max)) 3742 (goto-char (point-max))
3722 (message "Buffer is now parsable. Please save it."))) 3743 (message "Buffer is now parsable. Please save it.")))
3723 3744
@@ -3890,5 +3911,5 @@ is outside key or BibTeX field."
3890 3911
3891(provide 'bibtex) 3912(provide 'bibtex)
3892 3913
3893;;; arch-tag: ee2be3af-caad-427f-b42a-d20fad630d04 3914;; arch-tag: ee2be3af-caad-427f-b42a-d20fad630d04
3894;;; bibtex.el ends here 3915;;; bibtex.el ends here
diff --git a/lisp/toolbar/tool-bar.el b/lisp/toolbar/tool-bar.el
index 425789eb80e..6b890e5078f 100644
--- a/lisp/toolbar/tool-bar.el
+++ b/lisp/toolbar/tool-bar.el
@@ -239,11 +239,14 @@ MAP must contain appropriate binding for `[menu-bar]' which holds a keymap."
239 (tool-bar-add-item-from-menu 'undo "undo" nil 239 (tool-bar-add-item-from-menu 'undo "undo" nil
240 :visible '(not (eq 'special (get major-mode 240 :visible '(not (eq 'special (get major-mode
241 'mode-class)))) 241 'mode-class))))
242 (tool-bar-add-item-from-menu 'kill-region "cut" nil 242 (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [cut])
243 "cut" nil
243 :visible '(not (eq 'special (get major-mode 244 :visible '(not (eq 'special (get major-mode
244 'mode-class)))) 245 'mode-class))))
245 (tool-bar-add-item-from-menu 'menu-bar-kill-ring-save "copy") 246 (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [copy])
246 (tool-bar-add-item-from-menu 'yank "paste" nil 247 "copy")
248 (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [paste])
249 "paste" nil
247 :visible '(not (eq 'special (get major-mode 250 :visible '(not (eq 'special (get major-mode
248 'mode-class)))) 251 'mode-class))))
249 (tool-bar-add-item-from-menu 'nonincremental-search-forward "search") 252 (tool-bar-add-item-from-menu 'nonincremental-search-forward "search")
diff --git a/lisp/wdired.el b/lisp/wdired.el
index a8c36c2066f..30ba2a3cd45 100644
--- a/lisp/wdired.el
+++ b/lisp/wdired.el
@@ -329,8 +329,8 @@ See `wdired-mode'."
329 (buffer-enable-undo) ; Performance hack. See above. 329 (buffer-enable-undo) ; Performance hack. See above.
330 (set-buffer-modified-p nil) 330 (set-buffer-modified-p nil)
331 (setq buffer-undo-list nil) 331 (setq buffer-undo-list nil)
332 (run-hooks wdired-mode-hook) 332 (run-hooks 'wdired-mode-hook)
333 (message "Press C-c C-c when finished")) 333 (message (substitute-command-keys "Press \\[wdired-finish-edit] when finished")))
334 334
335 335
336;; Protect the buffer so only the filenames can be changed, and put 336;; Protect the buffer so only the filenames can be changed, and put
@@ -416,7 +416,8 @@ non-nil means return old filename."
416 (insert wdired-old-content)) 416 (insert wdired-old-content))
417 (wdired-change-to-dired-mode) 417 (wdired-change-to-dired-mode)
418 (set-buffer-modified-p nil) 418 (set-buffer-modified-p nil)
419 (setq buffer-undo-list nil)) 419 (setq buffer-undo-list nil)
420 (message "Changes aborted"))
420 421
421(defun wdired-finish-edit () 422(defun wdired-finish-edit ()
422 "Actually rename files based on your editing in the Dired buffer." 423 "Actually rename files based on your editing in the Dired buffer."
diff --git a/lisp/winner.el b/lisp/winner.el
index aaca331e7b3..e5b48889156 100644
--- a/lisp/winner.el
+++ b/lisp/winner.el
@@ -1,6 +1,6 @@
1;;; winner.el --- Restore old window configurations 1;;; winner.el --- Restore old window configurations
2 2
3;; Copyright (C) 1997, 1998, 2001 Free Software Foundation. Inc. 3;; Copyright (C) 1997, 1998, 2001, 2004 Free Software Foundation. Inc.
4 4
5;; Author: Ivar Rummelhoff <ivarru@math.uio.no> 5;; Author: Ivar Rummelhoff <ivarru@math.uio.no>
6;; Created: 27 Feb 1997 6;; Created: 27 Feb 1997
@@ -30,8 +30,8 @@
30;; window configuration (i.e. how the frames are partitioned into 30;; window configuration (i.e. how the frames are partitioned into
31;; windows) so that the changes can be "undone" using the command 31;; windows) so that the changes can be "undone" using the command
32;; `winner-undo'. By default this one is bound to the key sequence 32;; `winner-undo'. By default this one is bound to the key sequence
33;; ctrl-x left. If you change your mind (while undoing), you can 33;; ctrl-c left. If you change your mind (while undoing), you can
34;; press ctrl-x right (calling `winner-redo'). Even though it uses 34;; press ctrl-c right (calling `winner-redo'). Even though it uses
35;; some features of Emacs20.3, winner.el should also work with 35;; some features of Emacs20.3, winner.el should also work with
36;; Emacs19.34 and XEmacs20, provided that the installed version of 36;; Emacs19.34 and XEmacs20, provided that the installed version of
37;; custom is not obsolete. 37;; custom is not obsolete.
@@ -474,8 +474,8 @@ In other words, \"undo\" changes in window configuration."
474 474
475(unless winner-mode-map 475(unless winner-mode-map
476 (setq winner-mode-map (make-sparse-keymap)) 476 (setq winner-mode-map (make-sparse-keymap))
477 (define-key winner-mode-map [(control x) left] 'winner-undo) 477 (define-key winner-mode-map [(control c) left] 'winner-undo)
478 (define-key winner-mode-map [(control x) right] 'winner-redo)) 478 (define-key winner-mode-map [(control c) right] 'winner-redo))
479 479
480(unless (or (assq 'winner-mode minor-mode-map-alist) 480(unless (or (assq 'winner-mode minor-mode-map-alist)
481 winner-dont-bind-my-keys) 481 winner-dont-bind-my-keys)
diff --git a/lisp/xml.el b/lisp/xml.el
index db3292a4cfb..03ef6346c70 100644
--- a/lisp/xml.el
+++ b/lisp/xml.el
@@ -668,5 +668,5 @@ The first line is indented with INDENT-STRING."
668 668
669(provide 'xml) 669(provide 'xml)
670 670
671;;; arch-tag: 5864b283-5a68-4b59-a20d-36a72b353b9b 671;; arch-tag: 5864b283-5a68-4b59-a20d-36a72b353b9b
672;;; xml.el ends here 672;;; xml.el ends here
diff --git a/man/ChangeLog b/man/ChangeLog
index 2514ea979b8..a76fe95fb7d 100644
--- a/man/ChangeLog
+++ b/man/ChangeLog
@@ -1,3 +1,11 @@
12004-05-04 Jason Rumney <jasonr@gnu.org>
2
3 * makefile.w32-in: Revert last change
4
52004-05-03 Jason Rumney <jasonr@gnu.org>
6
7 * makefile.w32-in (MULTI_INSTALL_INFO, ENVADD): Use forward slashes.
8
12004-04-28 Masatake YAMATO <jet@gyve.org> 92004-04-28 Masatake YAMATO <jet@gyve.org>
2 10
3 * widget.texi (Programming Example): Remove 11 * widget.texi (Programming Example): Remove
diff --git a/man/ses.texi b/man/ses.texi
index e5f8059fd2a..8e0086ac54b 100644
--- a/man/ses.texi
+++ b/man/ses.texi
@@ -41,7 +41,7 @@ license to the document, as described in section 6 of the license.
41@title SES 41@title SES
42@subtitle Simple Emacs Spreadsheet 42@subtitle Simple Emacs Spreadsheet
43@author Jonathan A. Yavner 43@author Jonathan A. Yavner
44@author @email{jyavner@@engineer.com} 44@author @email{jyavner@@member.fsf.org}
45 45
46@page 46@page
47@vskip 0pt plus 1filll 47@vskip 0pt plus 1filll
diff --git a/msdos/ChangeLog b/msdos/ChangeLog
index 2950be8843d..6cec44d3a99 100644
--- a/msdos/ChangeLog
+++ b/msdos/ChangeLog
@@ -1,3 +1,7 @@
12004-05-02 Eli Zaretskii <eliz@gnu.org>
2
3 * sed2v2.inp (HAVE_GETRUSAGE): Define.
4
12003-09-22 Eli Zaretskii <eliz@gnu.org> 52003-09-22 Eli Zaretskii <eliz@gnu.org>
2 6
3 * mainmake.v2 (man lispref lispintro): Specify an explicit target 7 * mainmake.v2 (man lispref lispintro): Specify an explicit target
diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp
index 91df8a21225..4d77194cff0 100644
--- a/msdos/sed2v2.inp
+++ b/msdos/sed2v2.inp
@@ -42,6 +42,7 @@
42/^#undef HAVE_MEMCMP *$/s/^.*$/#define HAVE_MEMCMP 1/ 42/^#undef HAVE_MEMCMP *$/s/^.*$/#define HAVE_MEMCMP 1/
43/^#undef HAVE_MEMMOVE *$/s/^.*$/#define HAVE_MEMMOVE 1/ 43/^#undef HAVE_MEMMOVE *$/s/^.*$/#define HAVE_MEMMOVE 1/
44/^#undef HAVE_SETRLIMIT *$/s/^.*$/#define HAVE_SETRLIMIT 1/ 44/^#undef HAVE_SETRLIMIT *$/s/^.*$/#define HAVE_SETRLIMIT 1/
45/^#undef HAVE_GETRUSAGE *$/s/^.*$/#define HAVE_GETRUSAGE 1/
45/^#undef HAVE_TM_GMTOFF *$/s/^.*$/#define HAVE_TM_GMTOFF 1/ 46/^#undef HAVE_TM_GMTOFF *$/s/^.*$/#define HAVE_TM_GMTOFF 1/
46/^#undef HAVE_MBLEN *$/s/^.*$/#define HAVE_MBLEN 1/ 47/^#undef HAVE_MBLEN *$/s/^.*$/#define HAVE_MBLEN 1/
47/^#undef HAVE_STRUCT_TIMEZONE *$/s/^.*$/#define HAVE_STRUCT_TIMEZONE 1/ 48/^#undef HAVE_STRUCT_TIMEZONE *$/s/^.*$/#define HAVE_STRUCT_TIMEZONE 1/
diff --git a/nt/ChangeLog b/nt/ChangeLog
index ed3f154e5dd..fa411283e76 100644
--- a/nt/ChangeLog
+++ b/nt/ChangeLog
@@ -1,3 +1,18 @@
12004-05-06 Jason Rumney <jasonr@gnu.org>
2
3 * configure.bat: Use -mno-cygwin to check for image libraries
4 when needed.
5
62004-05-03 Jason Rumney <jasonr@gnu.org>
7
8 * makefile.nt, ebuild.bat, install.bat, fast-install.bat:
9 * makefile.def: Remove.
10
11 * nmake.defs (SYS_LDFLAGS): Add -nologo
12
13 * makefile.w32-in (info-gmake, info-nmake): New targets.
14 (info): Use them.
15
12004-04-23 Juanma Barranquero <lektu@terra.es> 162004-04-23 Juanma Barranquero <lektu@terra.es>
2 17
3 * nmake.defs: 18 * nmake.defs:
diff --git a/nt/configure.bat b/nt/configure.bat
index a27bbcd8cdd..216420873c7 100755
--- a/nt/configure.bat
+++ b/nt/configure.bat
@@ -294,13 +294,20 @@ rem Check for external image libraries. Since they are loaded
294rem dynamically, the libraries themselves do not need to be present 294rem dynamically, the libraries themselves do not need to be present
295rem at compile time, but the header files are required. 295rem at compile time, but the header files are required.
296 296
297set mingwflag=
298
299if (%nocygwin%) == (N) goto flagsOK
300set mingwflag=-mno-cygwin
301
302:flagsOK
303
297if (%pngsupport%) == (N) goto pngDone 304if (%pngsupport%) == (N) goto pngDone
298 305
299echo Checking for libpng... 306echo Checking for libpng...
300echo #include "png.h" >junk.c 307echo #include "png.h" >junk.c
301echo main (){} >>junk.c 308echo main (){} >>junk.c
302rem -o option is ignored with cl, but allows result to be consistent. 309rem -o option is ignored with cl, but allows result to be consistent.
303%COMPILER% %usercflags% -c junk.c -o junk.obj >junk.out 2>junk.err 310%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>junk.err
304if exist junk.obj goto havePng 311if exist junk.obj goto havePng
305 312
306echo ...png.h not found, building without PNG support. 313echo ...png.h not found, building without PNG support.
@@ -320,7 +327,7 @@ echo Checking for jpeg-6b...
320echo #include "jconfig.h" >junk.c 327echo #include "jconfig.h" >junk.c
321echo main (){} >>junk.c 328echo main (){} >>junk.c
322rem -o option is ignored with cl, but allows result to be consistent. 329rem -o option is ignored with cl, but allows result to be consistent.
323%COMPILER% %usercflags% -c junk.c -o junk.obj >junk.out 2>junk.err 330%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>junk.err
324if exist junk.obj goto haveJpeg 331if exist junk.obj goto haveJpeg
325 332
326echo ...jconfig.h not found, building without JPEG support. 333echo ...jconfig.h not found, building without JPEG support.
@@ -340,7 +347,7 @@ echo Checking for libgif...
340echo #include "gif_lib.h" >junk.c 347echo #include "gif_lib.h" >junk.c
341echo main (){} >>junk.c 348echo main (){} >>junk.c
342rem -o option is ignored with cl, but allows result to be consistent. 349rem -o option is ignored with cl, but allows result to be consistent.
343%COMPILER% %usercflags% -c junk.c -o junk.obj >junk.out 2>junk.err 350%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>junk.err
344if exist junk.obj goto haveGif 351if exist junk.obj goto haveGif
345 352
346echo ...gif_lib.h not found, building without GIF support. 353echo ...gif_lib.h not found, building without GIF support.
@@ -360,7 +367,7 @@ echo Checking for tiff...
360echo #include "tiffio.h" >junk.c 367echo #include "tiffio.h" >junk.c
361echo main (){} >>junk.c 368echo main (){} >>junk.c
362rem -o option is ignored with cl, but allows result to be consistent. 369rem -o option is ignored with cl, but allows result to be consistent.
363%COMPILER% %usercflags% -c junk.c -o junk.obj >junk.out 2>junk.err 370%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>junk.err
364if exist junk.obj goto haveTiff 371if exist junk.obj goto haveTiff
365 372
366echo ...tiffio.h not found, building without TIFF support. 373echo ...tiffio.h not found, building without TIFF support.
@@ -381,7 +388,7 @@ echo #define FOR_MSW 1 >junk.c
381echo #include "X11/xpm.h" >>junk.c 388echo #include "X11/xpm.h" >>junk.c
382echo main (){} >>junk.c 389echo main (){} >>junk.c
383rem -o option is ignored with cl, but allows result to be consistent. 390rem -o option is ignored with cl, but allows result to be consistent.
384%COMPILER% %usercflags% -c junk.c -o junk.obj >junk.out 2>junk.err 391%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>junk.err
385if exist junk.obj goto haveXpm 392if exist junk.obj goto haveXpm
386 393
387echo ...X11/xpm.h not found, building without XPM support. 394echo ...X11/xpm.h not found, building without XPM support.
@@ -466,6 +473,7 @@ set COMPILER=
466set MAKECMD= 473set MAKECMD=
467set usercflags= 474set usercflags=
468set userldflags= 475set userldflags=
476set mingwflag=
469 477
470goto skipArchTag 478goto skipArchTag
471 arch-tag: 300d20a4-1675-4e75-b615-7ce1a8c5376c 479 arch-tag: 300d20a4-1675-4e75-b615-7ce1a8c5376c
diff --git a/nt/ebuild.bat b/nt/ebuild.bat
deleted file mode 100755
index c7851779cc5..00000000000
--- a/nt/ebuild.bat
+++ /dev/null
@@ -1,7 +0,0 @@
1@echo off
2if (%1) == () nmake -f makefile.nt all
3if not (%1) == () nmake -f makefile.nt %1 %2 %3 %4 %5 %6 %7 %8 %9
4
5goto skipArchTag
6 arch-tag: f01be12a-fd17-448d-8275-c7f527c50a1f
7:skipArchTag
diff --git a/nt/fast-install.bat b/nt/fast-install.bat
deleted file mode 100755
index 11e969eb5a4..00000000000
--- a/nt/fast-install.bat
+++ /dev/null
@@ -1,5 +0,0 @@
1nmake -f makefile.nt fast_install
2
3goto skipArchTag
4 arch-tag: 13c64379-e658-452f-92d3-90d0f230ca70
5:skipArchTag
diff --git a/nt/install.bat b/nt/install.bat
deleted file mode 100755
index 1074c03454b..00000000000
--- a/nt/install.bat
+++ /dev/null
@@ -1,12 +0,0 @@
1@echo off
2if (%1) == (speed) set BUILD_TYPE=spd
3if (%1) == (speed) shift
4if not (%1) == () set INSTALL_DIR=%1
5if not (%1) == () shift
6nmake -f makefile.nt install %1 %2 %3 %4 %5 %6 %7 %8 %9
7set INSTALL_DIR=
8set BUILD_TYPE=
9
10goto skipArchTag
11 arch-tag: 1db5223b-8fc9-4bdb-8ad1-9e3962bf034a
12:skipArchTag
diff --git a/nt/makefile.def b/nt/makefile.def
deleted file mode 100644
index e5ca430cc39..00000000000
--- a/nt/makefile.def
+++ /dev/null
@@ -1,231 +0,0 @@
1# -*- Makefile -*- definition file for building GNU Emacs on Windows NT
2# Copyright (c) 1994-2001 Free Software Foundation, Inc.
3#
4# GNU Emacs is free software; you can redistribute it and/or modify
5# it under the terms of the GNU General Public License as published by
6# the Free Software Foundation; either version 2, or (at your option)
7# any later version.
8#
9# GNU Emacs is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12# GNU General Public License for more details.
13#
14# You should have received a copy of the GNU General Public License
15# along with GNU Emacs; see the file COPYING. If not, write to
16# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17# Boston, MA 02111-1307, USA.
18#
19# Geoff Voelker (voelker@cs.washington.edu) 9-6-94
20
21#
22# BEGIN CONFIGURATION
23#
24
25# Define the following to build the GUI version
26#
27NTGUI=1
28
29# Set INSTALL_DIR to be the directory into which you want emacs installed.
30#
31!ifndef INSTALL_DIR
32INSTALL_DIR = C:\emacs
33!endif
34
35# Define MSVCNT11 to be nonzero if you are using the MSVCNT 1.1 environment.
36# MSVCNT11 = 1
37!ifndef MSVCNT11
38MSVCNT11 = 0
39!endif
40
41#
42# END CONFIGURATION
43#
44
45#
46# Allow detection of builds with MSVC 5 or later
47#
48_NMAKE_VER_5=162
49_NMAKE_VER_4=0
50
51!IFNDEF _NMAKE_VER
52_NMAKE_VER=$(_NMAKE_VER_4)
53!ENDIF
54
55# Check that the INCLUDE and LIB environment variables are set.
56#
57!ifndef INCLUDE
58!error The INCLUDE environment variable needs to be set.
59!endif
60!ifndef LIB
61!error The LIB environment variable needs to be set.
62!endif
63
64# Determine the architecture we're running on.
65# Define ARCH for our purposes;
66# Define CPU for use by ntwin32.mak;
67# Define CONFIG_H to the appropriate config.h for the system;
68#
69!ifdef PROCESSOR_ARCHITECTURE
70# We're on Windows NT
71CPU = $(PROCESSOR_ARCHITECTURE)
72CONFIG_H = config.nt
73OS_TYPE = windowsnt
74! if "$(PROCESSOR_ARCHITECTURE)" == "x86"
75ARCH = i386
76CPU = i386
77! else
78! if "$(PROCESSOR_ARCHITECTURE)" == "MIPS"
79ARCH = mips
80! else
81! if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA"
82ARCH = alpha
83! else
84! if "$(PROCESSOR_ARCHITECTURE)" == "PPC"
85ARCH = ppc
86! else
87!error Unknown architecture type "$(PROCESSOR_ARCHITECTURE)"
88! endif
89! endif
90! endif
91! endif
92!else
93# We're on Windows 95
94ARCH = i386
95CPU = i386
96CONFIG_H = config.nt
97OS_TYPE = windows95
98!endif
99
100# Include ntwin32.mak. So far, this file seems to be supported by every
101# Microsoft compiler on NT and Windows 95 and properly defines the executable
102# names and libraries necessary to build Emacs. I do not have access
103# to any other vendor compilers, so I do not know if they supply this
104# file, too. For now I'll assume that they do.
105#
106!include <ntwin32.mak>
107
108# Using cvtres is necessary on NT 3.10 and doesn't hurt on later platforms.
109CVTRES = cvtres.exe
110AR = $(implib)
111# The assignment $(CC) = $(cc) fails even though variables are case sensitive.
112LINK_TMP = $(link)
113LINK = $(LINK_TMP)
114CC_TMP = $(cc)
115CC = $(CC_TMP)
116
117# advapi32.lib is left off of $(baselibs) on NT 3.10
118!if "$(baselibs)" == "kernel32.lib "
119ADVAPI32 = advapi32.lib
120!else
121ADVAPI32 =
122!endif
123
124# Older ntwin32.mak files do not define libc; do it for them.
125!ifndef libc
126libc = libc.lib
127!endif
128
129# The base libraries for compiling Emacs on NT. With MSVC, this should
130# include oldnames.lib.
131!if $(MSVCNT11)
132BASE_LIBS = $(libc) $(baselibs) oldnames.lib
133!else
134BASE_LIBS = $(libc) $(baselibs) -nodefaultlib:oldnames.lib
135!endif
136
137# We want any debugging info in the executable.
138!if "$(LINK)" == "link32"
139SYS_LDFLAGS = -nologo
140!else
141SYS_LDFLAGS = -nologo -release -incremental:no -version:3.10
142!endif
143
144# Tag the executables to run out of the swapfile when execute off CD or network shares
145SYS_LDFLAGS = $(SYS_LDFLAGS) -swaprun:cd -swaprun:net
146
147INC = -I.
148!if "$(BUILD_TYPE)" == "spd"
149CFLAGS_COMMON = -nologo $(INC) $(ARCH_CFLAGS) $(LOCAL_FLAGS) -DWIN32_LEAN_AND_MEAN -D$(ARCH) -Fd$(BLD)\vc.pdb
150!else
151CFLAGS_COMMON = -nologo $(INC) $(ARCH_CFLAGS) $(LOCAL_FLAGS) -DWIN32_LEAN_AND_MEAN -D$(ARCH) -Fd$(BLD)\vc.pdb -DEMACSDEBUG
152!endif
153!if $(MSVCNT11)
154CFLAGS = $(CFLAGS_COMMON) -D_CRTAPI1=_cdecl
155!else
156CFLAGS = $(CFLAGS_COMMON) -D_CRTAPI1=_cdecl
157!endif
158
159!ifdef BUILD_TYPE
160OBJDIR = obj-$(BUILD_TYPE)
161!else
162OBJDIR = obj
163!endif
164$(OBJDIR):; -mkdir $(OBJDIR)
165BLD = $(OBJDIR)\$(ARCH)
166$(BLD): $(OBJDIR)
167 -mkdir $(BLD)
168
169CP = copy
170CP_DIR = xcopy /f/r/i/e/d/k
171
172!if "$(OS_TYPE)" == "windows95"
173DEL = deltree /y
174DEL_TREE = deltree /y
175!else
176DEL = del
177# NT better way of killing a deltree
178DEL_TREE = rd /s/q
179!endif
180
181# Lets us add icons to the GNU Emacs folder
182ADDPM = ..\nt\$(BLD)\addpm.exe
183
184!if "$(ARCH)" == "i386"
185!if "$(BUILD_TYPE)" == "spd"
186ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zel -W2 -H63 -Oxsb2 -G6dF -Zi -Zp8
187!else
188ARCH_CFLAGS = -nologo -D_X86_=1 -c -Zel -W2 -H63 -Od -G3d -Zi -Zp8
189!endif
190ARCH_LDFLAGS = -align:0x1000 $(SYS_LDFLAGS)
191
192!else
193!if "$(ARCH)" == "mips"
194ARCH_CFLAGS = -D_MIPS_=1 -c -W2 -Zi -Od -Gt0
195ARCH_LDFLAGS = -align:0x1000 $(SYS_LDFLAGS)
196
197!else
198!if "$(ARCH)" == "alpha"
199!if "$(BUILD_TYPE)" == "spd"
200ARCH_CFLAGS = -D_ALPHA_=1 -c -Ze -Zi -W2 -Od -D__stdcall= -D__cdecl=
201!else
202ARCH_CFLAGS = -D_ALPHA_=1 -c -Ze -Zi -W2 -O1 -D__stdcall= -D__cdecl=
203!endif
204ARCH_LDFLAGS = -align:0x2000 $(SYS_LDFLAGS)
205
206!else
207!if "$(ARCH)" == "ppc"
208# These flags are a guess...if they don't work, please send me mail.
209ARCH_CFLAGS = -D_PPC_=1 -c -Ze -Zi -W2 -Od
210ARCH_LDFLAGS = -align:0x1000 $(SYS_LDFLAGS)
211
212!else
213!ERROR Unknown architecture type "$(ARCH)".
214!endif
215!endif
216!endif
217!endif
218
219#
220# If the compiler supports compiling multiple .c files to .o files at
221# one time, use this feature.
222#
223!IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)")
224.c{$(BLD)}.obj:
225 $(CC) $(CFLAGS) -Fo$(BLD)\ $<
226!ELSE
227.c{$(BLD)}.obj::
228 $(CC) $(CFLAGS) -Fo$(BLD)\ $<
229!ENDIF
230
231# arch-tag: a8aa26d5-5f28-4263-b42a-6f91acb7d824
diff --git a/nt/makefile.nt b/nt/makefile.nt
deleted file mode 100644
index 43060e68fdd..00000000000
--- a/nt/makefile.nt
+++ /dev/null
@@ -1,213 +0,0 @@
1# Top level -*- makefile -*- for building GNU Emacs on Windows NT
2# Copyright (c) 1993-2000 Free Software Foundation, Inc.
3#
4# This file is part of GNU Emacs.
5#
6# GNU Emacs is free software; you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation; either version 2, or (at your option)
9# any later version.
10#
11# GNU Emacs is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14# GNU General Public License for more details.
15#
16# You should have received a copy of the GNU General Public License
17# along with GNU Emacs; see the file COPYING. If not, write to
18# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19# Boston, MA 02111-1307, USA.
20#
21# Geoff Voelker (voelker@cs.washington.edu) 11-20-93
22# 9-6-94
23!include makefile.def
24
25ALL = addpm ddeclient runemacs cmdproxy addsection preprep
26!if $(MSVCNT11)
27TRES = $(BLD)\emacs.res
28!else
29TRES = $(BLD)\emacs.rbj
30!endif
31
32addpm: $(BLD) $(BLD)\addpm.exe
33$(BLD)\addpm.obj: addpm.c
34$(BLD)\addpm.exe: $(BLD)\addpm.obj
35 $(LINK) -out:$@ -subsystem:console -entry:mainCRTStartup \
36 $(SYS_LDFLAGS) $** $(BASE_LIBS) $(ADVAPI32) user32.lib
37
38ddeclient: $(BLD) $(BLD)\ddeclient.exe
39$(BLD)\ddeclient.obj: ddeclient.c
40$(BLD)\ddeclient.exe: $(BLD)\ddeclient.obj
41 $(LINK) -out:$@ -subsystem:console -entry:mainCRTStartup \
42 $(SYS_LDFLAGS) $** $(BASE_LIBS) $(ADVAPI32) user32.lib
43
44cmdproxy: $(BLD) $(BLD)\cmdproxy.exe
45$(BLD)\cmdproxy.obj: cmdproxy.c
46$(BLD)\cmdproxy.exe: $(BLD)\cmdproxy.obj
47 $(LINK) -out:$@ -subsystem:console -entry:mainCRTStartup \
48 $(SYS_LDFLAGS) $** $(BASE_LIBS) user32.lib
49
50addsection: $(BLD) $(BLD)\addsection.exe
51$(BLD)\addsection.obj: addsection.c
52$(BLD)\addsection.exe: $(BLD)\addsection.obj
53 $(LINK) -debug:full -out:$@ -subsystem:console -entry:mainCRTStartup \
54 $(SYS_LDFLAGS) $** $(BASE_LIBS) user32.lib
55
56preprep: $(BLD) $(BLD)\preprep.exe
57$(BLD)\preprep.obj: preprep.c
58$(BLD)\preprep.exe: $(BLD)\preprep.obj
59 $(LINK) -debug:full -out:$@ -subsystem:console -entry:mainCRTStartup \
60 $(SYS_LDFLAGS) $** $(BASE_LIBS)
61
62#
63# The resource file. NT 3.10 requires the use of cvtres; even though
64# it is not necessary on later versions, it is still ok to use it.
65#
66$(TRES): emacs.rc
67 $(RC) -Fo$(BLD)\emacs.res $**
68!if !$(MSVCNT11)
69 $(CVTRES) -r -$(ARCH) -o $@ $(BLD)\emacs.res
70!endif
71
72runemacs: $(BLD) $(BLD)\runemacs.exe
73$(BLD)\runemacs.obj: runemacs.c
74$(BLD)\runemacs.exe: $(BLD)\runemacs.obj $(TRES)
75 $(LINK) -out:$@ -subsystem:windows -entry:WinMainCRTStartup \
76 $(SYS_LDFLAGS) $** $(BASE_LIBS) $(ADVAPI32) user32.lib
77
78# Since Windows 95 does not support multiple commands on one command line
79# (e.g., in for loops), we cannot use for loops any more.
80# SUBDIRS = lib-src src lisp
81
82#
83# Build emacs
84#
85BUILD_CMD = $(MAKE) $(MFLAGS) -f makefile.nt all
86all: $(BLD) $(ALL)
87 cd ..\lib-src
88 $(BUILD_CMD)
89 cd ..\src
90 $(BUILD_CMD)
91 cd ..\lisp
92 $(BUILD_CMD)
93 cd ..\leim
94 if exist makefile.nt $(BUILD_CMD)
95 cd ..\nt
96
97BOOTSTRAP_CMD = $(MAKE) $(MFLAGS) -f makefile.nt bootstrap
98bootstrap: $(BLD) $(ALL)
99 cd ..\src
100 $(BOOTSTRAP_CMD)
101 $(BOOTCLEAN_CMD)
102 cd ..\lisp
103 $(BOOTSTRAP_CMD)
104 cd ..\nt
105
106BOOTCLEAN_CMD = $(MAKE) $(MFLAGS) -f makefile.nt bootstrap-clean
107bootstrap-clean:
108 cd ..\src
109 $(BOOTCLEAN_CMD)
110 cd ..\lisp
111 $(BOOTCLEAN_CMD)
112
113$(INSTALL_DIR):
114 - mkdir $(INSTALL_DIR)
115
116$(INSTALL_DIR)\bin:
117 - mkdir $(INSTALL_DIR)\bin
118
119#
120# Build and install emacs in INSTALL_DIR
121#
122INSTALL_CMD = $(MAKE) -f makefile.nt install
123install: all $(INSTALL_DIR)
124 cd ..\lib-src
125 $(INSTALL_CMD)
126 cd ..\src
127 $(INSTALL_CMD)
128 cd ..\lisp
129 $(INSTALL_CMD)
130 cd ..\leim
131 if exist makefile.nt $(INSTALL_CMD)
132 cd ..\nt
133 - $(CP) $(BLD)\addpm.exe $(INSTALL_DIR)\bin
134 - $(CP) $(BLD)\ddeclient.exe $(INSTALL_DIR)\bin
135 - $(CP) $(BLD)\cmdproxy.exe $(INSTALL_DIR)\bin
136 - $(CP) $(BLD)\runemacs.exe $(INSTALL_DIR)\bin
137 - $(CP) ..\lib-src\fns-*.el $(INSTALL_DIR)\bin
138 - $(ADDPM) $(INSTALL_DIR)
139 - $(DEL) ..\same-dir.tst
140 - $(DEL) $(INSTALL_DIR)\same-dir.tst
141 - mkdir $(INSTALL_DIR)\etc\icons
142 - $(CP_DIR) icons $(INSTALL_DIR)\etc\icons
143 echo SameDirTest > $(INSTALL_DIR)\same-dir.tst
144 if not exist ..\same-dir.tst $(MAKE) -f makefile.nt real_install
145 - $(DEL) ..\same-dir.tst
146 - $(DEL) $(INSTALL_DIR)\same-dir.tst
147
148#
149# This installs executables from ..\bin into the installation directory
150# without building anything.
151#
152fast_install:
153 - mkdir $(INSTALL_DIR)\data
154 $(CP) ..\lib-src\DOC $(INSTALL_DIR)\etc
155 - mkdir $(INSTALL_DIR)\bin
156 - $(CP) $(BLD)\addpm.exe $(INSTALL_DIR)\bin
157 - $(CP) $(BLD)\ddeclient.exe $(INSTALL_DIR)\bin
158 - $(CP) $(BLD)\cmdproxy.exe $(INSTALL_DIR)\bin
159 - $(CP) $(BLD)\runemacs.exe $(INSTALL_DIR)\bin
160 - $(CP) ..\lib-src\fns-*.el $(INSTALL_DIR)\bin
161 - $(DEL) ..\same-dir.tst
162 - $(DEL) $(INSTALL_DIR)\same-dir.tst
163 echo SameDirTest > $(INSTALL_DIR)\same-dir.tst
164 if not exist ..\same-dir.tst $(CP) ..\bin\emacs.exe $(INSTALL_DIR)\bin
165 if not exist ..\same-dir.tst $(CP) ..\bin\etags.exe $(INSTALL_DIR)\bin
166 if not exist ..\same-dir.tst $(CP) ..\bin\ctags.exe $(INSTALL_DIR)\bin
167 if not exist ..\same-dir.tst $(MAKE) -f makefile.nt real_install
168 - $(DEL) ..\same-dir.tst
169 - $(DEL) $(INSTALL_DIR)\same-dir.tst
170
171real_install:
172 - $(DEL) ..\same-dir.tst
173 - $(DEL) $(INSTALL_DIR)\same-dir.tst
174 echo SameDirTest > $(INSTALL_DIR)\same-dir.tst
175 - mkdir $(INSTALL_DIR)\etc
176 - mkdir $(INSTALL_DIR)\info
177 - mkdir $(INSTALL_DIR)\lock
178 - mkdir $(INSTALL_DIR)\data
179 - mkdir $(INSTALL_DIR)\site-lisp
180 - mkdir $(INSTALL_DIR)\etc\icons
181 - $(CP_DIR) icons $(INSTALL_DIR)\etc\icons
182 if not exist ..\same-dir.tst $(CP_DIR) ..\etc $(INSTALL_DIR)\etc
183 if not exist ..\same-dir.tst $(CP_DIR) ..\info $(INSTALL_DIR)\info
184 - $(DEL) ..\same-dir.tst
185 - $(DEL) $(INSTALL_DIR)\same-dir.tst
186
187#
188# Maintenance
189#
190CLEAN_CMD = $(MAKE) -f makefile.nt clean
191clean:
192 - $(DEL) *~ *.pdb
193 - $(DEL) *.orig
194 - $(DEL) *.rej
195 - $(DEL) *.crlf
196 - $(DEL_TREE) deleted
197 - $(DEL_TREE) obj
198 - $(DEL_TREE) obj-spd
199 - $(DEL) ..\etc\DOC ..\etc\DOC-X
200 cd ..\lib-src
201 $(CLEAN_CMD)
202 cd ..\src
203 $(CLEAN_CMD)
204 cd ..\lisp
205 $(CLEAN_CMD)
206 cd ..\leim
207 if exist makefile.nt $(CLEAN_CMD)
208 cd ..\nt
209
210realclean: clean
211 - $(DEL_TREE) ..\bin
212
213# arch-tag: b01debf7-6859-439e-b08e-f041aa03c32f
diff --git a/nt/makefile.w32-in b/nt/makefile.w32-in
index 52455a0a2d8..4f619b3f2e3 100644
--- a/nt/makefile.w32-in
+++ b/nt/makefile.w32-in
@@ -217,11 +217,20 @@ force-info:
217# Note that man/makefile knows how to 217# Note that man/makefile knows how to
218# put the info files in $(infodir), 218# put the info files in $(infodir),
219# so we can do ok running make in the build dir. 219# so we can do ok running make in the build dir.
220info: force-info 220info: force-info info-$(MAKETYPE)
221 (cd ..\man && $(MAKE) $(MFLAGS) info)
222 (cd ..\lispref && $(MAKE) $(MFLAGS) info)
223 (cd ..\lispintro && $(MAKE) $(MFLAGS) info)
224 221
222info-nmake:
223 cd ..\man
224 $(MAKE) $(MFLAGS) info
225 cd ..\lispref
226 $(MAKE) $(MFLAGS) info
227 cd ..\lispintro
228 $(MAKE) $(MFLAGS) info
229
230info-gmake:
231 $(MAKE) $(MFLAGS) -C ../man info
232 $(MAKE) $(MFLAGS) -C ../lispref info
233 $(MAKE) $(MFLAGS) -C ../lispintro info
225# 234#
226# Maintenance 235# Maintenance
227# 236#
diff --git a/nt/nmake.defs b/nt/nmake.defs
index f4239e1a415..b06dd64020f 100644
--- a/nt/nmake.defs
+++ b/nt/nmake.defs
@@ -134,7 +134,7 @@ CFLAGS = -I. -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0400 $(ARCH_CFLAGS)
134 -D_CRTAPI1=_cdecl $(DEBUG_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS) 134 -D_CRTAPI1=_cdecl $(DEBUG_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS)
135EMACS_EXTRA_C_FLAGS = 135EMACS_EXTRA_C_FLAGS =
136 136
137SYS_LDFLAGS = -release -incremental:no -version:3.10 -swaprun:cd -swaprun:net setargv.obj 137SYS_LDFLAGS = -nologo -release -incremental:no -version:3.10 -swaprun:cd -swaprun:net setargv.obj
138 138
139# see comments in allocate_heap in w32heap.c before changing any of the 139# see comments in allocate_heap in w32heap.c before changing any of the
140# -stack, -heap, or -base settings. 140# -stack, -heap, or -base settings.
diff --git a/src/ChangeLog b/src/ChangeLog
index f8a9e5fb767..cf2201e95dd 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,74 @@
12004-05-07 Juanma Barranquero <lektu@terra.es>
2
3 * window.c (Fset_window_buffer): Fix docstring.
4
52004-05-06 Thien-Thi Nguyen <ttn@gnu.org>
6
7 * emacs.c (main) [VMS]: Fix var ref.
8
92004-05-06 Romain Francoise <romain@orebokech.com> (tiny change)
10
11 * data.c (Fsetq_default): Fix docstring.
12
132004-05-06 Jason Rumney <jasonr@gnu.org>
14
15 * image.c (Display) [HAVE_NTGUI]: Redefine while loading xpm.h
16 to avoid name clash.
17
182004-05-04 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
19
20 * fileio.c (barf_or_query_if_file_exists): Use lstat.
21 (Frename_file): Handle renaming of symlinks across file systems.
22 (Frename_file): Put symlink handling inside #ifdef S_IFLNK.
23
242004-05-04 Kim F. Storm <storm@cua.dk>
25
26 * xdisp.c (Qtotal): New var.
27 (syms_of_xdisp): Intern and staticpro it.
28 (calc_line_height_property): New arg total. Set it if
29 line-spacing property has format (total . VALUE).
30 (x_produce_glyphs): Ignore line-spacing if line-height is 0.
31 Handle total line-spacing property.
32
332004-05-03 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
34
35 * gtkutil.c (xg_update_scrollbar_pos): Call XClearWindow to clear
36 "under" scroll bar when size/position changes.
37
382004-05-03 Jason Rumney <jasonr@gnu.org>
39
40 * makefile.nt: Remove.
41
422004-05-02 Eli Zaretskii <eliz@gnu.org>
43
44 * syntax.h (SET_RAW_SYNTAX_ENTRY, SYNTAX_ENTRY_INT): Avoid
45 compiler warnings.
46
47 * Makefile.in (region-cache.o): Depend on config.h.
48
492004-05-02 Romain Francoise <romain@orebokech.com> (tiny change)
50
51 * indent.c (compute_motion): Save vpos in prev_vpos when dealing
52 with continuation lines, too.
53
542004-05-02 Thien-Thi Nguyen <ttn@gnu.org>
55
56 * syssignal.h (init_signals): Move decl outside `#ifdef POSIX_SIGNALS'.
57
582004-05-01 Stefan Monnier <monnier@iro.umontreal.ca>
59
60 * xdisp.c (calc_line_height_property): YAILOM (yet another
61 int/Lisp_Object mixup).
62
632004-05-01 Eli Zaretskii <eliz@gnu.org>
64
65 * msdos.c (top-level): Add "#pragma pack(0)" after <dir.h>, to
66 undo bad effect of pack(4) in some versions of system headers.
67
682004-05-01 Jason Rumney <jasonr@gnu.org>
69
70 * w32term.c (x_draw_hollow_cursor): Sync with xterm.c
71
12004-04-30 Kim F. Storm <storm@cua.dk> 722004-04-30 Kim F. Storm <storm@cua.dk>
2 73
3 * buffer.c (syms_of_buffer) <line-spacing>: Allow float value. 74 * buffer.c (syms_of_buffer) <line-spacing>: Allow float value.
diff --git a/src/Makefile.in b/src/Makefile.in
index e22abf754fd..30dbc9df0cf 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -1125,7 +1125,7 @@ process.o: process.c process.h buffer.h window.h termhooks.h termopts.h \
1125 blockinput.h atimer.h charset.h coding.h ccl.h msdos.h composite.h \ 1125 blockinput.h atimer.h charset.h coding.h ccl.h msdos.h composite.h \
1126 keyboard.h $(config_h) 1126 keyboard.h $(config_h)
1127regex.o: regex.c syntax.h buffer.h $(config_h) regex.h category.h charset.h 1127regex.o: regex.c syntax.h buffer.h $(config_h) regex.h category.h charset.h
1128region-cache.o: region-cache.c buffer.h region-cache.h 1128region-cache.o: region-cache.c buffer.h region-cache.h $(config_h)
1129scroll.o: scroll.c termchar.h dispextern.h frame.h msdos.h keyboard.h \ 1129scroll.o: scroll.c termchar.h dispextern.h frame.h msdos.h keyboard.h \
1130 termhooks.h $(config_h) 1130 termhooks.h $(config_h)
1131search.o: search.c regex.h commands.h buffer.h region-cache.h syntax.h \ 1131search.o: search.c regex.h commands.h buffer.h region-cache.h syntax.h \
diff --git a/src/data.c b/src/data.c
index c94723d09d0..6ce9a5d37aa 100644
--- a/src/data.c
+++ b/src/data.c
@@ -1468,11 +1468,11 @@ The default value of a variable is seen in buffers
1468that do not have their own values for the variable. 1468that do not have their own values for the variable.
1469 1469
1470More generally, you can use multiple variables and values, as in 1470More generally, you can use multiple variables and values, as in
1471 (setq-default SYMBOL VALUE SYMBOL VALUE...) 1471 (setq-default VAR VALUE VAR VALUE...)
1472This sets each SYMBOL's default value to the corresponding VALUE. 1472This sets each VAR's default value to the corresponding VALUE.
1473The VALUE for the Nth SYMBOL can refer to the new default values 1473The VALUE for the Nth VAR can refer to the new default values
1474of previous SYMs. 1474of previous VARs.
1475usage: (setq-default SYMBOL VALUE [SYMBOL VALUE...]) */) 1475usage: (setq-default VAR VALUE [VAR VALUE...]) */)
1476 (args) 1476 (args)
1477 Lisp_Object args; 1477 Lisp_Object args;
1478{ 1478{
diff --git a/src/emacs.c b/src/emacs.c
index 011d66c5cab..75bea1da4cf 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -895,7 +895,7 @@ main (argc, argv
895 /* If -map specified, map the data file in. */ 895 /* If -map specified, map the data file in. */
896 { 896 {
897 char *file; 897 char *file;
898 if (argmatch (argv, argc, "-map", "--map-data", 3, &mapin_file, &skip_args)) 898 if (argmatch (argv, argc, "-map", "--map-data", 3, &file, &skip_args))
899 mapin_data (file); 899 mapin_data (file);
900 } 900 }
901 901
diff --git a/src/fileio.c b/src/fileio.c
index db1aac0afda..bd84ce6121b 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -2351,7 +2351,7 @@ barf_or_query_if_file_exists (absname, querystring, interactive, statptr, quick)
2351 2351
2352 /* stat is a good way to tell whether the file exists, 2352 /* stat is a good way to tell whether the file exists,
2353 regardless of what access permissions it has. */ 2353 regardless of what access permissions it has. */
2354 if (stat (SDATA (encoded_filename), &statbuf) >= 0) 2354 if (lstat (SDATA (encoded_filename), &statbuf) >= 0)
2355 { 2355 {
2356 if (! interactive) 2356 if (! interactive)
2357 Fsignal (Qfile_already_exists, 2357 Fsignal (Qfile_already_exists,
@@ -2686,11 +2686,11 @@ This is what happens in interactive use with M-x. */)
2686 Lisp_Object args[2]; 2686 Lisp_Object args[2];
2687#endif 2687#endif
2688 Lisp_Object handler; 2688 Lisp_Object handler;
2689 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; 2689 struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
2690 Lisp_Object encoded_file, encoded_newname; 2690 Lisp_Object encoded_file, encoded_newname, symlink_target;
2691 2691
2692 encoded_file = encoded_newname = Qnil; 2692 symlink_target = encoded_file = encoded_newname = Qnil;
2693 GCPRO4 (file, newname, encoded_file, encoded_newname); 2693 GCPRO5 (file, newname, encoded_file, encoded_newname, symlink_target);
2694 CHECK_STRING (file); 2694 CHECK_STRING (file);
2695 CHECK_STRING (newname); 2695 CHECK_STRING (newname);
2696 file = Fexpand_file_name (file, Qnil); 2696 file = Fexpand_file_name (file, Qnil);
@@ -2727,10 +2727,17 @@ This is what happens in interactive use with M-x. */)
2727 { 2727 {
2728 if (errno == EXDEV) 2728 if (errno == EXDEV)
2729 { 2729 {
2730 Fcopy_file (file, newname, 2730#ifdef S_IFLNK
2731 /* We have already prompted if it was an integer, 2731 symlink_target = Ffile_symlink_p (file);
2732 so don't have copy-file prompt again. */ 2732 if (! NILP (symlink_target))
2733 NILP (ok_if_already_exists) ? Qnil : Qt, Qt); 2733 Fmake_symbolic_link (symlink_target, newname,
2734 NILP (ok_if_already_exists) ? Qnil : Qt, Qt);
2735 else
2736#endif
2737 Fcopy_file (file, newname,
2738 /* We have already prompted if it was an integer,
2739 so don't have copy-file prompt again. */
2740 NILP (ok_if_already_exists) ? Qnil : Qt, Qt);
2734 Fdelete_file (file); 2741 Fdelete_file (file);
2735 } 2742 }
2736 else 2743 else
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 4d0b50573f7..82d5135d2bc 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -2760,18 +2760,16 @@ xg_update_scrollbar_pos (f, scrollbar_id, top, left, width, height,
2760 if (wscroll) 2760 if (wscroll)
2761 { 2761 {
2762 GtkWidget *wfixed = f->output_data.x->edit_widget; 2762 GtkWidget *wfixed = f->output_data.x->edit_widget;
2763 int winextra = canon_width > width ? (canon_width - width) / 2 : 0;
2764 int bottom = top + height;
2765 2763
2766 gint slider_width; 2764 gtk_container_set_reallocate_redraws (GTK_CONTAINER (wfixed), TRUE);
2767 int oldtop, oldleft, oldbottom;
2768 GtkRequisition req;
2769 2765
2770 /* Get old values. */ 2766 /* Move and resize to new values. */
2771 xg_find_top_left_in_fixed (wscroll, wfixed, &oldleft, &oldtop); 2767 gtk_fixed_move (GTK_FIXED (wfixed), wscroll, left, top);
2772 gtk_widget_size_request (wscroll, &req); 2768 gtk_widget_set_size_request (wscroll, width, height);
2773 oldbottom = oldtop + req.height;
2774 2769
2770 /* Must force out update so changed scroll bars gets redrawn. */
2771 gdk_window_process_all_updates ();
2772
2775 /* Scroll bars in GTK has a fixed width, so if we say width 16, it 2773 /* Scroll bars in GTK has a fixed width, so if we say width 16, it
2776 will only be its fixed width (14 is default) anyway, the rest is 2774 will only be its fixed width (14 is default) anyway, the rest is
2777 blank. We are drawing the mode line across scroll bars when 2775 blank. We are drawing the mode line across scroll bars when
@@ -2799,62 +2797,7 @@ xg_update_scrollbar_pos (f, scrollbar_id, top, left, width, height,
2799 the scroll bar and the edge of the window and between the scroll 2797 the scroll bar and the edge of the window and between the scroll
2800 bar and the fringe. */ 2798 bar and the fringe. */
2801 2799
2802 if (oldtop != -1 && oldleft != -1) 2800 XClearWindow (FRAME_X_DISPLAY (f), GTK_WIDGET_TO_X_WIN (wscroll));
2803 {
2804 int gtkextral, gtkextrah;
2805 int xl, xr, wbl, wbr;
2806 int bottomdiff, topdiff;
2807
2808 gtk_widget_style_get (wscroll, "slider_width", &slider_width, NULL);
2809 gtkextral = width > slider_width ? (width - slider_width) / 2 : 0;
2810 gtkextrah = gtkextral ? (width - slider_width - gtkextral) : 0;
2811
2812 xl = real_left;
2813 wbl = gtkextral + winextra;
2814 wbr = gtkextrah + winextra;
2815 xr = left + gtkextral + slider_width;
2816 bottomdiff = abs (oldbottom - bottom);
2817 topdiff = abs (oldtop - top);
2818
2819 if (oldleft != left)
2820 {
2821 gdk_window_clear_area (wfixed->window, xl, top, wbl, height);
2822 gdk_window_clear_area (wfixed->window, xr, top, wbr, height);
2823 }
2824
2825 if (oldtop > top)
2826 {
2827 gdk_window_clear_area (wfixed->window, xl, top, wbl, topdiff);
2828 gdk_window_clear_area (wfixed->window, xr, top, wbr, topdiff);
2829 }
2830 else if (oldtop < top)
2831 {
2832 gdk_window_clear_area (wfixed->window, xl, oldtop, wbl, topdiff);
2833 gdk_window_clear_area (wfixed->window, xr, oldtop, wbr, topdiff);
2834 }
2835
2836 if (oldbottom > bottom)
2837 {
2838 gdk_window_clear_area (wfixed->window, xl, bottom, wbl,
2839 bottomdiff);
2840 gdk_window_clear_area (wfixed->window, xr, bottom, wbr,
2841 bottomdiff);
2842 }
2843 else if (oldbottom < bottom)
2844 {
2845 gdk_window_clear_area (wfixed->window, xl, oldbottom, wbl,
2846 bottomdiff);
2847 gdk_window_clear_area (wfixed->window, xr, oldbottom, wbr,
2848 bottomdiff);
2849 }
2850 }
2851
2852 /* Move and resize to new values. */
2853 gtk_fixed_move (GTK_FIXED (wfixed), wscroll, left, top);
2854 gtk_widget_set_size_request (wscroll, width, height);
2855
2856 /* Must force out update so changed scroll bars gets redrawn. */
2857 gdk_window_process_all_updates ();
2858 2801
2859 SET_FRAME_GARBAGED (f); 2802 SET_FRAME_GARBAGED (f);
2860 cancel_mouse_face (f); 2803 cancel_mouse_face (f);
diff --git a/src/image.c b/src/image.c
index 4c2bdb440e8..09e497576a4 100644
--- a/src/image.c
+++ b/src/image.c
@@ -3179,13 +3179,16 @@ static int xpm_valid_color_symbols_p P_ ((Lisp_Object));
3179/* Indicate to xpm.h that we don't have Xlib. */ 3179/* Indicate to xpm.h that we don't have Xlib. */
3180#define FOR_MSW 3180#define FOR_MSW
3181/* simx.h in xpm defines XColor and XImage differently than Emacs. */ 3181/* simx.h in xpm defines XColor and XImage differently than Emacs. */
3182/* It also defines Display the same way as Emacs, but gcc 3.3 still barfs. */
3182#define XColor xpm_XColor 3183#define XColor xpm_XColor
3183#define XImage xpm_XImage 3184#define XImage xpm_XImage
3185#define Display xpm_Display
3184#define PIXEL_ALREADY_TYPEDEFED 3186#define PIXEL_ALREADY_TYPEDEFED
3185#include "X11/xpm.h" 3187#include "X11/xpm.h"
3186#undef FOR_MSW 3188#undef FOR_MSW
3187#undef XColor 3189#undef XColor
3188#undef XImage 3190#undef XImage
3191#undef Display
3189#undef PIXEL_ALREADY_TYPEDEFED 3192#undef PIXEL_ALREADY_TYPEDEFED
3190#else 3193#else
3191#include "X11/xpm.h" 3194#include "X11/xpm.h"
diff --git a/src/indent.c b/src/indent.c
index 99422698d51..1dc5c91fbad 100644
--- a/src/indent.c
+++ b/src/indent.c
@@ -1,5 +1,5 @@
1/* Indentation functions. 1/* Indentation functions.
2 Copyright (C) 1985,86,87,88,93,94,95,98,2000,01,02,2003 2 Copyright (C) 1985,86,87,88,93,94,95,98,2000,01,02,03,2004
3 Free Software Foundation, Inc. 3 Free Software Foundation, Inc.
4 4
5This file is part of GNU Emacs. 5This file is part of GNU Emacs.
@@ -1409,6 +1409,7 @@ compute_motion (from, fromvpos, fromhpos, did_motion, to, tovpos, tohpos, width,
1409 vpos++; 1409 vpos++;
1410 contin_hpos = prev_hpos; 1410 contin_hpos = prev_hpos;
1411 prev_hpos = 0; 1411 prev_hpos = 0;
1412 prev_vpos = vpos;
1412 } 1413 }
1413 } 1414 }
1414 1415
diff --git a/src/makefile.nt b/src/makefile.nt
deleted file mode 100644
index 0cf08f37105..00000000000
--- a/src/makefile.nt
+++ /dev/null
@@ -1,1232 +0,0 @@
1# Makefile for GNU Emacs on the Microsoft W32 API.
2# Copyright (c) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
3# Tim Fleehart (apollo@online.com) 17-Apr-92
4# Geoff Voelker (voelker@cs.washington.edu) 11-20-93
5#
6# This file is part of GNU Emacs.
7#
8# GNU Emacs is free software; you can redistribute it and/or modify
9# it under the terms of the GNU General Public License as published by
10# the Free Software Foundation; either version 2, or (at your option)
11# any later version.
12#
13# GNU Emacs is distributed in the hope that it will be useful,
14# but WITHOUT ANY WARRANTY; without even the implied warranty of
15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16# GNU General Public License for more details.
17#
18# You should have received a copy of the GNU General Public License
19# along with GNU Emacs; see the file COPYING. If not, write to the
20# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21# Boston, MA 02111-1307, USA.
22#
23
24#
25# Sets up the system dependent macros.
26#
27!include ..\nt\makefile.def
28
29SUBSYSTEM=console
30
31#
32# HAVE_CONFIG_H is required by some generic gnu sources stuck into
33# the emacs source tree.
34#
35LOCAL_FLAGS = -Demacs=1 -DWINDOWSNT -DDOS_NT -DHAVE_CONFIG_H -I..\nt\inc
36!ifdef NTGUI
37LOCAL_FLAGS = $(LOCAL_FLAGS) -DHAVE_NTGUI=1
38!endif
39!ifdef USE_CRT_DLL
40LOCAL_FLAGS = $(LOCAL_FLAGS) -DUSE_CRT_DLL=1 -MD
41libc = msvcrt.lib
42LINK_FLAGS = -nodefaultlib
43!endif
44
45# From MSVC 5.0 onwards, it seem base relocation information is not included,
46# at least in release builds. We need to ensure the reloc info is included
47# in order to use the MSVC profiler.
48!IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)")
49EXTRA_LINK =
50!ELSE
51EXTRA_LINK = -profile
52!ENDIF
53
54EMACS = $(BLD)\emacs.exe
55TEMACS = $(BLD)\temacs.exe
56TEMACS_TMP = $(BLD)\temacs.bin
57TLIB0 = $(BLD)\temacs0.lib
58TLIB1 = $(BLD)\temacs1.lib
59TLIB2 = $(BLD)\temacs2.lib
60!IFDEF NTGUI
61TLIBW32 = $(BLD)\temacw32.lib
62!ELSE
63TLIBW32 =
64!ENDIF
65TOBJ = $(BLD)\firstfile.obj
66!if $(MSVCNT11)
67TRES = $(BLD)\emacs.res
68!else
69TRES = $(BLD)\emacs.rbj
70!endif
71TLASTLIB = $(BLD)\lastfile.lib
72
73# see comments in allocate_heap in w32heap.c before changing any of the
74# -stack, -heap, or -base settings.
75!if "$(BUILD_TYPE)" == "spd"
76LINK_FLAGS = $(LINK_FLAGS) $(ARCH_LDFLAGS) -stack:0x00800000 -heap:0x00100000 -base:0x01000000 -debug:full -debugtype:both -pdb:$(BLD)\temacs.pdb -machine:$(ARCH) -subsystem:$(SUBSYSTEM) -entry:_start -map:$(BLD)\temacs.map -swaprun:net -swaprun:cd
77!else
78LINK_FLAGS = $(LINK_FLAGS) $(ARCH_LDFLAGS) -stack:0x00800000 -heap:0x00100000 -base:0x01000000 -debug:full -debugtype:both -pdb:none -machine:$(ARCH) -subsystem:$(SUBSYSTEM) -entry:_start -map:$(BLD)\temacs.map -swaprun:net -swaprun:cd $(EXTRA_LINK)
79!endif
80
81#
82# Split up the objects into two sets so that we don't run out of
83# command line space when we link them into a library.
84#
85# Put emacs.obj in a separate lib, since we need to have firstfile.obj
86# as the "main" object file when linking.
87#
88OBJ0 = $(BLD)\emacs.obj
89
90OBJ1 = $(BLD)\abbrev.obj \
91 $(BLD)\alloc.obj \
92 $(BLD)\alloca.obj \
93 $(BLD)\atimer.obj \
94 $(BLD)\buffer.obj \
95 $(BLD)\bytecode.obj \
96 $(BLD)\callint.obj \
97 $(BLD)\callproc.obj \
98 $(BLD)\casefiddle.obj \
99 $(BLD)\cm.obj \
100 $(BLD)\cmds.obj \
101 $(BLD)\data.obj \
102 $(BLD)\dired.obj \
103 $(BLD)\dispnew.obj \
104 $(BLD)\doc.obj \
105 $(BLD)\doprnt.obj \
106 $(BLD)\editfns.obj \
107 $(BLD)\eval.obj \
108 $(BLD)\fileio.obj \
109 $(BLD)\filelock.obj \
110 $(BLD)\filemode.obj \
111 $(BLD)\fns.obj \
112 $(BLD)\indent.obj \
113 $(BLD)\insdel.obj \
114 $(BLD)\keyboard.obj \
115 $(BLD)\keymap.obj \
116 $(BLD)\lread.obj \
117 $(BLD)\macros.obj \
118 $(BLD)\marker.obj \
119 $(BLD)\md5.obj \
120 $(BLD)\minibuf.obj
121
122OBJ2 = $(BLD)\w32.obj \
123 $(BLD)\w32heap.obj \
124 $(BLD)\w32inevt.obj \
125 $(BLD)\w32proc.obj \
126 $(BLD)\w32console.obj \
127 $(BLD)\print.obj \
128 $(BLD)\process.obj \
129 $(BLD)\regex.obj \
130 $(BLD)\scroll.obj \
131 $(BLD)\search.obj \
132 $(BLD)\syntax.obj \
133 $(BLD)\sysdep.obj \
134 $(BLD)\term.obj \
135 $(BLD)\termcap.obj \
136 $(BLD)\tparam.obj \
137 $(BLD)\undo.obj \
138 $(BLD)\unexw32.obj \
139 $(BLD)\window.obj \
140 $(BLD)\xdisp.obj \
141 $(BLD)\casetab.obj \
142 $(BLD)\floatfns.obj \
143 $(BLD)\frame.obj \
144 $(BLD)\gmalloc.obj \
145 $(BLD)\intervals.obj \
146 $(BLD)\composite.obj \
147 $(BLD)\ralloc.obj \
148 $(BLD)\textprop.obj \
149 $(BLD)\vm-limit.obj \
150 $(BLD)\region-cache.obj \
151 $(BLD)\strftime.obj \
152 $(BLD)\charset.obj \
153 $(BLD)\coding.obj \
154 $(BLD)\category.obj \
155 $(BLD)\ccl.obj \
156 $(BLD)\fontset.obj
157
158WIN32OBJ = $(BLD)\w32term.obj \
159 $(BLD)\w32xfns.obj \
160 $(BLD)\w32fns.obj \
161 $(BLD)\xfaces.obj \
162 $(BLD)\w32select.obj \
163 $(BLD)\w32menu.obj \
164 $(BLD)\w32reg.obj \
165 $(BLD)\w32bdf.obj
166
167LIBS = $(TLIB0) \
168 $(TLIB1) \
169 $(TLIB2) \
170!IFDEF NTGUI
171 $(TLIBW32) \
172!ENDIF
173 $(TLASTLIB) \
174!IFDEF NTGUI
175 gdi32.lib \
176 comdlg32.lib \
177!ENDIF
178# libcmt.lib \
179 $(BASE_LIBS) \
180 $(ADVAPI32) \
181 user32.lib \
182 mpr.lib \
183 shell32.lib \
184 setargv.obj
185
186#
187# Build the executable and dump it.
188#
189all: $(BLD) $(EMACS)
190
191#
192# Headers we would preprocess if we could.
193#
194PREPARED_HEADERS = config.h epaths.h
195config.h: ..\nt\$(CONFIG_H)
196 $(CP) $** $@
197epaths.h: ..\nt\paths.h
198 $(CP) $** $@
199
200#
201# Make sure we have the DOC file in the right place.
202#
203DOC = $(OBJDIR)\etc\DOC-X
204$(DOC):; cd ..\lib-src
205 - $(DEL) DOC-X
206 $(MAKE) $(MFLAGS) -f makefile.nt all
207 cd ..\src
208
209#
210# The dumped executable
211#
212emacs: $(EMACS)
213$(EMACS): $(DOC) $(TEMACS)
214 $(MAKEDIR)\$(BLD)\temacs.exe -batch -l loadup dump
215
216#
217# The undumped executable
218# Note the extra post-link step to insert a static preload heap section.
219# If preload runs out of memory, increase the last argument to addsection
220# (it is the preload heap size in MB).
221#
222temacs: $(BLD) $(TEMACS)
223$(TEMACS): $(PREPARED_HEADERS) $(TLIB0) $(TLIB1) $(TLIB2) $(TLIBW32) $(TLASTLIB) $(TOBJ) $(TRES)
224 $(LINK) -out:$(TEMACS_TMP) $(LINK_FLAGS) $(TOBJ) $(TRES) $(LIBS)
225 ..\nt\$(BLD)\addsection $(TEMACS_TMP) $(TEMACS) EMHEAP 16
226
227bootstrap: bootstrap-emacs
228
229#
230# Build a temacs with a sufficiently large PURESIZE to load the
231# Lisp files from loadup.el in source form.
232#
233bootstrap-temacs: bootstrap-clean
234 $(MAKE) $(MFLAGS) -f makefile.nt temacs CFLAGS="$(CFLAGS) -DPURESIZE=5000000"
235
236#
237# Dump an Emacs executable named bootstrap-emacs containing the
238# files from loadup.el in source form.
239#
240bootstrap-emacs: bootstrap-temacs
241 $(MAKEDIR)\$(BLD)\temacs.exe -batch -l loadup bootstrap
242 - mkdir ..\bin
243 $(CP) $(EMACS) ..\bin
244
245#
246# Force recompile of files that depend on PURESIZE
247#
248bootstrap-clean:
249 - $(DEL) $(BLD)\alloc.obj
250 - $(DEL) $(BLD)\data.obj
251 - $(DEL) $(BLD)\intervals.obj
252 - $(DEL) $(BLD)\keyboard.obj
253 - $(DEL) $(BLD)\keymap.obj
254
255#
256# The resource file. NT 3.10 requires the use of cvtres; even though
257# it is not necessary on later versions, it is still ok to use it.
258#
259$(TRES): ..\nt\emacs.rc
260 $(RC) -i..\nt -Fo$(BLD)\emacs.res $**
261!if !$(MSVCNT11)
262 $(CVTRES) -r -$(ARCH) -o $@ $(BLD)\emacs.res
263!endif
264
265#
266# Build the library. Split up the build into two phases...otherwise we
267# run out of command line space.
268#
269$(TLIB0): $(OBJ0)
270 @- $(AR) -out:$@ $**
271$(TLIB1): $(OBJ1)
272 @- $(AR) -out:$@ $**
273$(TLIB2): $(OBJ2)
274 @- $(AR) -out:$@ $**
275!IFDEF NTGUI
276$(TLIBW32): $(WIN32OBJ)
277 @- $(AR) -out:$@ $**
278!ENDIF
279
280#
281# Place lastfile.obj in its own library so that it can be loaded after
282# the source libraries but before any system libraries. Doing so defines
283# the end of Emacs' data section portably across compilers and systems.
284#
285$(TLASTLIB): $(BLD)\lastfile.obj
286 @- $(AR) -out:$@ $**
287
288#
289# Assuming INSTALL_DIR is defined, build and install emacs in it.
290#
291install: all
292 - mkdir $(INSTALL_DIR)\bin
293 $(CP) $(EMACS) $(INSTALL_DIR)\bin
294
295#
296# Maintenance
297#
298clean:; - $(DEL) *~ s\*~
299 - $(DEL) *.pdb config.h epaths.h
300 - $(DEL) *.orig *.rej *.crlf
301 - $(DEL) s\*.orig s\*.rej s\*.crlf
302 - $(DEL_TREE) deleted
303 - $(DEL_TREE) obj
304 - $(DEL_TREE) obj-spd
305
306#
307# These files are the ones that compile conditionally on CANNOT_DUMP...
308# this target is mostly used for debugging.
309#
310cleandump:; cd $(BLD)
311 - $(DEL) callproc.obj data.obj dispnew.obj doc.obj editfns.obj emacs.obj lread.obj process.obj sysdep.obj term.obj w32heap.obj unexw32.obj
312 cd ..\..
313
314
315### DEPENDENCIES ###
316
317EMACS_ROOT = ..
318SRC = .
319
320$(BLD)\abbrev.obj : \
321 $(SRC)\abbrev.c \
322 $(EMACS_ROOT)\src\s\ms-w32.h \
323 $(EMACS_ROOT)\src\m\intel386.h \
324 $(EMACS_ROOT)\src\config.h \
325 $(SRC)\commands.h \
326 $(SRC)\buffer.h \
327 $(SRC)\window.h
328
329$(BLD)\alloc.obj : \
330 $(SRC)\alloc.c \
331 $(EMACS_ROOT)\src\s\ms-w32.h \
332 $(EMACS_ROOT)\src\m\intel386.h \
333 $(EMACS_ROOT)\src\config.h \
334 $(SRC)\dispextern.h \
335 $(SRC)\w32gui.h \
336 $(SRC)\intervals.h \
337 $(SRC)\composite.h \
338 $(SRC)\puresize.h \
339 $(SRC)\buffer.h \
340 $(SRC)\window.h \
341 $(SRC)\frame.h \
342 $(SRC)\blockinput.h \
343 $(SRC)\syssignal.h
344
345$(BLD)\alloca.obj : \
346 $(SRC)\alloca.c \
347 $(EMACS_ROOT)\src\s\ms-w32.h \
348 $(EMACS_ROOT)\src\m\intel386.h \
349 $(EMACS_ROOT)\src\config.h \
350 $(SRC)\s\ms-w32.h \
351 $(SRC)\m\intel386.h \
352 $(SRC)\config.h \
353 $(SRC)\blockinput.h
354
355$(BLD)\atimer.obj : \
356 $(SRC)\atimer.c \
357 $(EMACS_ROOT)\src\s\ms-w32.h \
358 $(EMACS_ROOT)\src\m\intel386.h \
359 $(EMACS_ROOT)\src\config.h \
360 $(SRC)\s\ms-w32.h \
361 $(SRC)\m\intel386.h \
362 $(SRC)\config.h \
363 $(SRC)\atimer.h \
364 $(SRC)\syssignal.h \
365 $(SRC)\systime.h \
366 $(SRC)\blockinput.h
367
368$(BLD)\buffer.obj : \
369 $(SRC)\buffer.c \
370 $(EMACS_ROOT)\nt\inc\sys\param.h \
371 $(EMACS_ROOT)\src\s\ms-w32.h \
372 $(EMACS_ROOT)\src\m\intel386.h \
373 $(EMACS_ROOT)\src\config.h \
374 $(SRC)\dispextern.h \
375 $(SRC)\w32gui.h \
376 $(SRC)\intervals.h \
377 $(SRC)\composite.h \
378 $(SRC)\frame.h \
379 $(SRC)\window.h \
380 $(SRC)\commands.h \
381 $(SRC)\buffer.h \
382 $(SRC)\indent.h \
383 $(SRC)\blockinput.h \
384 $(SRC)\region-cache.h
385
386$(BLD)\bytecode.obj : \
387 $(SRC)\bytecode.c \
388 $(EMACS_ROOT)\src\s\ms-w32.h \
389 $(EMACS_ROOT)\src\m\intel386.h \
390 $(EMACS_ROOT)\src\config.h \
391 $(SRC)\buffer.h \
392 $(SRC)\syntax.h
393
394$(BLD)\callint.obj : \
395 $(SRC)\callint.c \
396 $(EMACS_ROOT)\src\s\ms-w32.h \
397 $(EMACS_ROOT)\src\m\intel386.h \
398 $(EMACS_ROOT)\src\config.h \
399 $(SRC)\buffer.h \
400 $(SRC)\commands.h \
401 $(SRC)\keyboard.h \
402 $(SRC)\window.h
403
404$(BLD)\callproc.obj : \
405 $(SRC)\callproc.c \
406 $(EMACS_ROOT)\src\s\ms-w32.h \
407 $(EMACS_ROOT)\src\m\intel386.h \
408 $(EMACS_ROOT)\src\config.h \
409 $(SRC)\msdos.h \
410 $(EMACS_ROOT)\nt\inc\sys\param.h \
411 $(SRC)\commands.h \
412 $(SRC)\buffer.h \
413 $(SRC)\process.h \
414 $(SRC)\syssignal.h \
415 $(EMACS_ROOT)\nt\inc\sys\ioctl.h \
416 $(EMACS_ROOT)\nt\inc\sys\file.h \
417 $(SRC)\systty.h
418
419$(BLD)\casefiddle.obj : \
420 $(SRC)\casefiddle.c \
421 $(EMACS_ROOT)\src\s\ms-w32.h \
422 $(EMACS_ROOT)\src\m\intel386.h \
423 $(EMACS_ROOT)\src\config.h \
424 $(SRC)\buffer.h \
425 $(SRC)\commands.h \
426 $(SRC)\syntax.h
427 $(CC) $(CFLAGS) -Fo$@ casefiddle.c
428
429$(BLD)\casetab.obj : \
430 $(SRC)\casetab.c \
431 $(EMACS_ROOT)\src\s\ms-w32.h \
432 $(EMACS_ROOT)\src\m\intel386.h \
433 $(EMACS_ROOT)\src\config.h \
434 $(SRC)\buffer.h
435
436$(BLD)\cm.obj : \
437 $(SRC)\cm.c \
438 $(EMACS_ROOT)\src\s\ms-w32.h \
439 $(EMACS_ROOT)\src\m\intel386.h \
440 $(EMACS_ROOT)\src\config.h \
441 $(SRC)\cm.h \
442 $(SRC)\termhooks.h
443
444$(BLD)\cmds.obj : \
445 $(SRC)\cmds.c \
446 $(EMACS_ROOT)\src\s\ms-w32.h \
447 $(EMACS_ROOT)\src\m\intel386.h \
448 $(EMACS_ROOT)\src\config.h \
449 $(SRC)\commands.h \
450 $(SRC)\buffer.h \
451 $(SRC)\syntax.h
452
453$(BLD)\composite.obj : \
454 $(SRC)\composite.c \
455 $(SRC)\buffer.h \
456 $(SRC)\charset.h \
457 $(SRC)\intervals.h \
458 $(SRC)\composite.h \
459 $(EMACS_ROOT)\src\s\ms-w32.h \
460 $(EMACS_ROOT)\src\m\intel386.h \
461 $(EMACS_ROOT)\src\config.h
462
463$(BLD)\data.obj : \
464 $(SRC)\data.c \
465 $(EMACS_ROOT)\src\s\ms-w32.h \
466 $(EMACS_ROOT)\src\m\intel386.h \
467 $(EMACS_ROOT)\src\config.h \
468 $(SRC)\puresize.h \
469 $(SRC)\buffer.h \
470 $(SRC)\syssignal.h
471
472$(BLD)\dired.obj : \
473 $(SRC)\dired.c \
474 $(EMACS_ROOT)\src\s\ms-w32.h \
475 $(EMACS_ROOT)\src\m\intel386.h \
476 $(EMACS_ROOT)\src\config.h \
477 $(SRC)\ndir.h \
478 $(SRC)\buffer.h \
479 $(SRC)\commands.h \
480 $(SRC)\regex.h
481
482$(BLD)\dispnew.obj : \
483 $(SRC)\dispnew.c \
484 $(EMACS_ROOT)\src\s\ms-w32.h \
485 $(EMACS_ROOT)\src\m\intel386.h \
486 $(EMACS_ROOT)\src\config.h \
487 $(SRC)\termchar.h \
488 $(SRC)\termopts.h \
489 $(SRC)\termhooks.h \
490 $(SRC)\cm.h \
491 $(SRC)\buffer.h \
492 $(SRC)\frame.h \
493 $(SRC)\window.h \
494 $(SRC)\commands.h \
495 $(SRC)\disptab.h \
496 $(SRC)\indent.h \
497 $(SRC)\dispextern.h \
498 $(SRC)\intervals.h \
499 $(SRC)\composite.h \
500 $(EMACS_ROOT)\nt\inc\sys\ioctl.h \
501 $(EMACS_ROOT)\nt\inc\sys\file.h \
502 $(SRC)\systty.h \
503 $(SRC)\w32term.h \
504 $(SRC)\w32gui.h \
505 $(SRC)\xterm.h \
506 $(SRC)\systime.h
507
508$(BLD)\doc.obj : \
509 $(SRC)\doc.c \
510 $(EMACS_ROOT)\src\s\ms-w32.h \
511 $(EMACS_ROOT)\src\m\intel386.h \
512 $(EMACS_ROOT)\src\config.h \
513 $(EMACS_ROOT)\nt\inc\sys\file.h \
514 $(SRC)\buffer.h \
515 $(SRC)\keyboard.h
516
517$(BLD)\doprnt.obj : \
518 $(SRC)\doprnt.c \
519 $(EMACS_ROOT)\src\s\ms-w32.h \
520 $(EMACS_ROOT)\src\m\intel386.h \
521 $(EMACS_ROOT)\src\config.h
522
523$(BLD)\dosfns.obj : \
524 $(SRC)\dosfns.c \
525 $(EMACS_ROOT)\src\s\ms-w32.h \
526 $(EMACS_ROOT)\src\m\intel386.h \
527 $(EMACS_ROOT)\src\config.h \
528 $(SRC)\buffer.h \
529 $(SRC)\termchar.h \
530 $(SRC)\termhooks.h \
531 $(SRC)\frame.h \
532 $(SRC)\dosfns.h \
533 $(SRC)\msdos.h
534
535$(BLD)\editfns.obj : \
536 $(SRC)\editfns.c \
537 $(EMACS_ROOT)\src\s\ms-w32.h \
538 $(EMACS_ROOT)\src\m\intel386.h \
539 $(EMACS_ROOT)\src\config.h \
540 $(SRC)\uaf.h \
541 $(EMACS_ROOT)\nt\inc\pwd.h \
542 $(SRC)\dispextern.h \
543 $(SRC)\w32gui.h \
544 $(SRC)\intervals.h \
545 $(SRC)\composite.h \
546 $(SRC)\buffer.h \
547 $(SRC)\window.h \
548 $(SRC)\systime.h
549
550$(BLD)\emacs.obj : \
551 $(SRC)\emacs.c \
552 $(EMACS_ROOT)\src\s\ms-w32.h \
553 $(EMACS_ROOT)\src\m\intel386.h \
554 $(EMACS_ROOT)\src\config.h \
555 $(SRC)\commands.h \
556 $(SRC)\dispextern.h \
557 $(SRC)\w32gui.h \
558 $(SRC)\intervals.h \
559 $(SRC)\composite.h \
560 $(EMACS_ROOT)\nt\inc\sys\ioctl.h \
561 $(EMACS_ROOT)\nt\inc\sys\file.h \
562 $(SRC)\systty.h \
563 $(SRC)\syssignal.h \
564 $(SRC)\process.h
565
566$(BLD)\eval.obj : \
567 $(SRC)\eval.c \
568 $(EMACS_ROOT)\src\s\ms-w32.h \
569 $(EMACS_ROOT)\src\m\intel386.h \
570 $(EMACS_ROOT)\src\config.h \
571 $(SRC)\blockinput.h \
572 $(SRC)\commands.h \
573 $(SRC)\keyboard.h
574
575$(BLD)\fileio.obj : \
576 $(SRC)\fileio.c \
577 $(EMACS_ROOT)\src\s\ms-w32.h \
578 $(EMACS_ROOT)\src\m\intel386.h \
579 $(EMACS_ROOT)\src\config.h \
580 $(SRC)\uaf.h \
581 $(EMACS_ROOT)\nt\inc\pwd.h \
582 $(SRC)\msdos.h \
583 $(EMACS_ROOT)\nt\inc\sys\param.h \
584 $(SRC)\dispextern.h \
585 $(SRC)\w32gui.h \
586 $(SRC)\intervals.h \
587 $(SRC)\composite.h \
588 $(SRC)\buffer.h \
589 $(SRC)\window.h \
590 $(EMACS_ROOT)\nt\inc\sys\file.h \
591 $(SRC)\systime.h
592
593$(BLD)\filelock.obj : \
594 $(SRC)\filelock.c \
595 $(EMACS_ROOT)\src\s\ms-w32.h \
596 $(EMACS_ROOT)\src\m\intel386.h \
597 $(EMACS_ROOT)\src\config.h \
598 $(SRC)\uaf.h \
599 $(EMACS_ROOT)\nt\inc\pwd.h \
600 $(EMACS_ROOT)\nt\inc\sys\file.h \
601 $(EMACS_ROOT)\src\epaths.h \
602 $(SRC)\buffer.h \
603 $(SRC)\ndir.h
604
605$(BLD)\filemode.obj : \
606 $(SRC)\filemode.c \
607 $(EMACS_ROOT)\src\s\ms-w32.h \
608 $(EMACS_ROOT)\src\m\intel386.h \
609 $(EMACS_ROOT)\src\config.h \
610 $(SRC)\s\ms-w32.h \
611 $(SRC)\m\intel386.h \
612 $(SRC)\config.h
613
614$(BLD)\firstfile.obj : \
615 $(SRC)\firstfile.c \
616 $(EMACS_ROOT)\src\s\ms-w32.h \
617 $(EMACS_ROOT)\src\m\intel386.h \
618 $(EMACS_ROOT)\src\config.h
619
620$(BLD)\floatfns.obj : \
621 $(SRC)\floatfns.c \
622 $(EMACS_ROOT)\src\s\ms-w32.h \
623 $(EMACS_ROOT)\src\m\intel386.h \
624 $(EMACS_ROOT)\src\config.h \
625 $(SRC)\syssignal.h
626
627$(BLD)\fns.obj : \
628 $(SRC)\fns.c \
629 $(EMACS_ROOT)\src\s\ms-w32.h \
630 $(EMACS_ROOT)\src\m\intel386.h \
631 $(EMACS_ROOT)\src\config.h \
632 $(SRC)\commands.h \
633 $(SRC)\buffer.h \
634 $(SRC)\keyboard.h \
635 $(SRC)\dispextern.h \
636 $(SRC)\w32gui.h \
637 $(SRC)\intervals.h \
638 $(SRC)\composite.h \
639 $(SRC)\md5.h
640
641$(BLD)\frame.obj : \
642 $(SRC)\frame.c \
643 $(EMACS_ROOT)\src\s\ms-w32.h \
644 $(EMACS_ROOT)\src\m\intel386.h \
645 $(EMACS_ROOT)\src\config.h \
646 $(SRC)\frame.h \
647 $(SRC)\termhooks.h \
648 $(SRC)\window.h \
649 $(SRC)\buffer.h \
650 $(SRC)\commands.h \
651 $(SRC)\keyboard.h
652
653$(BLD)\getloadavg.obj : \
654 $(SRC)\getloadavg.c \
655 $(EMACS_ROOT)\nt\inc\sys\param.h \
656 $(EMACS_ROOT)\src\s\ms-w32.h \
657 $(EMACS_ROOT)\src\m\intel386.h \
658 $(EMACS_ROOT)\src\config.h \
659 $(SRC)\s\ms-w32.h \
660 $(SRC)\m\intel386.h \
661 $(SRC)\config.h \
662 $(EMACS_ROOT)\nt\inc\sys\file.h
663
664$(BLD)\gmalloc.obj : \
665 $(SRC)\gmalloc.c \
666 $(EMACS_ROOT)\src\s\ms-w32.h \
667 $(EMACS_ROOT)\src\m\intel386.h \
668 $(EMACS_ROOT)\src\config.h \
669 $(EMACS_ROOT)\nt\inc\sys\param.h \
670 $(SRC)\getpagesize.h
671 $(CC) $(CFLAGS) -D__STDC__ -Fo$@ gmalloc.c
672
673$(BLD)\hftctl.obj : \
674 $(SRC)\hftctl.c \
675 $(EMACS_ROOT)\src\s\ms-w32.h \
676 $(EMACS_ROOT)\src\m\intel386.h \
677 $(EMACS_ROOT)\src\config.h \
678 $(EMACS_ROOT)\nt\inc\sys\ioctl.h
679
680$(BLD)\indent.obj : \
681 $(SRC)\indent.c \
682 $(EMACS_ROOT)\src\s\ms-w32.h \
683 $(EMACS_ROOT)\src\m\intel386.h \
684 $(EMACS_ROOT)\src\config.h \
685 $(SRC)\buffer.h \
686 $(SRC)\indent.h \
687 $(SRC)\frame.h \
688 $(SRC)\window.h \
689 $(SRC)\termchar.h \
690 $(SRC)\termopts.h \
691 $(SRC)\disptab.h \
692 $(SRC)\dispextern.h \
693 $(SRC)\w32gui.h \
694 $(SRC)\intervals.h \
695 $(SRC)\region-cache.h \
696 $(SRC)\composite.h
697
698$(BLD)\insdel.obj : \
699 $(SRC)\insdel.c \
700 $(EMACS_ROOT)\src\s\ms-w32.h \
701 $(EMACS_ROOT)\src\m\intel386.h \
702 $(EMACS_ROOT)\src\config.h \
703 $(SRC)\dispextern.h \
704 $(SRC)\w32gui.h \
705 $(SRC)\intervals.h \
706 $(SRC)\composite.h \
707 $(SRC)\buffer.h \
708 $(SRC)\window.h \
709 $(SRC)\blockinput.h
710
711$(BLD)\intervals.obj : \
712 $(SRC)\intervals.c \
713 $(EMACS_ROOT)\src\s\ms-w32.h \
714 $(EMACS_ROOT)\src\m\intel386.h \
715 $(EMACS_ROOT)\src\config.h \
716 $(SRC)\dispextern.h \
717 $(SRC)\w32gui.h \
718 $(SRC)\intervals.h \
719 $(SRC)\composite.h \
720 $(SRC)\keyboard.h \
721 $(SRC)\buffer.h \
722 $(SRC)\puresize.h
723
724$(BLD)\keyboard.obj : \
725 $(SRC)\keyboard.c \
726 $(EMACS_ROOT)\src\s\ms-w32.h \
727 $(EMACS_ROOT)\src\m\intel386.h \
728 $(EMACS_ROOT)\src\config.h \
729 $(SRC)\termchar.h \
730 $(SRC)\termopts.h \
731 $(SRC)\termhooks.h \
732 $(SRC)\macros.h \
733 $(SRC)\frame.h \
734 $(SRC)\window.h \
735 $(SRC)\commands.h \
736 $(SRC)\buffer.h \
737 $(SRC)\disptab.h \
738 $(SRC)\keyboard.h \
739 $(SRC)\dispextern.h \
740 $(SRC)\intervals.h \
741 $(SRC)\composite.h \
742 $(SRC)\blockinput.h \
743 $(SRC)\msdos.h \
744 $(SRC)\syssignal.h \
745 $(EMACS_ROOT)\nt\inc\sys\ioctl.h \
746 $(EMACS_ROOT)\nt\inc\sys\file.h \
747 $(SRC)\systty.h \
748 $(SRC)\w32term.h \
749 $(SRC)\w32gui.h \
750 $(SRC)\xterm.h \
751 $(SRC)\systime.h \
752 $(SRC)\atimer.h
753
754$(BLD)\keymap.obj : \
755 $(SRC)\keymap.c \
756 $(EMACS_ROOT)\src\s\ms-w32.h \
757 $(EMACS_ROOT)\src\m\intel386.h \
758 $(EMACS_ROOT)\src\config.h \
759 $(SRC)\commands.h \
760 $(SRC)\buffer.h \
761 $(SRC)\keyboard.h \
762 $(SRC)\termhooks.h \
763 $(SRC)\blockinput.h
764
765$(BLD)\lastfile.obj : \
766 $(SRC)\lastfile.c \
767 $(EMACS_ROOT)\src\s\ms-w32.h \
768 $(EMACS_ROOT)\src\m\intel386.h \
769 $(EMACS_ROOT)\src\config.h
770
771$(BLD)\lread.obj : \
772 $(SRC)\lread.c \
773 $(EMACS_ROOT)\src\s\ms-w32.h \
774 $(EMACS_ROOT)\src\m\intel386.h \
775 $(EMACS_ROOT)\src\config.h \
776 $(EMACS_ROOT)\nt\inc\sys\file.h \
777 $(SRC)\buffer.h \
778 $(EMACS_ROOT)\src\epaths.h \
779 $(SRC)\commands.h \
780 $(SRC)\keyboard.h \
781 $(SRC)\termhooks.h \
782 $(SRC)\msdos.h
783
784$(BLD)\macros.obj : \
785 $(SRC)\macros.c \
786 $(EMACS_ROOT)\src\s\ms-w32.h \
787 $(EMACS_ROOT)\src\m\intel386.h \
788 $(EMACS_ROOT)\src\config.h \
789 $(SRC)\macros.h \
790 $(SRC)\commands.h \
791 $(SRC)\buffer.h \
792 $(SRC)\window.h
793
794$(BLD)\marker.obj : \
795 $(SRC)\marker.c \
796 $(EMACS_ROOT)\src\s\ms-w32.h \
797 $(EMACS_ROOT)\src\m\intel386.h \
798 $(EMACS_ROOT)\src\config.h \
799 $(SRC)\buffer.h
800
801$(BLD)\md5.obj : \
802 $(SRC)\md5.c \
803 $(SRC)\md5.h
804
805$(BLD)\minibuf.obj : \
806 $(SRC)\minibuf.c \
807 $(EMACS_ROOT)\src\s\ms-w32.h \
808 $(EMACS_ROOT)\src\m\intel386.h \
809 $(EMACS_ROOT)\src\config.h \
810 $(SRC)\commands.h \
811 $(SRC)\buffer.h \
812 $(SRC)\dispextern.h \
813 $(SRC)\w32gui.h \
814 $(SRC)\frame.h \
815 $(SRC)\window.h \
816 $(SRC)\syntax.h
817
818$(BLD)\w32.obj : \
819 $(SRC)\w32.c \
820 $(SRC)\w32.h \
821 $(SRC)\s\ms-w32.h \
822 $(SRC)\m\intel386.h \
823 $(SRC)\config.h \
824 $(EMACS_ROOT)\nt\inc\pwd.h \
825 $(SRC)\w32heap.h
826
827$(BLD)\w32heap.obj : \
828 $(SRC)\w32heap.c \
829 $(SRC)\w32heap.h \
830 $(SRC)\s\ms-w32.h \
831 $(SRC)\m\intel386.h \
832 $(SRC)\config.h
833
834$(BLD)\w32inevt.obj : \
835 $(SRC)\w32inevt.c \
836 $(SRC)\s\ms-w32.h \
837 $(SRC)\m\intel386.h \
838 $(SRC)\config.h \
839 $(SRC)\frame.h \
840 $(SRC)\blockinput.h \
841 $(SRC)\termhooks.h \
842 $(SRC)\w32heap.h \
843 $(SRC)\w32term.h \
844 $(SRC)\w32gui.h
845
846$(BLD)\w32proc.obj : \
847 $(SRC)\w32proc.c \
848 $(SRC)\s\ms-w32.h \
849 $(SRC)\m\intel386.h \
850 $(SRC)\config.h \
851 $(SRC)\w32.h \
852 $(SRC)\w32heap.h \
853 $(SRC)\systime.h
854
855$(BLD)\w32console.obj : \
856 $(SRC)\w32console.c \
857 $(SRC)\s\ms-w32.h \
858 $(SRC)\m\intel386.h \
859 $(SRC)\config.h \
860 $(SRC)\frame.h \
861 $(SRC)\disptab.h \
862 $(SRC)\termhooks.h \
863 $(SRC)\w32inevt.h
864
865$(BLD)\prefix-args.obj : \
866 $(SRC)\prefix-args.c
867
868$(BLD)\print.obj : \
869 $(SRC)\print.c \
870 $(EMACS_ROOT)\src\s\ms-w32.h \
871 $(EMACS_ROOT)\src\m\intel386.h \
872 $(EMACS_ROOT)\src\config.h \
873 $(SRC)\buffer.h \
874 $(SRC)\frame.h \
875 $(SRC)\window.h \
876 $(SRC)\process.h \
877 $(SRC)\termchar.h \
878 $(SRC)\dispextern.h \
879 $(SRC)\w32gui.h \
880 $(SRC)\intervals.h \
881 $(SRC)\composite.h
882
883$(BLD)\process.obj : \
884 $(SRC)\process.c \
885 $(EMACS_ROOT)\src\s\ms-w32.h \
886 $(EMACS_ROOT)\src\m\intel386.h \
887 $(EMACS_ROOT)\src\config.h \
888 $(EMACS_ROOT)\nt\inc\sys\ioctl.h \
889 $(EMACS_ROOT)\nt\inc\sys\file.h \
890 $(SRC)\systty.h \
891 $(SRC)\window.h \
892 $(SRC)\buffer.h \
893 $(SRC)\process.h \
894 $(SRC)\termhooks.h \
895 $(SRC)\commands.h \
896 $(SRC)\frame.h \
897 $(SRC)\syssignal.h \
898 $(SRC)\syswait.h \
899 $(SRC)\systime.h \
900 $(SRC)\termopts.h \
901 $(SRC)\composite.h \
902 $(SRC)\atimer.h
903
904$(BLD)\ralloc.obj : \
905 $(SRC)\ralloc.c \
906 $(EMACS_ROOT)\src\s\ms-w32.h \
907 $(EMACS_ROOT)\src\m\intel386.h \
908 $(EMACS_ROOT)\src\config.h \
909 $(SRC)\s\ms-w32.h \
910 $(SRC)\m\intel386.h \
911 $(SRC)\config.h \
912 $(EMACS_ROOT)\nt\inc\sys\param.h \
913 $(SRC)\getpagesize.h
914
915$(BLD)\regex.obj : \
916 $(SRC)\regex.c \
917 $(EMACS_ROOT)\src\s\ms-w32.h \
918 $(EMACS_ROOT)\src\m\intel386.h \
919 $(EMACS_ROOT)\src\config.h \
920 $(SRC)\s\ms-w32.h \
921 $(SRC)\m\intel386.h \
922 $(SRC)\config.h \
923 $(SRC)\buffer.h \
924 $(SRC)\syntax.h \
925 $(SRC)\regex.h
926
927$(BLD)\region-cache.obj : \
928 $(SRC)\region-cache.c \
929 $(EMACS_ROOT)\src\s\ms-w32.h \
930 $(EMACS_ROOT)\src\m\intel386.h \
931 $(EMACS_ROOT)\src\config.h \
932 $(SRC)\buffer.h \
933 $(SRC)\region-cache.h
934
935$(BLD)\scroll.obj : \
936 $(SRC)\scroll.c \
937 $(EMACS_ROOT)\src\s\ms-w32.h \
938 $(EMACS_ROOT)\src\m\intel386.h \
939 $(EMACS_ROOT)\src\config.h \
940 $(SRC)\termchar.h \
941 $(SRC)\dispextern.h \
942 $(SRC)\w32gui.h \
943 $(SRC)\frame.h
944
945$(BLD)\search.obj : \
946 $(SRC)\search.c \
947 $(EMACS_ROOT)\src\s\ms-w32.h \
948 $(EMACS_ROOT)\src\m\intel386.h \
949 $(EMACS_ROOT)\src\config.h \
950 $(SRC)\syntax.h \
951 $(SRC)\buffer.h \
952 $(SRC)\commands.h \
953 $(SRC)\blockinput.h \
954 $(SRC)\regex.h \
955 $(SRC)\region-cache.h \
956 $(SRC)\composite.h
957
958$(BLD)\strftime.obj : \
959 $(SRC)\strftime.c \
960 $(EMACS_ROOT)\src\s\ms-w32.h \
961 $(EMACS_ROOT)\src\m\intel386.h \
962 $(EMACS_ROOT)\src\config.h
963
964$(BLD)\syntax.obj : \
965 $(SRC)\syntax.c \
966 $(EMACS_ROOT)\src\s\ms-w32.h \
967 $(EMACS_ROOT)\src\m\intel386.h \
968 $(EMACS_ROOT)\src\config.h \
969 $(SRC)\commands.h \
970 $(SRC)\buffer.h \
971 $(SRC)\syntax.h \
972 $(SRC)\composite.h
973
974$(BLD)\sysdep.obj : \
975 $(SRC)\sysdep.c \
976 $(EMACS_ROOT)\src\s\ms-w32.h \
977 $(EMACS_ROOT)\src\m\intel386.h \
978 $(EMACS_ROOT)\src\config.h \
979 $(SRC)\blockinput.h \
980 $(SRC)\dosfns.h \
981 $(SRC)\msdos.h \
982 $(EMACS_ROOT)\nt\inc\sys\param.h \
983 $(EMACS_ROOT)\nt\inc\sys\file.h \
984 $(EMACS_ROOT)\nt\inc\sys\ioctl.h \
985 $(EMACS_ROOT)\nt\inc\sys\file.h \
986 $(SRC)\systty.h \
987 $(SRC)\syswait.h \
988 $(SRC)\frame.h \
989 $(SRC)\window.h \
990 $(SRC)\termhooks.h \
991 $(SRC)\termchar.h \
992 $(SRC)\termopts.h \
993 $(SRC)\dispextern.h \
994 $(SRC)\w32gui.h \
995 $(SRC)\process.h \
996 $(SRC)\ndir.h \
997 $(SRC)\syssignal.h \
998 $(SRC)\systime.h \
999 $(SRC)\uaf.h \
1000 $(EMACS_ROOT)\src\acldef.h \
1001 $(EMACS_ROOT)\src\chpdef.h
1002
1003$(BLD)\term.obj : \
1004 $(SRC)\term.c \
1005 $(EMACS_ROOT)\src\s\ms-w32.h \
1006 $(EMACS_ROOT)\src\m\intel386.h \
1007 $(EMACS_ROOT)\src\config.h \
1008 $(SRC)\termchar.h \
1009 $(SRC)\termopts.h \
1010 $(SRC)\cm.h \
1011 $(SRC)\frame.h \
1012 $(SRC)\disptab.h \
1013 $(SRC)/dispextern.h \
1014 $(SRC)\termhooks.h \
1015 $(SRC)\keyboard.h
1016
1017$(BLD)\termcap.obj : \
1018 $(SRC)\termcap.c \
1019 $(EMACS_ROOT)\src\s\ms-w32.h \
1020 $(EMACS_ROOT)\src\m\intel386.h \
1021 $(EMACS_ROOT)\src\config.h \
1022 $(EMACS_ROOT)\nt\inc\sys\file.h
1023
1024$(BLD)\terminfo.obj : \
1025 $(SRC)\terminfo.c
1026
1027$(BLD)\textprop.obj : \
1028 $(SRC)\textprop.c \
1029 $(EMACS_ROOT)\src\s\ms-w32.h \
1030 $(EMACS_ROOT)\src\m\intel386.h \
1031 $(EMACS_ROOT)\src\config.h \
1032 $(SRC)\dispextern.h \
1033 $(SRC)\w32gui.h \
1034 $(SRC)\intervals.h \
1035 $(SRC)\composite.h \
1036 $(SRC)\buffer.h \
1037 $(SRC)\window.h
1038
1039$(BLD)\tparam.obj : \
1040 $(SRC)\tparam.c \
1041 $(EMACS_ROOT)\src\s\ms-w32.h \
1042 $(EMACS_ROOT)\src\m\intel386.h \
1043 $(EMACS_ROOT)\src\config.h
1044
1045$(BLD)\undo.obj : \
1046 $(SRC)\undo.c \
1047 $(EMACS_ROOT)\src\s\ms-w32.h \
1048 $(EMACS_ROOT)\src\m\intel386.h \
1049 $(EMACS_ROOT)\src\config.h \
1050 $(SRC)\buffer.h \
1051 $(SRC)\commands.h
1052
1053$(BLD)\unexw32.obj : \
1054 $(SRC)\unexw32.c \
1055 $(EMACS_ROOT)\src\s\ms-w32.h \
1056 $(EMACS_ROOT)\src\m\intel386.h \
1057 $(EMACS_ROOT)\src\config.h \
1058 $(SRC)\w32heap.h
1059
1060$(BLD)\vm-limit.obj : \
1061 $(SRC)\vm-limit.c \
1062 $(EMACS_ROOT)\src\s\ms-w32.h \
1063 $(EMACS_ROOT)\src\m\intel386.h \
1064 $(EMACS_ROOT)\src\config.h \
1065 $(SRC)\mem-limits.h
1066
1067$(BLD)\widget.obj : \
1068 $(SRC)\widget.c \
1069 $(EMACS_ROOT)\src\s\ms-w32.h \
1070 $(EMACS_ROOT)\src\m\intel386.h \
1071 $(EMACS_ROOT)\src\config.h \
1072 $(SRC)\xterm.h \
1073 $(SRC)\frame.h \
1074 $(SRC)\dispextern.h \
1075 $(SRC)\w32gui.h \
1076 $(SRC)\widget.h \
1077 $(SRC)\widgetprv.h
1078
1079$(BLD)\window.obj : \
1080 $(SRC)\window.c \
1081 $(EMACS_ROOT)\src\s\ms-w32.h \
1082 $(EMACS_ROOT)\src\m\intel386.h \
1083 $(EMACS_ROOT)\src\config.h \
1084 $(SRC)\buffer.h \
1085 $(SRC)\frame.h \
1086 $(SRC)\window.h \
1087 $(SRC)\commands.h \
1088 $(SRC)\indent.h \
1089 $(SRC)\termchar.h \
1090 $(SRC)\disptab.h \
1091 $(SRC)\keyboard.h \
1092 $(SRC)\composite.h
1093
1094$(BLD)\xdisp.obj : \
1095 $(SRC)\xdisp.c \
1096 $(EMACS_ROOT)\src\s\ms-w32.h \
1097 $(EMACS_ROOT)\src\m\intel386.h \
1098 $(EMACS_ROOT)\src\config.h \
1099 $(SRC)\frame.h \
1100 $(SRC)\window.h \
1101 $(SRC)\termchar.h \
1102 $(SRC)\buffer.h \
1103 $(SRC)\indent.h \
1104 $(SRC)\commands.h \
1105 $(SRC)\macros.h \
1106 $(SRC)\disptab.h \
1107 $(SRC)\termhooks.h \
1108 $(SRC)\dispextern.h \
1109 $(SRC)\w32gui.h \
1110 $(SRC)\intervals.h \
1111 $(SRC)\composite.h
1112
1113$(BLD)\xfaces.obj: \
1114 $(EMACS_ROOT)\src\s\ms-w32.h \
1115 $(EMACS_ROOT)\src\m\intel386.h \
1116 $(EMACS_ROOT)\src\config.h \
1117 $(SRC)\xfaces.c \
1118 $(SRC)\charset.h \
1119 $(SRC)\fontset.h \
1120 $(SRC)\w32term.h \
1121 $(SRC)\w32gui.h \
1122 $(SRC)\buffer.h \
1123 $(SRC)\dispextern.h \
1124 $(SRC)\frame.h \
1125 $(SRC)\blockinput.h \
1126 $(SRC)\window.h \
1127 $(SRC)\intervals.h \
1128 $(SRC)\composite.h
1129
1130$(BLD)\w32fns.obj: \
1131 $(EMACS_ROOT)\src\s\ms-w32.h \
1132 $(EMACS_ROOT)\src\m\intel386.h \
1133 $(EMACS_ROOT)\src\config.h \
1134 $(SRC)\w32fns.c \
1135 $(SRC)\w32term.h \
1136 $(SRC)\w32gui.h \
1137 $(SRC)\frame.h \
1138 $(SRC)\window.h \
1139 $(SRC)\buffer.h \
1140 $(SRC)\charset.h \
1141 $(SRC)\coding.h \
1142 $(SRC)\dispextern.h \
1143 $(SRC)\keyboard.h \
1144 $(SRC)\blockinput.h \
1145 $(SRC)\epaths.h \
1146 $(SRC)\w32heap.h \
1147 $(SRC)\termhooks.h
1148
1149$(BLD)\w32menu.obj: \
1150 $(EMACS_ROOT)\src\s\ms-w32.h \
1151 $(EMACS_ROOT)\src\m\intel386.h \
1152 $(EMACS_ROOT)\src\config.h \
1153 $(SRC)\w32menu.c \
1154 $(SRC)\termhooks.h \
1155 $(SRC)\frame.h \
1156 $(SRC)\window.h \
1157 $(SRC)\keyboard.h \
1158 $(SRC)\blockinput.h \
1159 $(SRC)\buffer.h \
1160 $(SRC)\charset.h \
1161 $(SRC)\coding.h
1162
1163$(BLD)\w32term.obj: \
1164 $(EMACS_ROOT)\src\s\ms-w32.h \
1165 $(EMACS_ROOT)\src\m\intel386.h \
1166 $(EMACS_ROOT)\src\config.h \
1167 $(SRC)\w32term.c \
1168 $(SRC)\blockinput.h \
1169 $(SRC)\w32heap.h \
1170 $(SRC)\w32term.h \
1171 $(SRC)\w32gui.h \
1172 $(SRC)\systty.h \
1173 $(SRC)\systime.h \
1174 $(SRC)\frame.h \
1175 $(SRC)\dispextern.h \
1176 $(SRC)\termhooks.h \
1177 $(SRC)\termopts.h \
1178 $(SRC)\termchar.h \
1179 $(SRC)\gnu.h \
1180 $(SRC)\disptab.h \
1181 $(SRC)\buffer.h \
1182 $(SRC)\window.h \
1183 $(SRC)\keyboard.h \
1184 $(SRC)\intervals.h \
1185 $(SRC)\composite.h \
1186 $(SRC)\atimer.h
1187
1188$(BLD)\w32select.obj: \
1189 $(EMACS_ROOT)\src\s\ms-w32.h \
1190 $(EMACS_ROOT)\src\m\intel386.h \
1191 $(EMACS_ROOT)\src\config.h \
1192 $(SRC)\w32select.c \
1193 $(SRC)\w32term.h \
1194 $(SRC)\w32gui.h \
1195 $(SRC)\dispextern.h \
1196 $(SRC)\frame.h \
1197 $(SRC)\blockinput.h
1198
1199$(BLD)\w32reg.obj: \
1200 $(EMACS_ROOT)\src\s\ms-w32.h \
1201 $(EMACS_ROOT)\src\m\intel386.h \
1202 $(EMACS_ROOT)\src\config.h \
1203 $(SRC)\w32reg.c \
1204 $(SRC)\w32term.h \
1205 $(SRC)\w32gui.h \
1206 $(SRC)\blockinput.h
1207
1208$(BLD)\w32xfns.obj: \
1209 $(EMACS_ROOT)\src\s\ms-w32.h \
1210 $(EMACS_ROOT)\src\m\intel386.h \
1211 $(EMACS_ROOT)\src\config.h \
1212 $(SRC)\w32xfns.c \
1213
1214$(BLD)\w32bdf.obj: \
1215 $(EMACS_ROOT)\src/s\ms-w32.h \
1216 $(EMACS_ROOT)\src/m\intel386.h \
1217 $(EMACS_ROOT)\src/config.h \
1218 $(SRC)\w32bdf.c \
1219 $(SRC)\charset.h \
1220 $(SRC)\frame.h \
1221 $(SRC)\dispextern.h \
1222 $(SRC)\fontset.h \
1223 $(SRC)\blockinput.h \
1224 $(SRC)\w32gui.h \
1225 $(SRC)\w32term.h \
1226 $(SRC)\w32gui.h \
1227 $(SRC)\w32bdf.h \
1228 $(SRC)\w32.h \
1229 $(SRC)\frame.h \
1230 $(SRC)\blockinput.h
1231
1232# arch-tag: ee9a97ba-19b7-4b50-a127-aaf4efe494dc
diff --git a/src/msdos.c b/src/msdos.c
index b30e51bbb36..6c534d6d2d9 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -40,6 +40,7 @@ Boston, MA 02111-1307, USA. */
40#include <unistd.h> /* for chdir, dup, dup2, etc. */ 40#include <unistd.h> /* for chdir, dup, dup2, etc. */
41#include <dir.h> /* for getdisk */ 41#include <dir.h> /* for getdisk */
42#if __DJGPP__ >= 2 42#if __DJGPP__ >= 2
43#pragma pack(0) /* dir.h does a pack(4), which isn't GCC's default */
43#include <fcntl.h> 44#include <fcntl.h>
44#include <io.h> /* for setmode */ 45#include <io.h> /* for setmode */
45#include <dpmi.h> /* for __dpmi_xxx stuff */ 46#include <dpmi.h> /* for __dpmi_xxx stuff */
diff --git a/src/syntax.h b/src/syntax.h
index b275ded5715..f86ab8fc265 100644
--- a/src/syntax.h
+++ b/src/syntax.h
@@ -58,7 +58,7 @@ enum syntaxcode
58/* Set the syntax entry VAL for char C in table TABLE. */ 58/* Set the syntax entry VAL for char C in table TABLE. */
59 59
60#define SET_RAW_SYNTAX_ENTRY(table, c, val) \ 60#define SET_RAW_SYNTAX_ENTRY(table, c, val) \
61 ((c) < CHAR_TABLE_SINGLE_BYTE_SLOTS \ 61 ((((c) & 0xFF) == (c)) \
62 ? (XCHAR_TABLE (table)->contents[(unsigned char) (c)] = (val)) \ 62 ? (XCHAR_TABLE (table)->contents[(unsigned char) (c)] = (val)) \
63 : Faset ((table), make_number (c), (val))) 63 : Faset ((table), make_number (c), (val)))
64 64
@@ -106,7 +106,7 @@ extern Lisp_Object syntax_parent_lookup P_ ((Lisp_Object, int));
106#endif 106#endif
107 107
108#define SYNTAX_ENTRY_INT(c) \ 108#define SYNTAX_ENTRY_INT(c) \
109 ((c) < CHAR_TABLE_SINGLE_BYTE_SLOTS \ 109 ((((c) & 0xFF) == (c)) \
110 ? SYNTAX_ENTRY_FOLLOW_PARENT (CURRENT_SYNTAX_TABLE, \ 110 ? SYNTAX_ENTRY_FOLLOW_PARENT (CURRENT_SYNTAX_TABLE, \
111 (unsigned char) (c)) \ 111 (unsigned char) (c)) \
112 : Faref (CURRENT_SYNTAX_TABLE, \ 112 : Faref (CURRENT_SYNTAX_TABLE, \
diff --git a/src/syssignal.h b/src/syssignal.h
index 7c3690903df..8d58325c02c 100644
--- a/src/syssignal.h
+++ b/src/syssignal.h
@@ -18,6 +18,8 @@ along with GNU Emacs; see the file COPYING. If not, write to
18the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19Boston, MA 02111-1307, USA. */ 19Boston, MA 02111-1307, USA. */
20 20
21extern void init_signals P_ ((void));
22
21#ifdef POSIX_SIGNALS 23#ifdef POSIX_SIGNALS
22 24
23/* Don't #include <signal.h>. That header should always be #included 25/* Don't #include <signal.h>. That header should always be #included
@@ -32,7 +34,6 @@ Boston, MA 02111-1307, USA. */
32#define SIGEMPTYMASK (empty_mask) 34#define SIGEMPTYMASK (empty_mask)
33#define SIGFULLMASK (full_mask) 35#define SIGFULLMASK (full_mask)
34extern sigset_t empty_mask, full_mask; 36extern sigset_t empty_mask, full_mask;
35extern void init_signals P_ ((void));
36 37
37/* POSIX pretty much destroys any possibility of writing sigmask as a 38/* POSIX pretty much destroys any possibility of writing sigmask as a
38 macro in standard C. We always define our own version because the 39 macro in standard C. We always define our own version because the
diff --git a/src/w32term.c b/src/w32term.c
index 24eabfba567..3a2ef2e1c19 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -4177,8 +4177,7 @@ w32_read_socket (sd, expected, hold_quit)
4177 /* So people can tell when we have read the available input. */ 4177 /* So people can tell when we have read the available input. */
4178 input_signal_count++; 4178 input_signal_count++;
4179 4179
4180 /* TODO: tool-bars, ghostscript integration, mouse 4180 /* TODO: ghostscript integration. */
4181 cursors. */
4182 while (get_next_msg (&msg, FALSE)) 4181 while (get_next_msg (&msg, FALSE))
4183 { 4182 {
4184 struct input_event inev; 4183 struct input_event inev;
@@ -4934,28 +4933,38 @@ x_draw_hollow_cursor (w, row)
4934 struct frame *f = XFRAME (WINDOW_FRAME (w)); 4933 struct frame *f = XFRAME (WINDOW_FRAME (w));
4935 HDC hdc; 4934 HDC hdc;
4936 RECT rect; 4935 RECT rect;
4937 int wd; 4936 int wd, h;
4938 struct glyph *cursor_glyph; 4937 struct glyph *cursor_glyph;
4939 HBRUSH hb = CreateSolidBrush (f->output_data.w32->cursor_pixel); 4938 HBRUSH hb = CreateSolidBrush (f->output_data.w32->cursor_pixel);
4940 4939
4940 /* Get the glyph the cursor is on. If we can't tell because
4941 the current matrix is invalid or such, give up. */
4942 cursor_glyph = get_phys_cursor_glyph (w);
4943 if (cursor_glyph == NULL)
4944 return;
4945
4941 /* Compute frame-relative coordinates from window-relative 4946 /* Compute frame-relative coordinates from window-relative
4942 coordinates. */ 4947 coordinates. */
4943 rect.left = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x); 4948 rect.left = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x);
4944 rect.top = (WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y) 4949 rect.top = (WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y)
4945 + row->ascent - w->phys_cursor_ascent); 4950 + row->ascent - w->phys_cursor_ascent);
4946 rect.bottom = rect.top + row->height;
4947 4951
4948 /* Get the glyph the cursor is on. If we can't tell because 4952 /* Compute the proper height and ascent of the rectangle, based
4949 the current matrix is invalid or such, give up. */ 4953 on the actual glyph. Using the full height of the row looks
4950 cursor_glyph = get_phys_cursor_glyph (w); 4954 bad when there are tall images on that row. */
4951 if (cursor_glyph == NULL) 4955 h = max (min (FRAME_LINE_HEIGHT (f), row->height),
4952 return; 4956 cursor_glyph->ascent + cursor_glyph->descent);
4957 if (h < row->height)
4958 rect.top += row->ascent /* - w->phys_cursor_ascent */ + cursor_glyph->descent - h;
4959 h--;
4960
4961 rect.bottom = rect.top + h;
4953 4962
4954 /* Compute the width of the rectangle to draw. If on a stretch 4963 /* Compute the width of the rectangle to draw. If on a stretch
4955 glyph, and `x-stretch-block-cursor' is nil, don't draw a 4964 glyph, and `x-stretch-block-cursor' is nil, don't draw a
4956 rectangle as wide as the glyph, but use a canonical character 4965 rectangle as wide as the glyph, but use a canonical character
4957 width instead. */ 4966 width instead. */
4958 wd = cursor_glyph->pixel_width; 4967 wd = cursor_glyph->pixel_width; /* TODO: Why off by one compared with X? */
4959 if (cursor_glyph->type == STRETCH_GLYPH 4968 if (cursor_glyph->type == STRETCH_GLYPH
4960 && !x_stretch_cursor_p) 4969 && !x_stretch_cursor_p)
4961 wd = min (FRAME_COLUMN_WIDTH (f), wd); 4970 wd = min (FRAME_COLUMN_WIDTH (f), wd);
diff --git a/src/window.c b/src/window.c
index 221d8bbbaf2..8a2c16598ec 100644
--- a/src/window.c
+++ b/src/window.c
@@ -1,6 +1,6 @@
1/* Window creation, deletion and examination for GNU Emacs. 1/* Window creation, deletion and examination for GNU Emacs.
2 Does not include redisplay. 2 Does not include redisplay.
3 Copyright (C) 1985,86,87,93,94,95,96,97,1998,2000, 2001, 2002, 2003 3 Copyright (C) 1985,86,87, 1993,94,95,96,97,98, 2000,01,02,03,04
4 Free Software Foundation, Inc. 4 Free Software Foundation, Inc.
5 5
6This file is part of GNU Emacs. 6This file is part of GNU Emacs.
@@ -3025,7 +3025,7 @@ set_window_buffer (window, buffer, run_hooks_p, keep_margins_p)
3025DEFUN ("set-window-buffer", Fset_window_buffer, Sset_window_buffer, 2, 3, 0, 3025DEFUN ("set-window-buffer", Fset_window_buffer, Sset_window_buffer, 2, 3, 0,
3026 doc: /* Make WINDOW display BUFFER as its contents. 3026 doc: /* Make WINDOW display BUFFER as its contents.
3027BUFFER can be a buffer or buffer name. 3027BUFFER can be a buffer or buffer name.
3028Optional third arg KEEP_MARGINS non-nil means that WINDOW's current 3028Optional third arg KEEP-MARGINS non-nil means that WINDOW's current
3029display margins, fringe widths, and scroll bar settings are maintained; 3029display margins, fringe widths, and scroll bar settings are maintained;
3030the default is to reset these from BUFFER's local settings or the frame 3030the default is to reset these from BUFFER's local settings or the frame
3031defaults. */) 3031defaults. */)
diff --git a/src/xdisp.c b/src/xdisp.c
index f01d3f00b2f..83857e5bb84 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -304,7 +304,7 @@ Lisp_Object Qleft_margin, Qright_margin, Qspace_width, Qraise;
304Lisp_Object Qslice; 304Lisp_Object Qslice;
305Lisp_Object Qcenter; 305Lisp_Object Qcenter;
306Lisp_Object Qmargin, Qpointer; 306Lisp_Object Qmargin, Qpointer;
307Lisp_Object Qline_height; 307Lisp_Object Qline_height, Qtotal;
308extern Lisp_Object Qheight; 308extern Lisp_Object Qheight;
309extern Lisp_Object QCwidth, QCheight, QCascent; 309extern Lisp_Object QCwidth, QCheight, QCascent;
310extern Lisp_Object Qscroll_bar; 310extern Lisp_Object Qscroll_bar;
@@ -18522,11 +18522,11 @@ produce_stretch_glyph (it)
18522 Returns height in pixels, or nil. */ 18522 Returns height in pixels, or nil. */
18523 18523
18524static Lisp_Object 18524static Lisp_Object
18525calc_line_height_property (it, prop, font, boff) 18525calc_line_height_property (it, prop, font, boff, total)
18526 struct it *it; 18526 struct it *it;
18527 Lisp_Object prop; 18527 Lisp_Object prop;
18528 XFontStruct *font; 18528 XFontStruct *font;
18529 int boff; 18529 int boff, *total;
18530{ 18530{
18531 Lisp_Object val; 18531 Lisp_Object val;
18532 Lisp_Object face_name = Qnil; 18532 Lisp_Object face_name = Qnil;
@@ -18538,6 +18538,12 @@ calc_line_height_property (it, prop, font, boff)
18538 if (NILP (val)) 18538 if (NILP (val))
18539 return val; 18539 return val;
18540 18540
18541 if (total && CONSP (val) && EQ (XCAR (val), Qtotal))
18542 {
18543 *total = 1;
18544 val = XCDR (val);
18545 }
18546
18541 if (INTEGERP (val)) 18547 if (INTEGERP (val))
18542 return val; 18548 return val;
18543 18549
@@ -18571,12 +18577,12 @@ calc_line_height_property (it, prop, font, boff)
18571 18577
18572 face_id = lookup_named_face (it->f, face_name, ' '); 18578 face_id = lookup_named_face (it->f, face_name, ' ');
18573 if (face_id < 0) 18579 if (face_id < 0)
18574 return -1; 18580 return make_number (-1);
18575 18581
18576 face = FACE_FROM_ID (it->f, face_id); 18582 face = FACE_FROM_ID (it->f, face_id);
18577 font = face->font; 18583 font = face->font;
18578 if (font == NULL) 18584 if (font == NULL)
18579 return -1; 18585 return make_number (-1);
18580 18586
18581 font_info = FONT_INFO_FROM_ID (it->f, face->font_info_id); 18587 font_info = FONT_INFO_FROM_ID (it->f, face->font_info_id);
18582 boff = font_info->baseline_offset; 18588 boff = font_info->baseline_offset;
@@ -18806,13 +18812,13 @@ x_produce_glyphs (it)
18806 But if previous part of the line set a height, don't 18812 But if previous part of the line set a height, don't
18807 increase that height */ 18813 increase that height */
18808 18814
18809 Lisp_Object height, spacing; 18815 Lisp_Object height;
18810 18816
18811 it->override_ascent = -1; 18817 it->override_ascent = -1;
18812 it->pixel_width = 0; 18818 it->pixel_width = 0;
18813 it->nglyphs = 0; 18819 it->nglyphs = 0;
18814 18820
18815 height = calc_line_height_property(it, Qline_height, font, boff); 18821 height = calc_line_height_property(it, Qline_height, font, boff, 0);
18816 18822
18817 if (it->override_ascent >= 0) 18823 if (it->override_ascent >= 0)
18818 { 18824 {
@@ -18845,6 +18851,9 @@ x_produce_glyphs (it)
18845 } 18851 }
18846 else 18852 else
18847 { 18853 {
18854 Lisp_Object spacing;
18855 int total = 0;
18856
18848 it->phys_ascent = it->ascent; 18857 it->phys_ascent = it->ascent;
18849 it->phys_descent = it->descent; 18858 it->phys_descent = it->descent;
18850 18859
@@ -18858,16 +18867,14 @@ x_produce_glyphs (it)
18858 if (!NILP (height) 18867 if (!NILP (height)
18859 && XINT (height) > it->ascent + it->descent) 18868 && XINT (height) > it->ascent + it->descent)
18860 it->ascent = XINT (height) - it->descent; 18869 it->ascent = XINT (height) - it->descent;
18861 }
18862 18870
18863 spacing = calc_line_height_property(it, Qline_spacing, font, boff); 18871 spacing = calc_line_height_property(it, Qline_spacing, font, boff, &total);
18864 if (!NILP (spacing)) 18872 if (INTEGERP (spacing))
18865 { 18873 {
18866 int sp = XINT (spacing); 18874 extra_line_spacing = XINT (spacing);
18867 if (sp < 0) 18875 if (total)
18868 extra_line_spacing = (-sp) - (it->phys_ascent + it->phys_descent); 18876 extra_line_spacing -= (it->phys_ascent + it->phys_descent);
18869 else 18877 }
18870 extra_line_spacing = sp;
18871 } 18878 }
18872 } 18879 }
18873 else if (it->char_to_display == '\t') 18880 else if (it->char_to_display == '\t')
@@ -21894,6 +21901,8 @@ syms_of_xdisp ()
21894 staticpro (&Qcenter); 21901 staticpro (&Qcenter);
21895 Qline_height = intern ("line-height"); 21902 Qline_height = intern ("line-height");
21896 staticpro (&Qline_height); 21903 staticpro (&Qline_height);
21904 Qtotal = intern ("total");
21905 staticpro (&Qtotal);
21897 QCalign_to = intern (":align-to"); 21906 QCalign_to = intern (":align-to");
21898 staticpro (&QCalign_to); 21907 staticpro (&QCalign_to);
21899 QCrelative_width = intern (":relative-width"); 21908 QCrelative_width = intern (":relative-width");