changeset 83117:46882e012e30

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
author Karoly Lorentey <lorentey@elte.hu>
date Fri, 07 May 2004 14:20:00 +0000
parents 6ae3d2810507 (current diff) 3b27c2f86c7a (diff)
children 7652900ea029
files ChangeLog leim/makefile.nt lib-src/makefile.nt lisp/ChangeLog lisp/makefile.nt lisp/simple.el lisp/term/x-win.el nt/ebuild.bat nt/fast-install.bat nt/install.bat nt/makefile.def nt/makefile.nt src/Makefile.in src/emacs.c src/fileio.c src/indent.c src/makefile.nt src/msdos.c src/syssignal.h src/w32term.c src/window.c src/xdisp.c
diffstat 71 files changed, 2721 insertions(+), 4408 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sat May 01 19:23:22 2004 +0000
+++ b/ChangeLog	Fri May 07 14:20:00 2004 +0000
@@ -1,3 +1,7 @@
+2004-05-04  Dave Love  <fx@gnu.org>
+
+	* configure.in: Don't use `extrasub'.
+
 2004-04-29  Dave Love  <fx@gnu.org>
 
 	* configure.in: Don't forget to quote args to `test'.
--- a/configure.in	Sat May 01 19:23:22 2004 +0000
+++ b/configure.in	Fri May 07 14:20:00 2004 +0000
@@ -170,15 +170,6 @@
    use GNU make.  If you do not have GNU make, then you must
    now do `make distclean' in ${srcdir},
    and then run $0 again.]])
-
-[extrasub='/^VPATH[	 ]*=/c\
-vpath %.c $(srcdir)\
-vpath %.h $(srcdir)\
-vpath %.y $(srcdir)\
-vpath %.l $(srcdir)\
-vpath %.s $(srcdir)\
-vpath %.in $(srcdir)\
-vpath %.texi $(srcdir)']
 fi
 
 #### Given the configuration name, set machfile and opsysfile to the
--- a/etc/ChangeLog	Sat May 01 19:23:22 2004 +0000
+++ b/etc/ChangeLog	Fri May 07 14:20:00 2004 +0000
@@ -1,3 +1,7 @@
+2004-05-06  Dave Love  <fx@gnu.org>
+
+	* emacs.py: New file for python-mode's internal use.
+
 2004-04-22  Stefan Monnier  <monnier@iro.umontreal.ca>
 
 	* TODO: Use outline mode.  Remove compile.el entry (done).
--- a/etc/NEWS	Sat May 01 19:23:22 2004 +0000
+++ b/etc/NEWS	Fri May 07 14:20:00 2004 +0000
@@ -91,8 +91,26 @@
 * Changes in Emacs 21.4
 
 ---
-** The IELM prompt is now, by default, read-only.  This can be
-controlled with the new user option `ielm-prompt-read-only'.
+** The comint prompt can now be made read-only, using the new user
+option `comint-prompt-read-only'.  This is not enabled by default,
+except in IELM buffers.  The read-only status of IELM prompts can be
+controlled with the new user option `ielm-prompt-read-only', which
+overrides `comint-prompt-read-only'.
+
+The new commands `comint-kill-whole-line' and `comint-kill-region'
+support editing comint buffers with read-only prompts.
+
+`comint-kill-whole-line' is like `kill-whole-line', but ignores both
+read-only and field properties.  Hence, it will always kill entire
+lines, including any prompts.
+
+`comint-kill-region' is like `kill-region', except that it ignores
+read-only properties, if it is safe to do so.  This means that if any
+part of a prompt is deleted, then the entire prompt must be deleted
+and that all prompts must stay at the beginning of a line.  If this is
+not the case, then `comint-kill-region' behaves just like
+`kill-region' if read-only are involved: it copies the text to the
+kill-ring, but does not delete it.
 
 ** You can now use next-error (C-x `) and previous-error to advance to
 the next/previous matching line found by M-x occur.
@@ -409,6 +427,8 @@
 'sql-sqlite'.
 
 ** BibTeX mode:
+*** The new command bibtex-entry-update (bound to C-c C-u) updates
+an existing BibTeX entry.
 *** New `bibtex-entry-format' option `required-fields', enabled by default.
 *** bibtex-maintain-sorted-entries can take values `plain',
 `crossref', and `entry-class' which control the sorting scheme used
@@ -783,6 +803,10 @@
 mouse, so that highlighting disappears when you press a key.  You can
 also disable mouse highlighting.
 
+** You can now customize if selecting a region by dragging the mouse
+shall not copy the selected text to the kill-ring by setting the new
+variable mouse-drag-copy-region to nil.
+
 +++
 ** font-lock: in modes like C and Lisp where the fontification assumes that
 an open-paren in column 0 is always outside of any string or comment,
@@ -2016,13 +2040,14 @@
 
 ** New line-height and line-spacing properties for newline characters
 
-A newline may now have line-height and line-spacing text properties that
-control the height of the corresponding display row.
+A newline may now have line-height and line-spacing text or overlay
+properties that control the height of the corresponding display row.
 
 If the line-height property value is 0, the newline does not
 contribute to the height of the display row; instead the height of the
-newline glyph is reduced.  This can be used to tile small images or
-image slices without adding blank areas between the images.
+newline glyph is reduced.  Also, a line-spacing property on this
+newline is ignored.  This can be used to tile small images or image
+slices without adding blank areas between the images.
 
 If the line-height property value is a positive integer, the value
 specifies the minimum line height in pixels.  If necessary, the line
@@ -2041,13 +2066,15 @@
 overrides the default frame line-spacing and any buffer local value of
 the line-spacing variable.
 
-If the value is a negative integer, the absolute value is used as the
-total height of the line, i.e. a varying number of pixels are
-inserted after each line to make each line exactly that many pixels high.
-
 If the line-spacing property may be a float or cons, the line spacing
 is calculated as specified above for the line-height property.
 
+If the line-spacing value is a cons (total . SPACING) where SPACING is
+any of the forms described above, the value of SPACING is used as the
+total height of the line, i.e. a varying number of pixels are inserted
+after each line to make each line exactly that many pixels high.
+
+
 ** The buffer local line-spacing variable may now have a float value,
 which is used as a height relative to the default frame line height.
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/etc/emacs.py	Fri May 07 14:20:00 2004 +0000
@@ -0,0 +1,112 @@
+"""Definitions used by commands sent to inferior Python in python.el."""
+
+# Copyright (C) 2004  Free Software Foundation, Inc.
+# Author: Dave Love <d.love@dl.ac.uk>
+
+# This file is part of GNU Emacs.
+
+# GNU Emacs is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# GNU Emacs is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with GNU Emacs; see the file COPYING.  If not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+import os, sys, traceback, inspect, rlcompleter, __main__
+
+__all__ = ["eexecfile", "args", "complete", "ehelp", "eimport"]
+
+def eexecfile (file):
+    """Execute FILE and then remove it.
+    If we get an exception, print a traceback with the top frame
+    (oursleves) excluded."""
+    try:
+	try: execfile (file, globals (), globals ())
+	except:
+	    (type, value, tb) = sys.exc_info ()
+	    # Lose the stack frame for this location.
+	    tb = tb.tb_next
+	    if tb is None:	# print_exception won't do it
+		print "Traceback (most recent call last):"
+	    traceback.print_exception (type, value, tb)
+    finally:
+	os.remove (file)
+
+def eargs (name):
+    "Get arglist of NAME for Eldoc &c."
+    try:
+	parts = name.split ('.')
+	if len (parts) > 1:
+	    exec 'import ' + parts[0] # might fail
+	func = eval (name)
+	if inspect.isbuiltin (func):
+	    doc = func.__doc__
+	    if doc.find (' ->') != -1:
+		print '_emacs_out', doc.split (' ->')[0]
+	    elif doc.find ('\n') != -1:
+		print '_emacs_out', doc.split ('\n')[0]
+	    return
+	if inspect.ismethod (func):
+	    func = func.im_func
+	if not inspect.isfunction (func):
+	    return
+	(args, varargs, varkw, defaults) = inspect.getargspec (func)
+	# No space between name and arglist for consistency with builtins.
+	print '_emacs_out', \
+	    func.__name__ + inspect.formatargspec (args, varargs, varkw,
+						   defaults)
+    except: pass
+
+def complete (text, namespace = None):
+    """Complete TEXT in NAMESPACE and print a Lisp list of completions.
+    NAMESPACE is currently not used."""
+    if namespace is None: namespace = __main__.__dict__
+    c = rlcompleter.Completer (namespace)
+    try:
+        if '.' in text:
+            matches = c.attr_matches (text)
+        else:
+            matches = c.global_matches (text)
+	print '_emacs_out (',
+        for elt in matches:
+            print '"%s"' % elt,
+        print ')'
+    except:
+        print '_emacs_out ()'
+
+def ehelp (name):
+    """Get help on string NAME.
+    First try to eval name for, e.g. user definitions where we need
+    the object.  Otherwise try the string form."""
+    try: help (eval (name))
+    except: help (name)
+
+def eimport (mod, dir):
+    """Import module MOD with directory DIR at the head of the search path.
+    NB doesn't load from DIR if MOD shadows a system module."""
+    path0 = sys.path[0]
+    sys.path[0] = dir
+    try:
+	try:
+	    if globals().has_key(mod) and inspect.ismodule (eval (mod)):
+		reload(eval (mod))
+	    else:
+		globals ()[mod] = __import__ (mod)
+	except:
+	    (type, value, tb) = sys.exc_info ()
+	    print "Traceback (most recent call last):"
+	    traceback.print_exception (type, value, tb.tb_next)
+    finally:
+	sys.path[0] = path0
+
+print '_emacs_ok'		# ready for input and can call continuation
+
+# arch-tag: d90408f3-90e2-4de4-99c2-6eb9c7b9ca46
--- a/leim/ChangeLog	Sat May 01 19:23:22 2004 +0000
+++ b/leim/ChangeLog	Fri May 07 14:20:00 2004 +0000
@@ -1,3 +1,33 @@
+2004-05-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* quail/latin-ltx.el: Use utf-8 coding.
+	("TeX"): Add de and fr quotes.  From Karl Eichwalder <ke@suse.de>.
+
+2004-05-04  Kenichi Handa  <handa@m17n.org>
+
+	* Makefile.in (TIT-SOURCES): Prepend ${srcdir} to each elemnt.
+	(MISC-SOURCES): Likewise.
+
+2004-05-01  Kenichi Handa  <handa@m17n.org>
+
+	* Makefile.in (OTHERS): Raname from MISC.
+	(MISC): Rename from MISC-DIC.
+	(WORLD): Adjute for the above changes.
+	(TIT-MISC, NON-TIT-MISC): New targets.
+	(all): Don't depend on ${WORLD}.
+	(.NOTPARALLEL, .NO_PARALLEL, ${TIT}, ${MSIC-IDC}): Remove these targets.
+	(TIT-SOURCES, MISC-SOURCES): New macros.
+	(changed.tit, changed.misc): New targets.
+	(leim-list.el): Depend on ${NON-TIT-MISC}, changed.tit, and
+	changed.misc.  Generate quail files from TIT and MISC files if
+	necessary.
+	(clean mostlyclean): Delete ${TIT-MISC} instead of ${TIT} and
+	${MISC-DIC}.
+
+2004-05-03  Jason Rumney  <jasonr@gnu.org>
+
+	* makefile.nt: Remove.
+
 2004-04-23  Juanma Barranquero  <lektu@terra.es>
 
 	* makefile.w32-in: Add "-*- makefile -*-" mode tag.
@@ -9,17 +39,17 @@
 
 2004-02-28  Kenichi Handa  <handa@m17n.org>
 
-	* Makefile.in (all): Depends on ${WORLD} instead of ${TIT} and
+	* Makefile.in (all): Depend on ${WORLD} instead of ${TIT} and
 	${MISC-DIC}.
 	(clean, mostlyclean): Don't delete *.elc distributed with tarball.
 	(maintainer-clean): Delete files that are not in CVS repository.
 
-	* makefile.nt (all): Depends on $(WORLD) instead of $(TIT) and
+	* makefile.nt (all): Depend on $(WORLD) instead of $(TIT) and
 	$(MISC-DIC).
 	(clean, mostlyclean): Don't delete *.elc distributed with tarball.
 	(maintainer-clean): Delete files that are not in CVS repository.
 
-	* makefile.w32-in (all): Depends on $(WORLD) instead of $(TIT) and
+	* makefile.w32-in (all): Depend on $(WORLD) instead of $(TIT) and
 	$(MISC-DIC).
 	(clean, mostlyclean): Don't delete *.elc distributed with tarball.
 	(maintainer-clean): Delete files that are not in CVS repository.
@@ -87,8 +117,7 @@
 
 2003-02-14  Juanma Barranquero  <lektu@terra.es>
 
-	* quail/uni-input.el (utf-8-ccl-encode): Fix use of character
-	constants.
+	* quail/uni-input.el (utf-8-ccl-encode): Fix use of character constants.
 
 2003-02-11  KAWABATA, Taichi  <kawabata@m17n.org>
 
@@ -97,8 +126,8 @@
 	(malayalam-itrans, tamil-itrans): New ITRANS based input methods.
 	(punjabi-inscript, gujarati-inscript, oriya-inscript)
 	(bengali-inscript, assamese-inscript, telugu-inscript)
-	(kannada-inscript, malayalam-inscript, tamil-inscript): New
-	INSCRIPT based input methods.
+	(kannada-inscript, malayalam-inscript, tamil-inscript):
+	New INSCRIPT based input methods.
 
 2003-02-07  Kenichi Handa  <handa@m17n.org>
 
@@ -108,8 +137,7 @@
 
 2003-02-05  David Kastrup  <dak@gnu.org>
 
-	* quail/greek.el: Fix iota accent typos in greek-babel
-	encoding.
+	* quail/greek.el: Fix iota accent typos in greek-babel encoding.
 
 2003-01-05  Dave Love  <fx@gnu.org>
 
@@ -160,12 +188,12 @@
 
 	* quail/cyrillic.el: Doc fixes.
 	("cyrillic-beylorussian"): Commented-out.
-	("cyrillic-translit-bulgarian"): Deleted.
+	("cyrillic-translit-bulgarian"): Delete.
 	("cyrillic-ukrainian"): Fix `q', `Q', `W', `w' bindings.
 	("ukrainian-computer", "belarusian", "bulgarian-bds")
 	("russian-computer"): New.
-	("bulgarian-phonetic"): Renamed from bulgarian-pho.  Add ,A'(B, $,1uV(B, ,LN(B.
-	("russian-typewriter"): Renamed from cyrillic-jcuken.
+	("bulgarian-phonetic"): Rename from bulgarian-pho.  Add ,A'(B, $,1uV(B, ,LN(B.
+	("russian-typewriter"): Rename from cyrillic-jcuken.
 
 2002-06-20  Dave Love  <fx@gnu.org>
 
@@ -199,7 +227,7 @@
 
 2002-04-06  Jaeyoun Chung  <jay@kldp.org>
 
-	* quail/hanja3.el ("kf"): added a few composing rules
+	* quail/hanja3.el ("kf"): Add a few composing rules
 	from "Taik-kyun Lim" <mongmong@milab.yonsei.ac.kr>
 
 	* quail/hangul3.el: buggy alternative second character
@@ -239,8 +267,7 @@
 2002-01-07  Jaeyoun Chung  <jay@kldp.org>
 
 	* quail/hangul.el: Remove key sequence mapping for O[rsfaqtTd].
-	Not used for Korean Hangul Type 2 (request from emacs-kr mailing
-	list).
+	Not used for Korean Hangul Type 2 (request from emacs-kr mailing list).
 
 2002-01-03  Eli Zaretskii  <eliz@is.elta.co.il>
 
@@ -248,8 +275,7 @@
 
 2002-01-01  Dave Love  <fx@gnu.org>
 
-	* quail/indian.el (quail-define-indian-trans-package): Unquote
-	lambda.
+	* quail/indian.el (quail-define-indian-trans-package): Unquote lambda.
 	(quail-define-inscript-package): Avoid mapcar*.
 
 2001-12-20  Dave Love  <fx@gnu.org>
@@ -267,7 +293,7 @@
 	("spanish-keyboard"): Fix language assignment.
 
 	* quail/indian.el: Don't require cl.
-	(quail-indian-flatten-list): Renamed from flatten-list.
+	(quail-indian-flatten-list): Rename from flatten-list.
 
 	* quail/cyrillic.el ("cyrillic-beylorussian")
 	("cyrillic-ukrainian", "cyrillic-translit-bulgarian")
@@ -277,8 +303,7 @@
 	("spanish-alt-postfix", "turkish-latin-3-alt-postfix")
 	("turkish-alt-postfix"): Fix language assignment.
 	("dutch"): Assign to Dutch.  Use chars, not strings.
-	("lithuanian-numeric", "lithuanian-keyboard", "latvian-keyboard"):
-	New.
+	("lithuanian-numeric", "lithuanian-keyboard", "latvian-keyboard"): New.
 
 2001-12-08  Pavel Jan,Am(Bk  <Pavel@Janik.cz>
 
@@ -446,7 +471,7 @@
 
 2001-05-17  Dave Love  <fx@gnu.org>
 
-	* quail/latin-ltx.el ("TeX"): Renamed from "latin-latex2e".
+	* quail/latin-ltx.el ("TeX"): Rename from "latin-latex2e".
 	Language family and indicator changed.  Many new translations.
 
 2001-05-17  Gerd Moellmann  <gerd@gnu.org>
@@ -1393,7 +1418,7 @@
 
 
 ;; Local Variables:
-;; coding: iso-2022-7bit-unix
+;; coding: iso-2022-7bit
 ;; End:
 
     Copyright (C) 1997, 1998, 1999, 2001 Free Software Foundation, Inc.
--- a/leim/Makefile.in	Sat May 01 19:23:22 2004 +0000
+++ b/leim/Makefile.in	Fri May 07 14:20:00 2004 +0000
@@ -159,30 +159,30 @@
 	touch stamp-subdir
 
 TIT-SOURCES= \
-	CXTERM-DIC/4Corner.tit \
-	CXTERM-DIC/ARRAY30.tit \
-	CXTERM-DIC/CCDOSPY.tit \
-	CXTERM-DIC/ECDICT.tit \
-	CXTERM-DIC/ETZY.tit \
-	CXTERM-DIC/PY-b5.tit \
-	CXTERM-DIC/Punct-b5.tit \
-	CXTERM-DIC/Punct.tit \
-	CXTERM-DIC/QJ-b5.tit \
-	CXTERM-DIC/QJ.tit \
-	CXTERM-DIC/SW.tit \
-	CXTERM-DIC/TONEPY.tit \
-	CXTERM-DIC/ZOZY.tit
+	${srcdir}/CXTERM-DIC/4Corner.tit \
+	${srcdir}/CXTERM-DIC/ARRAY30.tit \
+	${srcdir}/CXTERM-DIC/CCDOSPY.tit \
+	${srcdir}/CXTERM-DIC/ECDICT.tit \
+	${srcdir}/CXTERM-DIC/ETZY.tit \
+	${srcdir}/CXTERM-DIC/PY-b5.tit \
+	${srcdir}/CXTERM-DIC/Punct-b5.tit \
+	${srcdir}/CXTERM-DIC/Punct.tit \
+	${srcdir}/CXTERM-DIC/QJ-b5.tit \
+	${srcdir}/CXTERM-DIC/QJ.tit \
+	${srcdir}/CXTERM-DIC/SW.tit \
+	${srcdir}/CXTERM-DIC/TONEPY.tit \
+	${srcdir}/CXTERM-DIC/ZOZY.tit
 
 changed.tit: ${TIT-SOURCES}
 	echo "0" > $@
 
 MISC-SOURCES= \
-	MISC-DIC/CTLau-b5.html \
-	MISC-DIC/CTLau.html \
-	MISC-DIC/cangjie-table.b5 \
-	MISC-DIC/cangjie-table.cns \
-	MISC-DIC/pinyin.map \
-	MISC-DIC/ziranma.cin
+	${srcdir}/MISC-DIC/CTLau-b5.html \
+	${srcdir}/MISC-DIC/CTLau.html \
+	${srcdir}/MISC-DIC/cangjie-table.b5 \
+	${srcdir}/MISC-DIC/cangjie-table.cns \
+	${srcdir}/MISC-DIC/pinyin.map \
+	${srcdir}/MISC-DIC/ziranma.cin
 
 changed.misc: ${MISC-SOURCES}
 	echo "0" > $@
--- a/leim/makefile.nt	Sat May 01 19:23:22 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,208 +0,0 @@
-# Makefile for leim subdirectory in GNU Emacs on the Microsoft W32 API.
-# Copyright (C) 1997 Electrotechnical Laboratory, JAPAN.
-# Licensed to the Free Software Foundation.
-
-# This file is part of GNU Emacs.
-
-# GNU Emacs is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# GNU Emacs is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GNU Emacs; see the file COPYING.  If not, write to the
-# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-
-#
-# Sets up the system dependent macros.
-#
-!include ..\nt\makefile.def
-
-srcdir=.
-
-# Where to install LEIM files.
-INSTALLDIR=$(INSTALL_DIR)\leim
-
-# On Xenix and the IBM RS6000, double-dot gets screwed up.
-dot = .
-
-# Which Emacs to use to convert TIT files to Emacs Lisp files,
-# byte-compile Emacs Lisp files, and generate the file leim-list.el.
-BUILT_EMACS = $(dot)$(dot)\src\$(BLD)\emacs.exe
-
-buildlisppath=$(MAKEDIR:\=/)/$(dot)$(dot)/lisp
-
-# How to run Emacs.
-RUN_EMACS = $(BUILT_EMACS) -batch --no-init-file --no-site-file --multibyte
-
-# Subdirectories to be made if $(srcdir) is different from the current
-# directory.
-SUBDIRS=quail
-
-# Files generated from TIT dictionaries for Chinese GB character set.
-TIT_GB=\
-	quail/CCDOSPY.elc	\
-	quail/Punct.elc		\
-	quail/QJ.elc		\
-	quail/SW.elc		\
-	quail/TONEPY.elc
-
-# Files generated from TIT dictionaries for Chinese BIG5 character set.
-TIT_BIG5=\
-	quail/4Corner.elc	\
-	quail/ARRAY30.elc	\
-	quail/ECDICT.elc	\
-	quail/ETZY.elc		\
-	quail/Punct-b5.elc	\
-	quail/PY-b5.elc		\
-	quail/QJ-b5.elc		\
-	quail/ZOZY.elc
-
-CHINESE_TIT=$(TIT_GB) $(TIT_BIG5)
-
-NON_TIT_GB=$(srcdir)/quail/py-punct.elc
-
-NON_TIT_BIG5=$(srcdir)/quail/quick-b5.elc
-
-CHINESE_NON_TIT=$(NON_TIT_GB) $(NON_TIT_BIG5)
-
-CHINESE_GB=$(TIT_GB) $(NON_TIT_GB)
-
-CHINESE_BIG5=$(TIT_BIG5) $(NON_TIT_BIG5)
-
-JAPANESE=$(srcdir)/quail/japanese.elc $(srcdir)/ja-dic/ja-dic.elc
-
-KOREAN=	$(srcdir)/quail/hangul.elc	\
-	$(srcdir)/quail/hangul3.elc	\
-	$(srcdir)/quail/hanja.elc	\
-	$(srcdir)/quail/hanja3.elc	\
-	$(srcdir)/quail/hanja-jis.elc	\
-	$(srcdir)/quail/symbol-ksc.elc
-
-THAI=$(srcdir)/quail/thai.elc
-
-VIETNAMESE=$(srcdir)/quail/viqr.elc $(srcdir)/quail/vntelex.elc
-
-LAO=$(srcdir)/quail/lao.elc $(srcdir)/quail/lrt.elc
-
-INDIAN=$(srcdir)/quail/indian.elc
-
-TIBETAN=$(srcdir)/quail/tibetan.elc
-
-LATIN=	$(srcdir)/quail/latin-pre.elc	\
-	$(srcdir)/quail/latin-post.elc	\
-	$(srcdir)/quail/latin-alt.elc	\
-	$(srcdir)/quail/latin-ltx.elc
-
-SLAVIC= \
-	$(srcdir)/quail/czech.elc \
-	$(srcdir)/quail/slovak.elc
-
-GREEK=$(srcdir)/quail/greek.elc
-
-RUSSIAN=$(srcdir)/quail/cyrillic.elc $(srcdir)/quail/cyril-jis.elc
-
-MISC= \
-	$(srcdir)/quail/ethiopic.elc \
-	$(srcdir)/quail/ipa.elc \
-	$(srcdir)/quail/hebrew.elc
-
-MISC_DIC=\
-	quail/tsang-b5.elc	\
-	quail/quick-b5.elc	\
-	quail/tsang-cns.elc	\
-	quail/quick-cns.elc	\
-	quail/PY.elc		\
-	quail/ZIRANMA.elc	\
-	quail/CTLau.elc		\
-	quail/CTLau-b5.elc
-
-CHINESE=$(CHINESE_GB) $(CHINESE_BIG5)
-EASTASIA=$(CHINESE) $(JAPANESE) $(KOREAN)
-ASIA=$(EASTASIA) $(THAI) $(VIETNAMESE) $(LAO) $(INDIAN) $(TIBETAN)
-EUROPEAN=$(LATIN) $(SLAVIC) $(GREEK) $(RUSSIAN)
-WORLD=$(ASIA) $(EUROPEAN) $(MISC)
-
-TIT=$(CHINESE_TIT)
-NON_TIT=$(CHINESE_NON_TIT) $(JAPANESE) $(KOREAN) $(EUROPEAN) $(MISC)
-
-all: $(BUILT_EMACS) $(SUBDIRS) $(WORLD) leim-list.el
-
-# To ensure that we can run Emacs.  This target is ignored (never
-# being hit) if a user changes default value of EMACS.
-$(dot)$(dot)/src/emacs:
-	cd ../src; $(MAKE) $(MFLAGS) emacs
-
-$(SUBDIRS):
-	mkdir $@
-	echo stamp>stamp-subdir
-
-# The rules which generate $(TIT) and ${MISC_DIC) files create them all
-# in one go.  So we need to prevent parallel execution for that target,
-# otherwise Emacs complains about files being locked.  .NOTPARALLEL is
-# for GNU Make, .NO_PARALLEL is for other Make's.
-.NOTPARALLEL: $(TIT) $(MISC_DIC)
-
-.NO_PARALLEL: $(TIT) $(MISC_DIC)
-
-# Rule to generate quail/*.el from CXTERM-DIC/*.tit.
-$(TIT): $(SUBDIRS)
-	set EMACSLOADPATH=$(buildlisppath)
-	$(RUN_EMACS) -l $(buildlisppath)/international/titdic-cnv \
-	    --eval "(batch-titdic-convert t)" -dir quail $(srcdir)/CXTERM-DIC
-	$(RUN_EMACS)  -l $(buildlisppath)/international/quail \
-	    -f batch-byte-compile $(TIT:.elc=.el)
-
-# Rule to generate quail/*.el from CXTERM-DIC/*.tit.
-$(MISC_DIC): $(SUBDIRS)
-	set EMACSLOADPATH=$(buildlisppath)
-	$(RUN_EMACS) -l $(buildlisppath)/international/titdic-cnv \
-	    -f batch-miscdic-convert -dir quail $(srcdir)/MISC-DIC
-	$(RUN_EMACS)  -l $(buildlisppath)/international/quail \
-	    -f batch-byte-compile $(MISC_DIC:.elc=.el)
-
-.SUFFIXES: .elc .el
-
-.el.elc:
-	set EMACSLOADPATH=$(buildlisppath)
-	$(RUN_EMACS) -f batch-byte-compile $<
-
-leim-list.el: $(SUBDIRS) $(WORLD)
-	set EMACSLOADPATH=$(buildlisppath)
-	$(RUN_EMACS) -l $(buildlisppath)/international/quail \
-	    --eval "(update-leim-list-file \".\")"
-
-install: all
-	- mkdir $(INSTALLDIR)
-	- $(DEL) same-dir.tst
-	- $(DEL) $(INSTALLDIR)\same-dir.tst
-	echo SameDirTest > $(INSTALLDIR)\same-dir.tst
-	if not exist same-dir.tst $(CP) leim-list.el $(INSTALLDIR)
-	if not exist same-dir.tst $(CP_DIR) quail $(INSTALLDIR)\quail
-	if not exist same-dir.tst $(CP_DIR) ja-dic $(INSTALLDIR)\ja-dic
-	- $(DEL) $(INSTALLDIR)\same-dir.tst
-
-TIT_EL=$(TIT:.elc=.el)
-MISC_DIC_EL=$(MISC_DIC:.elc=.el)
-
-clean mostlyclean:
-	for %%f in ($(TIT:/=\)) do $(DEL) %%f
-	for %%f in ($(TIT_EL:/=\)) do $(DEL) %%f
-	for %%f in ($(MISC_DIC:/=\)) do $(DEL) %%f
-	for %%f in ($(MISC_DIC_EL:/=\)) do $(DEL) %%f
-	$(DEL) leim-list.el
-
-distclean: clean
-	if exist stamp-subdir $(DELTREE) $(SUBDIRS)
-	$(DEL) stamp-subdir
-
-maintainer-clean: distclean
-	for %%f in ($(WORLD:/=\)) do $(DEL) %%f
-
-# arch-tag: cded53b4-4803-496b-8c05-7daff80e5b3b
--- a/leim/quail/latin-ltx.el	Sat May 01 19:23:22 2004 +0000
+++ b/leim/quail/latin-ltx.el	Fri May 07 14:20:00 2004 +0000
@@ -1,8 +1,8 @@
-;;; latin-ltx.el --- Quail package for TeX-style input -*-coding: iso-2022-7bit;-*-
+;;; latin-ltx.el --- Quail package for TeX-style input -*-coding: utf-8;-*-
 
+;; Copyright (C) 2001, 2004  Free Software Foundation, Inc.
 ;; Copyright (C) 2001 Electrotechnical Laboratory, JAPAN.
 ;; Licensed to the Free Software Foundation.
-;; Copyright (C) 2001  Free Software Foundation, Inc.
 
 ;; Author: TAKAHASHI Naoto <ntakahas@m17n.org>
 ;;         Dave Love <fx@gnu.org>
@@ -36,921 +36,930 @@
  "LaTeX-like input method for many characters.
 These characters are from the charsets used by the `utf-8' coding
 system, including many technical ones.  Examples:
- \\'a -> ,Aa(B  \\`{a} -> ,A`(B
- \\pi -> $,1'@(B  \\int -> $,1xK(B  ^1 -> ,A9(B"
+ \\'a -> á  \\`{a} -> à
+ \\pi -> π  \\int -> ∫  ^1 -> ¹"
 
  nil t t nil nil nil nil nil nil nil t)
 
 (quail-define-rules
- ("!`" ?,A!(B)
- ("{\\pounds}" ?,A#(B) ("\\pounds" ?,A#(B)
- ("{\\S}" ?,A'(B) ("\\S" ?,A'(B)
- ("\\\"{}" ?,A((B)
- ("{\\copyright}" ?,A)(B) ("\\copyright" ?,A)(B)
- ("$^a$" ?,A*(B)
- ("\\={}" ?,A/(B)
- ("$\\pm$" ?,A1(B) ("\\pm" ?,A1(B)
- ("$^2$" ?,A2(B)
- ("$^3$" ?,A3(B)
- ("\\'{}" ?,A4(B)
- ("{\\P}" ?,A6(B) ("\\P" ?,A6(B)
- ;; Fixme: Yudit has the equivalent of ("\\cdot" ?$,1z%(B), for U+22C5, DOT
- ;; OPERATOR, whereas ,A7(B is MIDDLE DOT.  JadeTeX translates both to
+ ("!`" ?¡)
+ ("{\\pounds}" ?£) ("\\pounds" ?£)
+ ("{\\S}" ?§) ("\\S" ?§)
+ ("\\\"{}" ?¨)
+ ("{\\copyright}" ?©) ("\\copyright" ?©)
+ ("$^a$" ?ª)
+ ("\\={}" ?¯)
+ ("$\\pm$" ?±) ("\\pm" ?±)
+ ("$^2$" ?²)
+ ("$^3$" ?³)
+ ("\\'{}" ?´)
+ ("{\\P}" ?¶) ("\\P" ?¶)
+ ;; Fixme: Yudit has the equivalent of ("\\cdot" ?⋅), for U+22C5, DOT
+ ;; OPERATOR, whereas · is MIDDLE DOT.  JadeTeX translates both to
  ;; \cdot.
- ("$\\cdot$" ?,A7(B) ("\\cdot" ?,A7(B)
- ("\\c{}" ?,A8(B)
- ("$^1$" ?,A9(B)
- ("$^o$" ?,A:(B)
- ("?`" ?,A?(B)
+ ("$\\cdot$" ?·) ("\\cdot" ?·)
+ ("\\c{}" ?¸)
+ ("$^1$" ?¹)
+ ("$^o$" ?º)
+ ("?`" ?¿)
 
- ("\\`{A}" ?,A@(B)  ("\\`A" ?,A@(B)
- ("\\'{A}" ?,AA(B)  ("\\'A" ?,AA(B)
- ("\\^{A}" ?,AB(B)  ("\\^A" ?,AB(B)
- ("\\~{A}" ?,AC(B)  ("\\~A" ?,AC(B)
- ("\\\"{A}" ?,AD(B)  ("\\\"A" ?,AD(B)
- ("\\\k{A}" ?$,1 $(B)
- ("{\\AA}" ?,AE(B) ("\\AA" ?,AE(B)
- ("{\\AE}" ?,AF(B) ("\\AE" ?,AF(B)
- ("\\c{C}" ?,AG(B)  ("\\cC" ?,AG(B)
- ("\\`{E}" ?,AH(B)  ("\\`E" ?,AH(B)
- ("\\'{E}" ?,AI(B)  ("\\'E" ?,AI(B)
- ("\\^{E}" ?,AJ(B)  ("\\^E" ?,AJ(B)
- ("\\\"{E}" ?,AK(B)  ("\\\"E" ?,AK(B)
- ("\\\k{E}" ?$,1 8(B)
- ("\\`{I}" ?,AL(B)  ("\\`I" ?,AL(B)
- ("\\'{I}" ?,AM(B)  ("\\'I" ?,AM(B)
- ("\\^{I}" ?,AN(B)  ("\\^I" ?,AN(B)
- ("\\\"{I}" ?,AO(B)  ("\\\"I" ?,AO(B)
- ("\\\k{I}" ?$,1 N(B)
+ ("\\`{A}" ?À)  ("\\`A" ?À)
+ ("\\'{A}" ?Á)  ("\\'A" ?Á)
+ ("\\^{A}" ?Â)  ("\\^A" ?Â)
+ ("\\~{A}" ?Ã)  ("\\~A" ?Ã)
+ ("\\\"{A}" ?Ä)  ("\\\"A" ?Ä)
+ ("\\\k{A}" ?Ą)
+ ("{\\AA}" ?Å) ("\\AA" ?Å)
+ ("{\\AE}" ?Æ) ("\\AE" ?Æ)
+ ("\\c{C}" ?Ç)  ("\\cC" ?Ç)
+ ("\\`{E}" ?È)  ("\\`E" ?È)
+ ("\\'{E}" ?É)  ("\\'E" ?É)
+ ("\\^{E}" ?Ê)  ("\\^E" ?Ê)
+ ("\\\"{E}" ?Ë)  ("\\\"E" ?Ë)
+ ("\\\k{E}" ?Ę)
+ ("\\`{I}" ?Ì)  ("\\`I" ?Ì)
+ ("\\'{I}" ?Í)  ("\\'I" ?Í)
+ ("\\^{I}" ?Î)  ("\\^I" ?Î)
+ ("\\\"{I}" ?Ï)  ("\\\"I" ?Ï)
+ ("\\\k{I}" ?Į)
 
- ("\\~{N}" ?,AQ(B)  ("\\~N" ?,AQ(B)
- ("\\`{O}" ?,AR(B)  ("\\`O" ?,AR(B)
- ("\\'{O}" ?,AS(B)  ("\\'O" ?,AS(B)
- ("\\^{O}" ?,AT(B)  ("\\^O" ?,AT(B)
- ("\\~{O}" ?,AU(B)  ("\\~O" ?,AU(B)
- ("\\\"{O}" ?,AV(B)  ("\\\"O" ?,AV(B)
- ("\\\k{O}" ?$,1"J(B)
- ("$\\times$" ?,AW(B) ("\\times" ?,AW(B)
- ("{\\O}" ?,AX(B) ("\\O" ?,AX(B)
- ("\\`{U}" ?,AY(B) ("\\`U" ?,AY(B)
- ("\\'{U}" ?,AZ(B) ("\\'U" ?,AZ(B)
- ("\\^{U}" ?,A[(B) ("\\^U" ?,A[(B)
- ("\\\"{U}" ?,A\(B) ("\\\"U" ?,A\(B)
- ("\\\k{U}" ?$,1!2(B)
- ("\\'{Y}" ?,A](B) ("\\'Y" ?,A](B)
- ("{\\ss}" ?,A_(B) ("\\ss" ?,A_(B)
+ ("\\~{N}" ?Ñ)  ("\\~N" ?Ñ)
+ ("\\`{O}" ?Ò)  ("\\`O" ?Ò)
+ ("\\'{O}" ?Ó)  ("\\'O" ?Ó)
+ ("\\^{O}" ?Ô)  ("\\^O" ?Ô)
+ ("\\~{O}" ?Õ)  ("\\~O" ?Õ)
+ ("\\\"{O}" ?Ö)  ("\\\"O" ?Ö)
+ ("\\\k{O}" ?Ǫ)
+ ("$\\times$" ?×) ("\\times" ?×)
+ ("{\\O}" ?Ø) ("\\O" ?Ø)
+ ("\\`{U}" ?Ù) ("\\`U" ?Ù)
+ ("\\'{U}" ?Ú) ("\\'U" ?Ú)
+ ("\\^{U}" ?Û) ("\\^U" ?Û)
+ ("\\\"{U}" ?Ü) ("\\\"U" ?Ü)
+ ("\\\k{U}" ?Ų)
+ ("\\'{Y}" ?Ý) ("\\'Y" ?Ý)
+ ("{\\ss}" ?ß) ("\\ss" ?ß)
 
- ("\\`{a}" ?,A`(B) ("\\`a" ?,A`(B)
- ("\\'{a}" ?,Aa(B) ("\\'a" ?,Aa(B)
- ("\\^{a}" ?,Ab(B) ("\\^a" ?,Ab(B)
- ("\\~{a}" ?,Ac(B) ("\\~a" ?,Ac(B)
- ("\\\"{a}" ?,Ad(B) ("\\\"a" ?,Ad(B)
- ("\\\k{a}" ?$,1 %(B)
- ("{\\aa}" ?,Ae(B) ("\\aa" ?,Ae(B)
- ("{\\ae}" ?,Af(B) ("\\ae" ?,Af(B)
- ("\\c{c}" ?,Ag(B) ("\\cc" ?,Ag(B)
- ("\\`{e}" ?,Ah(B) ("\\`e" ?,Ah(B)
- ("\\'{e}" ?,Ai(B) ("\\'e" ?,Ai(B)
- ("\\^{e}" ?,Aj(B) ("\\^e" ?,Aj(B)
- ("\\\"{e}" ?,Ak(B) ("\\\"e" ?,Ak(B)
- ("\\\k{e}" ?$,1 9(B)
- ("\\`{\\i}" ?,Al(B)  ("\\`i" ?,Al(B)
- ("\\'{\\i}" ?,Am(B)  ("\\'i" ?,Am(B)
- ("\\^{\\i}" ?,An(B) ("\\^i" ?,An(B)
- ("\\\"{\\i}" ?,Ao(B) ("\\\"i" ?,Ao(B)
- ("\\\k{i}" ?$,1 O(B)
+ ("\\`{a}" ?à) ("\\`a" ?à)
+ ("\\'{a}" ?á) ("\\'a" ?á)
+ ("\\^{a}" ?â) ("\\^a" ?â)
+ ("\\~{a}" ?ã) ("\\~a" ?ã)
+ ("\\\"{a}" ?ä) ("\\\"a" ?ä)
+ ("\\\k{a}" ?ą)
+ ("{\\aa}" ?å) ("\\aa" ?å)
+ ("{\\ae}" ?æ) ("\\ae" ?æ)
+ ("\\c{c}" ?ç) ("\\cc" ?ç)
+ ("\\`{e}" ?è) ("\\`e" ?è)
+ ("\\'{e}" ?é) ("\\'e" ?é)
+ ("\\^{e}" ?ê) ("\\^e" ?ê)
+ ("\\\"{e}" ?ë) ("\\\"e" ?ë)
+ ("\\\k{e}" ?ę)
+ ("\\`{\\i}" ?ì)  ("\\`i" ?ì)
+ ("\\'{\\i}" ?í)  ("\\'i" ?í)
+ ("\\^{\\i}" ?î) ("\\^i" ?î)
+ ("\\\"{\\i}" ?ï) ("\\\"i" ?ï)
+ ("\\\k{i}" ?į)
 
- ("\\~{n}" ?,Aq(B) ("\\~n" ?,Aq(B)
- ("\\`{o}" ?,Ar(B) ("\\`o" ?,Ar(B)
- ("\\'{o}" ?,As(B) ("\\'o" ?,As(B)
- ("\\^{o}" ?,At(B) ("\\^o" ?,At(B)
- ("\\~{o}" ?,Au(B) ("\\~o" ?,Au(B)
- ("\\\"{o}" ?,Av(B) ("\\\"o" ?,Av(B)
- ("\\\k{o}" ?$,1"K(B)
- ("$\\div$" ?,Aw(B) ("\\div" ?,Aw(B)
- ("{\\o}" ?,Ax(B) ("\\o" ?,Ax(B)
- ("\\`{u}" ?,Ay(B) ("\\`u" ?,Ay(B)
- ("\\'{u}" ?,Az(B) ("\\'u" ?,Az(B)
- ("\\^{u}" ?,A{(B) ("\\^u" ?,A{(B)
- ("\\\"{u}" ?,A|(B) ("\\\"u" ?,A|(B)
- ("\\\k{u}" ?$,1!3(B)
- ("\\'{y}" ?,A}(B) ("\\'y" ?,A}(B)
- ("\\\"{y}" ?,A(B) ("\\\"y" ?,A(B)
+ ("\\~{n}" ?ñ) ("\\~n" ?ñ)
+ ("\\`{o}" ?ò) ("\\`o" ?ò)
+ ("\\'{o}" ?ó) ("\\'o" ?ó)
+ ("\\^{o}" ?ô) ("\\^o" ?ô)
+ ("\\~{o}" ?õ) ("\\~o" ?õ)
+ ("\\\"{o}" ?ö) ("\\\"o" ?ö)
+ ("\\\k{o}" ?ǫ)
+ ("$\\div$" ?÷) ("\\div" ?÷)
+ ("{\\o}" ?ø) ("\\o" ?ø)
+ ("\\`{u}" ?ù) ("\\`u" ?ù)
+ ("\\'{u}" ?ú) ("\\'u" ?ú)
+ ("\\^{u}" ?û) ("\\^u" ?û)
+ ("\\\"{u}" ?ü) ("\\\"u" ?ü)
+ ("\\\k{u}" ?ų)
+ ("\\'{y}" ?ý) ("\\'y" ?ý)
+ ("\\\"{y}" ?ÿ) ("\\\"y" ?ÿ)
 
- ("\\={A}" ?$,1  (B) ("\\=A" ?$,1  (B)
- ("\\={a}" ?$,1 !(B) ("\\=a" ?$,1 !(B)
- ("\\u{A}" ?$,1 "(B) ("\\uA" ?$,1 "(B)
- ("\\u{a}" ?$,1 #(B) ("\\ua" ?$,1 #(B)
- ("\\'{C}" ?$,1 &(B) ("\\'C" ?$,1 &(B)
- ("\\'{c}" ?$,1 '(B) ("\\'c" ?$,1 '(B)
- ("\\^{C}" ?$,1 ((B) ("\\^C" ?$,1 ((B)
- ("\\^{c}" ?$,1 )(B) ("\\^c" ?$,1 )(B)
- ("\\.{C}" ?$,1 *(B) ("\\.C" ?$,1 *(B)
- ("\\.{c}" ?$,1 +(B) ("\\.c" ?$,1 +(B)
- ("\\v{C}" ?$,1 ,(B) ("\\vC" ?$,1 ,(B)
- ("\\v{c}" ?$,1 -(B) ("\\vc" ?$,1 -(B)
- ("\\v{D}" ?$,1 .(B) ("\\vD" ?$,1 .(B)
- ("\\v{d}" ?$,1 /(B) ("\\vd" ?$,1 /(B)
+ ("\\={A}" ?Ā) ("\\=A" ?Ā)
+ ("\\={a}" ?ā) ("\\=a" ?ā)
+ ("\\u{A}" ?Ă) ("\\uA" ?Ă)
+ ("\\u{a}" ?ă) ("\\ua" ?ă)
+ ("\\'{C}" ?Ć) ("\\'C" ?Ć)
+ ("\\'{c}" ?ć) ("\\'c" ?ć)
+ ("\\^{C}" ?Ĉ) ("\\^C" ?Ĉ)
+ ("\\^{c}" ?ĉ) ("\\^c" ?ĉ)
+ ("\\.{C}" ?Ċ) ("\\.C" ?Ċ)
+ ("\\.{c}" ?ċ) ("\\.c" ?ċ)
+ ("\\v{C}" ?Č) ("\\vC" ?Č)
+ ("\\v{c}" ?č) ("\\vc" ?č)
+ ("\\v{D}" ?Ď) ("\\vD" ?Ď)
+ ("\\v{d}" ?ď) ("\\vd" ?ď)
 
- ("\\={E}" ?$,1 2(B) ("\\=E" ?$,1 2(B)
- ("\\={e}" ?$,1 3(B) ("\\=e" ?$,1 3(B)
- ("\\u{E}" ?$,1 4(B) ("\\uE" ?$,1 4(B)
- ("\\u{e}" ?$,1 5(B) ("\\ue" ?$,1 5(B)
- ("\\.{E}" ?$,1 6(B) ("\\.E" ?$,1 6(B)
- ("\\e{e}" ?$,1 7(B) ("\\ee" ?$,1 7(B)
- ("\\v{E}" ?$,1 :(B) ("\\vE" ?$,1 :(B)
- ("\\v{e}" ?$,1 ;(B) ("\\ve" ?$,1 ;(B)
- ("\\^{G}" ?$,1 <(B) ("\\^G" ?$,1 <(B)
- ("\\^{g}" ?$,1 =(B) ("\\^g" ?$,1 =(B)
- ("\\u{G}" ?$,1 >(B) ("\\uG" ?$,1 >(B)
- ("\\u{g}" ?$,1 ?(B) ("\\ug" ?$,1 ?(B)
+ ("\\={E}" ?Ē) ("\\=E" ?Ē)
+ ("\\={e}" ?ē) ("\\=e" ?ē)
+ ("\\u{E}" ?Ĕ) ("\\uE" ?Ĕ)
+ ("\\u{e}" ?ĕ) ("\\ue" ?ĕ)
+ ("\\.{E}" ?Ė) ("\\.E" ?Ė)
+ ("\\e{e}" ?ė) ("\\ee" ?ė)
+ ("\\v{E}" ?Ě) ("\\vE" ?Ě)
+ ("\\v{e}" ?ě) ("\\ve" ?ě)
+ ("\\^{G}" ?Ĝ) ("\\^G" ?Ĝ)
+ ("\\^{g}" ?ĝ) ("\\^g" ?ĝ)
+ ("\\u{G}" ?Ğ) ("\\uG" ?Ğ)
+ ("\\u{g}" ?ğ) ("\\ug" ?ğ)
 
- ("\\.{G}" ?$,1 @(B) ("\\.G" ?$,1 @(B)
- ("\\.{g}" ?$,1 A(B) ("\\.g" ?$,1 A(B)
- ("\\c{G}" ?$,1 B(B) ("\\cG" ?$,1 B(B)
- ("\\c{g}" ?$,1 C(B) ("\\cg" ?$,1 C(B)
- ("\\^{H}" ?$,1 D(B) ("\\^H" ?$,1 D(B)
- ("\\^{h}" ?$,1 E(B) ("\\^h" ?$,1 E(B)
- ("\\~{I}" ?$,1 H(B) ("\\~I" ?$,1 H(B)
- ("\\~{\\i}" ?$,1 I(B) ("\\~i" ?$,1 I(B)
- ("\\={I}" ?$,1 J(B) ("\\=I" ?$,1 J(B)
- ("\\={\\i}" ?$,1 K(B) ("\\=i" ?$,1 K(B)
- ("\\u{I}" ?$,1 L(B) ("\\uI" ?$,1 L(B)
- ("\\u{\\i}" ?$,1 M(B) ("\\ui" ?$,1 M(B)
+ ("\\.{G}" ?Ġ) ("\\.G" ?Ġ)
+ ("\\.{g}" ?ġ) ("\\.g" ?ġ)
+ ("\\c{G}" ?Ģ) ("\\cG" ?Ģ)
+ ("\\c{g}" ?ģ) ("\\cg" ?ģ)
+ ("\\^{H}" ?Ĥ) ("\\^H" ?Ĥ)
+ ("\\^{h}" ?ĥ) ("\\^h" ?ĥ)
+ ("\\~{I}" ?Ĩ) ("\\~I" ?Ĩ)
+ ("\\~{\\i}" ?ĩ) ("\\~i" ?ĩ)
+ ("\\={I}" ?Ī) ("\\=I" ?Ī)
+ ("\\={\\i}" ?ī) ("\\=i" ?ī)
+ ("\\u{I}" ?Ĭ) ("\\uI" ?Ĭ)
+ ("\\u{\\i}" ?ĭ) ("\\ui" ?ĭ)
 
- ("\\.{I}" ?$,1 P(B) ("\\.I" ?$,1 P(B)
- ("{\\i}" ?$,1 Q(B) ("\\i" ?$,1 Q(B)
- ("\\^{J}" ?$,1 T(B) ("\\^J" ?$,1 T(B)
- ("\\^{\\j}" ?$,1 U(B) ("\\^j" ?$,1 U(B)
- ("\\c{K}" ?$,1 V(B) ("\\cK" ?$,1 V(B)
- ("\\c{k}" ?$,1 W(B) ("\\ck" ?$,1 W(B)
- ("\\'{L}" ?$,1 Y(B) ("\\'L" ?$,1 Y(B)
- ("\\'{l}" ?$,1 Z(B) ("\\'l" ?$,1 Z(B)
- ("\\c{L}" ?$,1 [(B) ("\\cL" ?$,1 [(B)
- ("\\c{l}" ?$,1 \(B) ("\\cl" ?$,1 \(B)
+ ("\\.{I}" ?İ) ("\\.I" ?İ)
+ ("{\\i}" ?ı) ("\\i" ?ı)
+ ("\\^{J}" ?Ĵ) ("\\^J" ?Ĵ)
+ ("\\^{\\j}" ?ĵ) ("\\^j" ?ĵ)
+ ("\\c{K}" ?Ķ) ("\\cK" ?Ķ)
+ ("\\c{k}" ?ķ) ("\\ck" ?ķ)
+ ("\\'{L}" ?Ĺ) ("\\'L" ?Ĺ)
+ ("\\'{l}" ?ĺ) ("\\'l" ?ĺ)
+ ("\\c{L}" ?Ļ) ("\\cL" ?Ļ)
+ ("\\c{l}" ?ļ) ("\\cl" ?ļ)
 
- ("{\\L}" ?$,1 a(B) ("\\L" ?$,1 a(B)
- ("{\\l}" ?$,1 b(B) ("\\l" ?$,1 b(B)
- ("\\'{N}" ?$,1 c(B) ("\\'N" ?$,1 c(B)
- ("\\'{n}" ?$,1 d(B) ("\\'n" ?$,1 d(B)
- ("\\c{N}" ?$,1 e(B) ("\\cN" ?$,1 e(B)
- ("\\c{n}" ?$,1 f(B) ("\\cn" ?$,1 f(B)
- ("\\v{N}" ?$,1 g(B) ("\\vN" ?$,1 g(B)
- ("\\v{n}" ?$,1 h(B) ("\\vn" ?$,1 h(B)
- ("\\={O}" ?$,1 l(B) ("\\=O" ?$,1 l(B)
- ("\\={o}" ?$,1 m(B) ("\\=o" ?$,1 m(B)
- ("\\u{O}" ?$,1 n(B) ("\\uO" ?$,1 n(B)
- ("\\u{o}" ?$,1 o(B) ("\\uo" ?$,1 o(B)
+ ("{\\L}" ?Ł) ("\\L" ?Ł)
+ ("{\\l}" ?ł) ("\\l" ?ł)
+ ("\\'{N}" ?Ń) ("\\'N" ?Ń)
+ ("\\'{n}" ?ń) ("\\'n" ?ń)
+ ("\\c{N}" ?Ņ) ("\\cN" ?Ņ)
+ ("\\c{n}" ?ņ) ("\\cn" ?ņ)
+ ("\\v{N}" ?Ň) ("\\vN" ?Ň)
+ ("\\v{n}" ?ň) ("\\vn" ?ň)
+ ("\\={O}" ?Ō) ("\\=O" ?Ō)
+ ("\\={o}" ?ō) ("\\=o" ?ō)
+ ("\\u{O}" ?Ŏ) ("\\uO" ?Ŏ)
+ ("\\u{o}" ?ŏ) ("\\uo" ?ŏ)
 
- ("\\H{O}" ?$,1 p(B) ("\\HO" ?$,1 p(B)
- ("\\U{o}" ?$,1 q(B) ("\\Uo" ?$,1 q(B)
- ("{\\OE}" ?$,1 r(B) ("\\OE" ?$,1 r(B)
- ("{\\oe}" ?$,1 s(B) ("\\oe" ?$,1 s(B)
- ("\\'{R}" ?$,1 t(B) ("\\'R" ?$,1 t(B)
- ("\\'{r}" ?$,1 u(B) ("\\'r" ?$,1 u(B)
- ("\\c{R}" ?$,1 v(B) ("\\cR" ?$,1 v(B)
- ("\\c{r}" ?$,1 w(B) ("\\cr" ?$,1 w(B)
- ("\\v{R}" ?$,1 x(B) ("\\vR" ?$,1 x(B)
- ("\\v{r}" ?$,1 y(B) ("\\vr" ?$,1 y(B)
- ("\\'{S}" ?$,1 z(B) ("\\'S" ?$,1 z(B)
- ("\\'{s}" ?$,1 {(B) ("\\'s" ?$,1 {(B)
- ("\\^{S}" ?$,1 |(B) ("\\^S" ?$,1 |(B)
- ("\\^{s}" ?$,1 }(B) ("\\^s" ?$,1 }(B)
- ("\\c{S}" ?$,1 ~(B) ("\\cS" ?$,1 ~(B)
- ("\\c{s}" ?$,1 (B) ("\\cs" ?$,1 (B)
+ ("\\H{O}" ?Ő) ("\\HO" ?Ő)
+ ("\\U{o}" ?ő) ("\\Uo" ?ő)
+ ("{\\OE}" ?Œ) ("\\OE" ?Œ)
+ ("{\\oe}" ?œ) ("\\oe" ?œ)
+ ("\\'{R}" ?Ŕ) ("\\'R" ?Ŕ)
+ ("\\'{r}" ?ŕ) ("\\'r" ?ŕ)
+ ("\\c{R}" ?Ŗ) ("\\cR" ?Ŗ)
+ ("\\c{r}" ?ŗ) ("\\cr" ?ŗ)
+ ("\\v{R}" ?Ř) ("\\vR" ?Ř)
+ ("\\v{r}" ?ř) ("\\vr" ?ř)
+ ("\\'{S}" ?Ś) ("\\'S" ?Ś)
+ ("\\'{s}" ?ś) ("\\'s" ?ś)
+ ("\\^{S}" ?Ŝ) ("\\^S" ?Ŝ)
+ ("\\^{s}" ?ŝ) ("\\^s" ?ŝ)
+ ("\\c{S}" ?Ş) ("\\cS" ?Ş)
+ ("\\c{s}" ?ş) ("\\cs" ?ş)
 
- ("\\v{S}" ?$,1! (B) ("\\vS" ?$,1! (B)
- ("\\v{s}" ?$,1!!(B) ("\\vs" ?$,1!!(B)
- ("\\c{T}" ?$,1!"(B) ("\\cT" ?$,1!"(B)
- ("\\c{t}" ?$,1!#(B) ("\\ct" ?$,1!#(B)
- ("\\v{T}" ?$,1!$(B) ("\\vT" ?$,1!$(B)
- ("\\v{t}" ?$,1!%(B) ("\\vt" ?$,1!%(B)
- ("\\~{U}" ?$,1!((B) ("\\~U" ?$,1!((B)
- ("\\~{u}" ?$,1!)(B) ("\\~u" ?$,1!)(B)
- ("\\={U}" ?$,1!*(B) ("\\=U" ?$,1!*(B)
- ("\\={u}" ?$,1!+(B) ("\\=u" ?$,1!+(B)
- ("\\u{U}" ?$,1!,(B) ("\\uU" ?$,1!,(B)
- ("\\u{u}" ?$,1!-(B) ("\\uu" ?$,1!-(B)
+ ("\\v{S}" ?Š) ("\\vS" ?Š)
+ ("\\v{s}" ?š) ("\\vs" ?š)
+ ("\\c{T}" ?Ţ) ("\\cT" ?Ţ)
+ ("\\c{t}" ?ţ) ("\\ct" ?ţ)
+ ("\\v{T}" ?Ť) ("\\vT" ?Ť)
+ ("\\v{t}" ?ť) ("\\vt" ?ť)
+ ("\\~{U}" ?Ũ) ("\\~U" ?Ũ)
+ ("\\~{u}" ?ũ) ("\\~u" ?ũ)
+ ("\\={U}" ?Ū) ("\\=U" ?Ū)
+ ("\\={u}" ?ū) ("\\=u" ?ū)
+ ("\\u{U}" ?Ŭ) ("\\uU" ?Ŭ)
+ ("\\u{u}" ?ŭ) ("\\uu" ?ŭ)
 
- ("\\H{U}" ?$,1!0(B) ("\\HU" ?$,1!0(B)
- ("\\H{u}" ?$,1!1(B) ("\\Hu" ?$,1!1(B)
- ("\\^{W}" ?$,1!4(B) ("\\^W" ?$,1!4(B)
- ("\\^{w}" ?$,1!5(B) ("\\^w" ?$,1!5(B)
- ("\\^{Y}" ?$,1!6(B) ("\\^Y" ?$,1!6(B)
- ("\\^{y}" ?$,1!7(B) ("\\^y" ?$,1!7(B)
- ("\\\"{Y}" ?$,1!8(B) ("\\\"Y" ?$,1!8(B)
- ("\\'{Z}" ?$,1!9(B) ("\\'Z" ?$,1!9(B)
- ("\\'{z}" ?$,1!:(B) ("\\'z" ?$,1!:(B)
- ("\\.{Z}" ?$,1!;(B) ("\\.Z" ?$,1!;(B)
- ("\\.{z}" ?$,1!<(B) ("\\.z" ?$,1!<(B)
- ("\\v{Z}" ?$,1!=(B) ("\\vZ" ?$,1!=(B)
- ("\\v{z}" ?$,1!>(B) ("\\vz" ?$,1!>(B)
+ ("\\H{U}" ?Ű) ("\\HU" ?Ű)
+ ("\\H{u}" ?ű) ("\\Hu" ?ű)
+ ("\\^{W}" ?Ŵ) ("\\^W" ?Ŵ)
+ ("\\^{w}" ?ŵ) ("\\^w" ?ŵ)
+ ("\\^{Y}" ?Ŷ) ("\\^Y" ?Ŷ)
+ ("\\^{y}" ?ŷ) ("\\^y" ?ŷ)
+ ("\\\"{Y}" ?Ÿ) ("\\\"Y" ?Ÿ)
+ ("\\'{Z}" ?Ź) ("\\'Z" ?Ź)
+ ("\\'{z}" ?ź) ("\\'z" ?ź)
+ ("\\.{Z}" ?Ż) ("\\.Z" ?Ż)
+ ("\\.{z}" ?ż) ("\\.z" ?ż)
+ ("\\v{Z}" ?Ž) ("\\vZ" ?Ž)
+ ("\\v{z}" ?ž) ("\\vz" ?ž)
 
- ("\\v{A}" ?$,1"-(B) ("\\vA" ?$,1"-(B)
- ("\\v{a}" ?$,1".(B) ("\\va" ?$,1".(B)
- ("\\v{I}" ?$,1"/(B) ("\\vI" ?$,1"/(B)
- ("\\v{\\i}" ?$,1"0(B) ("\\vi" ?$,1"0(B)
- ("\\v{O}" ?$,1"1(B) ("\\vO" ?$,1"1(B)
- ("\\v{o}" ?$,1"2(B) ("\\vo" ?$,1"2(B)
- ("\\v{U}" ?$,1"3(B) ("\\vU" ?$,1"3(B)
- ("\\v{u}" ?$,1"4(B) ("\\vu" ?$,1"4(B)
+ ("\\v{A}" ?Ǎ) ("\\vA" ?Ǎ)
+ ("\\v{a}" ?ǎ) ("\\va" ?ǎ)
+ ("\\v{I}" ?Ǐ) ("\\vI" ?Ǐ)
+ ("\\v{\\i}" ?ǐ) ("\\vi" ?ǐ)
+ ("\\v{O}" ?Ǒ) ("\\vO" ?Ǒ)
+ ("\\v{o}" ?ǒ) ("\\vo" ?ǒ)
+ ("\\v{U}" ?Ǔ) ("\\vU" ?Ǔ)
+ ("\\v{u}" ?ǔ) ("\\vu" ?ǔ)
 
- ("\\={\\AE}" ?$,1"B(B) ("\\=\\AE" ?$,1"B(B)
- ("\\={\\ae}" ?$,1"C(B) ("\\=\\ae" ?$,1"C(B)
- ("\\v{G}" ?$,1"F(B) ("\\vG" ?$,1"F(B)
- ("\\v{g}" ?$,1"G(B) ("\\vg" ?$,1"G(B)
- ("\\v{K}" ?$,1"H(B) ("\\vK" ?$,1"H(B)
+ ("\\={\\AE}" ?Ǣ) ("\\=\\AE" ?Ǣ)
+ ("\\={\\ae}" ?ǣ) ("\\=\\ae" ?ǣ)
+ ("\\v{G}" ?Ǧ) ("\\vG" ?Ǧ)
+ ("\\v{g}" ?ǧ) ("\\vg" ?ǧ)
+ ("\\v{K}" ?Ǩ) ("\\vK" ?Ǩ)
  ("\\v{k}" ?k) ("\\vk" ?k)
 
- ("\\v{\\j}" ?$,1"P(B) ("\\vj" ?$,1"P(B)
- ("\\'{G}" ?$,1"T(B) ("\\'G" ?$,1"T(B)
- ("\\'{g}" ?$,1"U(B) ("\\'g" ?$,1"U(B)
- ("\\`{N}" ?$,1"X(B) ("\\`N" ?$,1"X(B)
- ("\\`{n}" ?$,1"Y(B) ("\\`n" ?$,1"Y(B)
- ("\\'{\\AE}" ?$,1"\(B) ("\\'\\AE" ?$,1"\(B)
- ("\\'{\\ae}" ?$,1"](B) ("\\'\\ae" ?$,1"](B)
- ("\\'{\\O}" ?$,1"^(B) ("\\'\\O" ?$,1"^(B)
- ("\\'{\\o}" ?$,1"_(B) ("\\'\\o" ?$,1"_(B)
+ ("\\v{\\j}" ?ǰ) ("\\vj" ?ǰ)
+ ("\\'{G}" ?Ǵ) ("\\'G" ?Ǵ)
+ ("\\'{g}" ?ǵ) ("\\'g" ?ǵ)
+ ("\\`{N}" ?Ǹ) ("\\`N" ?Ǹ)
+ ("\\`{n}" ?ǹ) ("\\`n" ?ǹ)
+ ("\\'{\\AE}" ?Ǽ) ("\\'\\AE" ?Ǽ)
+ ("\\'{\\ae}" ?ǽ) ("\\'\\ae" ?ǽ)
+ ("\\'{\\O}" ?Ǿ) ("\\'\\O" ?Ǿ)
+ ("\\'{\\o}" ?ǿ) ("\\'\\o" ?ǿ)
 
- ("\\v{H}" ?$,1"~(B) ("\\vH" ?$,1"~(B)
- ("\\v{h}" ?$,1"(B) ("\\vh" ?$,1"(B)
- ("\\.{A}" ?$,1#&(B) ("\\.A" ?$,1#&(B)
- ("\\.{a}" ?$,1#'(B) ("\\.a" ?$,1#'(B)
- ("\\c{E}" ?$,1#((B) ("\\cE" ?$,1#((B)
- ("\\c{e}" ?$,1#)(B) ("\\ce" ?$,1#)(B)
- ("\\.{O}" ?$,1#.(B) ("\\.O" ?$,1#.(B)
- ("\\.{o}" ?$,1#/(B) ("\\.o" ?$,1#/(B)
- ("\\={Y}" ?$,1#2(B) ("\\=Y" ?$,1#2(B)
- ("\\={y}" ?$,1#3(B) ("\\=y" ?$,1#3(B)
+ ("\\v{H}" ?Ȟ) ("\\vH" ?Ȟ)
+ ("\\v{h}" ?ȟ) ("\\vh" ?ȟ)
+ ("\\.{A}" ?Ȧ) ("\\.A" ?Ȧ)
+ ("\\.{a}" ?ȧ) ("\\.a" ?ȧ)
+ ("\\c{E}" ?Ȩ) ("\\cE" ?Ȩ)
+ ("\\c{e}" ?ȩ) ("\\ce" ?ȩ)
+ ("\\.{O}" ?Ȯ) ("\\.O" ?Ȯ)
+ ("\\.{o}" ?ȯ) ("\\.o" ?ȯ)
+ ("\\={Y}" ?Ȳ) ("\\=Y" ?Ȳ)
+ ("\\={y}" ?ȳ) ("\\=y" ?ȳ)
 
- ("\\v{}" ?$,1$g(B)
- ("\\u{}" ?$,1$x(B)
- ("\\.{}" ?$,1$y(B)
- ("\\~{}" ?$,1$|(B)
- ("\\H{}" ?$,1$}(B)
+ ("\\v{}" ?ˇ)
+ ("\\u{}" ?˘)
+ ("\\.{}" ?˙)
+ ("\\~{}" ?˜)
+ ("\\H{}" ?˝)
 
- ("\\'" ?$,1%A(B)
- ("\\'K" ?$,1mp(B)
- ("\\'M" ?$,1m~(B)
- ("\\'P" ?$,1n4(B)
- ("\\'W" ?$,1nb(B)
- ("\\'k" ?$,1mq(B)
- ("\\'m" ?$,1m(B)
- ("\\'p" ?$,1n5(B)
- ("\\'w" ?$,1nc(B)
- ("\\," ?$,1rf(B)
- ("\\." ?$,1%G(B)
- ("\\.B" ?$,1mB(B)
- ("\\.D" ?$,1mJ(B)
- ("\\.F" ?$,1m^(B)
- ("\\.H" ?$,1mb(B)
- ("\\.M" ?$,1n (B)
- ("\\.N" ?$,1n$(B)
- ("\\.P" ?$,1n6(B)
- ("\\.R" ?$,1n8(B)
- ("\\.S" ?$,1n@(B)
- ("\\.T" ?$,1nJ(B)
- ("\\.W" ?$,1nf(B)
- ("\\.X" ?$,1nj(B)
- ("\\.Y" ?$,1nn(B)
- ("\\.b" ?$,1mC(B)
- ("\\.d" ?$,1mK(B)
- ("\\.e" ?$,1 7(B)
- ("\\.f" ?$,1m_(B)
- ("\\.h" ?$,1mc(B)
- ("\\.m" ?$,1n!(B)
- ("\\.n" ?$,1n%(B)
- ("\\.p" ?$,1n7(B)
- ("\\.r" ?$,1n9(B)
- ("\\.s" ?$,1nA(B)
- ("\\.t" ?$,1nK(B)
- ("\\.w" ?$,1ng(B)
- ("\\.x" ?$,1nk(B)
- ("\\.y" ?$,1no(B)
- ("\\/" ?$,1rl(B)
- ("\\:" ?$,1re(B)
- ("\\;" ?$,1rd(B)
- ("\\=" ?$,1%D(B)
- ("\\=G" ?$,1m`(B)
- ("\\=g" ?$,1ma(B)
+ ("\\'" ?́)
+ ("\\'K" ?Ḱ)
+ ("\\'M" ?Ḿ)
+ ("\\'P" ?Ṕ)
+ ("\\'W" ?Ẃ)
+ ("\\'k" ?ḱ)
+ ("\\'m" ?ḿ)
+ ("\\'p" ?ṕ)
+ ("\\'w" ?ẃ)
+ ("\\," ? )
+ ("\\." ?̇)
+ ("\\.B" ?Ḃ)
+ ("\\.D" ?Ḋ)
+ ("\\.F" ?Ḟ)
+ ("\\.H" ?Ḣ)
+ ("\\.M" ?Ṁ)
+ ("\\.N" ?Ṅ)
+ ("\\.P" ?Ṗ)
+ ("\\.R" ?Ṙ)
+ ("\\.S" ?Ṡ)
+ ("\\.T" ?Ṫ)
+ ("\\.W" ?Ẇ)
+ ("\\.X" ?Ẋ)
+ ("\\.Y" ?Ẏ)
+ ("\\.b" ?ḃ)
+ ("\\.d" ?ḋ)
+ ("\\.e" ?ė)
+ ("\\.f" ?ḟ)
+ ("\\.h" ?ḣ)
+ ("\\.m" ?ṁ)
+ ("\\.n" ?ṅ)
+ ("\\.p" ?ṗ)
+ ("\\.r" ?ṙ)
+ ("\\.s" ?ṡ)
+ ("\\.t" ?ṫ)
+ ("\\.w" ?ẇ)
+ ("\\.x" ?ẋ)
+ ("\\.y" ?ẏ)
+ ("\\/" ?‌)
+ ("\\:" ? )
+ ("\\;" ? )
+ ("\\=" ?̄)
+ ("\\=G" ?Ḡ)
+ ("\\=g" ?ḡ)
 
- ("^(" ?$,1s}(B)
- ("^)" ?$,1s~(B)
- ("^+" ?$,1sz(B)
- ("^-" ?$,1s{(B)
- ("^0" ?$,1sp(B)
- ("^1" ?,A9(B)
- ("^2" ?,A2(B)
- ("^3" ?,A3(B)
- ("^4" ?$,1st(B)
- ("^5" ?$,1su(B)
- ("^6" ?$,1sv(B)
- ("^7" ?$,1sw(B)
- ("^8" ?$,1sx(B)
- ("^9" ?$,1sy(B)
- ("^=" ?$,1s|(B)
- ("^\\gamma" ?$,1% (B)
- ("^h" ?$,1$P(B)
- ("^j" ?$,1$R(B)
- ("^l" ?$,1%!(B)
- ("^n" ?$,1s(B)
- ("^o" ?,A:(B)
- ("^r" ?$,1$S(B)
- ("^s" ?$,1%"(B)
- ("^w" ?$,1$W(B)
- ("^x" ?$,1%#(B)
- ("^y" ?$,1$X(B)
- ("^{SM}" ?$,1u`(B)
- ("^{TEL}" ?$,1ua(B)
- ("^{TM}" ?$,1ub(B)
- ("_(" ?$,1t-(B)
- ("_)" ?$,1t.(B)
- ("_+" ?$,1t*(B)
- ("_-" ?$,1t+(B)
- ("_0" ?$,1t (B)
- ("_1" ?$,1t!(B)
- ("_2" ?$,1t"(B)
- ("_3" ?$,1t#(B)
- ("_4" ?$,1t$(B)
- ("_5" ?$,1t%(B)
- ("_6" ?$,1t&(B)
- ("_7" ?$,1t'(B)
- ("_8" ?$,1t((B)
- ("_9" ?$,1t)(B)
- ("_=" ?$,1t,(B)
+ ("^(" ?⁽)
+ ("^)" ?⁾)
+ ("^+" ?⁺)
+ ("^-" ?⁻)
+ ("^0" ?⁰)
+ ("^1" ?¹)
+ ("^2" ?²)
+ ("^3" ?³)
+ ("^4" ?⁴)
+ ("^5" ?⁵)
+ ("^6" ?⁶)
+ ("^7" ?⁷)
+ ("^8" ?⁸)
+ ("^9" ?⁹)
+ ("^=" ?⁼)
+ ("^\\gamma" ?ˠ)
+ ("^h" ?ʰ)
+ ("^j" ?ʲ)
+ ("^l" ?ˡ)
+ ("^n" ?ⁿ)
+ ("^o" ?º)
+ ("^r" ?ʳ)
+ ("^s" ?ˢ)
+ ("^w" ?ʷ)
+ ("^x" ?ˣ)
+ ("^y" ?ʸ)
+ ("^{SM}" ?℠)
+ ("^{TEL}" ?℡)
+ ("^{TM}" ?™)
+ ("_(" ?₍)
+ ("_)" ?₎)
+ ("_+" ?₊)
+ ("_-" ?₋)
+ ("_0" ?₀)
+ ("_1" ?₁)
+ ("_2" ?₂)
+ ("_3" ?₃)
+ ("_4" ?₄)
+ ("_5" ?₅)
+ ("_6" ?₆)
+ ("_7" ?₇)
+ ("_8" ?₈)
+ ("_9" ?₉)
+ ("_=" ?₌)
 
- ("\\~" ?$,1%C(B)
- ("\\~E" ?$,1o<(B)
- ("\\~V" ?$,1n\(B)
- ("\\~Y" ?$,1ox(B)
- ("\\~e" ?$,1o=(B)
- ("\\~v" ?$,1n](B)
- ("\\~y" ?$,1oy(B)
+ ("\\~" ?̃)
+ ("\\~E" ?Ẽ)
+ ("\\~V" ?Ṽ)
+ ("\\~Y" ?Ỹ)
+ ("\\~e" ?ẽ)
+ ("\\~v" ?ṽ)
+ ("\\~y" ?ỹ)
 
- ("\\\"" ?$,1%H(B)
- ("\\\"H" ?$,1mf(B)
- ("\\\"W" ?$,1nd(B)
- ("\\\"X" ?$,1nl(B)
- ("\\\"h" ?$,1mg(B)
- ("\\\"t" ?$,1nw(B)
- ("\\\"w" ?$,1ne(B)
- ("\\\"x" ?$,1nm(B)
- ("\\^" ?$,1%B(B)
- ("\\^Z" ?$,1np(B)
- ("\\^z" ?$,1nq(B)
- ("\\`" ?$,1%@(B)
- ("\\`W" ?$,1n`(B)
- ("\\`Y" ?$,1or(B)
- ("\\`w" ?$,1na(B)
- ("\\`y" ?$,1os(B)
- ("\\b" ?$,1%q(B)
- ("\\c" ?$,1%g(B)
- ("\\c{D}" ?$,1mP(B)
- ("\\c{H}" ?$,1mh(B)
- ("\\c{d}" ?$,1mQ(B)
- ("\\c{h}" ?$,1mi(B)
- ("\\d" ?$,1%c(B)
- ("\\d{A}" ?$,1o (B)
- ("\\d{B}" ?$,1mD(B)
- ("\\d{D}" ?$,1mL(B)
- ("\\d{E}" ?$,1o8(B)
- ("\\d{H}" ?$,1md(B)
- ("\\d{I}" ?$,1oJ(B)
- ("\\d{K}" ?$,1mr(B)
- ("\\d{L}" ?$,1mv(B)
- ("\\d{M}" ?$,1n"(B)
- ("\\d{N}" ?$,1n&(B)
- ("\\d{O}" ?$,1oL(B)
- ("\\d{R}" ?$,1n:(B)
- ("\\d{S}" ?$,1nB(B)
- ("\\d{T}" ?$,1nL(B)
- ("\\d{U}" ?$,1od(B)
- ("\\d{V}" ?$,1n^(B)
- ("\\d{W}" ?$,1nh(B)
- ("\\d{Y}" ?$,1ot(B)
- ("\\d{Z}" ?$,1nr(B)
- ("\\d{a}" ?$,1o!(B)
- ("\\d{b}" ?$,1mE(B)
- ("\\d{d}" ?$,1mM(B)
- ("\\d{e}" ?$,1o9(B)
- ("\\d{h}" ?$,1me(B)
- ("\\d{i}" ?$,1oK(B)
- ("\\d{k}" ?$,1ms(B)
- ("\\d{l}" ?$,1mw(B)
- ("\\d{m}" ?$,1n#(B)
- ("\\d{n}" ?$,1n'(B)
- ("\\d{o}" ?$,1oM(B)
- ("\\d{r}" ?$,1n;(B)
- ("\\d{s}" ?$,1nC(B)
- ("\\d{t}" ?$,1nM(B)
- ("\\d{u}" ?$,1oe(B)
- ("\\d{v}" ?$,1n_(B)
- ("\\d{w}" ?$,1ni(B)
- ("\\d{y}" ?$,1ou(B)
- ("\\d{z}" ?$,1ns(B)
- ("\\rq" ?$,1ry(B)
- ("\\u" ?$,1%F(B)
- ("\\v" ?$,1%L(B)
- ("\\v{L}" ?$,1 ](B)
- ("\\v{i}" ?$,1"0(B)
- ("\\v{j}" ?$,1"P(B)
- ("\\v{l}" ?$,1 ^(B)
- ("\\yen" ?,A%(B)
+ ("\\\"" ?̈)
+ ("\\\"H" ?Ḧ)
+ ("\\\"W" ?Ẅ)
+ ("\\\"X" ?Ẍ)
+ ("\\\"h" ?ḧ)
+ ("\\\"t" ?ẗ)
+ ("\\\"w" ?ẅ)
+ ("\\\"x" ?ẍ)
+ ("\\^" ?̂)
+ ("\\^Z" ?Ẑ)
+ ("\\^z" ?ẑ)
+ ("\\`" ?̀)
+ ("\\`W" ?Ẁ)
+ ("\\`Y" ?Ỳ)
+ ("\\`w" ?ẁ)
+ ("\\`y" ?ỳ)
+ ("\\b" ?̱)
+ ("\\c" ?̧)
+ ("\\c{D}" ?Ḑ)
+ ("\\c{H}" ?Ḩ)
+ ("\\c{d}" ?ḑ)
+ ("\\c{h}" ?ḩ)
+ ("\\d" ?̣)
+ ("\\d{A}" ?Ạ)
+ ("\\d{B}" ?Ḅ)
+ ("\\d{D}" ?Ḍ)
+ ("\\d{E}" ?Ẹ)
+ ("\\d{H}" ?Ḥ)
+ ("\\d{I}" ?Ị)
+ ("\\d{K}" ?Ḳ)
+ ("\\d{L}" ?Ḷ)
+ ("\\d{M}" ?Ṃ)
+ ("\\d{N}" ?Ṇ)
+ ("\\d{O}" ?Ọ)
+ ("\\d{R}" ?Ṛ)
+ ("\\d{S}" ?Ṣ)
+ ("\\d{T}" ?Ṭ)
+ ("\\d{U}" ?Ụ)
+ ("\\d{V}" ?Ṿ)
+ ("\\d{W}" ?Ẉ)
+ ("\\d{Y}" ?Ỵ)
+ ("\\d{Z}" ?Ẓ)
+ ("\\d{a}" ?ạ)
+ ("\\d{b}" ?ḅ)
+ ("\\d{d}" ?ḍ)
+ ("\\d{e}" ?ẹ)
+ ("\\d{h}" ?ḥ)
+ ("\\d{i}" ?ị)
+ ("\\d{k}" ?ḳ)
+ ("\\d{l}" ?ḷ)
+ ("\\d{m}" ?ṃ)
+ ("\\d{n}" ?ṇ)
+ ("\\d{o}" ?ọ)
+ ("\\d{r}" ?ṛ)
+ ("\\d{s}" ?ṣ)
+ ("\\d{t}" ?ṭ)
+ ("\\d{u}" ?ụ)
+ ("\\d{v}" ?ṿ)
+ ("\\d{w}" ?ẉ)
+ ("\\d{y}" ?ỵ)
+ ("\\d{z}" ?ẓ)
+ ("\\rq" ?’)
+ ("\\u" ?̆)
+ ("\\v" ?̌)
+ ("\\v{L}" ?Ľ)
+ ("\\v{i}" ?ǐ)
+ ("\\v{j}" ?ǰ)
+ ("\\v{l}" ?ľ)
+ ("\\yen" ?¥)
 
- ("\\Box" ?$,2!a(B)
- ("\\Bumpeq" ?$,1xn(B)
- ("\\Cap" ?$,1z2(B)
- ("\\Cup" ?$,1z3(B)
- ("\\Delta" ?$,1&t(B)
- ("\\Diamond" ?$,2"'(B)
- ("\\Downarrow" ?$,1wS(B)
- ("\\Gamma" ?$,1&s(B)
- ("\\H" ?$,1%K(B)
- ("\\H{o}" ?$,1 q(B)
- ("\\Im" ?$,1uQ(B)
- ("\\Join" ?$,1z((B)
- ("\\Lambda" ?$,1&{(B)
- ("\\Leftarrow" ?$,1wP(B)
- ("\\Leftrightarrow" ?$,1wT(B)
- ("\\Ll" ?$,1z8(B)
- ("\\Lleftarrow" ?$,1wZ(B)
- ("\\Longleftarrow" ?$,1wP(B)
- ("\\Longleftrightarrow" ?$,1wT(B)
- ("\\Longrightarrow" ?$,1wR(B)
- ("\\Lsh" ?$,1w0(B)
- ("\\Omega" ?$,1')(B)
- ("\\Phi" ?$,1'&(B)
- ("\\Pi" ?$,1' (B)
- ("\\Psi" ?$,1'((B)
- ("\\Re" ?$,1u\(B)
- ("\\Rightarrow" ?$,1wR(B)
- ("\\Rrightarrow" ?$,1w[(B)
- ("\\Rsh" ?$,1w1(B)
- ("\\Sigma" ?$,1'#(B)
- ("\\Subset" ?$,1z0(B)
- ("\\Supset" ?$,1z1(B)
- ("\\Theta" ?$,1&x(B)
- ("\\Uparrow" ?$,1wQ(B)
- ("\\Updownarrow" ?$,1wU(B)
- ("\\Upsilon" ?$,1'%(B)
- ("\\Vdash" ?$,1yi(B)
- ("\\Vert" ?$,1rv(B)
- ("\\Vvdash" ?$,1yj(B)
- ("\\Xi" ?$,1&~(B)
- ("\\aleph" ?$,1,p(B)
- ("\\alpha" ?$,1'1(B)
- ("\\amalg" ?$,1x0(B)
- ("\\angle" ?$,1x@(B)
- ("\\approx" ?$,1xh(B)
- ("\\approxeq" ?$,1xj(B)
- ("\\ast" ?$,1x7(B)
- ("\\asymp" ?$,1xm(B)
- ("\\backcong" ?$,1xl(B)
- ("\\backepsilon" ?$,1x-(B)
- ("\\backprime" ?$,1s5(B)
- ("\\backsim" ?$,1x](B)
- ("\\backsimeq" ?$,1z-(B)
+ ("\\Box" ?□)
+ ("\\Bumpeq" ?≎)
+ ("\\Cap" ?⋒)
+ ("\\Cup" ?⋓)
+ ("\\Delta" ?Δ)
+ ("\\Diamond" ?◇)
+ ("\\Downarrow" ?⇓)
+ ("\\Gamma" ?Γ)
+ ("\\H" ?̋)
+ ("\\H{o}" ?ő)
+ ("\\Im" ?ℑ)
+ ("\\Join" ?⋈)
+ ("\\Lambda" ?Λ)
+ ("\\Leftarrow" ?⇐)
+ ("\\Leftrightarrow" ?⇔)
+ ("\\Ll" ?⋘)
+ ("\\Lleftarrow" ?⇚)
+ ("\\Longleftarrow" ?⇐)
+ ("\\Longleftrightarrow" ?⇔)
+ ("\\Longrightarrow" ?⇒)
+ ("\\Lsh" ?↰)
+ ("\\Omega" ?Ω)
+ ("\\Phi" ?Φ)
+ ("\\Pi" ?Π)
+ ("\\Psi" ?Ψ)
+ ("\\Re" ?ℜ)
+ ("\\Rightarrow" ?⇒)
+ ("\\Rrightarrow" ?⇛)
+ ("\\Rsh" ?↱)
+ ("\\Sigma" ?Σ)
+ ("\\Subset" ?⋐)
+ ("\\Supset" ?⋑)
+ ("\\Theta" ?Θ)
+ ("\\Uparrow" ?⇑)
+ ("\\Updownarrow" ?⇕)
+ ("\\Upsilon" ?Υ)
+ ("\\Vdash" ?⊩)
+ ("\\Vert" ?‖)
+ ("\\Vvdash" ?⊪)
+ ("\\Xi" ?Ξ)
+ ("\\aleph" ?א)
+ ("\\alpha" ?α)
+ ("\\amalg" ?∐)
+ ("\\angle" ?∠)
+ ("\\approx" ?≈)
+ ("\\approxeq" ?≊)
+ ("\\ast" ?∗)
+ ("\\asymp" ?≍)
+ ("\\backcong" ?≌)
+ ("\\backepsilon" ?∍)
+ ("\\backprime" ?‵)
+ ("\\backsim" ?∽)
+ ("\\backsimeq" ?⋍)
  ("\\backslash" ?\\)
- ("\\barwedge" ?$,1y|(B)
- ("\\because" ?$,1xU(B)
- ("\\beta" ?$,1'2(B)
- ("\\beth" ?$,1,q(B)
- ("\\between" ?$,1y,(B)
- ("\\bigcap" ?$,1z"(B)
- ("\\bigcirc" ?$,2"O(B)
- ("\\bigcup" ?$,1z#(B)
- ("\\bigstar" ?$,2"e(B)
- ("\\bigtriangledown" ?$,2!}(B)
- ("\\bigtriangleup" ?$,2!s(B)
- ("\\bigvee" ?$,1z!(B)
- ("\\bigwedge" ?$,1z (B)
- ("\\blacklozenge" ?$,2%f(B)
- ("\\blacksquare" ?$,2!j(B)
- ("\\blacktriangle" ?$,2!t(B)
- ("\\blacktriangledown" ?$,2!~(B)
- ("\\blacktriangleleft" ?$,2""(B)
- ("\\blacktriangleright" ?$,2!x(B)
- ("\\bot" ?$,1ye(B)
- ("\\bowtie" ?$,1z((B)
- ("\\boxminus" ?$,1y_(B)
- ("\\boxplus" ?$,1y^(B)
- ("\\boxtimes" ?$,1y`(B)
- ("\\bullet" ?$,1s"(B)
- ("\\bumpeq" ?$,1xo(B)
- ("\\cap" ?$,1xI(B)
- ("\\cdots" ?$,1zO(B)
- ("\\centerdot" ?,A7(B)
- ("\\checkmark" ?$,2%S(B)
- ("\\chi" ?$,1'G(B)
- ("\\circ" ?$,2"+(B)
- ("\\circeq" ?$,1xw(B)
- ("\\circlearrowleft" ?$,1w:(B)
- ("\\circlearrowright" ?$,1w;(B)
- ("\\circledR" ?,A.(B)
- ("\\circledS" ?$,1H(B)
- ("\\circledast" ?$,1y[(B)
- ("\\circledcirc" ?$,1yZ(B)
- ("\\circleddash" ?$,1y](B)
- ("\\clubsuit" ?$,2#c(B)
+ ("\\barwedge" ?⊼)
+ ("\\because" ?∵)
+ ("\\beta" ?β)
+ ("\\beth" ?ב)
+ ("\\between" ?≬)
+ ("\\bigcap" ?⋂)
+ ("\\bigcirc" ?◯)
+ ("\\bigcup" ?⋃)
+ ("\\bigstar" ?★)
+ ("\\bigtriangledown" ?▽)
+ ("\\bigtriangleup" ?△)
+ ("\\bigvee" ?⋁)
+ ("\\bigwedge" ?⋀)
+ ("\\blacklozenge" ?✦)
+ ("\\blacksquare" ?▪)
+ ("\\blacktriangle" ?▴)
+ ("\\blacktriangledown" ?▾)
+ ("\\blacktriangleleft" ?◂)
+ ("\\blacktriangleright" ?▸)
+ ("\\bot" ?⊥)
+ ("\\bowtie" ?⋈)
+ ("\\boxminus" ?⊟)
+ ("\\boxplus" ?⊞)
+ ("\\boxtimes" ?⊠)
+ ("\\bullet" ?•)
+ ("\\bumpeq" ?≏)
+ ("\\cap" ?∩)
+ ("\\cdots" ?⋯)
+ ("\\centerdot" ?·)
+ ("\\checkmark" ?✓)
+ ("\\chi" ?χ)
+ ("\\circ" ?○)
+ ("\\circeq" ?≗)
+ ("\\circlearrowleft" ?↺)
+ ("\\circlearrowright" ?↻)
+ ("\\circledR" ?®)
+ ("\\circledS" ?Ⓢ)
+ ("\\circledast" ?⊛)
+ ("\\circledcirc" ?⊚)
+ ("\\circleddash" ?⊝)
+ ("\\clubsuit" ?♣)
  ("\\colon" ?:)
- ("\\coloneq" ?$,1xt(B)
- ("\\complement" ?$,1x!(B)
- ("\\cong" ?$,1xe(B)
- ("\\coprod" ?$,1x0(B)
- ("\\cup" ?$,1xJ(B)
- ("\\curlyeqprec" ?$,1z>(B)
- ("\\curlyeqsucc" ?$,1z?(B)
- ("\\curlypreceq" ?$,1y<(B)
- ("\\curlyvee" ?$,1z.(B)
- ("\\curlywedge" ?$,1z/(B)
- ("\\curvearrowleft" ?$,1w6(B)
- ("\\curvearrowright" ?$,1w7(B)
+ ("\\coloneq" ?≔)
+ ("\\complement" ?∁)
+ ("\\cong" ?≅)
+ ("\\coprod" ?∐)
+ ("\\cup" ?∪)
+ ("\\curlyeqprec" ?⋞)
+ ("\\curlyeqsucc" ?⋟)
+ ("\\curlypreceq" ?≼)
+ ("\\curlyvee" ?⋎)
+ ("\\curlywedge" ?⋏)
+ ("\\curvearrowleft" ?↶)
+ ("\\curvearrowright" ?↷)
 
- ("\\dag" ?$,1s (B)
- ("\\dagger" ?$,1s (B)
- ("\\daleth" ?$,1,s(B)
- ("\\dashv" ?$,1yc(B)
- ("\\ddag" ?$,1s!(B)
- ("\\ddagger" ?$,1s!(B)
- ("\\ddots" ?$,1zQ(B)
- ("\\delta" ?$,1'4(B)
- ("\\diamond" ?$,1z$(B)
- ("\\diamondsuit" ?$,2#b(B)
- ("\\digamma" ?$,1'\(B)
- ("\\divideontimes" ?$,1z'(B)
- ("\\doteq" ?$,1xp(B)
- ("\\doteqdot" ?$,1xq(B)
- ("\\dotplus" ?$,1x4(B)
- ("\\dotsquare" ?$,1ya(B)
- ("\\downarrow" ?$,1vs(B)
- ("\\downdownarrows" ?$,1wJ(B)
- ("\\downleftharpoon" ?$,1wC(B)
- ("\\downrightharpoon" ?$,1wB(B)
- ("\\ell" ?$,1uS(B)
- ("\\emptyset" ?$,1x%(B)
- ("\\epsilon" ?$,1'5(B)
- ("\\eqcirc" ?$,1xv(B)
- ("\\eqcolon" ?$,1xu(B)
- ("\\eqslantgtr" ?$,1z=(B)
- ("\\eqslantless" ?$,1z<(B)
- ("\\equiv" ?$,1y!(B)
- ("\\eta" ?$,1'7(B)
- ("\\euro" ?$,1tL(B)
- ("\\exists" ?$,1x#(B)
- ("\\fallingdotseq" ?$,1xr(B)
- ("\\flat" ?$,2#m(B)
- ("\\forall" ?$,1x (B)
- ("\\frac1" ?$,1v?(B)
- ("\\frac12" ?,A=(B)
- ("\\frac13" ?$,1v3(B)
- ("\\frac14" ?,A<(B)
- ("\\frac15" ?$,1v5(B)
- ("\\frac16" ?$,1v9(B)
- ("\\frac18" ?$,1v;(B)
- ("\\frac23" ?$,1v4(B)
- ("\\frac25" ?$,1v6(B)
- ("\\frac34" ?,A>(B)
- ("\\frac35" ?$,1v7(B)
- ("\\frac38" ?$,1v<(B)
- ("\\frac45" ?$,1v8(B)
- ("\\frac56" ?$,1v:(B)
- ("\\frac58" ?$,1v=(B)
- ("\\frac78" ?$,1v>(B)
- ("\\frown" ?$,1{"(B)
- ("\\gamma" ?$,1'3(B)
- ("\\ge" ?$,1y%(B)
- ("\\geq" ?$,1y%(B)
- ("\\geqq" ?$,1y'(B)
- ("\\geqslant" ?$,1y%(B)
- ("\\gets" ?$,1vp(B)
- ("\\gg" ?$,1y+(B)
- ("\\ggg" ?$,1z9(B)
- ("\\gimel" ?$,1,r(B)
- ("\\gnapprox" ?$,1zG(B)
- ("\\gneq" ?$,1y)(B)
- ("\\gneqq" ?$,1y)(B)
- ("\\gnsim" ?$,1zG(B)
- ("\\gtrapprox" ?$,1y3(B)
- ("\\gtrdot" ?$,1z7(B)
- ("\\gtreqless" ?$,1z;(B)
- ("\\gtreqqless" ?$,1z;(B)
- ("\\gtrless" ?$,1y7(B)
- ("\\gtrsim" ?$,1y3(B)
- ("\\gvertneqq" ?$,1y)(B)
- ("\\hbar" ?$,1uO(B)
- ("\\heartsuit" ?$,2#e(B)
- ("\\hookleftarrow" ?$,1w)(B)
- ("\\hookrightarrow" ?$,1w*(B)
- ("\\iff" ?$,1wT(B)
- ("\\imath" ?$,1 Q(B)
- ("\\in" ?$,1x((B)
- ("\\infty" ?$,1x>(B)
- ("\\int" ?$,1xK(B)
- ("\\intercal" ?$,1yz(B)
- ("\\iota" ?$,1'9(B)
- ("\\kappa" ?$,1':(B)
- ("\\lambda" ?$,1';(B)
- ("\\langle" ?$,1{)(B)
+ ("\\dag" ?†)
+ ("\\dagger" ?†)
+ ("\\daleth" ?ד)
+ ("\\dashv" ?⊣)
+ ("\\ddag" ?‡)
+ ("\\ddagger" ?‡)
+ ("\\ddots" ?⋱)
+ ("\\delta" ?δ)
+ ("\\diamond" ?⋄)
+ ("\\diamondsuit" ?♢)
+ ("\\digamma" ?Ϝ)
+ ("\\divideontimes" ?⋇)
+ ("\\doteq" ?≐)
+ ("\\doteqdot" ?≑)
+ ("\\dotplus" ?∔)
+ ("\\dotsquare" ?⊡)
+ ("\\downarrow" ?↓)
+ ("\\downdownarrows" ?⇊)
+ ("\\downleftharpoon" ?⇃)
+ ("\\downrightharpoon" ?⇂)
+ ("\\ell" ?ℓ)
+ ("\\emptyset" ?∅)
+ ("\\epsilon" ?ε)
+ ("\\eqcirc" ?≖)
+ ("\\eqcolon" ?≕)
+ ("\\eqslantgtr" ?⋝)
+ ("\\eqslantless" ?⋜)
+ ("\\equiv" ?≡)
+ ("\\eta" ?η)
+ ("\\euro" ?€)
+ ("\\exists" ?∃)
+ ("\\fallingdotseq" ?≒)
+ ("\\flat" ?♭)
+ ("\\forall" ?∀)
+ ("\\frac1" ?⅟)
+ ("\\frac12" ?½)
+ ("\\frac13" ?⅓)
+ ("\\frac14" ?¼)
+ ("\\frac15" ?⅕)
+ ("\\frac16" ?⅙)
+ ("\\frac18" ?⅛)
+ ("\\frac23" ?⅔)
+ ("\\frac25" ?⅖)
+ ("\\frac34" ?¾)
+ ("\\frac35" ?⅗)
+ ("\\frac38" ?⅜)
+ ("\\frac45" ?⅘)
+ ("\\frac56" ?⅚)
+ ("\\frac58" ?⅝)
+ ("\\frac78" ?⅞)
+ ("\\frown" ?⌢)
+ ("\\gamma" ?γ)
+ ("\\ge" ?≥)
+ ("\\geq" ?≥)
+ ("\\geqq" ?≧)
+ ("\\geqslant" ?≥)
+ ("\\gets" ?←)
+ ("\\gg" ?≫)
+ ("\\ggg" ?⋙)
+ ("\\gimel" ?ג)
+ ("\\gnapprox" ?⋧)
+ ("\\gneq" ?≩)
+ ("\\gneqq" ?≩)
+ ("\\gnsim" ?⋧)
+ ("\\gtrapprox" ?≳)
+ ("\\gtrdot" ?⋗)
+ ("\\gtreqless" ?⋛)
+ ("\\gtreqqless" ?⋛)
+ ("\\gtrless" ?≷)
+ ("\\gtrsim" ?≳)
+ ("\\gvertneqq" ?≩)
+ ("\\hbar" ?ℏ)
+ ("\\heartsuit" ?♥)
+ ("\\hookleftarrow" ?↩)
+ ("\\hookrightarrow" ?↪)
+ ("\\iff" ?⇔)
+ ("\\imath" ?ı)
+ ("\\in" ?∈)
+ ("\\infty" ?∞)
+ ("\\int" ?∫)
+ ("\\intercal" ?⊺)
+ ("\\iota" ?ι)
+ ("\\kappa" ?κ)
+ ("\\lambda" ?λ)
+ ("\\langle" ?〈)
  ("\\lbrace" ?{)
  ("\\lbrack" ?[)
- ("\\lceil" ?$,1zh(B)
- ("\\ldots" ?$,1s&(B)
- ("\\le" ?$,1y$(B)
- ("\\leadsto" ?$,1v}(B)
- ("\\leftarrow" ?$,1vp(B)
- ("\\leftarrowtail" ?$,1w"(B)
- ("\\leftharpoondown" ?$,1w=(B)
- ("\\leftharpoonup" ?$,1w<(B)
- ("\\leftleftarrows" ?$,1wG(B)
- ("\\leftparengtr" ?$,1{)(B)
- ("\\leftrightarrow" ?$,1vt(B)
- ("\\leftrightarrows" ?$,1wF(B)
- ("\\leftrightharpoons" ?$,1wK(B)
- ("\\leftrightsquigarrow" ?$,1w-(B)
- ("\\leftthreetimes" ?$,1z+(B)
- ("\\leq" ?$,1y$(B)
- ("\\leqq" ?$,1y&(B)
- ("\\leqslant" ?$,1y$(B)
- ("\\lessapprox" ?$,1y2(B)
- ("\\lessdot" ?$,1z6(B)
- ("\\lesseqgtr" ?$,1z:(B)
- ("\\lesseqqgtr" ?$,1z:(B)
- ("\\lessgtr" ?$,1y6(B)
- ("\\lesssim" ?$,1y2(B)
- ("\\lfloor" ?$,1zj(B)
- ("\\lhd" ?$,2"!(B)
- ("\\rhd" ?$,2!w(B)
- ("\\ll" ?$,1y*(B)
- ("\\llcorner" ?$,1z~(B)
- ("\\lnapprox" ?$,1zF(B)
- ("\\lneq" ?$,1y((B)
- ("\\lneqq" ?$,1y((B)
- ("\\lnsim" ?$,1zF(B)
- ("\\longleftarrow" ?$,1vp(B)
- ("\\longleftrightarrow" ?$,1vt(B)
- ("\\longmapsto" ?$,1w&(B)
- ("\\longrightarrow" ?$,1vr(B)
- ("\\looparrowleft" ?$,1w+(B)
- ("\\looparrowright" ?$,1w,(B)
- ("\\lozenge" ?$,2%g(B)
- ("\\lq" ?$,1rx(B)
- ("\\lrcorner" ?$,1z(B)
- ("\\ltimes" ?$,1z)(B)
- ("\\lvertneqq" ?$,1y((B)
- ("\\maltese" ?$,2%`(B)
- ("\\mapsto" ?$,1w&(B)
- ("\\measuredangle" ?$,1xA(B)
- ("\\mho" ?$,1ug(B)
- ("\\mid" ?$,1xC(B)
- ("\\models" ?$,1yg(B)
- ("\\mp" ?$,1x3(B)
- ("\\multimap" ?$,1yx(B)
- ("\\nLeftarrow" ?$,1wM(B)
- ("\\nLeftrightarrow" ?$,1wN(B)
- ("\\nRightarrow" ?$,1wO(B)
- ("\\nVDash" ?$,1yo(B)
- ("\\nVdash" ?$,1yn(B)
- ("\\nabla" ?$,1x'(B)
- ("\\napprox" ?$,1xi(B)
- ("\\natural" ?$,2#n(B)
- ("\\ncong" ?$,1xg(B)
- ("\\ne" ?$,1y (B)
- ("\\nearrow" ?$,1vw(B)
- ("\\neg" ?,A,(B)
- ("\\neq" ?$,1y (B)
- ("\\nequiv" ?$,1y"(B)
- ("\\newline" ?$,1s((B)
- ("\\nexists" ?$,1x$(B)
- ("\\ngeq" ?$,1y1(B)
- ("\\ngeqq" ?$,1y1(B)
- ("\\ngeqslant" ?$,1y1(B)
- ("\\ngtr" ?$,1y/(B)
- ("\\ni" ?$,1x+(B)
- ("\\nleftarrow" ?$,1vz(B)
- ("\\nleftrightarrow" ?$,1w.(B)
- ("\\nleq" ?$,1y0(B)
- ("\\nleqq" ?$,1y0(B)
- ("\\nleqslant" ?$,1y0(B)
- ("\\nless" ?$,1y.(B)
- ("\\nmid" ?$,1xD(B)
- ("\\not" ?$,1%x(B)
- ("\\notin" ?$,1x)(B)
- ("\\nparallel" ?$,1xF(B)
- ("\\nprec" ?$,1y@(B)
- ("\\npreceq" ?$,1z@(B)
- ("\\nrightarrow" ?$,1v{(B)
- ("\\nshortmid" ?$,1xD(B)
- ("\\nshortparallel" ?$,1xF(B)
- ("\\nsim" ?$,1xa(B)
- ("\\nsimeq" ?$,1xd(B)
- ("\\nsubset" ?$,1yD(B)
- ("\\nsubseteq" ?$,1yH(B)
- ("\\nsubseteqq" ?$,1yH(B)
- ("\\nsucc" ?$,1yA(B)
- ("\\nsucceq" ?$,1zA(B)
- ("\\nsupset" ?$,1yE(B)
- ("\\nsupseteq" ?$,1yI(B)
- ("\\nsupseteqq" ?$,1yI(B)
- ("\\ntriangleleft" ?$,1zJ(B)
- ("\\ntrianglelefteq" ?$,1zL(B)
- ("\\ntriangleright" ?$,1zK(B)
- ("\\ntrianglerighteq" ?$,1zM(B)
- ("\\nu" ?$,1'=(B)
- ("\\nvDash" ?$,1ym(B)
- ("\\nvdash" ?$,1yl(B)
- ("\\nwarrow" ?$,1vv(B)
- ("\\odot" ?$,1yY(B)
- ("\\oint" ?$,1xN(B)
- ("\\omega" ?$,1'I(B)
- ("\\ominus" ?$,1yV(B)
- ("\\oplus" ?$,1yU(B)
- ("\\oslash" ?$,1yX(B)
- ("\\otimes" ?$,1yW(B)
- ("\\par" ?$,1s)(B)
- ("\\parallel" ?$,1xE(B)
- ("\\partial" ?$,1x"(B)
- ("\\perp" ?$,1ye(B)
- ("\\phi" ?$,1'F(B)
- ("\\pi" ?$,1'@(B)
- ("\\pitchfork" ?$,1z4(B)
- ("\\prec" ?$,1y:(B)
- ("\\precapprox" ?$,1y>(B)
- ("\\preceq" ?$,1y<(B)
- ("\\precnapprox" ?$,1zH(B)
- ("\\precnsim" ?$,1zH(B)
- ("\\precsim" ?$,1y>(B)
- ("\\prime" ?$,1s2(B)
- ("\\prod" ?$,1x/(B)
- ("\\propto" ?$,1x=(B)
- ("\\psi" ?$,1'H(B)
- ("\\quad" ?$,1ra(B)
- ("\\rangle" ?$,1{*(B)
+ ("\\lceil" ?⌈)
+ ("\\ldots" ?…)
+ ("\\le" ?≤)
+ ("\\leadsto" ?↝)
+ ("\\leftarrow" ?←)
+ ("\\leftarrowtail" ?↢)
+ ("\\leftharpoondown" ?↽)
+ ("\\leftharpoonup" ?↼)
+ ("\\leftleftarrows" ?⇇)
+ ("\\leftparengtr" ?〈)
+ ("\\leftrightarrow" ?↔)
+ ("\\leftrightarrows" ?⇆)
+ ("\\leftrightharpoons" ?⇋)
+ ("\\leftrightsquigarrow" ?↭)
+ ("\\leftthreetimes" ?⋋)
+ ("\\leq" ?≤)
+ ("\\leqq" ?≦)
+ ("\\leqslant" ?≤)
+ ("\\lessapprox" ?≲)
+ ("\\lessdot" ?⋖)
+ ("\\lesseqgtr" ?⋚)
+ ("\\lesseqqgtr" ?⋚)
+ ("\\lessgtr" ?≶)
+ ("\\lesssim" ?≲)
+ ("\\lfloor" ?⌊)
+ ("\\lhd" ?◁)
+ ("\\rhd" ?▷)
+ ("\\ll" ?≪)
+ ("\\llcorner" ?⌞)
+ ("\\lnapprox" ?⋦)
+ ("\\lneq" ?≨)
+ ("\\lneqq" ?≨)
+ ("\\lnsim" ?⋦)
+ ("\\longleftarrow" ?←)
+ ("\\longleftrightarrow" ?↔)
+ ("\\longmapsto" ?↦)
+ ("\\longrightarrow" ?→)
+ ("\\looparrowleft" ?↫)
+ ("\\looparrowright" ?↬)
+ ("\\lozenge" ?✧)
+ ("\\lq" ?‘)
+ ("\\lrcorner" ?⌟)
+ ("\\ltimes" ?⋉)
+ ("\\lvertneqq" ?≨)
+ ("\\maltese" ?✠)
+ ("\\mapsto" ?↦)
+ ("\\measuredangle" ?∡)
+ ("\\mho" ?℧)
+ ("\\mid" ?∣)
+ ("\\models" ?⊧)
+ ("\\mp" ?∓)
+ ("\\multimap" ?⊸)
+ ("\\nLeftarrow" ?⇍)
+ ("\\nLeftrightarrow" ?⇎)
+ ("\\nRightarrow" ?⇏)
+ ("\\nVDash" ?⊯)
+ ("\\nVdash" ?⊮)
+ ("\\nabla" ?∇)
+ ("\\napprox" ?≉)
+ ("\\natural" ?♮)
+ ("\\ncong" ?≇)
+ ("\\ne" ?≠)
+ ("\\nearrow" ?↗)
+ ("\\neg" ?¬)
+ ("\\neq" ?≠)
+ ("\\nequiv" ?≢)
+ ("\\newline" ?
)
+ ("\\nexists" ?∄)
+ ("\\ngeq" ?≱)
+ ("\\ngeqq" ?≱)
+ ("\\ngeqslant" ?≱)
+ ("\\ngtr" ?≯)
+ ("\\ni" ?∋)
+ ("\\nleftarrow" ?↚)
+ ("\\nleftrightarrow" ?↮)
+ ("\\nleq" ?≰)
+ ("\\nleqq" ?≰)
+ ("\\nleqslant" ?≰)
+ ("\\nless" ?≮)
+ ("\\nmid" ?∤)
+ ("\\not" ?̸)
+ ("\\notin" ?∉)
+ ("\\nparallel" ?∦)
+ ("\\nprec" ?⊀)
+ ("\\npreceq" ?⋠)
+ ("\\nrightarrow" ?↛)
+ ("\\nshortmid" ?∤)
+ ("\\nshortparallel" ?∦)
+ ("\\nsim" ?≁)
+ ("\\nsimeq" ?≄)
+ ("\\nsubset" ?⊄)
+ ("\\nsubseteq" ?⊈)
+ ("\\nsubseteqq" ?⊈)
+ ("\\nsucc" ?⊁)
+ ("\\nsucceq" ?⋡)
+ ("\\nsupset" ?⊅)
+ ("\\nsupseteq" ?⊉)
+ ("\\nsupseteqq" ?⊉)
+ ("\\ntriangleleft" ?⋪)
+ ("\\ntrianglelefteq" ?⋬)
+ ("\\ntriangleright" ?⋫)
+ ("\\ntrianglerighteq" ?⋭)
+ ("\\nu" ?ν)
+ ("\\nvDash" ?⊭)
+ ("\\nvdash" ?⊬)
+ ("\\nwarrow" ?↖)
+ ("\\odot" ?⊙)
+ ("\\oint" ?∮)
+ ("\\omega" ?ω)
+ ("\\ominus" ?⊖)
+ ("\\oplus" ?⊕)
+ ("\\oslash" ?⊘)
+ ("\\otimes" ?⊗)
+ ("\\par" ?
)
+ ("\\parallel" ?∥)
+ ("\\partial" ?∂)
+ ("\\perp" ?⊥)
+ ("\\phi" ?φ)
+ ("\\pi" ?π)
+ ("\\pitchfork" ?⋔)
+ ("\\prec" ?≺)
+ ("\\precapprox" ?≾)
+ ("\\preceq" ?≼)
+ ("\\precnapprox" ?⋨)
+ ("\\precnsim" ?⋨)
+ ("\\precsim" ?≾)
+ ("\\prime" ?′)
+ ("\\prod" ?∏)
+ ("\\propto" ?∝)
+ ("\\psi" ?ψ)
+ ("\\quad" ? )
+ ("\\rangle" ?〉)
  ("\\rbrace" ?})
  ("\\rbrack" ?])
- ("\\rceil" ?$,1zi(B)
- ("\\rfloor" ?$,1zk(B)
- ("\\rightarrow" ?$,1vr(B)
- ("\\rightarrowtail" ?$,1w#(B)
- ("\\rightharpoondown" ?$,1wA(B)
- ("\\rightharpoonup" ?$,1w@(B)
- ("\\rightleftarrows" ?$,1wD(B)
- ("\\rightleftharpoons" ?$,1wL(B)
- ("\\rightparengtr" ?$,1{*(B)
- ("\\rightrightarrows" ?$,1wI(B)
- ("\\rightthreetimes" ?$,1z,(B)
- ("\\risingdotseq" ?$,1xs(B)
- ("\\rtimes" ?$,1z*(B)
- ("\\sbs" ?$,3q((B)
- ("\\searrow" ?$,1vx(B)
- ("\\setminus" ?$,1x6(B)
- ("\\sharp" ?$,2#o(B)
- ("\\shortmid" ?$,1xC(B)
- ("\\shortparallel" ?$,1xE(B)
- ("\\sigma" ?$,1'C(B)
- ("\\sim" ?$,1x\(B)
- ("\\simeq" ?$,1xc(B)
- ("\\smallamalg" ?$,1x0(B)
- ("\\smallsetminus" ?$,1x6(B)
- ("\\smallsmile" ?$,1{#(B)
- ("\\smile" ?$,1{#(B)
- ("\\spadesuit" ?$,2#`(B)
- ("\\sphericalangle" ?$,1xB(B)
- ("\\sqcap" ?$,1yS(B)
- ("\\sqcup" ?$,1yT(B)
- ("\\sqsubset" ?$,1yO(B)
- ("\\sqsubseteq" ?$,1yQ(B)
- ("\\sqsupset" ?$,1yP(B)
- ("\\sqsupseteq" ?$,1yR(B)
- ("\\square" ?$,2!a(B)
- ("\\squigarrowright" ?$,1w](B)
- ("\\star" ?$,1z&(B)
- ("\\straightphi" ?$,1'F(B)
- ("\\subset" ?$,1yB(B)
- ("\\subseteq" ?$,1yF(B)
- ("\\subseteqq" ?$,1yF(B)
- ("\\subsetneq" ?$,1yJ(B)
- ("\\subsetneqq" ?$,1yJ(B)
- ("\\succ" ?$,1y;(B)
- ("\\succapprox" ?$,1y?(B)
- ("\\succcurlyeq" ?$,1y=(B)
- ("\\succeq" ?$,1y=(B)
- ("\\succnapprox" ?$,1zI(B)
- ("\\succnsim" ?$,1zI(B)
- ("\\succsim" ?$,1y?(B)
- ("\\sum" ?$,1x1(B)
- ("\\supset" ?$,1yC(B)
- ("\\supseteq" ?$,1yG(B)
- ("\\supseteqq" ?$,1yG(B)
- ("\\supsetneq" ?$,1yK(B)
- ("\\supsetneqq" ?$,1yK(B)
- ("\\surd" ?$,1x:(B)
- ("\\swarrow" ?$,1vy(B)
- ("\\tau" ?$,1'D(B)
- ("\\therefore" ?$,1xT(B)
- ("\\theta" ?$,1'8(B)
- ("\\thickapprox" ?$,1xh(B)
- ("\\thicksim" ?$,1x\(B)
- ("\\to" ?$,1vr(B)
- ("\\top" ?$,1yd(B)
- ("\\triangle" ?$,2!u(B)
- ("\\triangledown" ?$,2!(B)
- ("\\triangleleft" ?$,2"#(B)
- ("\\trianglelefteq" ?$,1yt(B)
- ("\\triangleq" ?$,1x|(B)
- ("\\triangleright" ?$,2!y(B)
- ("\\trianglerighteq" ?$,1yu(B)
- ("\\twoheadleftarrow" ?$,1v~(B)
- ("\\twoheadrightarrow" ?$,1w (B)
- ("\\ulcorner" ?$,1z|(B)
- ("\\uparrow" ?$,1vq(B)
- ("\\updownarrow" ?$,1vu(B)
- ("\\upleftharpoon" ?$,1w?(B)
- ("\\uplus" ?$,1yN(B)
- ("\\uprightharpoon" ?$,1w>(B)
- ("\\upsilon" ?$,1'E(B)
- ("\\upuparrows" ?$,1wH(B)
- ("\\urcorner" ?$,1z}(B)
- ("\\u{i}" ?$,1 M(B)
- ("\\vDash" ?$,1yh(B)
- ("\\varkappa" ?$,1'p(B)
- ("\\varphi" ?$,1'U(B)
- ("\\varpi" ?$,1'V(B)
- ("\\varprime" ?$,1s2(B)
- ("\\varpropto" ?$,1x=(B)
- ("\\varrho" ?$,1'q(B)
- ("\\varsigma" ?$,1'B(B)
- ("\\vartheta" ?$,1'Q(B)
- ("\\vartriangleleft" ?$,1yr(B)
- ("\\vartriangleright" ?$,1ys(B)
- ("\\vdash" ?$,1yb(B)
- ("\\vdots" ?$,1zN(B)
- ("\\vee" ?$,1xH(B)
- ("\\veebar" ?$,1y{(B)
+ ("\\rceil" ?⌉)
+ ("\\rfloor" ?⌋)
+ ("\\rightarrow" ?→)
+ ("\\rightarrowtail" ?↣)
+ ("\\rightharpoondown" ?⇁)
+ ("\\rightharpoonup" ?⇀)
+ ("\\rightleftarrows" ?⇄)
+ ("\\rightleftharpoons" ?⇌)
+ ("\\rightparengtr" ?〉)
+ ("\\rightrightarrows" ?⇉)
+ ("\\rightthreetimes" ?⋌)
+ ("\\risingdotseq" ?≓)
+ ("\\rtimes" ?⋊)
+ ("\\sbs" ?﹨)
+ ("\\searrow" ?↘)
+ ("\\setminus" ?∖)
+ ("\\sharp" ?♯)
+ ("\\shortmid" ?∣)
+ ("\\shortparallel" ?∥)
+ ("\\sigma" ?σ)
+ ("\\sim" ?∼)
+ ("\\simeq" ?≃)
+ ("\\smallamalg" ?∐)
+ ("\\smallsetminus" ?∖)
+ ("\\smallsmile" ?⌣)
+ ("\\smile" ?⌣)
+ ("\\spadesuit" ?♠)
+ ("\\sphericalangle" ?∢)
+ ("\\sqcap" ?⊓)
+ ("\\sqcup" ?⊔)
+ ("\\sqsubset" ?⊏)
+ ("\\sqsubseteq" ?⊑)
+ ("\\sqsupset" ?⊐)
+ ("\\sqsupseteq" ?⊒)
+ ("\\square" ?□)
+ ("\\squigarrowright" ?⇝)
+ ("\\star" ?⋆)
+ ("\\straightphi" ?φ)
+ ("\\subset" ?⊂)
+ ("\\subseteq" ?⊆)
+ ("\\subseteqq" ?⊆)
+ ("\\subsetneq" ?⊊)
+ ("\\subsetneqq" ?⊊)
+ ("\\succ" ?≻)
+ ("\\succapprox" ?≿)
+ ("\\succcurlyeq" ?≽)
+ ("\\succeq" ?≽)
+ ("\\succnapprox" ?⋩)
+ ("\\succnsim" ?⋩)
+ ("\\succsim" ?≿)
+ ("\\sum" ?∑)
+ ("\\supset" ?⊃)
+ ("\\supseteq" ?⊇)
+ ("\\supseteqq" ?⊇)
+ ("\\supsetneq" ?⊋)
+ ("\\supsetneqq" ?⊋)
+ ("\\surd" ?√)
+ ("\\swarrow" ?↙)
+ ("\\tau" ?τ)
+ ("\\therefore" ?∴)
+ ("\\theta" ?θ)
+ ("\\thickapprox" ?≈)
+ ("\\thicksim" ?∼)
+ ("\\to" ?→)
+ ("\\top" ?⊤)
+ ("\\triangle" ?▵)
+ ("\\triangledown" ?▿)
+ ("\\triangleleft" ?◃)
+ ("\\trianglelefteq" ?⊴)
+ ("\\triangleq" ?≜)
+ ("\\triangleright" ?▹)
+ ("\\trianglerighteq" ?⊵)
+ ("\\twoheadleftarrow" ?↞)
+ ("\\twoheadrightarrow" ?↠)
+ ("\\ulcorner" ?⌜)
+ ("\\uparrow" ?↑)
+ ("\\updownarrow" ?↕)
+ ("\\upleftharpoon" ?↿)
+ ("\\uplus" ?⊎)
+ ("\\uprightharpoon" ?↾)
+ ("\\upsilon" ?υ)
+ ("\\upuparrows" ?⇈)
+ ("\\urcorner" ?⌝)
+ ("\\u{i}" ?ĭ)
+ ("\\vDash" ?⊨)
+ ("\\varkappa" ?ϰ)
+ ("\\varphi" ?ϕ)
+ ("\\varpi" ?ϖ)
+ ("\\varprime" ?′)
+ ("\\varpropto" ?∝)
+ ("\\varrho" ?ϱ)
+ ("\\varsigma" ?ς)
+ ("\\vartheta" ?ϑ)
+ ("\\vartriangleleft" ?⊲)
+ ("\\vartriangleright" ?⊳)
+ ("\\vdash" ?⊢)
+ ("\\vdots" ?⋮)
+ ("\\vee" ?∨)
+ ("\\veebar" ?⊻)
  ("\\vert" ?|)
- ("\\wedge" ?$,1xG(B)
- ("\\wp" ?$,1uX(B)
- ("\\wr" ?$,1x`(B)
- ("\\xi" ?$,1'>(B)
- ("\\zeta" ?$,1'6(B)
+ ("\\wedge" ?∧)
+ ("\\wp" ?℘)
+ ("\\wr" ?≀)
+ ("\\xi" ?ξ)
+ ("\\zeta" ?ζ)
 
- ("\\Bbb{N}" ?$,1uU(B)			; AMS commands for blackboard bold
- ("\\Bbb{P}" ?$,1uY(B)			; Also sometimes \mathbb.
- ("\\Bbb{R}" ?$,1u](B)
- ("\\Bbb{Z}" ?$,1ud(B)
- ("--" ?$,1rs(B)
- ("---" ?$,1rt(B)
- ("~" ?,A (B)				; nbsp
- ("\\mu" ?$,1'<(B)
- ("\\rho" ?$,1'A(B)
- ("\\mathscr{I}" ?$,1uP(B)			; moment of inertia
- ("\\Smiley" ?$,2#:(B)
- ("\\blacksmiley" ?$,2#;(B)
- ("\\Frowny" ?$,2#9(B)
- ("\\Letter" ?$,2%I(B)
- ("\\permil" ?$,1s0(B)
-;;; Probably not useful enough:
-;;;  ("\\Telefon" ?$,2"n(B)			; there are other possibilities
-;;;  ("\\Radioactivity" ?$,2#"(B)
-;;;  ("\Biohazard" ?$,2##(B)
-;;;  ("\\Male" ?$,2#B(B)
-;;;  ("\\Female" ?$,2#@(B)
-;;;  ("\\Lightning" ?$,2"g(B)
-;;;  ("\\Mercury" ?$,2#?(B)
-;;;  ("\\Earth" ?$,2#A(B)
-;;;  ("\\Jupiter" ?$,2#C(B)
-;;;  ("\\Saturn" ?$,2#D(B)
-;;;  ("\\Uranus" ?$,2#E(B)
-;;;  ("\\Neptune" ?$,2#F(B)
-;;;  ("\\Pluto" ?$,2#G(B)
-;;;  ("\\Sun" ?$,2"i(B)
-;;;  ("\\Writinghand" ?$,2%M(B)
-;;;  ("\\\\Yinyang" ?$,2#/(B)
-;;;  ("\\Heart" ?$,2#a(B)
- ("\\registered" ?,A.(B)
- ("\\currency" ?,A$(B)
- ("\\dh" ?,Ap(B)
- ("\\DH" ?,AP(B)
- ("\\th" ?,A~(B)
- ("\\TH" ?,A^(B)
- ("\\micro" ?,A5(B)
- ("\\lnot" ?,A,(B)
- ("\\ordfeminine" ?,A*(B)
- ("\\ordmasculine" ?,A:(B)
- ("\\lambdabar" ?$,1![(B)
- ("\\celsius" ?$,1uC(B)
+ ("\\Bbb{N}" ?ℕ)			; AMS commands for blackboard bold
+ ("\\Bbb{P}" ?ℙ)			; Also sometimes \mathbb.
+ ("\\Bbb{R}" ?ℝ)
+ ("\\Bbb{Z}" ?ℤ)
+ ("--" ?–)
+ ("---" ?—)
+ ("~" ? )				; nbsp
+ ("\\mu" ?μ)
+ ("\\rho" ?ρ)
+ ("\\mathscr{I}" ?ℐ)			; moment of inertia
+ ("\\Smiley" ?☺)
+ ("\\blacksmiley" ?☻)
+ ("\\Frowny" ?☹)
+ ("\\Letter" ?✉)
+ ("\\permil" ?‰)
+;;;  Probably not useful enough:
+;;;  ("\\Telefon" ?☎)			; there are other possibilities
+;;;  ("\\Radioactivity" ?☢)
+;;;  ("\Biohazard" ?☣)
+;;;  ("\\Male" ?♂)
+;;;  ("\\Female" ?♀)
+;;;  ("\\Lightning" ?☇)
+;;;  ("\\Mercury" ?☿)
+;;;  ("\\Earth" ?♁)
+;;;  ("\\Jupiter" ?♃)
+;;;  ("\\Saturn" ?♄)
+;;;  ("\\Uranus" ?♅)
+;;;  ("\\Neptune" ?♆)
+;;;  ("\\Pluto" ?♇)
+;;;  ("\\Sun" ?☉)
+;;;  ("\\Writinghand" ?✍)
+;;;  ("\\\\Yinyang" ?☯)
+;;;  ("\\Heart" ?♡)
+ ("\\registered" ?®)
+ ("\\currency" ?¤)
+ ("\\dh" ?ð)
+ ("\\DH" ?Ð)
+ ("\\th" ?þ)
+ ("\\TH" ?Þ)
+ ("\\micro" ?µ)
+ ("\\lnot" ?¬)
+ ("\\ordfeminine" ?ª)
+ ("\\ordmasculine" ?º)
+ ("\\lambdabar" ?ƛ)
+ ("\\celsius" ?℃)
  ;; by analogy with lq, rq:
- ("\\ldq" ?\$,1r|(B)
- ("\\rdq" ?\$,1r}(B)
- ("\\minus" ?$,1x2(B)
- ("\\defs" ?$,1xy(B)				; per fuzz/zed
-;;  ("\\sqrt[3]" ?$,1x;(B)
- ("\\llbracket" ?\$,2=Z(B) 			; stmaryrd
- ("\\rrbracket" ?\$,2=[(B) 
-;;  ("\\lbag" ?\$,2=Z(B) 			; fuzz
-;;  ("\\rbag" ?\$,2=[(B) 
- ("\\ldata" ?\$,2=J(B) 			; fuzz/zed
- ("\\rdata" ?\$,2=K(B)
+ ("\\ldq" ?\“)
+ ("\\rdq" ?\”)
+ ("\\minus" ?−)
+ ("\\defs" ?≙)				; per fuzz/zed
+;;  ("\\sqrt[3]" ?∛)
+ ("\\llbracket" ?\〚) 			; stmaryrd
+ ("\\rrbracket" ?\〛) 
+;;  ("\\lbag" ?\〚) 			; fuzz
+;;  ("\\rbag" ?\〛) 
+ ("\\ldata" ?\《) 			; fuzz/zed
+ ("\\rdata" ?\》)
+ ;; From Karl Eichwalder.
+ ("\\glq"  ?‚)
+ ("\\grq"  ?‘)
+ ("\\glqq"  ?„) ("\"`"  ?„)
+ ("\\grqq"  ?“) ("\"'"  ?“)
+ ("\\flq" ?‹)
+ ("\\frq" ?›)
+ ("\\flqq" ?«) ("\"<" ?«)
+ ("\\frqq" ?») ("\">" ?»)
  )
 
-;;; arch-tag: 3daae613-2c53-446e-a0a1-ee2e1ebed15f
+;; arch-tag: 3daae613-2c53-446e-a0a1-ee2e1ebed15f
 ;;; latin-ltx.el ends here
--- a/lib-src/ChangeLog	Sat May 01 19:23:22 2004 +0000
+++ b/lib-src/ChangeLog	Fri May 07 14:20:00 2004 +0000
@@ -1,3 +1,7 @@
+2004-05-03  Jason Rumney  <jasonr@gnu.org>
+
+	* makefile.nt: Remove.
+
 2004-04-26  Eli Zaretskii  <eliz@gnu.org>
 
 	* make-docfile.c (IS_DIRECTORY_SEP): New macro.
--- a/lib-src/makefile.nt	Sat May 01 19:23:22 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,417 +0,0 @@
-#  Makefile for GNU Emacs lib-src directory.
-#   Geoff Voelker (voelker@cs.washington.edu)
-#  Copyright (C) 1994 Free Software Foundation, Inc.
-#
-#  This file is part of GNU Emacs.
-#
-#  GNU Emacs is free software; you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation; either version 2, or (at your option)
-#  any later version.
-#
-#  GNU Emacs is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#
-#  You should have received a copy of the GNU General Public License
-#  along with GNU Emacs; see the file COPYING.  If not, write to the
-#  Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-#  Boston, MA 02111-1307, USA.
-#
-
-#
-# Sets up the system dependent macros.
-#
-!include ..\nt\makefile.def
-
-LOCAL_FLAGS	= -DWINDOWSNT -DDOS_NT -DSTDC_HEADERS=1 -DNO_LDAV=1 \
-	-DNO_ARCHIVES=1 -DHAVE_CONFIG_H=1 -I..\nt\inc -I..\src
-
-LINK_FLAGS	= $(ARCH_LDFLAGS) -debug:PARTIAL -machine:$(ARCH) -subsystem:console -entry:mainCRTStartup setargv.obj
-
-ALL	        = $(BLD)\make-docfile.exe \
-		$(BLD)\hexl.exe		\
-		$(BLD)\ctags.exe	\
-		$(BLD)\etags.exe	\
-		$(BLD)\ebrowse.exe	\
-		$(BLD)\movemail.exe
-
-
-# don't know what (if) to do with these yet...
-#
-#		$(BLD)\sorted-doc.exe	\
-#		$(BLD)\env.exe		\
-#		$(BLD)\server.exe	\
-#		$(BLD)\emacstool.exe	\
-#		$(BLD)\leditcfns.exe	\
-#		$(BLD)\emacsclient.exe	\
-#		$(BLD)\cvtmail.exe	\
-#		$(BLD)\digest-doc.exe	\
-#		$(BLD)\test-distrib.exe	\
-
-
-LIBS	      = $(BASE_LIBS)
-
-$(BLD)\make-docfile.exe: 	$(BLD)\make-docfile.obj $(BLD)\ntlib.obj
-		$(LINK) -out:$@ $(LINK_FLAGS) $(BLD)\make-docfile.obj $(BLD)\ntlib.obj $(LIBS)
-$(BLD)\hexl.exe:		$(BLD)\hexl.obj
-$(BLD)\fakemail.exe: 		$(BLD)\fakemail.obj $(BLD)\ntlib.obj
-		$(LINK) -out:$@ $(LINK_FLAGS) -debug:full $(BLD)\fakemail.obj $(BLD)\ntlib.obj $(LIBS)
-
-make-docfile:	$(BLD) $(BLD)\make-docfile.exe
-etags:		$(BLD) $(BLD)\etags.exe
-ebrowse:	$(BLD) $(BLD)\ebrowse.exe
-hexl:		$(BLD) $(BLD)\hexl.exe
-movemail:	$(BLD) $(BLD)\movemail.exe
-fakemail:	$(BLD) $(BLD)\fakemail.exe
-
-GETOPTOBJS = $(BLD)\getopt.obj $(BLD)\getopt1.obj
-GETOPTDEPS = $(GETOPTOBJS) getopt.h
-MOVEMAILOBJS =  $(BLD)\movemail.obj \
-		$(BLD)\pop.obj \
-		$(BLD)\ntlib.obj \
-		$(GETOPTOBJS)
-
-$(BLD)\movemail.exe:	$(MOVEMAILOBJS) getopt.h
-# put wsock32.lib before $(LIBS) to ensure we don't link to ws2_32.lib
-		$(LINK) -out:$@ $(LINK_FLAGS) -debug:FULL $(MOVEMAILOBJS) wsock32.lib $(LIBS)
-
-ETAGSOBJ      = $(BLD)\etags.obj \
-		$(BLD)\getopt.obj \
-		$(BLD)\getopt1.obj \
-		$(BLD)\ntlib.obj \
-		$(BLD)\regex.obj
-
-
-$(BLD)\etags.exe: 	$(ETAGSOBJ)
-		$(LINK) -out:$@ $(LINK_FLAGS) $(ETAGSOBJ) $(LIBS)
-
-
-$(BLD)\regex.obj: ../src/regex.c ../src/regex.h ../src/config.h
-		$(CC)  $(CFLAGS) -DCONFIG_BROKETS -DINHIBIT_STRING_HEADER \
-		../src/regex.c -Fo$@
-
-ETAGS_CFLAGS  = -DETAGS_REGEXPS -DHAVE_GETCWD
-$(BLD)\etags.obj: etags.c
-		$(CC) $(CFLAGS) $(ETAGS_CFLAGS) -Fo$@ etags.c
-
-CTAGSOBJ      = $(BLD)\ctags.obj \
-		$(BLD)\getopt.obj \
-		$(BLD)\getopt1.obj \
-		$(BLD)\ntlib.obj \
-		$(BLD)\regex.obj
-
-$(BLD)\ctags.exe:           ctags.c $(CTAGSOBJ)
-		$(LINK) -out:$@ $(LINK_FLAGS) $(CTAGSOBJ) $(LIBS)
-
-ctags.c:	etags.c
-		- $(DEL) ctags.c
-		copy etags.c ctags.c
-
-CTAGS_CFLAGS  = -DCTAGS $(ETAGS_CFLAGS)
-$(BLD)\ctags.obj: ctags.c
-		$(CC) $(CFLAGS) $(CTAGS_CFLAGS) -Fo$@ ctags.c
-
-EBROWSE_OBJ   = $(BLD)\ebrowse.obj \
-		$(BLD)\getopt.obj \
-		$(BLD)\getopt1.obj \
-		$(BLD)\ntlib.obj
-
-$(BLD)\ebrowse.exe:	$(EBROWSE_OBJ)
-		$(LINK) -out:$@ $(LINK_FLAGS) $(EBROWSE_OBJ) $(LIBS)
-
-$(BLD)\ebrowse.obj: ebrowse.c ..\src\config.h
-		$(CC) $(CFLAGS) -DVERSION=\"$(VERSION)\" -Fo$@ ebrowse.c
-#
-# don't know what to do with these yet...
-#
-# $(BLD)\sorted-doc.exe: 	$(BLD)\sorted-doc.obj
-# $(BLD)\yow.exe: 		$(BLD)\yow.obj
-# $(BLD)\emacstool.exe: 	$(BLD)\emacstool.obj
-# $(BLD)\leditcfns.exe: 	$(BLD)\leditcfns.obj
-# $(BLD)\server.exe: 		$(BLD)\server.obj
-# $(BLD)\cvtmail.exe: 		$(BLD)\cvtmail.obj
-# $(BLD)\digest-doc.exe: 	$(BLD)\digest-doc.obj
-# $(BLD)\emacsclient.exe: 	$(BLD)\emacsclient.obj
-# $(BLD)\test-distrib.exe: 	$(BLD)\test-distrib.obj
-
-#
-# From ..\src\makefile.nt.
-#
-obj = 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
-
-#
-# These are the lisp files that are loaded up in loadup.el
-#
-lispsource = ../lisp/
-
-FACE_SUPPORT = $(lispsource)facemenu.elc
-MOUSE_SUPPORT = $(lispsource)select.elc $(lispsource)scroll-bar.elc $(lispsource)mouse.elc
-FLOAT_SUPPORT = $(lispsource)float-sup.elc
-WINNT_SUPPORT = $(lispsource)ls-lisp.elc $(lispsource)w32-fns.elc $(lispsource)dos-w32.elc
-
-lisp= \
-	$(lispsource)abbrev.elc \
-	$(lispsource)buff-menu.elc \
-	$(lispsource)byte-run.elc \
-	$(lispsource)cus-start.el \
-	$(lispsource)custom.elc \
-	$(lispsource)disp-table.elc \
-	$(lispsource)faces.elc \
-	$(lispsource)files.elc \
-	$(lispsource)textmodes/fill.elc \
-	$(lispsource)format.elc \
-	$(FACE_SUPPORT) \
-	$(MOUSE_SUPPORT) \
-	$(FLOAT_SUPPORT) \
-	$(lispsource)frame.elc\
-	$(X_WINDOWS_SUPPORT) \
-	$(lispsource)help.elc \
-	$(lispsource)indent.elc \
-	$(lispsource)isearch.elc \
-	$(lispsource)emacs-lisp/lisp-mode.elc \
-	$(lispsource)emacs-lisp/lisp.elc \
-	$(lispsource)loadup.el \
-	$(lispsource)loaddefs.el \
-	$(lispsource)bindings.el \
-	$(lispsource)map-ynp.elc \
-	$(lispsource)menu-bar.elc \
-	$(lispsource)international/mule.elc \
-	$(lispsource)international/mule-conf.el \
-	$(lispsource)international/mule-cmds.elc \
-	$(lispsource)international/characters.elc \
-	$(lispsource)international/ccl.elc \
-	$(lispsource)international/codepage.elc \
-	$(lispsource)international/utf-8.elc \
-	$(lispsource)case-table.elc \
-	$(lispsource)language/chinese.elc \
-	$(lispsource)language/cyrillic.elc \
-	$(lispsource)language/devanagari.elc \
-	$(lispsource)language/english.elc \
-	$(lispsource)language/ethiopic.elc \
-	$(lispsource)language/european.elc \
-	$(lispsource)language/czech.elc \
-	$(lispsource)language/slovak.elc \
-	$(lispsource)language/romanian.elc \
-	$(lispsource)language/greek.elc \
-	$(lispsource)language/hebrew.elc \
-	$(lispsource)language/indian.elc \
-	$(lispsource)language/japanese.elc \
-	$(lispsource)language/korean.elc \
-	$(lispsource)language/lao.elc \
-	$(lispsource)language/thai.elc \
-	$(lispsource)language/tibetan.elc \
-	$(lispsource)language/vietnamese.elc \
-	$(lispsource)language/misc-lang.elc \
-	$(lispsource)textmodes/page.elc \
-	$(lispsource)textmodes/paragraphs.elc \
-	$(lispsource)paths.el \
-	$(lispsource)register.elc \
-	$(lispsource)replace.elc \
-	$(lispsource)simple.elc \
-	$(lispsource)startup.elc \
-	$(lispsource)subr.elc \
-	$(lispsource)term/tty-colors.elc \
-	$(lispsource)textmodes/text-mode.elc \
-	$(lispsource)vc-hooks.elc \
-	$(lispsource)ediff-hook.elc \
-	$(VMS_SUPPORT) \
-	$(MSDOS_SUPPORT) \
-	$(WINNT_SUPPORT) \
-	$(lispsource)widget.elc \
-	$(lispsource)window.elc \
-	$(lispsource)version.el
-
-
-DOC	      = DOC
-$(DOC):		$(BLD)\make-docfile.exe
-		- $(DEL) $(DOC)
-		$(BLD)\make-docfile -d ..\src $(obj) > $(DOC)
-		$(BLD)\make-docfile -d ..\src $(lisp) >> $(DOC)
-		$(CP) $(DOC) ..\etc\DOC-X
-		- mkdir ..\src\$(OBJDIR)
-		- mkdir ..\src\$(OBJDIR)\etc
-		$(CP) $(DOC) ..\src\$(OBJDIR)\etc\DOC-X
-
-{$(BLD)}.obj{$(BLD)}.exe:
-		$(LINK) -out:$@ $(LINK_FLAGS) $*.obj $(LIBS)
-
-#
-# Build the executables
-#
-all:		$(BLD) $(ALL) $(DOC)
-
-#
-# Assuming INSTALL_DIR is defined, build and install emacs in it.
-#
-INSTALL_FILES = $(ALL)
-install:	$(INSTALL_FILES)
-		- mkdir $(INSTALL_DIR)\bin
-		$(CP) $(BLD)\etags.exe $(INSTALL_DIR)\bin
-		$(CP) $(BLD)\ctags.exe $(INSTALL_DIR)\bin
-		$(CP) $(BLD)\hexl.exe $(INSTALL_DIR)\bin
-		$(CP) $(BLD)\movemail.exe $(INSTALL_DIR)\bin
-		- mkdir $(INSTALL_DIR)\etc
-		$(CP) $(DOC) $(INSTALL_DIR)\etc
-
-# Don't install fakemail by default, as it sends mail into a
-# blackhole if /bin/mail is not installed.
-#		$(CP) $(BLD)\fakemail.exe $(INSTALL_DIR)\bin
-
-#
-# Maintenance
-#
-clean:;		- $(DEL) *~ *.pdb DOC*
-		- $(DEL) *.orig *.rej *.crlf ctags.c
-		- $(DEL_TREE) deleted
-		- $(DEL_TREE) obj
-		- $(DEL_TREE) obj-spd
-
-#
-# Headers we would preprocess if we could.
-#
-..\src\config.h:	..\nt\$(CONFIG_H)
-			$(CP) $** $@
-..\src\paths.h:		..\nt\paths.h
-			$(CP) $** $@
-
-### DEPENDENCIES ###
-
-EMACS_ROOT	= ..
-SRC		= .
-
-$(BLD)\b2m.obj : \
-	$(SRC)\b2m.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\lib-src\..\src\config.h
-
-$(BLD)\ctags.obj : \
-	$(SRC)\ctags.c \
-	$(EMACS_ROOT)\nt\inc\sys\param.h \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\lib-src\..\src\config.h \
-	$(SRC)\ntlib.h \
-	$(SRC)\getopt.h
-
-$(BLD)\cvtmail.obj : \
-	$(SRC)\cvtmail.c
-
-$(BLD)\digest-doc.obj : \
-	$(SRC)\digest-doc.c
-
-$(BLD)\emacsclient.obj : \
-	$(SRC)\emacsclient.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\lib-src\..\src\config.h
-
-$(BLD)\emacstool.obj : \
-	$(SRC)\emacstool.c \
-	$(EMACS_ROOT)\nt\inc\sys\file.h
-
-$(BLD)\etags.obj : \
-	$(SRC)\etags.c \
-	$(EMACS_ROOT)\nt\inc\sys\param.h \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\lib-src\..\src\config.h \
-	$(SRC)\ntlib.h \
-	$(SRC)\getopt.h
-
-$(BLD)\fakemail.obj : \
-	$(SRC)\fakemail.c \
-	$(SRC)\ntlib.h \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\lib-src\..\src\config.h \
-	$(EMACS_ROOT)\nt\inc\pwd.h
-
-$(BLD)\getdate.obj : \
-	$(SRC)\getdate.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(MSTOOLS_SYS)\types.h
-
-$(BLD)\getopt.obj : \
-	$(SRC)\getopt.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\ntlib.h \
-	$(SRC)\getopt.h
-
-$(BLD)\getopt1.obj : \
-	$(SRC)\getopt1.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\getopt.h
-
-$(BLD)\hexl.obj : \
-	$(SRC)\hexl.c
-
-$(BLD)\leditcfns.obj : \
-	$(SRC)\leditcfns.c
-
-$(BLD)\make-docfile.obj : \
-	$(SRC)\make-docfile.c \
-	$(EMACS_ROOT)\src\config.h
-
-$(BLD)\make-path.obj : \
-	$(SRC)\make-path.c
-
-$(BLD)\movemail.obj : \
-	$(SRC)\movemail.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\lib-src\..\src\config.h \
-	$(EMACS_ROOT)\nt\inc\sys\file.h \
-	$(EMACS_ROOT)\lib-src\..\src\syswait.h \
-	$(EMACS_ROOT)\nt\inc\pwd.h \
-	$(SRC)\ntlib.h
-		$(CC) $(CFLAGS) -DUSG -Fo$@ movemail.c
-
-$(BLD)\ntlib.obj : \
-	$(SRC)\ntlib.c \
-	$(SRC)\ntlib.h \
-	$(EMACS_ROOT)\nt\inc\pwd.h
-
-$(BLD)\pop.obj : \
-	$(SRC)\pop.c \
-	$(SRC)\pop.h \
-	$(SRC)\ntlib.h
-
-$(BLD)\profile.obj : \
-	$(SRC)\profile.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\lib-src\..\src\config.h \
-	$(EMACS_ROOT)\lib-src\..\src\systime.h
-
-$(BLD)\qsort.obj : \
-	$(SRC)\qsort.c
-
-$(BLD)\sorted-doc.obj : \
-	$(SRC)\sorted-doc.c
-
-$(BLD)\tcp.obj : \
-	$(SRC)\tcp.c
-
-$(BLD)\test-distrib.obj : \
-	$(SRC)\test-distrib.c
-
-$(BLD)\timer.obj : \
-	$(SRC)\timer.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\lib-src\..\src\config.h
-
-$(BLD)\yow.obj : \
-	$(SRC)\yow.c \
-	$(EMACS_ROOT)\lib-src\..\src\paths.h
-
-# arch-tag: 59e1b54b-4cc2-4086-bb0b-ecfad4b683e9
--- a/lisp/ChangeLog	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/ChangeLog	Fri May 07 14:20:00 2004 +0000
@@ -1,3 +1,273 @@
+
+2004-05-07  Juanma Barranquero  <lektu@terra.es>
+
+	* emacs-lisp/byte-run.el (make-obsolete, make-obsolete-variable):
+	Make argument names match their use in docstring.
+
+	* subr.el (lambda): Add arglist description to docstring.
+	(declare): Fix typo in docstring.
+	(open-network-stream): Fix docstring.
+	(process-kill-without-query): Fix docstring and add obsolescence
+	info.
+	(last, butlast, nbutlast): Make arguments match their use in docstring.
+	(insert-buffer-substring-no-properties): Likewise.
+	(insert-buffer-substring-as-yank): Likewise.
+	(split-string): Fix docstring.
+
+	* emacs-lisp/re-builder.el (reb-auto-update): Fix typo in docstring.
+
+2004-05-06  Nick Roberts  <nickrob@gnu.org>
+
+	* progmodes/gdb-ui.el: Improve/extend documentation strings.
+	Fit first sentence on one line for apropos-command.
+
+2004-05-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	Changes largely merged in from Dave Love's code.
+	* progmodes/python.el: Doc fixes.
+	(python-mode-map): Add python-complete-symbol.
+	(python-comment-line-p, python-beginning-of-string): Use syntax-ppss.
+	(python-comment-indent, python-complete-symbol)
+	(python-symbol-completions, python-partial-symbol)
+	(python-try-complete): New.
+	(python-indent-line): Remove optional arg.  Use python-block-end-p.
+	(python-check): Bind compilation-error-regexp-alist.
+	(inferior-python-mode): Use rx.  Move keybindings to top level.
+	Set comint-input-filter.
+	(python-preoutput-filter): Use rx.
+	(python-input-filter): Re-introduce.
+	(python-proc): Start new process if necessary.
+	Check python-buffer non-nil.
+	(view-return-to-alist): Defvar.
+	(python-send-receive): New.
+	(python-eldoc-function): Use it.
+	(python-mode-running): Don't defvar.
+	(python-mode): Set comment-indent-function.
+	Maybe update hippie-expand-try-functions-list.
+	(python-indentation-levels): Initialize differently.
+	(python-block-end-p): New.
+	(python-indent-line): Use it.
+	(python-compilation-regexp-alist): Augment.
+	(run-python): Import `emacs' module to Python rather than loading
+	code directly.  Set python-buffer differently.
+	(python-send-region): Use emacs.eexecfile.  Fix orig-start calculation.
+	Use python-proc.
+	(python-send-command): Go to end of comint buffer.
+	(python-load-file): Use python-proc, emacs.eimport.
+	(python-describe-symbol): Simplify interactive form.
+	Use emacs.help.  Do use temp-buffer-show-hook.
+	Call print-help-return-message.
+	(hippie-exp): Require when compiling.
+	(python-preoutput-continuation): Use rx.
+
+	* diff-mode.el (diff-make-unified): Fix regexp.
+
+2004-05-06  Romain Francoise  <romain@orebokech.com>  (tiny change)
+
+	* ibuffer.el (ibuffer-redisplay-engine): Do not remove folded
+	filter groups from the buffer when rebuilding the Ibuffer buffer
+	and `ibuffer-show-empty-filter-groups' is nil.
+
+2004-05-06  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
+
+	* ps-print.el (ps-print-quote): Call ps-value-string.
+	(ps-setup): Call ps-comment-string.
+	(ps-value-string, ps-comment-string): New funs.
+
+2004-05-06  Juanma Barranquero  <lektu@terra.es>
+
+	* help-fns.el (help-argument-name): Default to bold; don't inherit
+	from font-lock-variable-name-face.
+	(help-do-arg-highlight): Grok also ARGth occurrences in the docstring.
+
+	* ehelp.el (electric-help-command-loop): Check whether the last
+	character is visible, not (point-max).
+
+2004-05-05  Kenichi Handa  <handa@m17n.org>
+
+	* descr-text.el (describe-char): Copy the character with text
+	properties and overlays into the first line, and call
+	describe-text-properties on it.
+
+2004-05-05  Stephen Eglen  <stephen@anc.ed.ac.uk>
+
+	* iswitchb.el (iswitchb-global-map): Fix typo.
+	Remove unwanted ###autoloads from source file.
+
+2004-05-05  Lars Hansen  <larsh@math.ku.dk>
+
+	* wdired.el (wdired-change-to-wdired-mode): Quote wdired-mode-hook
+	in run-hooks.  Use substitute-command-keys in message.
+	(wdired-abort-changes): Add message.
+
+2004-05-03  Michael Mauger  <mmaug@yahoo.com>
+
+	* emacs/lisp/progmodes/sql.el (sql-xemacs-p, sql-emacs19-p)
+	(sql-emacs20-p): Remove.
+	(sql-mode-syntax-table): Use shared GNU EMacs/XEmacs syntax.
+	(sql-builtin-face, sql-doc-face): Remove.
+	(sql-mode-ansi-font-lock-keywords)
+	(sql-mode-oracle-font-lock-keywords)
+	(sql-mode-postgres-font-lock-keywords)
+	(sql-mode-linter-font-lock-keywords)
+	(sql-mode-ms-font-lock-keywords)
+	(sql-mode-mysql-font-lock-keywords): Use standard fonts.
+	(sql-product-font-lock): Fix font-lock reset when font rules change.
+	(sql-highlight-product): Remove incorrect font-lock reset logic.
+
+2004-05-04  Jonathan Yavner  <jyavner@member.fsf.org>
+
+	* ses.el (ses-set-parameter): Fix typo.
+
+2004-05-04  Kim F. Storm  <storm@cua.dk>
+
+	* ido.el (ido-read-internal): Fix call to read-file-name for edit.
+	Must expand directory for completion to work; and don't mess with
+	process-environment.
+	(ido-read-file-name): If command has ido property, don't use ido
+	if value is ignore, or read as directory if value is dir.
+	Set ido ignore property for dired-do-rename command.
+
+2004-05-04  Juanma Barranquero  <lektu@terra.es>
+
+	* help-fns.el (help-argument-name): New face, inheriting from
+	font-lock-variable-name-face, to highlight function arguments in
+	`describe-function' and `describe-key'.
+	(help-do-arg-highlight): Auxiliary function to highlight a given
+	list of arguments in a string.
+	(help-highlight-arguments): Highlight the function arguments and
+	all uses of them in the docstring.
+	(describe-function-1): Use it. Do docstring output via `insert',
+	not 'princ', so text attributes are preserved.
+
+	* winner.el (winner-mode-map): Move winner-undo and winner-redo to
+	C-c <left> and C-c <right>, respectively (the previous bindings
+	conflict with prev-buffer, next-buffer).
+
+	* ehelp.el (electric-help-command-loop, electric-help-undefined)
+	(electric-help-help): Check against unmapped commands.
+
+2004-05-03  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+	* textmodes/bibtex.el (bibtex-progress-message): Fix docstring.
+	(bibtex-entry-update): New command bound to C-c C-u.
+	(bibtex-text-in-string): Fix regexp.
+	(bibtex-assoc-of-regexp): Remove.
+	(bibtex-progress-message): Fix docstring.
+	(bibtex-inside-field): Use if.
+	(bibtex-assoc-regexp): New function.
+	(bibtex-format-entry): Make code more robust so that it formats
+	also old entries.
+	(bibtex-autokey-demangle-title): Merge with obsolete function
+	bibtex-assoc-of-regexp.
+	(bibtex-field-list): New function.
+	(bibtex-entry): Use bibtex-field-list.
+	(bibtex-parse-entry): Fix docstring.
+	(bibtex-print-help-message): Use bibtex-field-list.
+	(bibtex-make-field): Use bibtex-field-list.
+	(bibtex-entry-index): Bugfix. Return crossref key if required.
+	(bibtex-lessp): Fix docstring.
+
+2004-05-03  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* select.el (xselect-convert-to-string): Move comment to intended line.
+
+2004-05-03  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
+
+	* toolbar/tool-bar.el (tool-bar-setup): Use lookup-key for
+	cut/copy/paste in case menu-bar-enable-clipboard is in effect.
+
+2004-05-03  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
+
+	* term/x-win.el (x-clipboard-yank): Don't exit on error from
+	x-get-selection.
+
+2004-05-03  Jason Rumney  <jasonr@gnu.org>
+
+	* makefile.nt: Remove.
+
+2004-05-03  Kim F. Storm  <storm@cua.dk>
+
+	* emulation/cua-base.el (cua--update-indications): Fix last change.
+	(cua-mode): Deactivate mark when cua-mode is enabled.
+
+2004-05-02  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* select.el (xselect-convert-to-string): Bind `inhibit-read-only' to t.
+
+2004-05-03  Nick Roberts  <nickrob@gnu.org>
+
+	* progmodes/gdb-ui.el (gud-watch, gdb-display-buffer)
+	(gdb-display-source-buffer, gdb-put-breakpoint-icon)
+	(gdb-remove-breakpoint-icons, gdb-assembler-custom): Look for
+	window over visible frames.
+	(gdb-goto-breakpoint): Make buffer display file at breakpoint.
+
+2004-05-02  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* progmodes/compile.el (compilation-gcpro): New var.
+	(compilation-fake-loc): Use it.
+	(compilation-forget-errors): Reset it.
+
+2004-05-02  Dan Nicolaescu  <dann@ics.uci.edu>
+
+	* diff-mode.el (diff-header-face, diff-file-header-face):
+	Use min-colors.
+
+2004-05-02  Roland Winkler  <Roland.Winkler@physik.uni-erlangen.de>
+
+	* textmodes/bibtex.el (bibtex-sort-buffer): Remove error message.
+	(bibtex-clean-entry): Disentangle code.
+	(bibtex-realign): New function.
+	(bibtex-reformat): Use mapcar and bibtex-realign.  Do not use
+	bibtex-beginning-of-first-entry and bibtex-skip-to-valid-entry.
+	Remove undocumented optional arg called-by-convert-alien.
+	(bibtex-convert-alien): Use bibtex-realign.  Use bibtex-reformat
+	for sorting instead of bibtex-sort-buffer.
+
+2004-05-02  Eli Zaretskii  <eliz@gnu.org>
+
+	* progmodes/compile.el (compilation-start): In the
+	no-async-subprocesses branch, call sit-for to give redisplay a
+	chance to show the updated process status in the mode line, and
+	fontify the buffer explicitly after the process exits.
+
+2004-05-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* progmodes/python.el (python-compilation-line-number): Remove.
+	(python-compilation-regexp-alist): Don't use it any more.
+	(python-orig-start, python-input-filter): Remove.
+	(inferior-python-mode): Don't set up comint-input-filter-functions.
+	(python-send-region): Use compilation-fake-loc.
+
+	* progmodes/compile.el (compilation-messages-start): New var.
+	(compilation-mode): Don't setup next-error-function here.
+	(compilation-setup): Set it up here instead (for minor modes as well).
+	Make compilation-messages-start buffer local.
+	(compilation-next-error-function): Use it.
+	(compilation-forget-errors): Set compilation-messages-start.
+
+2004-05-01  Luc Teirlinck  <teirllm@auburn.edu>
+
+	* ielm.el (ielm-prompt-read-only): Update docstring.
+
+	* comint.el (comint-prompt-read-only): Update docstring.
+	(comint-update-fence, comint-kill-whole-line)
+	(comint-kill-region): New functions.
+
+	* simple.el (kill-whole-line): Use "p" instead of "P" in
+	interactive form.
+
+2004-05-01  Juanma Barranquero  <lektu@terra.es>
+
+	* help-fns.el (help-add-fundoc-usage): Use %S instead of %s to
+	format arglist so default values in CL-style argument lists are
+	correctly shown.
+
+2004-05-01  Jason Rumney  <jasonr@gnu.org>
+
+	* term/w32-win.el (w32-drag-n-drop): Use x-dnd.el functions.
+
 2004-05-01  Kenichi Handa  <handa@m17n.org>
 
 	* international/titdic-cnv.el (miscdic-convert): Don't generate a
@@ -35,7 +305,7 @@
 	* delsel.el: Don't put `delete-selection' property
 	on `insert-parentheses' symbol to take advantage of
 	region handling in `insert-pair' function.
-	Suggested by Stephan Stahl <stahl@eos.franken.de>
+	Suggested by Stephan Stahl <stahl@eos.franken.de>.
 
 2004-04-30  Kim F. Storm  <storm@cua.dk>
 
@@ -65,7 +335,7 @@
 	New defmacro.
 	(cua-upcase-rectangle, cua-downcase-rectangle): Use it.
 	(cua-upcase-initials-rectangle, cua-capitalize-rectangle):
-	New commands (suggested by Jordan Breeding)..
+	New commands (suggested by Jordan Breeding).
 
 2004-04-30  Juanma Barranquero  <lektu@terra.es>
 
@@ -5779,7 +6049,7 @@
 2003-08-12  Juri Linkov  <juri@jurta.org>  (tiny change)
 
 	* simple.el (backward-word, forward-to-indentation)
-	(backward-to-indentation):  Argument changed to optional.
+	(backward-to-indentation): Argument changed to optional.
 	(next-line, previous-line): Use `or' instead of `unless'.
 
 2003-08-12  Vinicius Jose Latorre  <viniciusjl@ig.com.br>
@@ -5961,7 +6231,7 @@
 	behaviour of `calendar-day-name' and `calendar-month-name' functions.
 	(diary-name-pattern): Use abbrev arrays, rather than fixing
 	abbrevs at three chars.  Calling syntax change.
-	(mark-diary-entries):  Adapt for new behaviours of
+	(mark-diary-entries): Adapt for new behaviours of
 	`diary-name-pattern' and `calendar-make-alist' functions.
 	(fancy-diary-font-lock-keywords): Adapt for new behaviour of
 	`diary-name-pattern' function.
@@ -6412,7 +6682,7 @@
 
 2003-07-08  Markus Rost  <rost@math.ohio-state.edu>
 
-	* subr.el (dolist, dotimes):  Doc fix.
+	* subr.el (dolist, dotimes): Doc fix.
 
 2003-07-08  Kim F. Storm  <storm@cua.dk>
 
--- a/lisp/comint.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/comint.el	Fri May 07 14:20:00 2004 +0000
@@ -173,8 +173,25 @@
 
 (defcustom comint-prompt-read-only nil
   "If non-nil, the comint prompt is read only.
+The read only region includes the newline before the prompt.
 This does not affect existing prompts.
-Certain derived modes may override this option."
+Certain derived modes may override this option.
+
+If you set this option to t, then the safe way to temporarily
+override the read-only-ness of comint prompts is to call
+`comint-kill-whole-line' or `comint-kill-region' with no
+narrowing in effect.  This way you will be certain that none of
+the remaining prompts will be accidentally messed up.  You may
+wish to put something like the following in your `.emacs' file:
+
+\(add-hook 'comint-mode-hook
+	  '(lambda ()
+	     (define-key comint-mode-map \"\C-w\" 'comint-kill-region)
+	     (define-key comint-mode-map [C-S-backspace]
+	       'comint-kill-whole-line)))
+
+If you sometimes use comint-mode on text-only terminals or with `emacs-nw',
+you might wish to use another binding for `comint-kill-whole-line'."
   :type 'boolean
   :group 'comint
   :version "21.4")
@@ -2311,6 +2328,83 @@
     (just-one-space)))
 
 
+;; Support editing with `comint-prompt-read-only' set to t.
+
+(defun comint-update-fence ()
+  "Update read-only status of newline before point.
+The `fence' read-only property is used to indicate that a newline
+is read-only for no other reason than to \"fence off\" a
+following front-sticky read-only region.  This is used to
+implement comint read-only prompts.  If the text after a newline
+changes, the read-only status of that newline may need updating.
+That is what this function does.
+
+This function does nothing if point is not at the beginning of a
+line, or is at the beginning of the accessible portion of the buffer.
+Otherwise, if the character after point has a front-sticky
+read-only property, then the preceding newline is given a
+read-only property of `fence', unless it already is read-only.
+If the character after point does not have a front-sticky
+read-only property, any read-only property of `fence' on the
+preceding newline is removed."
+  (let* ((pt (point)) (lst (get-text-property pt 'front-sticky)))
+    (and (bolp)
+	 (not (bobp))
+	 (if (and (get-text-property pt 'read-only)
+		  (if (listp lst) (memq 'read-only lst) t))
+	     (unless (get-text-property (1- pt) 'read-only)
+	       (put-text-property (1- pt) pt 'read-only 'fence))
+	   (when (eq (get-text-property (1- pt) 'read-only) 'fence)
+	     (remove-list-of-text-properties (1- pt) pt '(read-only)))))))
+
+(defun comint-kill-whole-line (&optional arg)
+  "Kill current line, ignoring read-only and field properties.
+With prefix arg, kill that many lines starting from the current line.
+If arg is negative, kill backward.  Also kill the preceding newline,
+instead of the trailing one.  \(This is meant to make C-x z work well
+with negative arguments.)
+If arg is zero, kill current line but exclude the trailing newline.
+The read-only status of newlines is updated with `comint-update-fence',
+if necessary."
+  (interactive "p")
+  (let ((inhibit-read-only t) (inhibit-field-text-motion t))
+    (kill-whole-line arg)
+    (when (>= arg 0) (comint-update-fence))))
+
+(defun comint-kill-region (beg end &optional yank-handler)
+  "Like `kill-region', but ignores read-only properties, if safe.
+This command assumes that the buffer contains read-only
+\"prompts\" which are regions with front-sticky read-only
+properties at the beginning of a line, with the preceding newline
+being read-only to protect the prompt.  This is true of the
+comint prompts if `comint-prompt-read-only' is non-nil.  This
+command will not delete the region if this would create mutilated
+or out of place prompts.  That is, if any part of a prompt is
+deleted, the entire prompt must be deleted and all remaining
+prompts should stay at the beginning of a line.  If this is not
+the case, this command just calls `kill-region' with all
+read-only properties intact.  The read-only status of newlines is
+updated using `comint-update-fence', if necessary."
+  (interactive "r")
+  (save-excursion
+    (let* ((true-beg (min beg end))
+	   (true-end (max beg end))
+	   (beg-bolp (progn (goto-char true-beg) (bolp)))
+	   (beg-lst (get-text-property true-beg 'front-sticky))
+	   (beg-bad (and (get-text-property true-beg 'read-only)
+			 (if (listp beg-lst) (memq 'read-only beg-lst) t)))
+	   (end-bolp (progn (goto-char true-end) (bolp)))
+	   (end-lst (get-text-property true-end 'front-sticky))
+	   (end-bad (and (get-text-property true-end 'read-only)
+			 (if (listp end-lst) (memq 'read-only end-lst) t))))
+      (if (or (and (not beg-bolp) (or beg-bad end-bad))
+	      (and (not end-bolp) end-bad))
+	  (kill-region beg end yank-handler)
+	(let ((inhibit-read-only t))
+	  (kill-region beg end yank-handler)
+	  (comint-update-fence))))))
+
+
 ;; Support for source-file processing commands.
 ;;============================================================================
 ;; Many command-interpreters (e.g., Lisp, Scheme, Soar) have
--- a/lisp/descr-text.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/descr-text.el	Fri May 07 14:20:00 2004 +0000
@@ -465,6 +465,7 @@
   (if (>= pos (point-max))
       (error "No character follows specified position"))
   (let* ((char (char-after pos))
+	 (char-string (buffer-substring pos (1+ pos)))
 	 (charset (char-charset char))
 	 (buffer (current-buffer))
 	 (composition (find-composition pos nil nil t))
@@ -474,16 +475,11 @@
 			    standard-display-table))
 	 (disp-vector (and display-table (aref display-table char)))
 	 (multibyte-p enable-multibyte-characters)
-	 text-prop-description
+	 (overlays (mapcar #'(lambda (o) (overlay-properties o))
+			   (overlays-at pos)))
 	 item-list max-width unicode)
     (if (eq charset 'unknown)
-	(setq item-list
-	      `(("character"
-		 ,(format "%s (0%o, %d, 0x%x) -- invalid character code"
-			  (if (< char 256)
-			      (single-key-description char)
-			    (char-to-string char))
-			  char char char))))
+	(setq item-list '("character"))
 
       (if (or (< char 256)
 	      (memq 'mule-utf-8 (find-coding-systems-region pos (1+ pos)))
@@ -491,14 +487,7 @@
 	  (setq unicode (or (get-char-property pos 'untranslated-utf-8)
 			    (encode-char char 'ucs))))
       (setq item-list
-	    `(("character"
-	       ,(format "%s (0%o, %d, 0x%x%s)" (if (< char 256)
-						 (single-key-description char)
-					       (char-to-string char))
-			char char char
-			(if unicode
-			    (format ", U+%04X" unicode)
-			  "")))
+	    `(("character")
 	      ("charset"
 	       ,(symbol-name charset)
 	       ,(format "(%s)" (charset-description charset)))
@@ -583,18 +572,31 @@
 		      (cons (list "Unicode data" " ") unicodedata))))))
     (setq max-width (apply #'max (mapcar #'(lambda (x) (length (car x)))
 					 item-list)))
-    (setq text-prop-description
-	  (with-temp-buffer
-	    (let ((buf (current-buffer)))
-	      (save-excursion
-		(set-buffer buffer)
-		(describe-text-properties pos buf)))
-	    (buffer-string)))
+    (pop item-list)
 
     (with-output-to-temp-buffer "*Help*"
       (with-current-buffer standard-output
 	(set-buffer-multibyte multibyte-p)
 	(let ((formatter (format "%%%ds:" max-width)))
+	  (insert (format formatter "character") " ")
+	  (setq pos (point))
+	  (insert char-string
+		  (format " (`%s', 0%o, %d, 0x%x"
+			  (if (< char 256)
+			      (single-key-description char)
+			    (char-to-string char))
+			  char char char)
+		  (if (eq charset 'unknown)
+		      ") -- invalid character code\n"
+		    (if unicode
+			(format ", U+%04X)\n" unicode)
+		      ")\n")))
+	  (mapc #'(lambda (props)
+		    (let ((o (make-overlay pos (1+ pos))))
+		      (while props
+			(overlay-put o (car props) (nth 1 props))
+			(setq props (cddr props)))))
+		overlays)
 	  (dolist (elt item-list)
 	    (when (cadr elt)
 	      (insert (format formatter (car elt)))
@@ -665,7 +667,7 @@
 	  (insert "\nSee the variable `reference-point-alist' for "
 		  "the meaning of the rule.\n"))
 
-	(insert text-prop-description)
+	(describe-text-properties pos (current-buffer))
 	(describe-text-mode)))))
 
 (defalias 'describe-char-after 'describe-char)
--- a/lisp/diff-mode.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/diff-mode.el	Fri May 07 14:20:00 2004 +0000
@@ -169,27 +169,27 @@
 ;;;;
 
 (defface diff-header-face
-  '((((type tty pc) (class color) (background light))
+  '((((class color) (min-colors 88) (background light))
+     (:background "grey85"))
+    (((class color) (min-colors 88) (background dark))
+     (:background "grey45"))
+    (((class color) (background light))
      (:foreground "blue1" :weight bold))
-    (((type tty pc) (class color) (background dark))
+    (((class color) (background dark))
      (:foreground "green" :weight bold))
-    (((class color) (background light))
-     (:background "grey85"))
-    (((class color) (background dark))
-     (:background "grey45"))
     (t (:weight bold)))
   "`diff-mode' face inherited by hunk and index header faces.")
 (defvar diff-header-face 'diff-header-face)
 
 (defface diff-file-header-face
-  '((((type tty pc) (class color) (background light))
+  '((((class color) (min-colors 88) (background light))
+     (:background "grey70" :weight bold))
+    (((class color) (min-colors 88) (background dark))
+     (:background "grey60" :weight bold))
+    (((class color) (background light))
      (:foreground "yellow" :weight bold))
-    (((type tty pc) (class color) (background dark))
+    (((class color) (background dark))
      (:foreground "cyan" :weight bold))
-    (((class color) (background light))
-     (:background "grey70" :weight bold))
-    (((class color) (background dark))
-     (:background "grey60" :weight bold))
     (t (:weight bold)))			; :height 1.3
   "`diff-mode' face used to highlight file header lines.")
 (defvar diff-file-header-face 'diff-file-header-face)
@@ -976,7 +976,7 @@
   "Turn context diffs into unified diffs if applicable."
   (if (save-excursion
 	(goto-char (point-min))
-	(looking-at "\\*\\*\\* "))
+	(and (looking-at diff-hunk-header-re) (eq (char-after) ?*)))
       (let ((mod (buffer-modified-p)))
 	(unwind-protect
 	    (diff-context->unified (point-min) (point-max))
--- a/lisp/ehelp.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/ehelp.el	Fri May 07 14:20:00 2004 +0000
@@ -1,6 +1,6 @@
 ;;; ehelp.el --- bindings for electric-help mode
 
-;; Copyright (C) 1986, 1995, 2000, 2001 Free Software Foundation, Inc.
+;; Copyright (C) 1986, 1995, 2000, 2001, 2004 Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: help, extensions
@@ -200,13 +200,13 @@
 		   (progn (setq unread-command-events nil)
 			  (throw 'exit t)))))
     (let (up down both neither
-	  (standard (and (eq (key-binding " ")
+	  (standard (and (eq (key-binding " " nil t)
 			     'scroll-up)
-			 (eq (key-binding "\^?")
+			 (eq (key-binding "\^?" nil t)
 			     'scroll-down)
-			 (eq (key-binding "q")
+			 (eq (key-binding "q" nil t)
 			     'electric-help-exit)
-			 (eq (key-binding "r")
+			 (eq (key-binding "r" nil t)
 			     'electric-help-retain))))
       (Electric-command-loop
         'exit
@@ -215,7 +215,7 @@
 	              ;beginning-of-buffer - otherwise pos-visible-in-window-p
 	              ;will yield a wrong result.
 	  (let ((min (pos-visible-in-window-p (point-min)))
-		(max (pos-visible-in-window-p (point-max))))
+		(max (pos-visible-in-window-p (1- (point-max)))))
 	    (cond (isearch-mode 'noprompt)
 		  ((and min max)
 		   (cond (standard "Press q to exit, r to retain ")
@@ -272,7 +272,7 @@
   (interactive)
   (error "%s is undefined -- Press %s to exit"
 	 (mapconcat 'single-key-description (this-command-keys) " ")
-	 (if (eq (key-binding "q") 'electric-help-exit)
+	 (if (eq (key-binding "q" nil t) 'electric-help-exit)
 	     "q"
 	   (substitute-command-keys "\\[electric-help-exit]"))))
 
@@ -280,10 +280,10 @@
 ;>>> this needs to be hairified (recursive help, anybody?)
 (defun electric-help-help ()
   (interactive)
-  (if (and (eq (key-binding "q") 'electric-help-exit)
-	   (eq (key-binding " ") 'scroll-up)
-	   (eq (key-binding "\^?") 'scroll-down)
-	   (eq (key-binding "r") 'electric-help-retain))
+  (if (and (eq (key-binding "q" nil t) 'electric-help-exit)
+	   (eq (key-binding " " nil t) 'scroll-up)
+	   (eq (key-binding "\^?" nil t) 'scroll-down)
+	   (eq (key-binding "r" nil t) 'electric-help-retain))
       (message "SPC scrolls up, DEL scrolls down, q exits burying help buffer, r exits")
     (message "%s" (substitute-command-keys "\\[scroll-up] scrolls up, \\[scroll-down] scrolls down, \\[electric-help-exit] exits burying help buffer, \\[electric-help-retain] exits")))
   (sit-for 2))
--- a/lisp/emacs-lisp/byte-run.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/emacs-lisp/byte-run.el	Fri May 07 14:20:00 2004 +0000
@@ -76,21 +76,21 @@
      (eval-and-compile
        (put ',name 'byte-optimizer 'byte-compile-inline-expand))))
 
-(defun make-obsolete (fn new &optional when)
+(defun make-obsolete (function new &optional when)
   "Make the byte-compiler warn that FUNCTION is obsolete.
 The warning will say that NEW should be used instead.
 If NEW is a string, that is the `use instead' message.
 If provided, WHEN should be a string indicating when the function
 was first made obsolete, for example a date or a release number."
   (interactive "aMake function obsolete: \nxObsoletion replacement: ")
-  (let ((handler (get fn 'byte-compile)))
+  (let ((handler (get function 'byte-compile)))
     (if (eq 'byte-compile-obsolete handler)
-	(setq handler (nth 1 (get fn 'byte-obsolete-info)))
-      (put fn 'byte-compile 'byte-compile-obsolete))
-    (put fn 'byte-obsolete-info (list new handler when)))
-  fn)
+	(setq handler (nth 1 (get function 'byte-obsolete-info)))
+      (put function 'byte-compile 'byte-compile-obsolete))
+    (put function 'byte-obsolete-info (list new handler when)))
+  function)
 
-(defun make-obsolete-variable (var new &optional when)
+(defun make-obsolete-variable (variable new &optional when)
   "Make the byte-compiler warn that VARIABLE is obsolete.
 The warning will say that NEW should be used instead.
 If NEW is a string, that is the `use instead' message.
@@ -102,8 +102,8 @@
       (if (equal str "") (error ""))
       (intern str))
     (car (read-from-string (read-string "Obsoletion replacement: ")))))
-  (put var 'byte-obsolete-variable (cons new when))
-  var)
+  (put variable 'byte-obsolete-variable (cons new when))
+  variable)
 
 (put 'dont-compile 'lisp-indent-hook 0)
 (defmacro dont-compile (&rest body)
--- a/lisp/emacs-lisp/re-builder.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/emacs-lisp/re-builder.el	Fri May 07 14:20:00 2004 +0000
@@ -494,7 +494,7 @@
 
 (defun reb-auto-update (beg end lenold &optional force)
   "Called from `after-update-functions' to update the display.
-BEG END and LENOLD are passed in from the hook.
+BEG, END and LENOLD are passed in from the hook.
 An actual update is only done if the regexp has changed or if the
 optional fourth argument FORCE is non-nil."
   (let ((prev-valid reb-valid-string)
--- a/lisp/emulation/cua-base.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/emulation/cua-base.el	Fri May 07 14:20:00 2004 +0000
@@ -1039,7 +1039,7 @@
 	(set-cursor-color color))
     (if (and type
 	     (symbolp type)
-	     (not (eq type (frame-parameter nil 'cursor-type))))
+	     (not (eq type default-cursor-type)))
 	(setq default-cursor-type type))))
 
 
@@ -1336,6 +1336,7 @@
 	(delete-selection-mode -1))
     (if (and (boundp 'pc-selection-mode) pc-selection-mode)
 	(pc-selection-mode -1))
+    (cua--deactivate)
     (setq transient-mark-mode (and cua-mode
 				   (if cua-highlight-region-shift-only
 				       (not cua--explicit-region-start)
--- a/lisp/gnus/ChangeLog	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/gnus/ChangeLog	Fri May 07 14:20:00 2004 +0000
@@ -1,3 +1,7 @@
+2004-05-06  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* nnimap.el (nnimap-demule): Avoid string-as-multibyte.
+
 2004-03-27  Juanma Barranquero  <lektu@terra.es>
 
 	* gnus-srvr.el (gnus-server-prepare): Remove spurious call to `cdr'.
--- a/lisp/gnus/nnimap.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/gnus/nnimap.el	Fri May 07 14:20:00 2004 +0000
@@ -1,5 +1,6 @@
 ;;; nnimap.el --- imap backend for Gnus
-;; Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+
+;; Copyright (C) 1998,1999,2000,01,02,2004  Free Software Foundation, Inc.
 
 ;; Author: Simon Josefsson <jas@pdc.kth.se>
 ;;         Jim Radford <radford@robby.caltech.edu>
@@ -671,9 +672,12 @@
     (nnoo-status-message 'nnimap server)))
 
 (defun nnimap-demule (string)
-  (funcall (if (and (fboundp 'string-as-multibyte)
-		    (subrp (symbol-function 'string-as-multibyte)))
-	       'string-as-multibyte
+  ;; BEWARE: we used to use string-as-multibyte here which is braindead
+  ;; because it will turn accidental emacs-mule-valid byte sequences
+  ;; into multibyte chars.  --Stef
+  (funcall (if (and (fboundp 'string-to-multibyte)
+		    (subrp (symbol-function 'string-to-multibyte)))
+	       'string-to-multibyte
 	     'identity)
 	   (or string "")))
 
@@ -1383,5 +1387,5 @@
 
 (provide 'nnimap)
 
-;;; arch-tag: 2b001f20-3ff9-4094-a0ad-46807c1ba70b
+;; arch-tag: 2b001f20-3ff9-4094-a0ad-46807c1ba70b
 ;;; nnimap.el ends here
--- a/lisp/help-fns.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/help-fns.el	Fri May 07 14:20:00 2004 +0000
@@ -181,7 +181,7 @@
   (unless (stringp doc) (setq doc "Not documented"))
   (if (or (string-match "\n\n(fn\\(\\( .*\\)?)\\)\\'" doc) (eq arglist t))
       doc
-    (format "%s%s%s" doc
+    (format "%s%s%S" doc
 	    (if (string-match "\n?\n\\'" doc)
 		(if (< (- (match-end 0) (match-beginning 0)) 2) "\n" "")
 	      "\n\n")
@@ -237,6 +237,43 @@
 	    (concat "src/" file)
 	  file)))))
 
+(defface help-argument-name '((t (:weight bold)))
+  "Face to highlight function arguments in docstrings.")
+
+(defun help-do-arg-highlight (doc args)
+  (while args
+    (let ((arg (prog1 (car args) (setq args (cdr args)))))
+      (setq doc (replace-regexp-in-string
+                 (concat "\\<\\(" arg "\\)\\(?:es\\|s\\|th\\)?\\>")
+                 (propertize arg 'face 'help-argument-name)
+                 doc t t 1))))
+  doc)
+
+(defun help-highlight-arguments (usage doc &rest args)
+  (when usage
+    (let ((case-fold-search nil)
+          (next (not args)))
+      ;; Make a list of all arguments
+      (with-temp-buffer
+        (insert usage)
+        (goto-char (point-min))
+        ;; Make a list of all arguments
+        (while next
+          (if (not (re-search-forward " \\([\\[(]?\\)\\([^] &)\.]+\\)" nil t))
+              (setq next nil)
+            (setq args (cons (match-string 2) args))
+            (when (string= (match-string 1) "(")
+              ;; A pesky CL-style optional argument with default value,
+              ;; so let's skip over it
+              (search-backward "(")
+              (goto-char (scan-sexps (point) 1)))))
+        ;; Highlight aguments in the USAGE string
+        (setq usage (help-do-arg-highlight (buffer-string) args)))
+      ;; Highlight arguments in the DOC string
+      (setq doc (and doc (help-do-arg-highlight doc args)))
+      ;; Return value is like the one from help-split-fundoc, but highlighted
+      (cons usage doc))))
+
 ;;;###autoload
 (defun describe-function-1 (function)
   (let* ((def (if (symbolp function)
@@ -339,7 +376,7 @@
 	  ;; FIXME: This list can be very long (f.ex. for self-insert-command).
 	  ;; If there are many, remove them from KEYS.
 	  (if (< (length non-modified-keys) 10)
-	      (princ (mapconcat 'key-description keys ", "))	      
+	      (princ (mapconcat 'key-description keys ", "))
 	    (dolist (key non-modified-keys)
 	      (setq keys (delq key keys)))
 	    (if keys
@@ -353,40 +390,44 @@
     (let* ((arglist (help-function-arglist def))
 	   (doc (documentation function))
 	   (usage (help-split-fundoc doc function)))
-      ;; If definition is a keymap, skip arglist note.
-      (unless (keymapp def)
-	(princ (cond
-		(usage (setq doc (cdr usage)) (car usage))
-		((listp arglist) (help-make-usage function arglist))
-		((stringp arglist) arglist)
-		;; Maybe the arglist is in the docstring of the alias.
-		((let ((fun function))
-		   (while (and (symbolp fun)
-			       (setq fun (symbol-function fun))
-			       (not (setq usage (help-split-fundoc
-						 (documentation fun)
-						 function)))))
-		   usage)
-		 (car usage))
- 		((or (stringp def)
- 		     (vectorp def))
-		 (format "\nMacro: %s" (format-kbd-macro def)))
-		(t "[Missing arglist.  Please make a bug report.]")))
-	(terpri))
-      (let ((obsolete (and
-		       ;; function might be a lambda construct.
-		       (symbolp function)
-		       (get function 'byte-obsolete-info))))
-	(when obsolete
-	  (terpri)
-	  (princ "This function is obsolete")
-	  (if (nth 2 obsolete) (princ (format " since %s" (nth 2 obsolete))))
-	  (princ ";") (terpri)
-	  (princ (if (stringp (car obsolete)) (car obsolete)
-		   (format "use `%s' instead." (car obsolete))))
-	  (terpri)))
-      (terpri)
-      (princ (or doc "Not documented.")))))
+      (with-current-buffer standard-output
+        ;; If definition is a keymap, skip arglist note.
+        (unless (keymapp def)
+          (let* ((use (cond
+                        (usage (setq doc (cdr usage)) (car usage))
+                        ((listp arglist)
+                         (format "%S" (help-make-usage function arglist)))
+                        ((stringp arglist) arglist)
+                        ;; Maybe the arglist is in the docstring of the alias.
+                        ((let ((fun function))
+                           (while (and (symbolp fun)
+                                       (setq fun (symbol-function fun))
+                                       (not (setq usage (help-split-fundoc
+                                                         (documentation fun)
+                                                         function)))))
+                           usage)
+                         (car usage))
+                        ((or (stringp def)
+                             (vectorp def))
+                         (format "\nMacro: %s" (format-kbd-macro def)))
+                        (t "[Missing arglist.  Please make a bug report.]")))
+                 (high (help-highlight-arguments use doc)))
+            (insert (car high) "\n")
+            (setq doc (cdr high))))
+        (let ((obsolete (and
+                         ;; function might be a lambda construct.
+                         (symbolp function)
+                         (get function 'byte-obsolete-info))))
+          (when obsolete
+            (princ "\nThis function is obsolete")
+            (when (nth 2 obsolete)
+              (insert (format " since %s" (nth 2 obsolete))))
+            (insert ";\n"
+                    (if (stringp (car obsolete)) (car obsolete)
+                      (format "use `%s' instead." (car obsolete)))
+                    "\n"))
+          (insert "\n"
+                  (or doc "Not documented.")))))))
 
 
 ;; Variables
--- a/lisp/ibuffer.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/ibuffer.el	Fri May 07 14:20:00 2004 +0000
@@ -1,6 +1,6 @@
 ;;; ibuffer.el --- operate on buffers like dired
 
-;; Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
+;; Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
 
 ;; Author: Colin Walters <walters@verbum.org>
 ;; Maintainer: John Paul Wallington <jpw@gnu.org>
@@ -2166,6 +2166,7 @@
 				  (member name ibuffer-hidden-filter-groups)))
 		   (bmarklist (cdr group)))
 	      (unless (and (null bmarklist)
+			   (not disabled)
 			   ext-loaded
 			   (null ibuffer-show-empty-filter-groups))
 		(ibuffer-insert-filter-group
--- a/lisp/ido.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/ido.el	Fri May 07 14:20:00 2004 +0000
@@ -1,6 +1,6 @@
 ;;; ido.el --- interactively do things with buffers and files.
 
-;; Copyright (C) 1996-2003  Free Software Foundation, Inc.
+;; Copyright (C) 1996-2004  Free Software Foundation, Inc.
 
 ;; Author: Kim F. Storm <storm@cua.dk>
 ;; Based on: iswitchb by Stephen Eglen <stephen@cns.ed.ac.uk>
@@ -30,8 +30,9 @@
 ;; for ido-switch-buffer and found the inspiration for ido-find-file.
 ;; The ido package would never have existed without his work.
 
-;; Also thanks to Klaus Berndl, Rohit Namjoshi, Robert Fenk, Alex Schroeder,
-;; Bill Benedetto, and Stephen Eglen for bug fixes and improvements.
+;; Also thanks to Klaus Berndl, Rohit Namjoshi, Robert Fenk, Alex
+;; Schroeder, Bill Benedetto, Stephen Eglen, and many others for bug
+;; fixes and improvements.
 
 ;;; History
 
@@ -55,7 +56,7 @@
 ;; so I invented a common "ido-" namespace for the merged packages.
 ;;
 ;; This version is based on ido.el version 1.57 released on
-;; gnu.emacs.sources adapted for emacs 21.4 to use command remapping
+;; gnu.emacs.sources adapted for emacs 21.5 to use command remapping
 ;; and optionally hooking the read-buffer and read-file-name functions.
 ;;
 ;; Prefix matching was added by Klaus Berndl <klaus.berndl@sdm.de> based on
@@ -1667,8 +1668,7 @@
        ((memq ido-exit '(edit chdir))
 	(cond
 	 ((memq ido-cur-item '(file dir))
-	  (let* ((process-environment (cons "HOME=/" process-environment)) ;; cheat read-file-name
-		 (read-file-name-function nil)
+	  (let* ((read-file-name-function nil)
 		 (edit (eq ido-exit 'edit))
 		 (d ido-current-directory)
 		 (f ido-text-init)
@@ -1676,7 +1676,9 @@
 	    (setq ido-text-init "")
 	    (while new
 	      (setq new (if edit
-			     (read-file-name (concat prompt "[EDIT] ") d (concat d f) nil f)
+			     (read-file-name (concat prompt "[EDIT] ")
+					     (expand-file-name d)
+					     (concat d f) nil f)
 			   f)
 		    d (or (file-name-directory new) "/")
 		    f (file-name-nondirectory new)
@@ -3807,15 +3809,19 @@
 
 ;;; Helper functions for other programs
 
+(put 'dired-do-rename 'ido 'ignore)
+
 ;;;###autoload
 (defun ido-read-file-name (prompt &optional dir default-filename mustmatch initial predicate)
   "Read file name, prompting with PROMPT and completing in directory DIR.
 See `read-file-name' for additional parameters."
   (cond
   ((or (eq predicate 'file-directory-p)
+       (eq (get this-command 'ido) 'dir)
        (memq this-command ido-read-file-name-as-directory-commands))
    (ido-read-directory-name prompt dir default-filename mustmatch initial))
-  ((and (not (memq this-command ido-read-file-name-non-ido))
+  ((and (not (eq (get this-command 'ido) 'ignore))
+	(not (memq this-command ido-read-file-name-non-ido))
 	(or (null predicate) (eq predicate 'file-exists-p)))
    (let* (filename
 	  ido-saved-vc-hb
--- a/lisp/ielm.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/ielm.el	Fri May 07 14:20:00 2004 +0000
@@ -51,9 +51,30 @@
 
 (defcustom ielm-prompt-read-only t
   "If non-nil, the IELM prompt is read only.
+The read only region includes the newline before the prompt.
 Setting this variable does not affect existing IELM runs.
 This works by setting the buffer-local value of `comint-prompt-read-only'.
-Setting that value directly affects new prompts in the current buffer."
+Setting that value directly affects new prompts in the current buffer.
+
+If this option is enabled, then the safe way to temporarily
+override the read-only-ness of ielm prompts is to call
+`comint-kill-whole-line' or `comint-kill-region' with no
+narrowing in effect.  This way you will be certain that none of
+the remaining prompts will be accidentally messed up.  You may
+wish to put something like the following in your `.emacs' file:
+
+\(add-hook 'ielm-mode-hook
+	  '(lambda ()
+	     (define-key ielm-map \"\C-w\" 'comint-kill-region)
+	     (define-key ielm-map [C-S-backspace]
+	       'comint-kill-whole-line)))
+
+If you set `comint-prompt-read-only' to t, you might wish to use
+`comint-mode-hook' and `comint-mode-map' instead of
+`ielm-mode-hook' and `ielm-map'.  That will affect all comint
+buffers, including ielm buffers.  If you sometimes use ielm on
+text-only terminals or with `emacs -nw', you might wish to use
+another binding for `comint-kill-whole-line'."
   :type 'boolean
   :group 'ielm
   :version "21.4")
--- a/lisp/iswitchb.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/iswitchb.el	Fri May 07 14:20:00 2004 +0000
@@ -464,7 +464,7 @@
     (substitute-key-definition 'display-buffer ; C-x 4 C-o
 			       'iswitchb-display-buffer map global-map)
     map)
-  "Global keymap for `iswtichb-mode'.")
+  "Global keymap for `iswitchb-mode'.")
 
 (defvar iswitchb-history nil
   "History of buffers selected using `iswitchb-buffer'.")
@@ -571,7 +571,6 @@
 		 (iswitchb-possible-new-buffer buf)))
 	   ))))
 
-;;;###autoload
 (defun iswitchb-read-buffer (prompt &optional default require-match)
   "Replacement for the built-in `read-buffer'.
 Return the name of a buffer selected.
@@ -1073,7 +1072,6 @@
       (get-buffer-window buffer 0) ; better than 'visible
       )))
 
-;;;###autoload
 (defun iswitchb-default-keybindings ()
   "Set up default keybindings for `iswitchb-buffer'.
 Call this function to override the normal bindings.  This function also
@@ -1087,7 +1085,6 @@
   (global-set-key "\C-x4\C-o" 'iswitchb-display-buffer)
   (global-set-key "\C-x5b" 'iswitchb-buffer-other-frame))
 
-;;;###autoload
 (defun iswitchb-buffer ()
   "Switch to another buffer.
 
@@ -1100,7 +1097,6 @@
   (setq iswitchb-method iswitchb-default-method)
   (iswitchb))
 
-;;;###autoload
 (defun iswitchb-buffer-other-window ()
   "Switch to another buffer and show it in another window.
 The buffer name is selected interactively by typing a substring.
@@ -1109,7 +1105,6 @@
   (setq iswitchb-method 'otherwindow)
   (iswitchb))
 
-;;;###autoload
 (defun iswitchb-display-buffer ()
   "Display a buffer in another window but don't select it.
 The buffer name is selected interactively by typing a substring.
@@ -1118,7 +1113,6 @@
   (setq iswitchb-method 'display)
   (iswitchb))
 
-;;;###autoload
 (defun iswitchb-buffer-other-frame ()
   "Switch to another buffer and show it in another frame.
 The buffer name is selected interactively by typing a substring.
--- a/lisp/makefile.nt	Sat May 01 19:23:22 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,284 +0,0 @@
-#  Hacked up Nmake makefile for GNU Emacs
-#   Geoff Voelker (voelker@cs.washington.edu)
-#  Copyright (c) 1994 Free Software Foundation, Inc.
-#
-#  This file is part of GNU Emacs.
-#
-#  GNU Emacs is free software; you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation; either version 2, or (at your option)
-#  any later version.
-#
-#  GNU Emacs is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#
-#  You should have received a copy of the GNU General Public License
-#  along with GNU Emacs; see the file COPYING.  If not, write to the
-#  Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-#  Boston, MA 02111-1307, USA.
-#
-
-!include ..\nt\makefile.def
-
-all:
-
-#lisp=$(MAKEDIR:\=/)
-lisp=.
-
-# You can specify a different executable on the make command line,
-# e.g. "make EMACS=../src/emacs ...".
-
-EMACS = ..\bin\emacs.exe
-
-# Command line flags for Emacs.  This must include --multibyte,
-# otherwise some files will not compile.
-
-EMACSOPT = -batch --no-init-file --no-site-file --multibyte
-
-lisptagsfiles1 = $(lisp)/*.el
-lisptagsfiles2 = $(lisp)/*/*.el
-ETAGS = ..\lib-src\$(BLD)\etags
-
-# Files which should not be compiled.
-# - emacs-lisp/cl-specs.el:  only contains `def-edebug-spec's so there's
-#   no point compiling it, although it doesn't hurt.
-
-DONTCOMPILE = \
-	$(lisp)/cus-load.el \
-	$(lisp)/cus-start.el \
-	$(lisp)/emacs-lisp/cl-specs.el \
-	$(lisp)/eshell/esh-maint.el \
-	$(lisp)/eshell/esh-groups.el \
-	$(lisp)/finder-inf.el \
-	$(lisp)/forms-d2.el \
-	$(lisp)/forms-pass.el \
-	$(lisp)/generic-x.el \
-	$(lisp)/international/latin-1.el \
-	$(lisp)/international/latin-2.el \
-	$(lisp)/international/latin-3.el \
-	$(lisp)/international/latin-4.el \
-	$(lisp)/international/latin-5.el \
-	$(lisp)/international/latin-8.el \
-	$(lisp)/international/latin-9.el \
-	$(lisp)/international/mule-conf.el \
-	$(lisp)/loaddefs.el \
-	$(lisp)/loadup.el \
-	$(lisp)/mail/blessmail.el \
-	$(lisp)/patcomp.el \
-	$(lisp)/paths.el \
-	$(lisp)/play/bruce.el \
-	$(lisp)/subdirs.el \
-	$(lisp)/term/internal.el \
-	$(lisp)/term/AT386.el  \
-	$(lisp)/term/apollo.el \
-	$(lisp)/term/bobcat.el \
-	$(lisp)/term/iris-ansi.el \
-	$(lisp)/term/keyswap.el \
-	$(lisp)/term/linux.el \
-	$(lisp)/term/lk201.el \
-	$(lisp)/term/news.el \
-	$(lisp)/term/vt102.el \
-	$(lisp)/term/vt125.el \
-	$(lisp)/term/vt200.el \
-	$(lisp)/term/vt201.el \
-	$(lisp)/term/vt220.el \
-	$(lisp)/term/vt240.el \
-	$(lisp)/term/vt300.el \
-	$(lisp)/term/vt320.el \
-	$(lisp)/term/vt400.el \
-	$(lisp)/term/vt420.el \
-	$(lisp)/term/wyse50.el \
-	$(lisp)/term/xterm.el \
-	$(lisp)/version.el
-
-# Files to compile before others during a bootstrap.  This is done
-# to speed up the bootstrap process.
-
-COMPILE_FIRST = \
-	$(lisp)/emacs-lisp/byte-opt.el \
-	$(lisp)/emacs-lisp/bytecomp.el \
-	$(lisp)/subr.el
-
-# The actual Emacs command run in the targets below.
-
-emacs = $(EMACS) $(EMACSOPT)
-
-# Common command to find subdirectories
-
-# setwins=subdirs=`find $$wd -type d -print`; \
-# 	for file in $$subdirs; do \
-# 	   case $$file in */Old | */RCS | */CVS | */CVS/* | */=* ) ;; \
-# 		*) wins="$$wins $$file" ;; \
-# 	   esac; \
-#         done
-
-# Have to define the list of subdirs manually
-WINS=\
-	calendar \
-	emacs-lisp \
-	emulation \
-	eshell \
-	gnus \
-	international \
-	language \
-	mail \
-	mh-e \
-	net \
-	play \
-	progmodes \
-	term \
-	textmodes
-
-doit:
-
-cus-load.el:
-	touch $@
-custom-deps: cus-load.el doit
-	@echo Directories: $(WINS)
-	$(emacs) -l cus-dep --eval "(setq find-file-hooks nil)" -f custom-make-dependencies $(lisp) $(WINS)
-
-finder-inf.el:
-	echo (provide 'finder-inf)>> $@
-
-finder-data: finder-inf.el doit
-	@echo Directories: $(WINS)
-	$(emacs) -l finder -f finder-compile-keywords-make-dist $(lisp) $(WINS)
-
-loaddefs.el:
-	echo ;;; loaddefs.el --- automatically extracted autoloads> $@
-	echo ;;; Code:>> $@
-	echo >> $@
-	echo ;;; Local Variables:>> $@
-	echo ;;; version-control: never>> $@
-	echo ;;; no-byte-compile: t>> $@
-	echo ;;; no-update-autoloads: t>> $@
-	echo ;;; End:>> $@
-	echo ;;; loaddefs.el ends here>> $@
-
-autoloads: loaddefs.el doit
-	@echo Directories: $(WINS)
-	$(emacs) -l autoload --eval "(setq find-file-hooks nil generated-autoload-file \"$(lisp)/loaddefs.el\")" -f batch-update-autoloads $(lisp) $(WINS)
-
-subdirs.el:
-	$(MAKE) $(MFLAGS) -f makefile.nt update-subdirs
-update-subdirs: doit
-	@set QWINS=
-	@for %d in ($(WINS)) do if not (%d)==(term) set QWINS=%QWINS% "%d"
-	echo ;; In load-path, after this directory should come> subdirs.el
-	echo ;; certain of its subdirectories.  Here we specify them.>> subdirs.el
-	echo (normal-top-level-add-to-load-path '(%QWINS%))>> subdirs.el
-
-updates: update-subdirs autoloads finder-data custom-deps
-
-TAGS: $(lisptagsfiles1) $(lisptagsfiles2)
-	$(ETAGS) $(lisptagsfiles1) $(lisptagsfiles2)
-
-TAGS-LISP: $(lispsource)$(lisptagsfiles1) $(lispsource)$(lisptagsfiles2)
-	$(ETAGS) -o TAGS-LISP $(lispsource)$(lisptagsfiles1) $(lispsource)$(lisptagsfiles2)
-
-.SUFFIXES: .elc .el
-
-.el.elc:
-	-$(emacs) -f batch-byte-compile $<
-
-$(DONTCOMPILE:.el=.elc):
-	-$(DEL) $@
-
-# Compile all Lisp files, except those from DONTCOMPILE.  This
-# compiles files unconditionally.  All .elc files are made writable
-# before compilation in case we checked out read-only (CVS option -r).
-# Files MUST be compiled one by one.  If we compile several files in a
-# row we can't make sure that the compilation environment is clean.
-# We also set the load-path of the Emacs used for compilation to the
-# current directory and its subdirectories, to make sure require's and
-# load's in the files being compiled find the right files.
-
-compile-files: subdirs.el doit
-#	-for %f in ($(lisp) $(WINS)) do for %g in (%f\*.elc) do @attrib -r %g
-	for %f in ($(COMPILE_FIRST)) do $(emacs) -f batch-byte-compile %f
-	for %f in ($(lisp) $(WINS)) do for %g in (%f/*.el) do $(emacs) -f batch-byte-compile %f/%g
-
-# Backup compiled Lisp files in elc.tar.gz.  If that file already
-# exists, make a backup of it.
-
-backup-compiled-files:
-	-mv $(lisp)/elc.tar.gz $(lisp)/elc.tar.gz~
-	-tar czf $(lisp)/elc.tar.gz $(lisp)/*.elc $(lisp)/*/*.elc
-
-# Compile Lisp files, but save old compiled files first.
-
-compile: backup-compiled-files compile-files
-
-# Recompile all Lisp files which are newer than their .elc files.
-# Note that this doesn't create .elc files.  It only recompiles if an
-# .elc is present.
-
-recompile: doit
-	$(emacs) -f batch-byte-recompile-directory .
-
-# Prepare a bootstrap in the lisp subdirectory.  Build loaddefs.el,
-# because it's not sure it's up-to-date, and if it's not, that might
-# lead to errors during the bootstrap because something fails to
-# autoload as expected.  Remove compiled Lisp files so that
-# bootstrap-emacs will be built from sources only.
-
-bootstrap-clean:
-	if exist $(EMACS) $(MAKE) $(MFLAGS) -f makefile.nt autoloads
-	-for %f in ($(lisp) $(WINS)) do for %g in (%f\*.elc) do @$(DEL) %g
-
-# Generate/update files for the bootstrap process.
-
-bootstrap: autoloads compile-files custom-deps
-
-#
-# Assuming INSTALL_DIR is defined, copy the elisp files to it
-# Windows 95 makes this harder than it should be.
-#
-install:
-	- mkdir $(INSTALL_DIR)\lisp
-	- $(DEL) .\same-dir.tst
-	- $(DEL) $(INSTALL_DIR)\lisp\same-dir.tst
-	echo SameDirTest > $(INSTALL_DIR)\lisp\same-dir.tst
-!ifdef COPY_LISP_SOURCE
-	if not exist .\same-dir.tst $(CP_DIR) . $(INSTALL_DIR)\lisp
-!else
-	if not exist .\same-dir.tst $(CP_DIR) *.elc $(INSTALL_DIR)\lisp
-	if not exist .\same-dir.tst $(CP) cus-load.el $(INSTALL_DIR)\lisp
-	if not exist .\same-dir.tst $(CP) cus-start.el $(INSTALL_DIR)\lisp
-	if not exist .\same-dir.tst $(CP) emacs-lisp\cl-specs.el $(INSTALL_DIR)\lisp\emacs-lisp
-	if not exist .\same-dir.tst $(CP) eshell\esh-maint.el $(INSTALL_DIR)\lisp\eshell
-	if not exist .\same-dir.tst $(CP) eshell\esh-groups.el $(INSTALL_DIR)\lisp\eshell
-	if not exist .\same-dir.tst $(CP) finder-inf.el $(INSTALL_DIR)\lisp
-	if not exist .\same-dir.tst $(CP) forms*.el $(INSTALL_DIR)\lisp
-	if not exist .\same-dir.tst $(CP) generic-x.el $(INSTALL_DIR)\lisp
-	if not exist .\same-dir.tst $(CP) patcomp.el $(INSTALL_DIR)\lisp
-	if not exist .\same-dir.tst $(CP) subdirs.el $(INSTALL_DIR)\lisp
-	if not exist .\same-dir.tst $(CP) version.el $(INSTALL_DIR)\lisp
-	if not exist .\same-dir.tst $(CP) mail\blessmail.el $(INSTALL_DIR)\lisp\mail
-	if not exist .\same-dir.tst $(CP) play\bruce.el $(INSTALL_DIR)\lisp\play
-	if not exist .\same-dir.tst $(CP) international\latin-*.el $(INSTALL_DIR)\lisp\international
-	if not exist .\same-dir.tst $(CP) international\mule-conf.el $(INSTALL_DIR)\lisp\international
-	- $(DEL) $(INSTALL_DIR)\lisp\same-dir.tst
-!endif
-
-#
-# Maintenance
-#
-clean:
-	- $(DEL) *~ term\*~
-	- $(DEL) *.orig *.rej *.crlf
-	- $(DEL) emacs-lisp\*.orig emacs-lisp\*.rej emacs-lisp\*.crlf
-	- $(DEL) emulation\*.orig emulation\*.rej emulation\*.crlf
-	- $(DEL) gnus\*.orig gnus\*.rej gnus\*.crlf
-	- $(DEL) international\*.orig international\*.rej international\*.crlf
-	- $(DEL) language\*.orig language\*.rej language\*.crlf
-	- $(DEL) mail\*.orig mail\*.rej mail\*.crlf
-	- $(DEL) play\*.orig play\*.rej play\*.crlf
-	- $(DEL) progmodes\*.orig progmodes\*.rej progmodes\*.crlf
-	- $(DEL) term\*.orig term\*.rej term\*.crlf
-	- $(DEL) textmodes\*.orig textmodes\*.rej textmodes\*.crlf
-	- $(DEL_TREE) deleted
-
-# arch-tag: 01ddeb44-fb4c-4366-8478-4a6c21a68fb3
--- a/lisp/progmodes/compile.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/progmodes/compile.el	Fri May 07 14:20:00 2004 +0000
@@ -944,6 +944,7 @@
 	;; Fake modeline display as if `start-process' were run.
 	(setq mode-line-process ":run")
 	(force-mode-line-update)
+	(sit-for 0)			; Force redisplay
 	(let ((status (call-process shell-file-name nil outbuf nil "-c"
 				    command)))
 	  (cond ((numberp status)
@@ -958,6 +959,10 @@
 					  (concat status "\n")))
 		(t
 		 (compilation-handle-exit 'bizarre status status))))
+	;; Without async subprocesses, the buffer is not yet
+	;; fontified, so fontify it now.
+	(let ((font-lock-verbose nil))	; shut up font-lock messages
+	  (font-lock-fontify-buffer))
 	(message "Executing `%s'...done" command)))
     (if (buffer-local-value 'compilation-scroll-output outbuf)
 	(save-selected-window
@@ -1095,10 +1100,6 @@
   (set (make-local-variable 'page-delimiter)
        compilation-page-delimiter)
   (compilation-setup)
-  ;; note that compilation-next-error-function is for interfacing
-  ;; with the next-error function in simple.el, and it's only
-  ;; coincidentally named similarly to compilation-next-error
-  (setq next-error-function 'compilation-next-error-function)
   (run-mode-hooks 'compilation-mode-hook))
 
 (defmacro define-compilation-mode (mode name doc &rest body)
@@ -1150,6 +1151,10 @@
   "Marker to the location from where the next error will be found.
 The global commands next/previous/first-error/goto-error use this.")
 
+(defvar compilation-messages-start nil
+  "Buffer position of the beginning of the compilation messages.
+If nil, use the beginning of buffer.")
+
 ;; A function name can't be a hook, must be something with a value.
 (defconst compilation-turn-on-font-lock 'turn-on-font-lock)
 
@@ -1158,8 +1163,13 @@
 Optional argument MINOR indicates this is called from
 `compilation-minor-mode'."
   (make-local-variable 'compilation-current-error)
+  (make-local-variable 'compilation-messages-start)
   (make-local-variable 'compilation-error-screen-columns)
   (make-local-variable 'overlay-arrow-position)
+  ;; Note that compilation-next-error-function is for interfacing
+  ;; with the next-error function in simple.el, and it's only
+  ;; coincidentally named similarly to compilation-next-error.
+  (setq next-error-function 'compilation-next-error-function)
   (set (make-local-variable 'font-lock-extra-managed-props)
        '(directory message help-echo mouse-face debug))
   (set (make-local-variable 'compilation-locs)
@@ -1404,16 +1414,16 @@
   (let* ((columns compilation-error-screen-columns) ; buffer's local value
 	 (last 1)
 	 (loc (compilation-next-error (or n 1) nil
-				      (or compilation-current-error (point-min))))
+				      (or compilation-current-error
+					  compilation-messages-start
+					  (point-min))))
 	 (end-loc (nth 2 loc))
 	 (marker (point-marker)))
     (setq compilation-current-error (point-marker)
 	  overlay-arrow-position
 	    (if (bolp)
 		compilation-current-error
-	      (save-excursion
-		(beginning-of-line)
-		(point-marker)))
+	      (copy-marker (line-beginning-position)))
 	  loc (car loc))
     ;; If loc contains no marker, no error in that file has been visited.  If
     ;; the marker is invalid the buffer has been killed.  So, recalculate all
@@ -1447,6 +1457,10 @@
     (compilation-goto-locus marker (nth 3 loc) (nth 3 end-loc))
     (setcdr (nthcdr 3 loc) t)))		; Set this one as visited.
 
+(defvar compilation-gcpro nil
+  "Internal variable used to keep some values from being GC'd.")
+(make-variable-buffer-local 'compilation-gcpro)
+
 (defun compilation-fake-loc (marker file &optional line col)
   "Preassociate MARKER with FILE.
 FILE should be ABSOLUTE-FILENAME or (RELATIVE-FILENAME . DIRNAME).
@@ -1466,6 +1480,11 @@
 region and the first line of the next region."
   (or (consp file) (setq file (list file)))
   (setq file (compilation-get-file-structure file))
+  ;; Between the current call to compilation-fake-loc and the first occurrence
+  ;; of an error message referring to `file', the data is only kept is the
+  ;; weak hash-table compilation-locs, so we need to prevent this entry
+  ;; in compilation-locs from being GC'd away.  --Stef
+  (push file compilation-gcpro)
   (let ((loc (compilation-assq (or line 1) (cdr file))))
     (setq loc (compilation-assq col loc))
     (if (cdr loc)
@@ -1715,10 +1734,12 @@
   (goto-char limit)
   nil)
 
+;; Beware: this is not only compatiblity code.  New code stil uses it.  --Stef
 (defun compilation-forget-errors ()
   ;; In case we hit the same file/line specs, we want to recompute a new
   ;; marker for them, so flush our cache.
   (setq compilation-locs (make-hash-table :test 'equal :weakness 'value))
+  (setq compilation-gcpro nil)
   ;; FIXME: the old code reset the directory-stack, so maybe we should
   ;; put a `directory change' marker of some sort, but where?  -stef
   ;;
@@ -1730,9 +1751,19 @@
   ;; something equivalent to point-max.  So we speculatively move
   ;; compilation-current-error to point-max (since the external package
   ;; won't know that it should do it).  --stef
-  (setq compilation-current-error (point-max)))
+  (setq compilation-current-error nil)
+  (let* ((proc (get-buffer-process (current-buffer)))
+	 (mark (if proc (process-mark proc)))
+	 (pos (or mark (point-max))))
+    (setq compilation-messages-start
+	  ;; In the future, ignore the text already present in the buffer.
+	  ;; Since many process filter functions insert before markers,
+	  ;; we need to put ours just before the insertion point rather
+	  ;; than at the insertion point.  If that's not possible, then
+	  ;; don't use a marker.  --Stef
+	  (if (> pos (point-min)) (copy-marker (1- pos)) pos))))
 
 (provide 'compile)
 
-;;; arch-tag: 12465727-7382-4f72-b234-79855a00dd8c
+;; arch-tag: 12465727-7382-4f72-b234-79855a00dd8c
 ;;; compile.el ends here
--- a/lisp/progmodes/gdb-ui.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/progmodes/gdb-ui.el	Fri May 07 14:20:00 2004 +0000
@@ -217,9 +217,10 @@
       (gdb-enqueue-input
        (list (concat "server interpreter mi \"-var-create - * "  expr "\"\n")
 	     `(lambda () (gdb-var-create-handler ,expr))))))
-  (select-window (get-buffer-window gud-comint-buffer)))
+  (select-window (get-buffer-window gud-comint-buffer 'visible)))
 
 (defun gdb-goto-info ()
+  "Go to Emacs info node: GDB Graphical Interface."
   (interactive)
   (select-frame (make-frame))
   (require 'info)
@@ -1117,7 +1118,7 @@
   (if (gdb-get-buffer 'gdb-assembler-buffer) (gdb-assembler-custom)))
 
 (defun gdb-mouse-toggle-breakpoint (event)
-  "Toggle breakpoint with mouse click in left margin."
+  "Toggle breakpoint in left fringe/margin with mouse click"
   (interactive "e")
   (mouse-minibuffer-check event)
   (let ((posn (event-end event)))
@@ -1137,6 +1138,7 @@
     (concat "*breakpoints of " (gdb-get-target-string) "*")))
 
 (defun gdb-display-breakpoints-buffer ()
+  "Display status of user-settable breakpoints."
   (interactive)
   (gdb-display-buffer
    (gdb-get-create-buffer 'gdb-breakpoints-buffer)))
@@ -1149,6 +1151,7 @@
     (minibuffer . nil)))
 
 (defun gdb-frame-breakpoints-buffer ()
+  "Display status of user-settable breakpoints in a new frame."
   (interactive)
   (select-frame (make-frame gdb-frame-parameters))
   (switch-to-buffer (gdb-get-create-buffer 'gdb-breakpoints-buffer))
@@ -1205,8 +1208,7 @@
      (list (concat "server delete " (match-string 1) "\n") 'ignore))))
 
 (defun gdb-goto-breakpoint ()
-  "Display the file in the source buffer at the breakpoint specified on the
-current line."
+  "Display the breakpoint location specified at current line."
   (interactive)
   (save-excursion
     (beginning-of-line 1)
@@ -1216,14 +1218,16 @@
       (let ((line (match-string 2))
 	    (file (match-string 1)))
 	(save-selected-window
-	  (gdb-display-buffer (find-file-noselect
-			       (if (file-exists-p file)
-				   file
-				 (expand-file-name file gdb-cdir))))
-	  (goto-line (string-to-number line))))))
+	  (let* ((buf (find-file-noselect (if (file-exists-p file)
+					      file
+					    (expand-file-name file gdb-cdir))))
+		 (window (gdb-display-buffer buf)))
+		 (with-current-buffer buf
+		   (goto-line (string-to-number line))
+		   (set-window-point window (point))))))))
 
 (defun gdb-mouse-goto-breakpoint (event)
-  "Display the file in the source buffer at the selected breakpoint."
+  "Display the breakpoint location that you click on."
   (interactive "e")
   (mouse-set-point event)
   (gdb-goto-breakpoint))
@@ -1266,11 +1270,13 @@
     (concat "*stack frames of " (gdb-get-target-string) "*")))
 
 (defun gdb-display-stack-buffer ()
+  "Display backtrace of current stack."
   (interactive)
   (gdb-display-buffer
    (gdb-get-create-buffer 'gdb-stack-buffer)))
 
 (defun gdb-frame-stack-buffer ()
+  "Display backtrace of current stack in a new frame."
   (interactive)
   (select-frame (make-frame gdb-frame-parameters))
   (switch-to-buffer (gdb-get-create-buffer 'gdb-stack-buffer))
@@ -1301,16 +1307,14 @@
       n)))
 
 (defun gdb-frames-select ()
-  "Make the frame on the current line become the current frame and display the
-source in the source buffer."
+  "Select the frame and display the relevant source."
   (interactive)
   (gdb-enqueue-input
    (list (concat "server frame " (gdb-get-frame-number) "\n") 'ignore))
   (gud-display-frame))
 
 (defun gdb-frames-mouse-select (event)
-  "Make the selected frame become the current frame and display the source in
-the source buffer."
+  "Select the frame you click on and display the relevant source."
   (interactive "e")
   (mouse-set-point event)
   (gdb-frames-select))
@@ -1343,11 +1347,13 @@
     (concat "*threads of " (gdb-get-target-string) "*")))
 
 (defun gdb-display-threads-buffer ()
+  "Display IDs of currently known threads."
   (interactive)
   (gdb-display-buffer
    (gdb-get-create-buffer 'gdb-threads-buffer)))
 
 (defun gdb-frame-threads-buffer ()
+  "Display IDs of currently known threads in a new frame."
   (interactive)
   (select-frame (make-frame gdb-frame-parameters))
   (switch-to-buffer (gdb-get-create-buffer 'gdb-threads-buffer))
@@ -1376,16 +1382,14 @@
     (match-string-no-properties 1)))
 
 (defun gdb-threads-select ()
-  "Make the thread on the current line become the current thread and display the
-source in the source buffer."
+  "Select the thread and display the relevant source."
   (interactive)
   (gdb-enqueue-input
    (list (concat "thread " (gdb-get-thread-number) "\n") 'ignore))
   (gud-display-frame))
 
 (defun gdb-threads-mouse-select (event)
-  "Make the selected frame become the current frame and display the source in
-the source buffer."
+  "Select the thread you click on and display the relevant source."
   (interactive "e")
   (mouse-set-point event)
   (gdb-threads-select))
@@ -1425,11 +1429,13 @@
     (concat "*registers of " (gdb-get-target-string) "*")))
 
 (defun gdb-display-registers-buffer ()
+  "Display integer register contents."
   (interactive)
   (gdb-display-buffer
    (gdb-get-create-buffer 'gdb-registers-buffer)))
 
 (defun gdb-frame-registers-buffer ()
+  "Display integer register contents in a new frame."
   (interactive)
   (select-frame (make-frame gdb-frame-parameters))
   (switch-to-buffer (gdb-get-create-buffer 'gdb-registers-buffer))
@@ -1497,11 +1503,13 @@
     (concat "*locals of " (gdb-get-target-string) "*")))
 
 (defun gdb-display-locals-buffer ()
+  "Display local variables of current stack and their values."
   (interactive)
   (gdb-display-buffer
    (gdb-get-create-buffer 'gdb-locals-buffer)))
 
 (defun gdb-frame-locals-buffer ()
+  "Display local variables of current stack and their values in a new frame."
   (interactive)
   (select-frame (make-frame gdb-frame-parameters))
   (switch-to-buffer (gdb-get-create-buffer 'gdb-locals-buffer))
@@ -1524,7 +1532,7 @@
 	   #'(lambda (win)
 	      (if (eq gud-comint-buffer (window-buffer win))
 		  (set-window-dedicated-p win t))))
-	  (setq answer (get-buffer-window buf))
+	  (setq answer (get-buffer-window buf 'visible))
 	  (if (not answer)
 	      (let ((window (get-lru-window 'visible)))
 		(if window
@@ -1548,7 +1556,7 @@
   (if (eq gdb-selected-view 'source)
 	(gdb-display-buffer buffer)
     (gdb-display-buffer (gdb-get-buffer 'gdb-assembler-buffer)))
-    (get-buffer-window buffer))
+    (get-buffer-window buffer 'visible))
 
 
 ;;; Shared keymap initialization:
@@ -1557,11 +1565,11 @@
   (define-key gud-menu-map [frames]
     `(menu-item "GDB-Frames" ,menu :visible (eq gud-minor-mode 'gdba)))
   (define-key menu [gdb] '("Gdb" . gdb-frame-gdb-buffer))
+  (define-key menu [threads] '("Threads" . gdb-frame-threads-buffer))
+  (define-key menu [registers] '("Registers" . gdb-frame-registers-buffer))
   (define-key menu [locals] '("Locals" . gdb-frame-locals-buffer))
-  (define-key menu [registers] '("Registers" . gdb-frame-registers-buffer))
   (define-key menu [frames] '("Stack" . gdb-frame-stack-buffer))
   (define-key menu [breakpoints] '("Breakpoints" . gdb-frame-breakpoints-buffer))
-  (define-key menu [threads] '("Threads" . gdb-frame-threads-buffer))
 ;  (define-key menu [assembler] '("Machine" . gdb-frame-assembler-buffer))
 )
 
@@ -1569,11 +1577,11 @@
   (define-key gud-menu-map [displays]
     `(menu-item "GDB-Windows" ,menu :visible (eq gud-minor-mode 'gdba)))
   (define-key menu [gdb] '("Gdb" . gdb-display-gdb-buffer))
+  (define-key menu [threads] '("Threads" . gdb-display-threads-buffer))
+  (define-key menu [registers] '("Registers" . gdb-display-registers-buffer))
   (define-key menu [locals] '("Locals" . gdb-display-locals-buffer))
-  (define-key menu [registers] '("Registers" . gdb-display-registers-buffer))
   (define-key menu [frames] '("Stack" . gdb-display-stack-buffer))
   (define-key menu [breakpoints] '("Breakpoints" . gdb-display-breakpoints-buffer))
-  (define-key menu [threads] '("Threads" . gdb-display-threads-buffer))
 ;  (define-key menu [assembler] '("Machine" . gdb-display-assembler-buffer))
 )
 
@@ -1601,12 +1609,14 @@
 			  "Display locals, stack and breakpoint information")))
 
 (defun gdb-frame-gdb-buffer ()
+  "Display GUD buffer in a new frame."
   (interactive)
   (select-frame (make-frame gdb-frame-parameters))
   (switch-to-buffer (gdb-get-create-buffer 'gdba))
   (set-window-dedicated-p (selected-window) t))
 
 (defun gdb-display-gdb-buffer ()
+  "Display GUD buffer."
   (interactive)
   (gdb-display-buffer
    (gdb-get-create-buffer 'gdba)))
@@ -1614,6 +1624,7 @@
 (defvar gdb-main-file nil "Source file from which program execution begins.")
 
 (defun gdb-view-source-function ()
+  "Select source view."
   (interactive)
   (if gdb-view-source
       (gdb-display-buffer
@@ -1623,6 +1634,7 @@
   (setq gdb-selected-view 'source))
 
 (defun gdb-view-assembler()
+  "Select disassembly view."
   (interactive)
   (gdb-display-buffer (gdb-get-create-buffer 'gdb-assembler-buffer))
   (gdb-invalidate-assembler)
@@ -1805,11 +1817,10 @@
 	  (when (< left-margin-width 2)
 	    (save-current-buffer
 	      (setq left-margin-width 2)
-	      (if (get-buffer-window (current-buffer))
-		  (set-window-margins (get-buffer-window
-				       (current-buffer))
-				      left-margin-width
-				      right-margin-width))))
+	      (if (get-buffer-window (current-buffer) 'visible)
+		  (set-window-margins 
+		   (get-buffer-window (current-buffer) 'visible)
+		   left-margin-width right-margin-width))))
 	  (put-image
 	   (if enabled
 	       (or breakpoint-enabled-icon
@@ -1833,11 +1844,10 @@
       (when (< left-margin-width 2)
 	(save-current-buffer
 	  (setq left-margin-width 2)
-	  (if (get-buffer-window (current-buffer))
-	      (set-window-margins (get-buffer-window
-				   (current-buffer))
-				  left-margin-width
-				  right-margin-width))))
+	  (if (get-buffer-window (current-buffer) 'visible)
+	      (set-window-margins 
+	       (get-buffer-window (current-buffer) 'visible)
+	       left-margin-width right-margin-width))))
       (gdb-put-string (if enabled "B" "b") (1+ start)))))
 
 (defun gdb-remove-breakpoint-icons (start end &optional remove-margin)
@@ -1846,11 +1856,10 @@
       (remove-images start end))
   (when remove-margin
     (setq left-margin-width 0)
-    (if (get-buffer-window (current-buffer))
-	(set-window-margins (get-buffer-window
-			     (current-buffer))
-			    left-margin-width
-			    right-margin-width))))
+    (if (get-buffer-window (current-buffer) 'visible)
+	(set-window-margins 
+	 (get-buffer-window (current-buffer) 'visible)
+	 left-margin-width right-margin-width))))
 
 
 ;;
@@ -1901,7 +1910,7 @@
 		  (if (re-search-forward address nil t)
 		      (gdb-put-breakpoint-icon (eq flag ?y))))))))
     (if (not (equal gdb-current-address "main"))
-	(set-window-point (get-buffer-window buffer) pos))))
+	(set-window-point (get-buffer-window buffer 'visible) pos))))
 
 (defvar gdb-assembler-mode-map
   (let ((map (make-sparse-keymap)))
@@ -1927,11 +1936,13 @@
     (concat "*Machine Code " (gdb-get-target-string) "*")))
 
 (defun gdb-display-assembler-buffer ()
+  "Display disassembly view."
   (interactive)
   (gdb-display-buffer
    (gdb-get-create-buffer 'gdb-assembler-buffer)))
 
 (defun gdb-frame-assembler-buffer ()
+  "Display disassembly view in a new frame."
   (interactive)
   (select-frame (make-frame gdb-frame-parameters))
   (switch-to-buffer (gdb-get-create-buffer 'gdb-assembler-buffer))
--- a/lisp/progmodes/python.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/progmodes/python.el	Fri May 07 14:20:00 2004 +0000
@@ -46,19 +46,18 @@
 ;; I've installed a minor mode to do the job properly in Emacs 22.
 ;; Other things seem more natural or canonical here, e.g. the
 ;; {beginning,end}-of-defun implementation dealing with nested
-;; definitions, and the inferior mode following `cmuscheme'.  (The
-;; inferior mode should be able to find the source of errors from
-;; `python-send-region' & al via `compilation-minor-mode', but I can't
-;; make that work with the current (March '04) compile.el.)
-;; Successive TABs cycle between possible indentations for the line.
+;; definitions, and the inferior mode following `cmuscheme'.  The
+;; inferior mode can find the source of errors from
+;; `python-send-region' & al via `compilation-minor-mode'.  Successive
+;; TABs cycle between possible indentations for the line.  There is
+;; symbol completion using lookup in Python.
 
 ;; Even where it has similar facilities, this is incompatible with
 ;; python-mode.el in various respects.  For instance, various key
 ;; bindings are changed to obey Emacs conventions, and things like
 ;; marking blocks and `beginning-of-defun' behave differently.
 
-;; TODO: See various Fixmes below.  It should be possible to arrange
-;; some sort of completion using the inferior interpreter.
+;; TODO: See various Fixmes below.
 
 ;;; Code:
 
@@ -203,6 +202,8 @@
     (define-key map "\C-c\C-z" 'python-switch-to-python)
     (define-key map "\C-c\C-m" 'python-load-file)
     (define-key map "\C-c\C-l" 'python-load-file) ; a la cmuscheme
+    (substitute-key-definition 'complete-symbol 'python-complete-symbol
+			       map global-map)
     ;; Fixme: Add :help to menu.
     (easy-menu-define python-menu map "Python Mode menu"
       '("Python"
@@ -261,9 +262,7 @@
 ;;;; Utility stuff
 
 (defsubst python-in-string/comment ()
-  "Return non-nil if point is in a Python literal (a comment or string).
-Optional argument LIM indicates the beginning of the containing form,
-i.e. the limit on how far back to scan."
+  "Return non-nil if point is in a Python literal (a comment or string)."
   (syntax-ppss-context (syntax-ppss)))
 
 (defconst python-space-backslash-table
@@ -300,14 +299,17 @@
 (defun python-comment-line-p ()
   "Return non-nil if current line has only a comment or is blank."
   (save-excursion
-    (back-to-indentation)
-    (looking-at (rx (or (syntax comment-start) line-end)))))
+    (end-of-line)
+    ;; FIXME: This looks wrong because it returns nil for empty lines.  --Stef
+    (when (eq 'comment (syntax-ppss-context (syntax-ppss)))
+      (back-to-indentation)
+      (looking-at (rx (or (syntax comment-start) line-end))))))
 
 (defun python-beginning-of-string ()
   "Go to beginning of string around point.
 Do nothing if not in string."
   (let ((state (syntax-ppss)))
-    (when (nth 3 state)
+    (when (eq 'string (syntax-ppss-context state))
       (goto-char (nth 8 state)))))
 
 (defun python-open-block-statement-p (&optional bos)
@@ -383,7 +385,8 @@
 (defcustom python-honour-comment-indentation nil
   "Non-nil means indent relative to preceding comment line.
 Only do this for comments where the leading comment character is followed
-by space."
+by space.  This doesn't apply to comment lines, which are always indented
+in lines with preceding comments."
   :type 'boolean
   :group 'python)
 
@@ -513,6 +516,16 @@
 				     (- python-indent)))
 			  0)))))))))
 
+(defun python-comment-indent ()
+  "`comment-indent-function' for Python."
+  ;; If previous non-blank line was a comment, use its indentation.
+  ;; FIXME: This seems unnecessary since the default code delegates to
+  ;; indent-according-to-mode.  --Stef
+  (unless (bobp)
+    (save-excursion
+      (forward-comment -1)
+      (if (eq ?# (char-after)) (current-column)))))
+
 ;;;; Cycling through the possible indentations with successive TABs.
 
 ;; These don't need to be buffer-local since they're only relevant
@@ -537,11 +550,17 @@
 		      (point))))
 
 (defun python-indentation-levels ()
-  "Return a list of possible indentations for this statement.
+  "Return a list of possible indentations for this line.
 Includes the default indentation and those which would close all
-enclosing blocks."
+enclosing blocks.  Assumes the line has already been indented per
+`python-indent-line'.  Elements of the list are actually pairs:
+\(INDENTATION . TEXT), where TEXT is the initial text of the
+corresponding block opening (or nil)."
   (save-excursion
-    (let ((levels (list (cons (current-indentation) nil))))
+    (let ((levels (list (cons (current-indentation)
+			      (save-excursion
+				(if (python-beginning-of-block)
+				    (python-initial-text)))))))
       ;; Only one possibility if we immediately follow a block open or
       ;; are in a continuation line.
       (unless (or (python-continuation-line-p)
@@ -567,8 +586,7 @@
       (if (> (- (point-max) pos) (point))
 	  (goto-char (- (point-max) pos))))))
 
-;; Fixme: Is the arg necessary?
-(defun python-indent-line (&optional arg)
+(defun python-indent-line ()
   "Indent current line as Python code.
 When invoked via `indent-for-tab-command', cycle through possible
 indentations for current line.  The cycle is broken by a command different
@@ -585,13 +603,30 @@
 		 (beginning-of-line)
 		 (delete-horizontal-space)
 		 (indent-to (car (nth python-indent-index python-indent-list)))
-		 (let ((text (cdr (nth python-indent-index
-				       python-indent-list))))
-		   (if text (message "Closes: %s" text)))))
+		 (if (python-block-end-p)
+		     (let ((text (cdr (nth python-indent-index
+					   python-indent-list))))
+		       (if text
+			   (message "Closes: %s" text))))))
       (python-indent-line-1)
       (setq python-indent-list (python-indentation-levels)
 	    python-indent-list-length (length python-indent-list)
 	    python-indent-index (1- python-indent-list-length)))))
+
+(defun python-block-end-p ()
+  "Non-nil if this is a line in a statement closing a block,
+or a blank line indented to where it would close a block."
+  (and (not (python-comment-line-p))
+       (or (python-close-block-statement-p t)
+	   (< (current-indentation)
+	      (save-excursion
+		(python-previous-statement)
+		(current-indentation))))))
+
+;; Fixme: Define an indent-region-function.  It should probably leave
+;; lines alone if the indentation is already at one of the allowed
+;; levels.  Otherwise, M-C-\ typically keeps indenting more deeply
+;; down a function.
 
 ;;;; Movement.
 
@@ -628,8 +663,7 @@
   "`end-of-defun-function' for Python.
 Finds end of innermost nested class or method definition."
   (let ((orig (point))
-	(pattern (rx (and line-start (0+ space)
-			  (or "def" "class") space))))
+	(pattern (rx (and line-start (0+ space) (or "def" "class") space))))
     ;; Go to start of current block and check whether it's at top
     ;; level.  If it is, and not a block start, look forward for
     ;; definition statement.
@@ -914,13 +948,20 @@
 					(file-name-nondirectory name))))))))
   (setq python-saved-check-command command)
   (save-some-buffers (not compilation-ask-about-save) nil)
-  (compilation-start command))
+  (let ((compilation-error-regexp-alist
+	 (cons '("(\\([^,]+\\), line \\([0-9]+\\))" 1 2)
+	       compilation-error-regexp-alist)))
+    (compilation-start command)))
 
 ;;;; Inferior mode stuff (following cmuscheme).
 
+;; Fixme: Make sure we can work with IPython.
+
 (defcustom python-python-command "python"
   "*Shell command to run Python interpreter.
-Any arguments can't contain whitespace."
+Any arguments can't contain whitespace.
+Note that IPython may not work properly; it must at least be used with the
+`-cl' flag, i.e. use `ipython -cl'."
   :group 'python
   :type 'string)
 
@@ -970,12 +1011,31 @@
   )
 
 (defconst python-compilation-regexp-alist
+  ;; FIXME: maybe these should move to compilation-error-regexp-alist-alist.
   `((,(rx (and line-start (1+ (any " \t")) "File \""
 	       (group (1+ (not (any "\"<")))) ; avoid `<stdin>' &c
 	       "\", line " (group (1+ digit))))
-     1 python-compilation-line-number))
+     1 2)
+    (,(rx (and " in file " (group (1+ not-newline)) " on line "
+	       (group (1+ digit))))
+     1 2))
   "`compilation-error-regexp-alist' for inferior Python.")
 
+(defvar inferior-python-mode-map
+  (let ((map (make-sparse-keymap)))
+    ;; This will inherit from comint-mode-map.
+    (define-key map "\C-c\C-l" 'python-load-file)
+    (define-key map "\C-c\C-z" 'python-switch-to-python) ;What for?  --Stef
+    (define-key map "\C-c\C-v" 'python-check)
+    ;; Note that we _can_ still use these commands which send to the
+    ;; Python process even at the prompt iff we have a normal prompt,
+    ;; i.e. '>>> ' and not '... '.  See the comment before
+    ;; python-send-region.  Fixme: uncomment these if we address that.
+
+    ;; (define-key map [(meta ?\t)] 'python-complete-symbol)
+    ;; (define-key map "\C-c\C-f" 'python-describe-symbol)
+    map))
+
 ;; Fixme: This should inherit some stuff from python-mode, but I'm not
 ;; sure how much: at least some keybindings, like C-c C-f; syntax?;
 ;; font-locking, e.g. for triple-quoted strings?
@@ -999,15 +1059,13 @@
   :group 'python
   (set-syntax-table python-mode-syntax-table)
   (setq mode-line-process '(":%s"))
-  ;; Fixme: Maybe install some python-mode bindings too.
-  (define-key inferior-python-mode-map "\C-c\C-l" 'python-load-file)
-  (define-key inferior-python-mode-map "\C-c\C-z" 'python-switch-to-python)
-  (add-hook 'comint-input-filter-functions 'python-input-filter nil t)
+  (set (make-local-variable 'comint-input-filter) 'python-input-filter)
   (add-hook 'comint-preoutput-filter-functions #'python-preoutput-filter
 	    nil t)
   ;; Still required by `comint-redirect-send-command', for instance
   ;; (and we need to match things like `>>> ... >>> '):
-  (set (make-local-variable 'comint-prompt-regexp) "^\\([>.]\\{3\\} \\)+")
+  (set (make-local-variable 'comint-prompt-regexp)
+       (rx (and line-start (1+ (and (repeat 3 (any ">.")) ?\ )))))
   (set (make-local-variable 'compilation-error-regexp-alist)
        python-compilation-regexp-alist)
   (compilation-shell-minor-mode 1))
@@ -1018,15 +1076,9 @@
   :type 'regexp
   :group 'python)
 
-(defvar python-orig-start nil
-  "Marker to the start of the region passed to the inferior Python.
-It can also be a filename.")
-
 (defun python-input-filter (str)
   "`comint-input-filter' function for inferior Python.
-Don't save anything for STR matching `inferior-python-filter-regexp'.
-Also resets variables for adjusting error messages."
-  (setq python-orig-start nil)
+Don't save anything for STR matching `inferior-python-filter-regexp'."
   (not (string-match inferior-python-filter-regexp str)))
 
 ;; Fixme: Loses with quoted whitespace.
@@ -1039,25 +1091,8 @@
 	  (t (let ((pos (string-match "[^ \t]" string)))
 	       (if pos (python-args-to-list (substring string pos))))))))
 
-(defun python-compilation-line-number (file col)
-  "Return error descriptor of error found for FILE, column COL.
-Used as line-number hook function in `python-compilation-regexp-alist'."
-  (let ((line (string-to-number (match-string 2))))
-    (cons (point-marker)
-	  (if (and (markerp python-orig-start)
-		   (marker-buffer python-orig-start))
-	      (let ((start python-orig-start))
-		(with-current-buffer (marker-buffer python-orig-start)
-		  (goto-char start)
-		  (forward-line (1- line))
-		  (point-marker)))
-	    (list (if (stringp python-orig-start)
-		      (list python-orig-start default-directory)
-		    file)
-		  line col)))))
-
 (defvar python-preoutput-result nil
-  "Data from output line last `_emacs_out' line seen by the preoutput filter.")
+  "Data from last `_emacs_out' line seen by the preoutput filter.")
 
 (defvar python-preoutput-continuation nil
   "If non-nil, funcall this when `python-preoutput-filter' sees `_emacs_ok'.")
@@ -1068,7 +1103,9 @@
 ;; `python-preoutput-continuation' if we get it.
 (defun python-preoutput-filter (s)
   "`comint-preoutput-filter-functions' function: ignore prompts not at bol."
-  (cond ((and (string-match "\\`[.>]\\{3\\} \\'" s)
+  (cond ((and (string-match (rx (and string-start (repeat 3 (any ".>"))
+				     " " string-end))
+			    s)
 	      (/= (let ((inhibit-field-text-motion t))
 		    (line-beginning-position))
 		  (point)))
@@ -1089,10 +1126,10 @@
 CMD is the Python command to run.  NOSHOW non-nil means don't show the
 buffer automatically.
 If there is a process already running in `*Python*', switch to
-that buffer.  Interactively a prefix arg, allows you to edit the initial
-command line (default is the value of `python-command'); `-i' etc. args
-will be added to this as appropriate.  Runs the hooks
-`inferior-python-mode-hook' (after the `comint-mode-hook' is run).
+that buffer.  Interactively, a prefix arg allows you to edit the initial
+command line (default is `python-command'); `-i' etc. args will be added
+to this as appropriate.  Runs the hook `inferior-python-mode-hook'
+\(after the `comint-mode-hook' is run).
 \(Type \\[describe-mode] in the process buffer for a list of commands.)"
   (interactive (list (if current-prefix-arg
 			 (read-string "Run Python: " python-command)
@@ -1102,47 +1139,34 @@
   ;; Fixme: Consider making `python-buffer' buffer-local as a buffer
   ;; (not a name) in Python buffers from which `run-python' &c is
   ;; invoked.  Would support multiple processes better.
-  (unless (comint-check-proc "*Python*")
-    (let ((cmdlist (append (python-args-to-list cmd) '("-i"))))
+  (unless (comint-check-proc python-buffer)
+    (let ((cmdlist (append (python-args-to-list cmd) '("-i")))
+	  (process-environment		; to import emacs.py
+	   (push (concat "PYTHONPATH=" data-directory)
+		 process-environment)))
       (set-buffer (apply 'make-comint "Python" (car cmdlist) nil
-			 (cdr cmdlist))))
+			 (cdr cmdlist)))
+      (setq python-buffer "*Python*"))
     (inferior-python-mode)
     ;; Load function defintions we need.
     ;; Before the preoutput function was used, this was done via -c in
     ;; cmdlist, but that loses the banner and doesn't run the startup
-    ;; file.
-    (python-send-string "\
-def _emacs_execfile (file):  # execute file and remove it
-    from os import remove
-    try: execfile (file, globals (), globals ())
-    finally: remove (file)
+    ;; file.  The code might be inline here, but there's enough that it
+    ;; seems worth putting in a separate file, and it's probably cleaner
+    ;; to put it in a module.
+    (python-send-string "import emacs"))
+  (unless noshow (pop-to-buffer python-buffer)))
 
-def _emacs_args (name):  # get arglist of name for eldoc &c
-    import inspect
-    parts = name.split ('.')
-    if len (parts) > 1:
-        try: exec 'import ' + parts[0]
-        except: return None
-    try: exec 'func='+name # lose if name is keyword or undefined
-    except: return None
-    if inspect.isbuiltin (func):
-        doc = func.__doc__
-        if doc.find (' ->') != -1:
-            print '_emacs_out', doc.split (' ->')[0]
-        elif doc.find ('\\n') != -1:
-            print '_emacs_out', doc.split ('\\n')[0]
-        return None
-    if inspect.ismethod (func): func = func.im_func
-    if not inspect.isfunction (func):
-        return None
-    (args, varargs, varkw, defaults) = inspect.getargspec (func)
-    print '_emacs_out', func.__name__+inspect.formatargspec (args, varargs, varkw, defaults)
-
-print '_emacs_ok'"))
-  (unless noshow (pop-to-buffer (setq python-buffer "*Python*"))))
+;; Fixme: We typically lose if the inferior isn't in the normal REPL,
+;; e.g. prompt is `help> '.  Probably raise an error if the form of
+;; the prompt is unexpected; actually, it needs to be `>>> ', not
+;; `... ', i.e. we're not inputting a block &c.  However, this may not
+;; be the place to do it, e.g. we might actually want to send commands
+;; having set up such a state.
 
 (defun python-send-command (command)
   "Like `python-send-string' but resets `compilation-minor-mode'."
+  (goto-char (point-max))
   (let ((end (marker-position (process-mark (python-proc)))))
     (compilation-forget-errors)
     (python-send-string command)
@@ -1154,35 +1178,37 @@
   ;; The region is evaluated from a temporary file.  This avoids
   ;; problems with blank lines, which have different semantics
   ;; interactively and in files.  It also saves the inferior process
-  ;; buffer filling up with interpreter prompts.  We need a function
-  ;; to remove the temporary file when it has been evaluated, which
-  ;; unfortunately means using a not-quite pristine interpreter
-  ;; initially.  Unfortunately we also get tracebacks which look like:
-  ;; 
-  ;; >>> Traceback (most recent call last):
-  ;;   File "<stdin>", line 1, in ?
-  ;;   File "<string>", line 4, in _emacs_execfile
-  ;;   File "/tmp/py7734RSB", line 11
+  ;; buffer filling up with interpreter prompts.  We need a Python
+  ;; function to remove the temporary file when it has been evaluated
+  ;; (though we could probably do it in Lisp with a Comint output
+  ;; filter).  This function also catches exceptions and truncates
+  ;; tracebacks not to mention the frame of the function itself.
   ;;
   ;; The compilation-minor-mode parsing takes care of relating the
-  ;; reference to the temporary file to the source.  Fixme:
-  ;; comint-filter the first two lines of the traceback?
+  ;; reference to the temporary file to the source.
+  ;;
+  ;; Fixme: Write a `coding' header to the temp file if the region is
+  ;; non-ASCII.
   (interactive "r")
   (let* ((f (make-temp-file "py"))
-	 (command (format "_emacs_execfile(%S)" f))
+	 (command (format "emacs.eexecfile(%S)" f))
 	 (orig-start (copy-marker start)))
-    (if (save-excursion
-	  (goto-char start)
-	  (/= 0 (current-indentation)))	; need dummy block
-	(write-region "if True:\n" nil f nil 'nomsg))
+    (when (save-excursion
+	    (goto-char start)
+	    (/= 0 (current-indentation))) ; need dummy block
+      (save-excursion
+	(goto-char orig-start)
+	;; Wrong if we had indented code at buffer start.
+	(set-marker orig-start (line-beginning-position 0)))
+      (write-region "if True:\n" nil f nil 'nomsg))
     (write-region start end f t 'nomsg)
-    (when python-buffer
+    (let ((proc (python-proc)))		;Make sure we're running a process.
       (with-current-buffer python-buffer
-	(set (make-local-variable 'python-orig-start) orig-start)
-	(let ((comint-input-filter-functions
-	       ;; Don't reset python-orig-start.
-	       (remq 'python-input-filter comint-input-filter-functions)))
-	  (python-send-command command))))))
+	(python-send-command command)
+	;; Tell compile.el to redirect error locations in file `f' to
+	;; positions past marker `orig-start'.  It has to be done *after*
+	;; python-send-command's call to compilation-forget-errors.
+	(compilation-fake-loc orig-start f)))))
 
 (defun python-send-string (string)
   "Evaluate STRING in inferior Python process."
@@ -1195,6 +1221,8 @@
   (interactive)
   (python-send-region (point-min) (point-max)))
 
+;; Fixme: Try to define the function or class within the relevant
+;; module, not just at top level.
 (defun python-send-defun ()
   "Send the current defun (class or method) to the inferior Python process."
   (interactive)
@@ -1241,11 +1269,11 @@
 module-qualified names."
   (interactive (comint-get-source "Load Python file: " python-prev-dir/file
 				  python-source-modes
-				  t)) ; because execfile needs exact name
-  (comint-check-source file-name) ; Check to see if buffer needs saved.
+				  t))	; because execfile needs exact name
+  (comint-check-source file-name)     ; Check to see if buffer needs saving.
   (setq python-prev-dir/file (cons (file-name-directory file-name)
 				   (file-name-nondirectory file-name)))
-  (when python-buffer
+  (let ((proc (python-proc)))		;Make sure we have a process.
     (with-current-buffer python-buffer
       ;; Fixme: I'm not convinced by this logic from python-mode.el.
       (python-send-command
@@ -1253,19 +1281,22 @@
 	   ;; Fixme: make sure the directory is in the path list
 	   (let ((module (file-name-sans-extension
 			  (file-name-nondirectory file-name))))
-	     (format "\
-if globals().has_key(%S): reload(%s)
-else: import %s
-" module module module))
-	 (format "execfile('%s')" file-name))))))
+	     (format "emacs.eimport(%S,%S)"
+		     module (file-name-directory file-name)))
+	 (format "execfile(%S)" file-name)))
+      (message "%s loaded" file-name))))
 
-;; Fixme: Should this start a process if there isn't one?  (Unlike cmuscheme.)
+;; Fixme: If we need to start the process, wait until we've got the OK
+;; from the startup.
 (defun python-proc ()
-  "Return the current Python process.  See variable `python-buffer'."
-  (let ((proc (get-buffer-process (if (eq major-mode 'inferior-python-mode)
-				      (current-buffer)
-				    python-buffer))))
-    (or proc (error "No current process.  See variable `python-buffer'"))))
+  "Return the current Python process.
+See variable `python-buffer'.  Starts a new process if necessary."
+  (or (if python-buffer
+	  (get-buffer-process (if (eq major-mode 'inferior-python-mode)
+				  (current-buffer)
+				python-buffer)))
+      (progn (run-python nil t)
+	     (python-proc))))
 
 ;;;; Context-sensitive help.
 
@@ -1277,33 +1308,46 @@
   "Syntax table giving `.' symbol syntax.
 Otherwise inherits from `python-mode-syntax-table'.")
 
+(defvar view-return-to-alist)
+
 ;; Fixme: Should this actually be used instead of info-look, i.e. be
-;; bound to C-h S?
+;; bound to C-h S?  Can we use other pydoc stuff before python 2.2?
 (defun python-describe-symbol (symbol)
-  "Get help on SYMBOL using `pydoc'.
-Interactively, prompt for symbol."
-  ;; Note that we do this in the inferior process, not a separate one to
+  "Get help on SYMBOL using `help'.
+Interactively, prompt for symbol.
+
+Symbol may be anything recognized by the interpreter's `help' command --
+e.g. `CALLS' -- not just variables in scope.
+This only works for Python version 2.2 or newer since earlier interpreters
+don't support `help'."
+  ;; Note that we do this in the inferior process, not a separate one, to
   ;; ensure the environment is appropriate.
   (interactive
    (let ((symbol (with-syntax-table python-dotty-syntax-table
 		   (current-word)))
-	 (enable-recursive-minibuffers t)
-	 val)
-     (setq val (read-string (if symbol
-				(format "Describe symbol (default %s): "
-				      symbol)
-			      "Describe symbol: ")
-			    nil nil symbol))
-     (list (or val symbol))))
+	 (enable-recursive-minibuffers t))
+     (list (read-string (if symbol
+			    (format "Describe symbol (default %s): " symbol)
+			  "Describe symbol: ")
+			nil nil symbol))))
   (if (equal symbol "") (error "No symbol"))
   (let* ((func `(lambda ()
-		  (comint-redirect-send-command (format "help(%S)\n" ,symbol)
+		  (comint-redirect-send-command (format "emacs.ehelp(%S)\n"
+							,symbol)
 						"*Help*" nil))))
     ;; Ensure we have a suitable help buffer.
-    (let (temp-buffer-show-hook)	; avoid xref stuff
-      (with-output-to-temp-buffer "*Help*"
+    ;; Fixme: Maybe process `Related help topics' a la help xrefs and
+    ;; allow C-c C-f in help buffer.
+    (let ((temp-buffer-show-hook	; avoid xref stuff
+	   (lambda ()
+	     (toggle-read-only 1)
+	     (setq view-return-to-alist
+		   (list (cons (selected-window) help-return-method))))))
+      (help-setup-xref (list 'python-describe-symbol symbol))
+      (with-output-to-temp-buffer (help-buffer)
 	(with-current-buffer standard-output
-	  (set (make-local-variable 'comint-redirect-subvert-readonly) t))))
+	  (set (make-local-variable 'comint-redirect-subvert-readonly) t)
+	  (print-help-return-message))))
     (if (and python-buffer (get-buffer python-buffer))
 	(with-current-buffer python-buffer
 	  (funcall func))
@@ -1312,6 +1356,15 @@
 
 (add-to-list 'debug-ignored-errors "^No symbol")
 
+(defun python-send-receive (string)
+  "Send STRING to inferior Python (if any) and return result.
+The result is what follows `_emacs_out' in the output (or nil)."
+  (let ((proc (python-proc)))
+    (python-send-string string)
+    (setq python-preoutput-result nil)
+    (accept-process-output proc 5)
+    python-preoutput-result))
+
 ;; Fixme: try to make it work with point in the arglist.  Also, is
 ;; there anything reasonable we can do with random methods?
 ;; (Currently only works with functions.)
@@ -1320,14 +1373,9 @@
 Only works when point is in a function name, not its arglist, for instance.
 Assumes an inferior Python is running."
   (let ((symbol (with-syntax-table python-dotty-syntax-table
-		  (current-word)))
-	(proc (and python-buffer (python-proc))))
-    (when (and proc symbol)
-      (python-send-string
-       (format "_emacs_args(%S)" symbol))
-      (setq python-preoutput-result nil)
-      (accept-process-output proc 1)
-      python-preoutput-result)))
+		  (current-word))))
+    (when symbol
+      (python-send-receive (format "emacs.eargs(%S)" symbol)))))
 
 ;;;; Info-look functionality.
 
@@ -1530,11 +1578,97 @@
   (python-end-of-block)
   (exchange-point-and-mark))
 
+;;;; Completion.
+
+(defun python-symbol-completions (symbol)
+  "Return a list of completions of the string SYMBOL from Python process.
+The list is sorted."
+  (when symbol
+    (let ((completions
+	   (condition-case ()
+	       (car (read-from-string (python-send-receive
+				       (format "emacs.complete(%S)" symbol))))
+	     (error nil))))
+      (sort
+       ;; We can get duplicates from the above -- don't know why.
+       (delete-dups completions)
+       #'string<))))
+
+(defun python-partial-symbol ()
+  "Return the partial symbol before point (for completion)."
+  (let ((end (point))
+	(start (save-excursion
+		 (and (re-search-backward
+		       (rx (and (or buffer-start (regexp "[^[:alnum:]._]"))
+				(group (1+ (regexp "[[:alnum:]._]")))
+				point))
+		       nil t)
+		      (match-beginning 1)))))
+    (if start (buffer-substring-no-properties start end))))
+
+;; Fixme: We should have an abstraction of this sort of thing in the
+;; core.
+(defun python-complete-symbol ()
+  "Perform completion on the Python symbol preceding point.
+Repeating the command scrolls the completion window."
+  (interactive)
+  (let ((window (get-buffer-window "*Completions*")))
+    (if (and (eq last-command this-command)
+	     window (window-live-p window) (window-buffer window)
+	     (buffer-name (window-buffer window)))
+	(with-current-buffer (window-buffer window)
+	  (if (pos-visible-in-window-p (point-max) window)
+	      (set-window-start window (point-min))
+	    (save-selected-window
+	      (select-window window)
+	      (scroll-up))))
+      ;; Do completion.
+      (let* ((end (point))
+	     (symbol (python-partial-symbol))
+	     (completions (python-symbol-completions symbol))
+	     (completion (if completions
+			     (try-completion symbol completions))))
+	(when symbol
+	  (cond ((eq completion t))
+		((null completion)
+		 (message "Can't find completion for \"%s\"" symbol)
+		 (ding))
+		((not (string= symbol completion))
+		 (delete-region (- end (length symbol)) end)
+		 (insert completion))
+		(t
+		 (message "Making completion list...")
+		 (with-output-to-temp-buffer "*Completions*"
+		   (display-completion-list completions))
+		 (message "Making completion list...%s" "done"))))))))
+
+(eval-when-compile (require 'hippie-exp))
+
+(defun python-try-complete (old)
+  "Completion function for Python for use with `hippie-expand'."
+  (when (eq major-mode 'python-mode)	; though we only add it locally
+    (unless old
+      (let ((symbol (python-partial-symbol)))
+	(he-init-string (- (point) (length symbol)) (point))
+	(if (not (he-string-member he-search-string he-tried-table))
+	    (push he-search-string he-tried-table))
+	(setq he-expand-list
+	      (and symbol (python-symbol-completions symbol)))))
+    (while (and he-expand-list
+		(he-string-member (car he-expand-list) he-tried-table))
+      (pop he-expand-list))
+    (if he-expand-list
+	(progn
+	  (he-substitute-string (pop he-expand-list))
+	  t)
+      (if old (he-reset-string))
+      nil)))
+
 ;;;; Modes.
 
 (defvar outline-heading-end-regexp)
 (defvar eldoc-print-current-symbol-info-function)
-(defvar python-mode-running)
+
 ;;;###autoload
 (define-derived-mode python-mode fundamental-mode "Python"
   "Major mode for editing Python files.
@@ -1576,11 +1710,10 @@
 				   ))
   (set (make-local-variable 'parse-sexp-lookup-properties) t)
   (set (make-local-variable 'comment-start) "# ")
-  ;; Fixme: define a comment-indent-function?
+  (set (make-local-variable 'comment-indent-function) #'python-comment-indent)
   (set (make-local-variable 'indent-line-function) #'python-indent-line)
   (set (make-local-variable 'paragraph-start) "\\s-*$")
-  (set (make-local-variable 'fill-paragraph-function)
-       'python-fill-paragraph)
+  (set (make-local-variable 'fill-paragraph-function) 'python-fill-paragraph)
   (set (make-local-variable 'require-final-newline) t)
   (set (make-local-variable 'add-log-current-defun-function)
        #'python-current-defun)
@@ -1598,6 +1731,9 @@
        #'python-eldoc-function)
   (add-hook 'eldoc-mode-hook
 	    '(lambda () (run-python 0 t)) nil t) ; need it running
+  (if (featurep 'hippie-exp)
+      (set (make-local-variable 'hippie-expand-try-functions-list)
+	   (cons 'python-try-complete hippie-expand-try-functions-list)))
   (unless font-lock-mode (font-lock-mode 1))
   (when python-guess-indent (python-guess-indent))
   (set (make-local-variable 'python-command) python-python-command)
--- a/lisp/progmodes/sql.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/progmodes/sql.el	Fri May 07 14:20:00 2004 +0000
@@ -4,7 +4,7 @@
 
 ;; Author: Alex Schroeder <alex@gnu.org>
 ;; Maintainer: Michael Mauger <mmaug@yahoo.com>
-;; Version: 2.0.0
+;; Version: 2.0.1
 ;; Keywords: comm languages processes
 ;; URL: http://savannah.gnu.org/cgi-bin/viewcvs/emacs/emacs/lisp/progmodes/sql.el
 ;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?SqlMode
@@ -200,8 +200,11 @@
 ;; Gregor Zych <zych@pool.informatik.rwth-aachen.de>
 ;; nino <nino@inform.dk>
 ;; Berend de Boer <berend@pobox.com>
-;; Michael Mauger <mmaug@yahoo.com>
 ;; Adam Jenkins <adam@thejenkins.org>
+;; Michael Mauger <mmaug@yahoo.com> -- improved product support
+;; Drew Adams <drew.adams@oracle.com> -- Emacs 20 support
+;; Harald Maier <maierh@myself.com> -- sql-send-string
+;; Stefan Monnier <monnier@iro.umontreal.ca> -- font-lock corrections
 
 
 
@@ -693,18 +696,6 @@
 
 ;;; Variables which do not need customization
 
-(defvar sql-xemacs-p
-  (string-match "XEmacs\\|Lucid" emacs-version)
-  "Is this a non-GNU Emacs?")
-
-(defvar sql-emacs19-p
-  (string-match "GNU Emacs 19" emacs-version)
-  "Is this a GNU Emacs 19?")
-
-(defvar sql-emacs20-p
-  (string-match "20" emacs-version)
-  "Is this a GNU Emacs 20?")
-
 (defvar sql-user-history nil
   "History of usernames used.")
 
@@ -876,9 +867,7 @@
     (modify-syntax-entry ?/ ". 14" table)
     (modify-syntax-entry ?* ". 23" table)
     ;; double-dash starts comment
-    (if sql-xemacs-p
-	(modify-syntax-entry ?- ". 56" table)
-      (modify-syntax-entry ?- ". 12b" table))
+    (modify-syntax-entry ?- ". 12b" table)
     ;; newline and formfeed end coments
     (modify-syntax-entry ?\n "> b" table)
     (modify-syntax-entry ?\f "> b" table)
@@ -905,25 +894,6 @@
 statement.  The format of variable should be a valid
 `font-lock-keywords' entry.")
 
-(defvar sql-builtin-face
-  (if sql-xemacs-p
-      ;; XEmacs doesn't have the builtin face
-      'font-lock-preprocessor-face
-    ;; GNU Emacs 19 doesn't either
-    (if sql-emacs19-p
-	'font-lock-keyword-face
-      ;; Emacs 2x
-      'font-lock-builtin-face))
-  "Builtin face for font-lock in SQL mode.")
-
-(defvar sql-doc-face
-  (if (or sql-xemacs-p
-	  sql-emacs19-p
-	  sql-emacs20-p)
-      'font-lock-string-face
-    'font-lock-doc-face)
-  "Documentation face for font-lock in SQL mode.")
-
 (defmacro sql-keywords-re (&rest keywords)
   "Compile-time generation of regexp matching any one of KEYWORDS."
   `(eval-when-compile
@@ -1020,7 +990,7 @@
 
     `((,ansi-non-reserved . font-lock-keyword-face)
       (,ansi-reserved     . font-lock-keyword-face)
-      (,ansi-funcs        . ,sql-builtin-face)
+      (,ansi-funcs        . font-lock-builtin-face)
       (,ansi-types        . font-lock-type-face)))
 
   "ANSI SQL keywords used by font-lock.
@@ -1230,11 +1200,11 @@
    "\\b.*$"
    ))))
 
-    `((,sqlplus-commands . ,sql-doc-face)
-      (,oracle-functions . ,sql-builtin-face)
+    `((,sqlplus-commands . font-lock-doc-face)
+      (,oracle-functions . font-lock-builtin-face)
       (,oracle-keywords  . font-lock-keyword-face)
       (,oracle-types     . font-lock-type-face)
-      (,plsql-functions  . ,sql-builtin-face)
+      (,plsql-functions  . font-lock-builtin-face)
       (,plsql-keywords   . font-lock-keyword-face)
       (,plsql-type       . font-lock-type-face)
       (,plsql-warning    . font-lock-warning-face)))
@@ -1323,7 +1293,7 @@
 "timestamp" "varchar" "varying" "void" "zone"
 )))
 
-  `((,pg-funcs    . ,sql-builtin-face)
+  `((,pg-funcs    . font-lock-builtin-face)
     (,pg-reserved . font-lock-keyword-face)
     (,pg-types    . font-lock-type-face)))
 
@@ -1404,7 +1374,7 @@
 
     `((,linter-keywords  . font-lock-keyword-face)
       (,linter-reserved  . font-lock-keyword-face)
-      (,linter-functions . ,sql-builtin-face)
+      (,linter-functions . font-lock-builtin-face)
       (,linter-types     . font-lock-type-face)))
 
   "Linter SQL keywords used by font-lock.
@@ -1507,9 +1477,9 @@
 ) t)
 		   "\\)\\)\\|go\\s-*\\|use\\s-+\\|setuser\\s-+\\|dbcc\\s-+\\).*$"))))
 
-    `((,ms-commands  . ,sql-doc-face)
+    `((,ms-commands  . font-lock-doc-face)
       (,ms-reserved  . font-lock-keyword-face)
-      (,ms-functions . ,sql-builtin-face)
+      (,ms-functions . font-lock-builtin-face)
       (,ms-vars      . font-lock-variable-name-face)
       (,ms-types     . font-lock-type-face)))
 
@@ -1626,7 +1596,7 @@
 "zerofill"
 )))
 
-    `((,mysql-funcs    . ,sql-builtin-face)
+    `((,mysql-funcs    . font-lock-builtin-face)
       (,mysql-keywords . font-lock-keyword-face)
       (,mysql-types    . font-lock-type-face)))
 
@@ -1687,17 +1657,36 @@
     ;; Get the product-specific keywords.
     (setq sql-mode-font-lock-keywords
 	  (append
-	   (eval (sql-product-feature :font-lock))
+	   (unless (eq sql-product 'ansi)
+	     (eval (sql-product-feature :font-lock)))
+	   ;; Always highlight ANSI keywords
 	   (eval (sql-product-feature :font-lock 'ansi))
+	   ;; Fontify object names in CREATE, DROP and ALTER DDL
+	   ;; statements
 	   (list sql-mode-font-lock-object-name)))
 
-    ;; Setup font-lock.  (What is the minimum we should have to do
-    ;; here?)
-    (setq font-lock-set-defaults nil
-	  font-lock-keywords sql-mode-font-lock-keywords
-	  font-lock-defaults (list 'sql-mode-font-lock-keywords
+    ;; Setup font-lock.  Force re-parsing of `font-lock-defaults'.
+    (set (make-local-variable 'font-lock-set-defaults) nil)
+    (setq font-lock-defaults (list 'sql-mode-font-lock-keywords
 				   keywords-only t syntax-alist))
 
+    ;; Force font lock to reinitialize if it is already on
+    ;; Otherwise, we can wait until it can be started.
+    (when (and (fboundp 'font-lock-mode)
+	       font-lock-mode)
+      (font-lock-mode-internal nil)
+      (font-lock-mode-internal t))
+
+    (add-hook 'font-lock-mode-hook
+	      (lambda ()
+		;; Provide defaults for new font-lock faces.
+		(defvar font-lock-builtin-face
+		  (if (boundp 'font-lock-preprocessor-face)
+		      font-lock-preprocessor-face
+		    font-lock-keyword-face))
+		(defvar font-lock-doc-face font-lock-string-face))
+	      nil t)
+
     ;; Setup imenu; it needs the same syntax-alist.
     (when imenu
 	(setq imenu-syntax-alist syntax-alist))))
@@ -1744,11 +1733,6 @@
     ;; Setup font-lock
     (sql-product-font-lock nil t)
 
-    ;; Force fontification, if its enabled.
-    (if (and (boundp 'font-lock-mode)
-	     font-lock-mode)
-	(font-lock-fontify-buffer))
-
     ;; Set the mode name to include the product.
     (setq mode-name (concat "SQL[" (prin1-to-string sql-product) "]"))))
 
--- a/lisp/ps-print.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/ps-print.el	Fri May 07 14:20:00 2004 +0000
@@ -3501,6 +3501,11 @@
      #'ps-print-quote
      (list
       (concat "\n;;; ps-print version " ps-print-version "\n")
+      ";; internal vars"
+      (ps-comment-string "ps-print-emacs-type" ps-print-emacs-type)
+      (ps-comment-string "ps-windows-system  " ps-windows-system)
+      (ps-comment-string "ps-lp-system       " ps-lp-system)
+      nil
       '(25 . ps-print-color-p)
       '(25 . ps-lpr-command)
       '(25 . ps-lpr-switches)
@@ -3657,14 +3662,28 @@
 	      (if (> col len)
 		  (make-string (- col len) ?\ )
 		" ")
-	      (cond ((null val) "nil")
-		    ((eq val t) "t")
-		    ((or (symbolp val) (listp val)) (format "'%S" val))
-		    (t          (format "%S" val))))))
+	      (ps-value-string val))))
    (t "")
    ))
 
 
+(defun ps-value-string (val)
+  "Return a string representation of VAL.  Used by `ps-print-quote'."
+  (cond ((null val)
+	 "nil")
+	((eq val t)
+	 "t")
+	((or (symbolp val) (listp val))
+	 (format "'%S" val))
+	(t
+	 (format "%S" val))))
+
+
+(defun ps-comment-string (str value)
+  "Return a comment string like \";; STR = VALUE\"."
+  (format ";; %s = %s" str (ps-value-string value)))
+
+
 (defun ps-value (alist-sym key)
   "Return value from association list ALIST-SYM which car is `eq' to KEY."
   (cdr (assq key (symbol-value alist-sym))))
--- a/lisp/select.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/select.el	Fri May 07 14:20:00 2004 +0000
@@ -176,47 +176,48 @@
 	(if coding
 	    (setq coding (coding-system-base coding))
 	  (setq coding 'raw-text))
-	;; Suppress producing escape sequences for compositions.
-	(remove-text-properties 0 (length str) '(composition nil) str)
-	(cond
-	 ((eq type 'TEXT)
-	  (if (not (multibyte-string-p str))
-	      ;; Don't have to encode unibyte string.
-	      (setq type 'STRING)
-	    ;; If STR contains only ASCII, Latin-1, and raw bytes,
-	    ;; encode STR by iso-latin-1, and return it as type
-	    ;; `STRING'.  Otherwise, encode STR by CODING.  In that
-	    ;; case, the returing type depends on CODING.
-	    (let ((charsets (find-charset-string str)))
-	      (setq charsets
-		    (delq 'ascii
-			  (delq 'latin-iso8859-1
-				(delq 'eight-bit-control
-				      (delq 'eight-bit-graphic charsets)))))
-	      (if charsets
-		  (setq str (encode-coding-string str coding)
-			type (if (memq coding '(compound-text
-						compound-text-with-extensions))
-				 'COMPOUND_TEXT
-			       'STRING))
-		(setq type 'STRING
-		      str (encode-coding-string str 'iso-latin-1))))))
+	(let ((inhibit-read-only t))
+	  ;; Suppress producing escape sequences for compositions.
+	  (remove-text-properties 0 (length str) '(composition nil) str)
+	  (cond
+	   ((eq type 'TEXT)
+	    (if (not (multibyte-string-p str))
+		;; Don't have to encode unibyte string.
+		(setq type 'STRING)
+	      ;; If STR contains only ASCII, Latin-1, and raw bytes,
+	      ;; encode STR by iso-latin-1, and return it as type
+	      ;; `STRING'.  Otherwise, encode STR by CODING.  In that
+	      ;; case, the returing type depends on CODING.
+	      (let ((charsets (find-charset-string str)))
+		(setq charsets
+		      (delq 'ascii
+			    (delq 'latin-iso8859-1
+				  (delq 'eight-bit-control
+					(delq 'eight-bit-graphic charsets)))))
+		(if charsets
+		    (setq str (encode-coding-string str coding)
+			  type (if (memq coding '(compound-text
+						  compound-text-with-extensions))
+				   'COMPOUND_TEXT
+				 'STRING))
+		  (setq type 'STRING
+			str (encode-coding-string str 'iso-latin-1))))))
 
-	 ((eq type 'COMPOUND_TEXT)
-	  (setq str (encode-coding-string str coding)))
+	   ((eq type 'COMPOUND_TEXT)
+	    (setq str (encode-coding-string str coding)))
 
-	 ((eq type 'STRING)
-	  (if (memq coding '(compound-text
-			     compound-text-with-extensions))
-	      (setq str (string-make-unibyte str))
-	    (setq str (encode-coding-string str coding))))
+	   ((eq type 'STRING)
+	    (if (memq coding '(compound-text
+			       compound-text-with-extensions))
+		(setq str (string-make-unibyte str))
+	      (setq str (encode-coding-string str coding))))
 
-	 ((eq type 'UTF8_STRING)
-	  (setq str (encode-coding-string str 'utf-8)))
+	   ((eq type 'UTF8_STRING)
+	    (setq str (encode-coding-string str 'utf-8)))
 
-	 (t
-	  (error "Unknow selection type: %S" type))
-	 ))
+	   (t
+	    (error "Unknow selection type: %S" type))
+	   )))
 
       (setq next-selection-coding-system nil)
       (cons type str))))
--- a/lisp/ses.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/ses.el	Fri May 07 14:20:00 2004 +0000
@@ -983,7 +983,7 @@
 	(ses-aset-with-undo (symbol-value def) elem value)
       (ses-set-with-undo def value))
     (let ((inhibit-read-only t)
-	  (fmt (plist-get '(ses--column-widths   "(ses-column-widths %S)"
+	  (fmt (plist-get '(ses--col-widths      "(ses-column-widths %S)"
 			    ses--col-printers    "(ses-column-printers %S)"
 			    ses--default-printer "(ses-default-printer %S)"
 			    ses--header-row      "(ses-header-row %S)"
--- a/lisp/simple.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/simple.el	Fri May 07 14:20:00 2004 +0000
@@ -2401,8 +2401,7 @@
 If arg is negative, kill backward.  Also kill the preceding newline.
 \(This is meant to make C-x z work well with negative arguments.\)
 If arg is zero, kill current line but exclude the trailing newline."
-  (interactive "P")
-  (setq arg (prefix-numeric-value arg))
+  (interactive "p")
   (if (and (> arg 0) (eobp) (save-excursion (forward-visible-line 0) (eobp)))
       (signal 'end-of-buffer nil))
   (if (and (< arg 0) (bobp) (save-excursion (end-of-visible-line) (bobp)))
--- a/lisp/subr.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/subr.el	Fri May 07 14:20:00 2004 +0000
@@ -90,7 +90,9 @@
  But documentation strings are usually not useful in nameless functions.
 INTERACTIVE should be a call to the function `interactive', which see.
 It may also be omitted.
-BODY should be a list of Lisp expressions."
+BODY should be a list of Lisp expressions.
+
+\(fn ARGS [DOCSTRING] [INTERACTIVE] BODY)"
   ;; Note that this definition should not use backquotes; subr.el should not
   ;; depend on backquote.el.
   (list 'function (cons 'lambda cdr)))
@@ -161,7 +163,7 @@
 (defmacro declare (&rest specs)
   "Do not evaluate any arguments and return nil.
 Treated as a declaration when used at the right place in a
-`defmacro' form.  \(See Info anchor `(elisp)Definition of declare'."
+`defmacro' form.  \(See Info anchor `(elisp)Definition of declare'.)"
   nil)
 
 (defsubst caar (x)
@@ -180,34 +182,34 @@
   "Return the cdr of the cdr of X."
   (cdr (cdr x)))
 
-(defun last (x &optional n)
-  "Return the last link of the list X.  Its car is the last element.
-If X is nil, return nil.
-If N is non-nil, return the Nth-to-last link of X.
-If N is bigger than the length of X, return X."
+(defun last (list &optional n)
+  "Return the last link of LIST.  Its car is the last element.
+If LIST is nil, return nil.
+If N is non-nil, return the Nth-to-last link of LIST.
+If N is bigger than the length of LIST, return LIST."
   (if n
-      (let ((m 0) (p x))
+      (let ((m 0) (p list))
 	(while (consp p)
 	  (setq m (1+ m) p (cdr p)))
 	(if (<= n 0) p
-	  (if (< n m) (nthcdr (- m n) x) x)))
-    (while (consp (cdr x))
-      (setq x (cdr x)))
-    x))
+	  (if (< n m) (nthcdr (- m n) list) list)))
+    (while (consp (cdr list))
+      (setq list (cdr list)))
+    list))
 
-(defun butlast (x &optional n)
+(defun butlast (list &optional n)
   "Returns a copy of LIST with the last N elements removed."
-  (if (and n (<= n 0)) x
-    (nbutlast (copy-sequence x) n)))
+  (if (and n (<= n 0)) list
+    (nbutlast (copy-sequence list) n)))
 
-(defun nbutlast (x &optional n)
+(defun nbutlast (list &optional n)
   "Modifies LIST to remove the last N elements."
-  (let ((m (length x)))
+  (let ((m (length list)))
     (or n (setq n 1))
     (and (< n m)
 	 (progn
-	   (if (> n 0) (setcdr (nthcdr (- (1- m) n) x) nil))
-	   x))))
+	   (if (> n 0) (setcdr (nthcdr (- (1- m) n) list) nil))
+	   list))))
 
 (defun delete-dups (list)
   "Destructively remove `equal' duplicates from LIST.
@@ -1114,6 +1116,7 @@
   "Open a TCP connection for a service to a host.
 Returns a subprocess-object to represent the connection.
 Input and output work as for subprocesses; `delete-process' closes it.
+
 Args are NAME BUFFER HOST SERVICE.
 NAME is name for process.  It is modified if necessary to make it unique.
 BUFFER is the buffer (or buffer-name) to associate with the process.
@@ -1178,12 +1181,13 @@
 
 ;; compatibility
 
+(make-obsolete 'process-kill-without-query
+               "use `process-query-on-exit-flag'\nor `set-process-query-on-exit-flag'."
+               "21.5")
 (defun process-kill-without-query (process &optional flag)
   "Say no query needed if PROCESS is running when Emacs is exited.
 Optional second argument if non-nil says to require a query.
-Value is t if a query was formerly required.
-New code should not use this function; use `process-query-on-exit-flag'
-or `set-process-query-on-exit-flag' instead."
+Value is t if a query was formerly required."
   (let ((old (process-query-on-exit-flag process)))
     (set-process-query-on-exit-flag process nil)
     old))
@@ -1693,26 +1697,27 @@
     (if (nth 4 handler) ;; COMMAND
 	(setq this-command (nth 4 handler)))))
 
-(defun insert-buffer-substring-no-properties (buf &optional start end)
-  "Insert before point a substring of buffer BUFFER, without text properties.
+(defun insert-buffer-substring-no-properties (buffer &optional start end)
+  "Insert before point a substring of BUFFER, without text properties.
 BUFFER may be a buffer or a buffer name.
 Arguments START and END are character numbers specifying the substring.
 They default to the beginning and the end of BUFFER."
   (let ((opoint (point)))
-    (insert-buffer-substring buf start end)
+    (insert-buffer-substring buffer start end)
     (let ((inhibit-read-only t))
       (set-text-properties opoint (point) nil))))
 
-(defun insert-buffer-substring-as-yank (buf &optional start end)
-  "Insert before point a part of buffer BUFFER, stripping some text properties.
-BUFFER may be a buffer or a buffer name.  Arguments START and END are
-character numbers specifying the substring.  They default to the
-beginning and the end of BUFFER.  Strip text properties from the
-inserted text according to `yank-excluded-properties'."
+(defun insert-buffer-substring-as-yank (buffer &optional start end)
+  "Insert before point a part of BUFFER, stripping some text properties.
+BUFFER may be a buffer or a buffer name.
+Arguments START and END are character numbers specifying the substring.
+They default to the beginning and the end of BUFFER.
+Strip text properties from the inserted text according to
+`yank-excluded-properties'."
   ;; Since the buffer text should not normally have yank-handler properties,
   ;; there is no need to handle them here.
   (let ((opoint (point)))
-    (insert-buffer-substring buf start end)
+    (insert-buffer-substring buffer start end)
     (remove-yank-excluded-properties opoint (point))))
 
 
@@ -2073,7 +2078,7 @@
 `split-string-default-separators', normally \"[ \\f\\t\\n\\r\\v]+\", and
 OMIT-NULLS is forced to t.
 
-If OMIT-NULLs is t, zero-length substrings are omitted from the list \(so
+If OMIT-NULLS is t, zero-length substrings are omitted from the list \(so
 that for the default value of SEPARATORS leading and trailing whitespace
 are effectively trimmed).  If nil, all zero-length substrings are retained,
 which correctly parses CSV format, for example.
--- a/lisp/term/w32-win.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/term/w32-win.el	Fri May 07 14:20:00 2004 +0000
@@ -76,6 +76,7 @@
 (require 'faces)
 (require 'select)
 (require 'menu-bar)
+(require 'x-dnd)
 ;; Conditional on new-fontset so bootstrapping works on non-GUI compiles
 (if (fboundp 'new-fontset)
     (require 'fontset))
@@ -105,7 +106,10 @@
 	   (y (cdr coords)))
       (if (and (> x 0) (> y 0))
 	  (set-frame-selected-window nil window))
-    (mapcar 'find-file (car (cdr (cdr event)))))
+      (mapcar (lambda (file-name) 
+		(x-dnd-handle-one-url window 'private 
+				      (concat "file:" file-name)))
+		(car (cdr (cdr event)))))
   (raise-frame)))
 
 (defun w32-drag-n-drop-other-frame (event)
--- a/lisp/term/x-win.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/term/x-win.el	Fri May 07 14:20:00 2004 +0000
@@ -2334,7 +2334,10 @@
 (defun x-clipboard-yank ()
   "Insert the clipboard contents, or the last stretch of killed text."
   (interactive)
-  (let ((clipboard-text (x-get-selection 'CLIPBOARD))
+  (let ((clipboard-text 
+	 (condition-case nil
+	     (x-get-selection 'CLIPBOARD)
+	   (error nil)))
 	(x-select-enable-clipboard t))
     (if (and clipboard-text (> (length clipboard-text) 0))
 	(kill-new clipboard-text))
--- a/lisp/textmodes/bibtex.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/textmodes/bibtex.el	Fri May 07 14:20:00 2004 +0000
@@ -1,6 +1,7 @@
 ;;; bibtex.el --- BibTeX mode for GNU Emacs
 
-;; Copyright (C) 1992,94,95,96,97,98,1999,2003  Free Software Foundation, Inc.
+;; Copyright (C) 1992,94,95,96,97,98,1999,2003,2004
+;;           Free Software Foundation, Inc.
 
 ;; Author: Stefan Schoef <schoef@offis.uni-oldenburg.de>
 ;;      Bengt Martensson <bengt@mathematik.uni-Bremen.de>
@@ -811,6 +812,7 @@
     (define-key km "\C-c\M-y" 'bibtex-yank-pop)
     (define-key km "\C-c\C-d" 'bibtex-empty-field)
     (define-key km "\C-c\C-f" 'bibtex-make-field)
+    (define-key km "\C-c\C-u" 'bibtex-entry-update)
     (define-key km "\C-c$" 'bibtex-ispell-abstract)
     (define-key km "\M-\C-a" 'bibtex-beginning-of-entry)
     (define-key km "\M-\C-e" 'bibtex-end-of-entry)
@@ -1122,44 +1124,6 @@
  '(bibtex-mode "@\\S(*\\s(" "\\s)" nil bibtex-hs-forward-sexp nil))
 
 
-(defconst bibtex-braced-string-syntax-table
-  (let ((st (make-syntax-table)))
-    (modify-syntax-entry ?\{ "(}" st)
-    (modify-syntax-entry ?\} "){" st)
-    (modify-syntax-entry ?\[ "." st)
-    (modify-syntax-entry ?\] "." st)
-    (modify-syntax-entry ?\( "." st)
-    (modify-syntax-entry ?\) "." st)
-    (modify-syntax-entry ?\\ "." st)
-    (modify-syntax-entry ?\" "." st)
-    st)
-  "Syntax-table to parse matched braces.")
-
-(defconst bibtex-quoted-string-syntax-table
-  (let ((st (make-syntax-table)))
-    (modify-syntax-entry ?\\ "\\" st)
-    (modify-syntax-entry ?\" "\"" st)
-    st)
-  "Syntax-table to parse matched quotes.")
-
-(defun bibtex-parse-field-string ()
-  "Parse a field string enclosed by braces or quotes.
-If a syntactically correct string is found, a pair containing the start and
-end position of the field string is returned, nil otherwise."
-  (let ((end-point
-         (or (and (eq (following-char) ?\")
-                  (save-excursion
-                    (with-syntax-table bibtex-quoted-string-syntax-table
-                      (forward-sexp 1))
-                    (point)))
-             (and (eq (following-char) ?\{)
-                  (save-excursion
-                    (with-syntax-table bibtex-braced-string-syntax-table
-                      (forward-sexp 1))
-                    (point))))))
-    (if end-point
-        (cons (point) end-point))))
-
 (defun bibtex-parse-association (parse-lhs parse-rhs)
   "Parse a string of the format <left-hand-side = right-hand-side>.
 The functions PARSE-LHS and PARSE-RHS are used to parse the corresponding
@@ -1199,6 +1163,44 @@
          ;; Now try again.
          (bibtex-parse-field-name))))
 
+(defconst bibtex-braced-string-syntax-table
+  (let ((st (make-syntax-table)))
+    (modify-syntax-entry ?\{ "(}" st)
+    (modify-syntax-entry ?\} "){" st)
+    (modify-syntax-entry ?\[ "." st)
+    (modify-syntax-entry ?\] "." st)
+    (modify-syntax-entry ?\( "." st)
+    (modify-syntax-entry ?\) "." st)
+    (modify-syntax-entry ?\\ "." st)
+    (modify-syntax-entry ?\" "." st)
+    st)
+  "Syntax-table to parse matched braces.")
+
+(defconst bibtex-quoted-string-syntax-table
+  (let ((st (make-syntax-table)))
+    (modify-syntax-entry ?\\ "\\" st)
+    (modify-syntax-entry ?\" "\"" st)
+    st)
+  "Syntax-table to parse matched quotes.")
+
+(defun bibtex-parse-field-string ()
+  "Parse a field string enclosed by braces or quotes.
+If a syntactically correct string is found, a pair containing the start and
+end position of the field string is returned, nil otherwise."
+  (let ((end-point
+         (or (and (eq (following-char) ?\")
+                  (save-excursion
+                    (with-syntax-table bibtex-quoted-string-syntax-table
+                      (forward-sexp 1))
+                    (point)))
+             (and (eq (following-char) ?\{)
+                  (save-excursion
+                    (with-syntax-table bibtex-braced-string-syntax-table
+                      (forward-sexp 1))
+                    (point))))))
+    (if end-point
+        (cons (point) end-point))))
+
 (defun bibtex-parse-field-text ()
   "Parse the text part of a BibTeX field.
 The text part is either a string, or an empty string, or a constant followed
@@ -1410,7 +1412,7 @@
   (let ((content (buffer-substring-no-properties (nth 0 (cdr bounds))
                                                  (nth 1 (cdr bounds)))))
     (if (and remove-delim
-             (string-match "\\`{\\(.*\\)}\\'" content))
+             (string-match "\\`[{\"]\\(.*\\)[}\"]\\'" content))
         (substring content (match-beginning 1) (match-end 1))
       content)))
 
@@ -1455,16 +1457,6 @@
       (setq list (cdr list)))
     list))
 
-(defun bibtex-assoc-of-regexp (string alist)
-  "Return non-nil if STRING is exactly matched by the car of an
-element of ALIST (case ignored). The value is actually the element
-of LIST whose car matches STRING."
-  (let ((case-fold-search t))
-    (while (and alist
-                (not (string-match (concat "\\`\\(?:" (caar alist) "\\)\\'") string)))
-      (setq alist (cdr alist)))
-    (car alist)))
-
 (defun bibtex-skip-to-valid-entry (&optional backward)
   "Unless at beginning of a valid BibTeX entry, move point to beginning of the
 next valid one. With optional argument BACKWARD non-nil, move backward to
@@ -1519,8 +1511,8 @@
 If FLAG is a string, the message is initialized (in this case a
 value for INTERVAL may be given as well (if not this is set to 5)).
 If FLAG is done, the message is deinitialized.
-If FLAG is absent, a message is echoed if point was incremented
-at least INTERVAL percent since last message was echoed."
+If FLAG is nil, a message is echoed if point was incremented at least
+`bibtex-progress-interval' percent since last message was echoed."
   (cond ((stringp flag)
          (setq bibtex-progress-lastmes flag)
          (setq bibtex-progress-interval (or interval 5)
@@ -1685,11 +1677,11 @@
   "Try to avoid point being at end of a BibTeX field."
   (end-of-line)
   (skip-chars-backward " \t")
-  (cond ((= (preceding-char) ?,)
-         (forward-char -2)))
-  (cond ((or (= (preceding-char) ?})
-             (= (preceding-char) ?\"))
-         (forward-char -1))))
+  (if (= (preceding-char) ?,)
+      (forward-char -2))
+  (if (or (= (preceding-char) ?})
+          (= (preceding-char) ?\"))
+      (forward-char -1)))
 
 (defun bibtex-enclosing-field (&optional noerr)
   "Search for BibTeX field enclosing point. Point moves to end of field.
@@ -1749,6 +1741,15 @@
         (error "Unknown tag field: %s.  Please submit a bug report"
                bibtex-last-kill-command))))))
 
+(defun bibtex-assoc-regexp (regexp alist)
+  "Return non-nil if REGEXP matches the car of an element of ALIST.
+The value is actually the element of ALIST matched by REGEXP.
+Case is ignored if `case-fold-search' is non-nil in the current buffer."
+  (while (and alist
+              (not (string-match regexp (caar alist))))
+    (setq alist (cdr alist)))
+  (car alist))
+
 (defun bibtex-format-entry ()
   "Helper function for `bibtex-clean-entry'.
 Formats current entry according to variable `bibtex-entry-format'."
@@ -1763,7 +1764,7 @@
                                   unify-case inherit-booktitle)
                       bibtex-entry-format))
             crossref-key bounds alternatives-there non-empty-alternative
-            entry-list req creq field-done field-list)
+            entry-list req-field-list field-done field-list)
 
         ;; identify entry type
         (goto-char (point-min))
@@ -1772,9 +1773,7 @@
               (end-type (match-end 0)))
           (setq entry-list (assoc-ignore-case (buffer-substring-no-properties
                                                beg-type end-type)
-                                              bibtex-entry-field-alist)
-                req  (nth 0 (nth 1 entry-list))  ; required part
-                creq (nth 0 (nth 2 entry-list))) ; crossref part
+                                              bibtex-entry-field-alist))
 
           ;; unify case of entry name
           (when (memq 'unify-case format)
@@ -1791,20 +1790,32 @@
         ;; determine if entry has crossref field and if at least
         ;; one alternative is non-empty
         (goto-char (point-min))
-        (while (setq bounds (bibtex-search-forward-field
-                             bibtex-field-name))
-          (goto-char (bibtex-start-of-name-in-field bounds))
-          (cond ((looking-at "ALT")
-                 (setq alternatives-there t)
-                 (goto-char (bibtex-start-of-text-in-field bounds))
-                 (if (not (looking-at bibtex-empty-field-re))
-                     (setq non-empty-alternative t)))
-                ((and (looking-at "\\(OPT\\)?crossref\\>")
-                      (progn (goto-char (bibtex-start-of-text-in-field bounds))
-                             (not (looking-at bibtex-empty-field-re))))
-                 (setq crossref-key
-                       (bibtex-text-in-field-bounds bounds t))))
-          (goto-char (bibtex-end-of-field bounds)))
+        (let* ((fields-alist (bibtex-parse-entry))
+               (case-fold-search t)
+               (field (bibtex-assoc-regexp "\\(OPT\\)?crossref\\>"
+                                           fields-alist)))
+          (setq crossref-key (and field
+                                  (not (string-match bibtex-empty-field-re
+                                                     (cdr field)))
+                                  (cdr field))
+                req-field-list (if crossref-key
+                                   (nth 0 (nth 2 entry-list))  ; crossref part
+                                 (nth 0 (nth 1 entry-list))))  ; required part
+
+          (dolist (rfield req-field-list)
+            (when (nth 3 rfield) ; we should have an alternative
+              (setq alternatives-there t
+                    field (bibtex-assoc-regexp
+                           (concat "\\(ALT\\)?" (car rfield) "\\>")
+                           fields-alist))
+              (if (and field
+                       (not (string-match bibtex-empty-field-re
+                                          (cdr field))))
+                  (cond ((not non-empty-alternative)
+                         (setq non-empty-alternative t))
+                        ((memq 'required-fields format)
+                         (error "More than one non-empty alternative.")))))))
+
         (if (and alternatives-there
                  (not non-empty-alternative)
                  (memq 'required-fields format))
@@ -1832,18 +1843,23 @@
             ;; quite some redundancy compared with what we need to do
             ;; anyway. So for speed-up we avoid using them.
 
-            (when (and opt-alt
-                       (memq 'opts-or-alts format))
-              (if empty-field
-                  ;; Either it is an empty ALT field. Then we have checked
-                  ;; already that we have one non-empty alternative.
-                  ;; Or it is an empty OPT field that we do not miss anyway.
-                  ;; So we can safely delete this field.
-                  (progn (delete-region beg-field end-field)
-                         (setq deleted t))
-                ;; otherwise: not empty, delete "OPT" or "ALT"
-                (goto-char beg-name)
-                (delete-char 3)))
+            (if (memq 'opts-or-alts format)
+                (cond ((and empty-field
+                            (or opt-alt
+                                (let ((field (assoc-ignore-case
+                                              field-name req-field-list)))
+                                  (or (not field)       ; OPT field
+                                      (nth 3 field))))) ; ALT field
+                       ;; Either it is an empty ALT field. Then we have checked
+                       ;; already that we have one non-empty alternative. Or it
+                       ;; is an empty OPT field that we do not miss anyway.
+                       ;; So we can safely delete this field.
+                       (delete-region beg-field end-field)
+                       (setq deleted t))
+                      ;; otherwise: not empty, delete "OPT" or "ALT"
+                      (opt-alt
+                       (goto-char beg-name)
+                       (delete-char 3))))
 
             (unless deleted
               (push field-name field-list)
@@ -1902,8 +1918,7 @@
               ;; if empty field, complain
               (if (and empty-field
                        (memq 'required-fields format)
-                       (assoc-ignore-case field-name
-                                          (if crossref-key creq req)))
+                       (assoc-ignore-case field-name req-field-list))
                   (error "Mandatory field `%s' is empty" field-name))
 
               ;; unify case of field name
@@ -1925,8 +1940,8 @@
 
         ;; check whether all required fields are present
         (if (memq 'required-fields format)
-            (let (altlist (found 0))
-              (dolist (fname (if crossref-key creq req))
+            (let ((found 0) altlist)
+              (dolist (fname req-field-list)
                 (if (nth 3 fname)
                     (push (car fname) altlist))
                 (unless (or (member (car fname) field-list)
@@ -1940,7 +1955,7 @@
                        (error "Alternative mandatory field `%s' is missing"
                               altlist))
                       ((> found 1)
-                       (error "Alternative fields `%s' is defined %s times"
+                       (error "Alternative fields `%s' are defined %s times"
                               altlist found))))))
 
         ;; update point
@@ -2051,8 +2066,8 @@
             (setq titlestring (substring titlestring 0 (match-beginning 0))))))
     ;; gather words from titlestring into a list. Ignore
     ;; specific words and use only a specific amount of words.
-    (let (case-fold-search titlewords titlewords-extra titleword end-match
-                           (counter 0))
+    (let ((counter 0)
+          case-fold-search titlewords titlewords-extra titleword end-match)
       (while (and (or (not (numberp bibtex-autokey-titlewords))
                       (< counter (+ bibtex-autokey-titlewords
                                     bibtex-autokey-titlewords-stretch)))
@@ -2079,10 +2094,14 @@
   "Do some abbreviations on TITLEWORD.
 The rules are defined in `bibtex-autokey-titleword-abbrevs'
 and `bibtex-autokey-titleword-length'."
-  (let ((abbrev (bibtex-assoc-of-regexp
-                 titleword bibtex-autokey-titleword-abbrevs)))
-    (if abbrev
-        (cdr abbrev)
+  (let ((case-folde-search t)
+        (alist bibtex-autokey-titleword-abbrevs))
+    (while (and alist
+                (not (string-match (concat "\\`\\(?:" (caar alist) "\\)\\'")
+                                   titleword)))
+      (setq alist (cdr alist)))
+    (if alist
+        (cdar alist)
       (bibtex-autokey-abbrev titleword
                              bibtex-autokey-titleword-length))))
 
@@ -2384,6 +2403,7 @@
              (display-completion-list (all-completions part-of-word
                                                        completions)))
            (message "Making completion list...done")
+           ;; return value is handled by choose-completion-string-functions
            nil))))
 
 (defun bibtex-complete-string-cleanup (str)
@@ -2629,6 +2649,34 @@
   (easy-menu-add bibtex-entry-menu)
   (run-hooks 'bibtex-mode-hook))
 
+(defun bibtex-field-list (entry-type)
+  "Return list of allowed fields for entry ENTRY-TYPE.
+More specifically, the return value is a cons pair (REQUIRED . OPTIONAL),
+where REQUIRED and OPTIONAL are lists of the required and optional field
+names for ENTRY-TYPE according to `bibtex-entry-field-alist'."
+  (let ((e (assoc-ignore-case entry-type bibtex-entry-field-alist))
+        required optional)
+    (unless e
+      (error "Bibtex entry type %s not defined" entry-type))
+    (if (and (member-ignore-case entry-type bibtex-include-OPTcrossref)
+             (nth 2 e))
+        (setq required (nth 0 (nth 2 e))
+              optional (nth 1 (nth 2 e)))
+      (setq required (nth 0 (nth 1 e))
+            optional (nth 1 (nth 1 e))))
+    (if bibtex-include-OPTkey
+        (push (list "key"
+                    "Used for reference key creation if author and editor fields are missing"
+                    (if (or (stringp bibtex-include-OPTkey)
+                            (fboundp bibtex-include-OPTkey))
+                        bibtex-include-OPTkey))
+              optional))
+    (if (member-ignore-case entry-type bibtex-include-OPTcrossref)
+        (push '("crossref" "Reference key of the cross-referenced entry")
+              optional))
+    (setq optional (append optional bibtex-user-optional-fields))
+    (cons required optional)))
+
 (defun bibtex-entry (entry-type)
   "Insert a new BibTeX entry.
 After insertion it calls the functions in `bibtex-add-entry-hook'."
@@ -2638,38 +2686,17 @@
                             bibtex-entry-field-alist
                             nil t nil 'bibtex-entry-type-history)))
                  (list e-t)))
-  (let* (required optional
-         (key (if bibtex-maintain-sorted-entries
-                  (bibtex-read-key (format "%s key: " entry-type))))
-         (e (assoc-ignore-case entry-type bibtex-entry-field-alist))
-         (r-n-o (elt e 1))
-         (c-ref (elt e 2)))
-    (if (not e)
-        (error "Bibtex entry type %s not defined" entry-type))
-    (if (and (member entry-type bibtex-include-OPTcrossref)
-             c-ref)
-        (setq required (elt c-ref 0)
-              optional (elt c-ref 1))
-      (setq required (elt r-n-o 0)
-            optional (elt r-n-o 1)))
+  (let ((key (if bibtex-maintain-sorted-entries
+                 (bibtex-read-key (format "%s key: " entry-type))))
+        (field-list (bibtex-field-list entry-type)))
     (unless (bibtex-prepare-new-entry (list key nil entry-type))
       (error "Entry with key `%s' already exists" key))
     (indent-to-column bibtex-entry-offset)
     (insert "@" entry-type (bibtex-entry-left-delimiter))
-    (if key
-        (insert key))
+    (if key (insert key))
     (save-excursion
-      (mapcar 'bibtex-make-field required)
-      (if (member entry-type bibtex-include-OPTcrossref)
-          (bibtex-make-optional-field '("crossref")))
-      (if bibtex-include-OPTkey
-          (if (or (stringp bibtex-include-OPTkey)
-                  (fboundp bibtex-include-OPTkey))
-              (bibtex-make-optional-field
-               (list "key" nil bibtex-include-OPTkey))
-            (bibtex-make-optional-field '("key"))))
-      (mapcar 'bibtex-make-optional-field optional)
-      (mapcar 'bibtex-make-optional-field bibtex-user-optional-fields)
+      (mapcar 'bibtex-make-field (car field-list))
+      (mapcar 'bibtex-make-optional-field (cdr field-list))
       (if bibtex-comma-after-last-field
           (insert ","))
       (insert "\n")
@@ -2680,10 +2707,31 @@
 	(bibtex-autofill-entry))
     (run-hooks 'bibtex-add-entry-hook)))
 
+(defun bibtex-entry-update ()
+  "Update an existing BibTeX entry.
+In the BibTeX entry at point, make new fields for those items that may occur
+according to `bibtex-entry-field-alist', but are not yet present."
+  (interactive)
+  (save-excursion
+    (bibtex-beginning-of-entry)
+    ;; For inserting new fields, we use the fact that
+    ;; bibtex-parse-entry moves point to the end of the last field.
+    (let* ((fields-alist (bibtex-parse-entry))
+           (field-list (bibtex-field-list
+                        (substring (cdr (assoc "=type=" fields-alist))
+                                   1)))) ; don't want @
+      (dolist (field (car field-list))
+        (unless (assoc-ignore-case (car field) fields-alist)
+          (bibtex-make-field field)))
+      (dolist (field (cdr field-list))
+        (unless (assoc-ignore-case (car field) fields-alist)
+          (bibtex-make-optional-field field))))))
+
 (defun bibtex-parse-entry ()
   "Parse entry at point, return an alist.
 The alist elements have the form (FIELD . TEXT), where FIELD can also be
-the special strings \"=type=\" and \"=key=\"."
+the special strings \"=type=\" and \"=key=\".
+Move point to the end of the last field."
   (let (alist bounds)
     (when (looking-at bibtex-entry-head)
       (push (cons "=type=" (match-string bibtex-type-in-head)) alist)
@@ -2774,28 +2822,14 @@
                                    (looking-at "OPT\\|ALT"))
                             (match-end 0) mb)
                         (bibtex-end-of-name-in-field bounds)))
-           (entry-type (progn (re-search-backward
-                               bibtex-entry-maybe-empty-head nil t)
-                              (bibtex-type-in-head)))
-           (entry-list (assoc-ignore-case entry-type
-                                          bibtex-entry-field-alist))
-           (c-r-list (elt entry-list 2))
-           (req-opt-list (if (and (member entry-type
-                                          bibtex-include-OPTcrossref)
-                                  c-r-list)
-                             c-r-list
-                           (elt entry-list 1)))
-           (list-of-entries (append (elt req-opt-list 0)
-                                    (elt req-opt-list 1)
-                                    bibtex-user-optional-fields
-                                    (if (member entry-type
-                                                bibtex-include-OPTcrossref)
-                                        '(("crossref" "Reference key of the cross-referenced entry")))
-                                    (if bibtex-include-OPTkey
-                                        '(("key" "Used for reference key creation if author and editor fields are missing")))))
-           (comment (assoc-ignore-case field-name list-of-entries)))
+           (field-list (bibtex-field-list (progn (re-search-backward
+                                                  bibtex-entry-maybe-empty-head nil t)
+                                                 (bibtex-type-in-head))))
+           (comment (assoc-ignore-case field-name
+                                       (append (car field-list)
+                                               (cdr field-list)))))
       (if comment
-          (message (elt comment 1))
+          (message (nth 1 comment))
         (message "No comment available")))))
 
 (defun bibtex-make-field (field &optional called-by-yank)
@@ -2804,24 +2838,13 @@
 \(FIELD-NAME COMMENT-STRING INIT ALTERNATIVE-FLAG) as in
 `bibtex-entry-field-alist'."
   (interactive
-   (list (let* ((entry-type
-                 (save-excursion
-                   (bibtex-enclosing-entry-maybe-empty-head)
-                   (bibtex-type-in-head)))
-                ;; "preliminary" completion list
-                (fl (nth 1 (assoc-ignore-case
-                            entry-type bibtex-entry-field-alist)))
-                ;; "full" completion list
-                (field-list (append (nth 0 fl)
-                                    (nth 1 fl)
-                                    bibtex-user-optional-fields
-                                    (if (member entry-type
-                                                bibtex-include-OPTcrossref)
-                                        '(("crossref")))
-                                    (if bibtex-include-OPTkey
-                                        '(("key")))))
-                (completion-ignore-case t))
-           (completing-read "BibTeX field name: " field-list
+   (list (let ((completion-ignore-case t)
+               (field-list (bibtex-field-list
+                             (save-excursion
+                               (bibtex-enclosing-entry-maybe-empty-head)
+                               (bibtex-type-in-head)))))
+           (completing-read "BibTeX field name: "
+                            (append (car field-list) (cdr field-list))
                             nil nil nil bibtex-field-history))))
   (unless (consp field)
     (setq field (list field)))
@@ -2848,8 +2871,9 @@
           ((fboundp init)
            (insert (funcall init)))))
   (if (not called-by-yank) (insert (bibtex-field-right-delimiter)))
-  (if (interactive-p)
-      (forward-char -1)))
+  (when (interactive-p)
+    (forward-char -1)
+    (bibtex-print-help-message)))
 
 (defun bibtex-beginning-of-entry ()
   "Move to beginning of BibTeX entry (beginning of line).
@@ -2982,13 +3006,14 @@
                                "\\(OPT\\)?crossref" t)))
                   (list key
                         (if bounds (bibtex-text-in-field-bounds bounds t))
-                        entry-name))))
-          (list key nil entry-name)))))
+                        entry-name)))
+            (list key nil entry-name))))))
 
 (defun bibtex-lessp (index1 index2)
   "Predicate for sorting BibTeX entries with indices INDEX1 and INDEX2.
 Each index is a list (KEY CROSSREF-KEY ENTRY-NAME).
-The predicate depends on the variable `bibtex-maintain-sorted-entries'."
+The predicate depends on the variable `bibtex-maintain-sorted-entries'.
+If its value is nil use plain sorting."
   (cond ((not index1) (not index2)) ; indices can be nil
         ((not index2) nil)
         ((equal bibtex-maintain-sorted-entries 'crossref)
@@ -3017,12 +3042,10 @@
 (defun bibtex-sort-buffer ()
   "Sort BibTeX buffer alphabetically by key.
 The predicate for sorting is defined via `bibtex-maintain-sorted-entries'.
-Text outside of BibTeX entries is not affected.  If
-`bibtex-sort-ignore-string-entries' is non-nil, @String entries will be
-ignored."
+If its value is nil use plain sorting. Text outside of BibTeX entries is not
+affected. If `bibtex-sort-ignore-string-entries' is non-nil, @String entries
+will be ignored."
   (interactive)
-  (unless bibtex-maintain-sorted-entries
-    (error "You must choose a sorting scheme"))
   (save-restriction
     (narrow-to-region (bibtex-beginning-of-first-entry)
                       (save-excursion (goto-char (point-max))
@@ -3523,27 +3546,30 @@
                          (match-end bibtex-key-in-head)))
       (insert key))
     ;; sorting
-    (let* ((start (bibtex-beginning-of-entry))
-           (end (progn (bibtex-end-of-entry)
-                       (if (re-search-forward
-                            bibtex-entry-maybe-empty-head nil 'move)
-                           (goto-char (match-beginning 0)))
-                       (point)))
-           (entry (buffer-substring start end))
-           (index (progn (goto-char start)
-                         (bibtex-entry-index))))
-      (delete-region start end)
-      (unless (prog1 (or called-by-reformat
-                         (if (and bibtex-maintain-sorted-entries
-                                  (not (and bibtex-sort-ignore-string-entries
-                                            (equal entry-type "string"))))
-                             (bibtex-prepare-new-entry index)
-                           (not (bibtex-find-entry (car index)))))
-                (insert entry)
-                (forward-char -1)
-                (bibtex-beginning-of-entry) ; moves backward
-                (re-search-forward bibtex-entry-head))
-        (error "New inserted entry yields duplicate key")))
+    (unless called-by-reformat
+      (let* ((start (bibtex-beginning-of-entry))
+             (end (progn (bibtex-end-of-entry)
+                         (if (re-search-forward
+                              bibtex-entry-maybe-empty-head nil 'move)
+                             (goto-char (match-beginning 0)))
+                         (point)))
+             (entry (buffer-substring start end))
+             (index (progn (goto-char start)
+                           (bibtex-entry-index)))
+             no-error)
+        (if (and bibtex-maintain-sorted-entries
+                 (not (and bibtex-sort-ignore-string-entries
+                           (equal entry-type "string"))))
+            (progn
+              (delete-region start end)
+              (setq no-error (bibtex-prepare-new-entry index))
+              (insert entry)
+              (forward-char -1)
+              (bibtex-beginning-of-entry) ; moves backward
+              (re-search-forward bibtex-entry-head))
+          (setq no-error (bibtex-find-entry (car index))))
+        (unless no-error
+          (error "New inserted entry yields duplicate key"))))
     ;; final clean up
     (unless called-by-reformat
       (save-excursion
@@ -3621,91 +3647,89 @@
     (indent-to-column bibtex-entry-offset)
     (goto-char pnt)))
 
-(defun bibtex-reformat (&optional additional-options called-by-convert-alien)
+(defun bibtex-realign ()
+  "Realign BibTeX entries such that they are separated by one blank line."
+  (goto-char (point-min))
+  (let ((case-fold-search t))
+    (when (looking-at bibtex-valid-entry-whitespace-re)
+      (replace-match "\\1"))
+    (while (re-search-forward bibtex-valid-entry-whitespace-re nil t)
+      (replace-match "\n\n\\1"))))
+
+(defun bibtex-reformat (&optional read-options)
   "Reformat all BibTeX entries in buffer or region.
 With prefix argument, read options for reformatting from minibuffer.
 With \\[universal-argument] \\[universal-argument] prefix argument, reuse previous answers (if any) again.
-If mark is active it reformats entries in region, if not in whole buffer."
+If mark is active reformat entries in region, if not in whole buffer."
   (interactive "*P")
   (let* ((pnt (point))
          (use-previous-options
-          (and (equal (prefix-numeric-value additional-options) 16)
+          (and (equal (prefix-numeric-value read-options) 16)
                (or bibtex-reformat-previous-options
                    bibtex-reformat-previous-reference-keys)))
          (bibtex-entry-format
-          (if additional-options
+          (if read-options
               (if use-previous-options
                   bibtex-reformat-previous-options
                 (setq bibtex-reformat-previous-options
-                      (delq nil (list
-                                 (if (or called-by-convert-alien
-                                         (y-or-n-p "Realign entries (recommended)? "))
-                                     'realign)
-                                 (if (y-or-n-p "Remove empty optional and alternative fields? ")
-                                     'opts-or-alts)
-                                 (if (y-or-n-p "Remove delimiters around pure numerical fields? ")
-                                     'numerical-fields)
-                                 (if (y-or-n-p (concat (if bibtex-comma-after-last-field "Insert" "Remove")
-                                                       " comma at end of entry? "))
-                                     'last-comma)
-                                 (if (y-or-n-p "Replace double page dashes by single ones? ")
-                                     'page-dashes)
-                                 (if (y-or-n-p "Force delimiters? ")
-                                     'delimiters)
-                                 (if (y-or-n-p "Unify case of entry types and field names? ")
-                                     'unify-case)))))
+                      (mapcar (lambda (option)
+                                (if (y-or-n-p (car option)) (cdr option)))
+                              `(("Realign entries (recommended)? " . 'realign)
+                                ("Remove empty optional and alternative fields? " . 'opts-or-alts)
+                                ("Remove delimiters around pure numerical fields? " . 'numerical-fields)
+                                (,(concat (if bibtex-comma-after-last-field "Insert" "Remove")
+                                         " comma at end of entry? ") . 'last-comma)
+                                ("Replace double page dashes by single ones? " . 'page-dashes)
+                                ("Force delimiters? " . 'delimiters)
+                                ("Unify case of entry types and field names? " . 'unify-case)))))
             '(realign)))
-         (reformat-reference-keys (if additional-options
-                                      (if use-previous-options
-                                          bibtex-reformat-previous-reference-keys
-                                        (setq bibtex-reformat-previous-reference-keys
-                                              (y-or-n-p "Generate new reference keys automatically? ")))))
-         bibtex-autokey-edit-before-use
-         (bibtex-sort-ignore-string-entries t)
+         (reformat-reference-keys
+          (if read-options
+              (if use-previous-options
+                  bibtex-reformat-previous-reference-keys
+                (setq bibtex-reformat-previous-reference-keys
+                      (y-or-n-p "Generate new reference keys automatically? ")))))
          (start-point (if (bibtex-mark-active)
                           (region-beginning)
-                        (bibtex-beginning-of-first-entry)
-                        (bibtex-skip-to-valid-entry)
-                        (point)))
+                        (point-min)))
          (end-point (if (bibtex-mark-active)
                         (region-end)
-                      (point-max))))
+                      (point-max)))
+         (bibtex-sort-ignore-string-entries t)
+         bibtex-autokey-edit-before-use)
+
     (save-restriction
       (narrow-to-region start-point end-point)
-      (when (memq 'realign bibtex-entry-format)
-        (goto-char (point-min))
-        (while (re-search-forward bibtex-valid-entry-whitespace-re nil t)
-          (replace-match "\n\\1")))
+      (if (memq 'realign bibtex-entry-format)
+        (bibtex-realign))
       (goto-char start-point)
       (bibtex-progress-message "Formatting" 1)
       (bibtex-map-entries (lambda (key beg end)
                             (bibtex-progress-message)
-                            (bibtex-clean-entry reformat-reference-keys t)
-                            (when (memq 'realign bibtex-entry-format)
-                              (goto-char end)
-                              (bibtex-delete-whitespace)
-                              (open-line 2))))
+                            (bibtex-clean-entry reformat-reference-keys t)))
+      (when (memq 'realign bibtex-entry-format)
+        (bibtex-delete-whitespace)
+        (open-line (if (eobp) 1 2)))
       (bibtex-progress-message 'done))
     (when (and reformat-reference-keys
-               bibtex-maintain-sorted-entries
-               (not called-by-convert-alien))
+               bibtex-maintain-sorted-entries)
+      (bibtex-progress-message "Sorting" 1)
       (bibtex-sort-buffer)
-      (kill-local-variable 'bibtex-reference-keys))
+      (kill-local-variable 'bibtex-reference-keys)
+      (bibtex-progress-message 'done))
     (goto-char pnt)))
 
-(defun bibtex-convert-alien (&optional do-additional-reformatting)
+(defun bibtex-convert-alien (&optional read-options)
   "Convert an alien BibTeX buffer to be fully usable by BibTeX mode.
-If a file does not conform with some standards used by BibTeX mode,
+If a file does not conform with all standards used by BibTeX mode,
 some of the high-level features of BibTeX mode will not be available.
 This function tries to convert current buffer to conform with these standards.
-With prefix argument DO-ADDITIONAL-REFORMATTING
-non-nil, read options for reformatting entries from minibuffer."
+With prefix argument READ-OPTIONS non-nil, read options for reformatting
+entries from minibuffer."
   (interactive "*P")
   (message "Starting to validate buffer...")
   (sit-for 1 nil t)
-  (goto-char (point-min))
-  (while (re-search-forward "[ \t\n]+@" nil t)
-    (replace-match "\n@"))
+  (bibtex-realign)
   (message
    "If errors occur, correct them and call `bibtex-convert-alien' again")
   (sit-for 5 nil t)
@@ -3714,10 +3738,7 @@
           (bibtex-validate))
     (message "Starting to reformat entries...")
     (sit-for 2 nil t)
-    (bibtex-reformat do-additional-reformatting t)
-    (when bibtex-maintain-sorted-entries
-      (message "Starting to sort buffer...")
-      (bibtex-sort-buffer))
+    (bibtex-reformat read-options)
     (goto-char (point-max))
     (message "Buffer is now parsable. Please save it.")))
 
@@ -3890,5 +3911,5 @@
 
 (provide 'bibtex)
 
-;;; arch-tag: ee2be3af-caad-427f-b42a-d20fad630d04
+;; arch-tag: ee2be3af-caad-427f-b42a-d20fad630d04
 ;;; bibtex.el ends here
--- a/lisp/toolbar/tool-bar.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/toolbar/tool-bar.el	Fri May 07 14:20:00 2004 +0000
@@ -239,11 +239,14 @@
   (tool-bar-add-item-from-menu 'undo "undo" nil
 			       :visible '(not (eq 'special (get major-mode
 								'mode-class))))
-  (tool-bar-add-item-from-menu 'kill-region "cut" nil
+  (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [cut])
+			       "cut" nil
 			       :visible '(not (eq 'special (get major-mode
 								'mode-class))))
-  (tool-bar-add-item-from-menu 'menu-bar-kill-ring-save "copy")
-  (tool-bar-add-item-from-menu 'yank "paste" nil
+  (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [copy])
+			       "copy")
+  (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [paste])
+			       "paste" nil
 			       :visible '(not (eq 'special (get major-mode
 								'mode-class))))
   (tool-bar-add-item-from-menu 'nonincremental-search-forward "search")
--- a/lisp/wdired.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/wdired.el	Fri May 07 14:20:00 2004 +0000
@@ -329,8 +329,8 @@
   (buffer-enable-undo) ; Performance hack. See above.
   (set-buffer-modified-p nil)
   (setq buffer-undo-list nil)
-  (run-hooks wdired-mode-hook)
-  (message "Press C-c C-c when finished"))
+  (run-hooks 'wdired-mode-hook)
+  (message (substitute-command-keys "Press \\[wdired-finish-edit] when finished")))
 
 
 ;; Protect the buffer so only the filenames can be changed, and put
@@ -416,7 +416,8 @@
     (insert wdired-old-content))
   (wdired-change-to-dired-mode)
   (set-buffer-modified-p nil)
-  (setq buffer-undo-list nil))
+  (setq buffer-undo-list nil)
+  (message "Changes aborted"))
 
 (defun wdired-finish-edit ()
   "Actually rename files based on your editing in the Dired buffer."
--- a/lisp/winner.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/winner.el	Fri May 07 14:20:00 2004 +0000
@@ -1,6 +1,6 @@
 ;;; winner.el --- Restore old window configurations
 
-;; Copyright (C) 1997, 1998, 2001 Free Software Foundation. Inc.
+;; Copyright (C) 1997, 1998, 2001, 2004 Free Software Foundation. Inc.
 
 ;; Author: Ivar Rummelhoff <ivarru@math.uio.no>
 ;; Created: 27 Feb 1997
@@ -30,8 +30,8 @@
 ;; window configuration (i.e. how the frames are partitioned into
 ;; windows) so that the changes can be "undone" using the command
 ;; `winner-undo'.  By default this one is bound to the key sequence
-;; ctrl-x left.  If you change your mind (while undoing), you can
-;; press ctrl-x right (calling `winner-redo').  Even though it uses
+;; ctrl-c left.  If you change your mind (while undoing), you can
+;; press ctrl-c right (calling `winner-redo').  Even though it uses
 ;; some features of Emacs20.3, winner.el should also work with
 ;; Emacs19.34 and XEmacs20, provided that the installed version of
 ;; custom is not obsolete.
@@ -474,8 +474,8 @@
 
 (unless winner-mode-map
   (setq winner-mode-map (make-sparse-keymap))
-  (define-key winner-mode-map [(control x) left] 'winner-undo)
-  (define-key winner-mode-map [(control x) right] 'winner-redo))
+  (define-key winner-mode-map [(control c) left] 'winner-undo)
+  (define-key winner-mode-map [(control c) right] 'winner-redo))
 
 (unless (or (assq 'winner-mode minor-mode-map-alist)
 	    winner-dont-bind-my-keys)
--- a/lisp/xml.el	Sat May 01 19:23:22 2004 +0000
+++ b/lisp/xml.el	Fri May 07 14:20:00 2004 +0000
@@ -668,5 +668,5 @@
 
 (provide 'xml)
 
-;;; arch-tag: 5864b283-5a68-4b59-a20d-36a72b353b9b
+;; arch-tag: 5864b283-5a68-4b59-a20d-36a72b353b9b
 ;;; xml.el ends here
--- a/man/ChangeLog	Sat May 01 19:23:22 2004 +0000
+++ b/man/ChangeLog	Fri May 07 14:20:00 2004 +0000
@@ -1,3 +1,11 @@
+2004-05-04  Jason Rumney  <jasonr@gnu.org>
+
+	* makefile.w32-in: Revert last change
+
+2004-05-03  Jason Rumney  <jasonr@gnu.org>
+
+	* makefile.w32-in (MULTI_INSTALL_INFO, ENVADD): Use forward slashes.
+
 2004-04-28  Masatake YAMATO  <jet@gyve.org>
 
 	* widget.texi (Programming Example): Remove
--- a/man/ses.texi	Sat May 01 19:23:22 2004 +0000
+++ b/man/ses.texi	Fri May 07 14:20:00 2004 +0000
@@ -41,7 +41,7 @@
 @title SES
 @subtitle Simple Emacs Spreadsheet
 @author Jonathan A. Yavner
-@author @email{jyavner@@engineer.com}
+@author @email{jyavner@@member.fsf.org}
 
 @page
 @vskip 0pt plus 1filll
--- a/msdos/ChangeLog	Sat May 01 19:23:22 2004 +0000
+++ b/msdos/ChangeLog	Fri May 07 14:20:00 2004 +0000
@@ -1,3 +1,7 @@
+2004-05-02  Eli Zaretskii  <eliz@gnu.org>
+
+	* sed2v2.inp (HAVE_GETRUSAGE): Define.
+
 2003-09-22  Eli Zaretskii  <eliz@gnu.org>
 
 	* mainmake.v2 (man lispref lispintro): Specify an explicit target
--- a/msdos/sed2v2.inp	Sat May 01 19:23:22 2004 +0000
+++ b/msdos/sed2v2.inp	Fri May 07 14:20:00 2004 +0000
@@ -42,6 +42,7 @@
 /^#undef HAVE_MEMCMP *$/s/^.*$/#define HAVE_MEMCMP 1/
 /^#undef HAVE_MEMMOVE *$/s/^.*$/#define HAVE_MEMMOVE 1/
 /^#undef HAVE_SETRLIMIT *$/s/^.*$/#define HAVE_SETRLIMIT 1/
+/^#undef HAVE_GETRUSAGE *$/s/^.*$/#define HAVE_GETRUSAGE 1/
 /^#undef HAVE_TM_GMTOFF *$/s/^.*$/#define HAVE_TM_GMTOFF 1/
 /^#undef HAVE_MBLEN *$/s/^.*$/#define HAVE_MBLEN 1/
 /^#undef HAVE_STRUCT_TIMEZONE *$/s/^.*$/#define HAVE_STRUCT_TIMEZONE 1/
--- a/nt/ChangeLog	Sat May 01 19:23:22 2004 +0000
+++ b/nt/ChangeLog	Fri May 07 14:20:00 2004 +0000
@@ -1,3 +1,18 @@
+2004-05-06  Jason Rumney  <jasonr@gnu.org>
+
+	* configure.bat: Use -mno-cygwin to check for image libraries
+	when needed.
+
+2004-05-03  Jason Rumney  <jasonr@gnu.org>
+
+	* makefile.nt, ebuild.bat, install.bat, fast-install.bat:
+	* makefile.def: Remove.
+
+	* nmake.defs (SYS_LDFLAGS): Add -nologo
+
+	* makefile.w32-in (info-gmake, info-nmake): New targets.
+	(info): Use them.
+
 2004-04-23  Juanma Barranquero  <lektu@terra.es>
 
 	* nmake.defs:
--- a/nt/configure.bat	Sat May 01 19:23:22 2004 +0000
+++ b/nt/configure.bat	Fri May 07 14:20:00 2004 +0000
@@ -294,13 +294,20 @@
 rem   dynamically, the libraries themselves do not need to be present
 rem   at compile time, but the header files are required.
 
+set mingwflag=
+
+if (%nocygwin%) == (N) goto flagsOK
+set mingwflag=-mno-cygwin
+
+:flagsOK
+
 if (%pngsupport%) == (N) goto pngDone
 
 echo Checking for libpng...
 echo #include "png.h" >junk.c
 echo main (){} >>junk.c
 rem   -o option is ignored with cl, but allows result to be consistent.
-%COMPILER% %usercflags% -c junk.c -o junk.obj >junk.out 2>junk.err
+%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>junk.err
 if exist junk.obj goto havePng
 
 echo ...png.h not found, building without PNG support.
@@ -320,7 +327,7 @@
 echo #include "jconfig.h" >junk.c
 echo main (){} >>junk.c
 rem   -o option is ignored with cl, but allows result to be consistent.
-%COMPILER% %usercflags% -c junk.c -o junk.obj >junk.out 2>junk.err
+%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>junk.err
 if exist junk.obj goto haveJpeg
 
 echo ...jconfig.h not found, building without JPEG support.
@@ -340,7 +347,7 @@
 echo #include "gif_lib.h" >junk.c
 echo main (){} >>junk.c
 rem   -o option is ignored with cl, but allows result to be consistent.
-%COMPILER% %usercflags% -c junk.c -o junk.obj >junk.out 2>junk.err
+%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>junk.err
 if exist junk.obj goto haveGif
 
 echo ...gif_lib.h not found, building without GIF support.
@@ -360,7 +367,7 @@
 echo #include "tiffio.h" >junk.c
 echo main (){} >>junk.c
 rem   -o option is ignored with cl, but allows result to be consistent.
-%COMPILER% %usercflags% -c junk.c -o junk.obj >junk.out 2>junk.err
+%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>junk.err
 if exist junk.obj goto haveTiff
 
 echo ...tiffio.h not found, building without TIFF support.
@@ -381,7 +388,7 @@
 echo #include "X11/xpm.h" >>junk.c
 echo main (){} >>junk.c
 rem   -o option is ignored with cl, but allows result to be consistent.
-%COMPILER% %usercflags% -c junk.c -o junk.obj >junk.out 2>junk.err
+%COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >junk.out 2>junk.err
 if exist junk.obj goto haveXpm
 
 echo ...X11/xpm.h not found, building without XPM support.
@@ -466,6 +473,7 @@
 set MAKECMD=
 set usercflags=
 set userldflags=
+set mingwflag=
 
 goto skipArchTag
    arch-tag: 300d20a4-1675-4e75-b615-7ce1a8c5376c
--- a/nt/ebuild.bat	Sat May 01 19:23:22 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-@echo off
-if (%1) == () nmake -f makefile.nt all
-if not (%1) == () nmake -f makefile.nt %1 %2 %3 %4 %5 %6 %7 %8 %9
-
-goto skipArchTag
-   arch-tag: f01be12a-fd17-448d-8275-c7f527c50a1f
-:skipArchTag
--- a/nt/fast-install.bat	Sat May 01 19:23:22 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-nmake -f makefile.nt fast_install
-
-goto skipArchTag
-   arch-tag: 13c64379-e658-452f-92d3-90d0f230ca70
-:skipArchTag
--- a/nt/install.bat	Sat May 01 19:23:22 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,12 +0,0 @@
-@echo off
-if (%1) == (speed) set BUILD_TYPE=spd
-if (%1) == (speed) shift
-if not (%1) == () set INSTALL_DIR=%1
-if not (%1) == () shift
-nmake -f makefile.nt install %1 %2 %3 %4 %5 %6 %7 %8 %9
-set INSTALL_DIR=
-set BUILD_TYPE=
-
-goto skipArchTag
-   arch-tag: 1db5223b-8fc9-4bdb-8ad1-9e3962bf034a
-:skipArchTag
--- a/nt/makefile.def	Sat May 01 19:23:22 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,231 +0,0 @@
-#  -*- Makefile -*- definition file for building GNU Emacs on Windows NT
-#  Copyright (c) 1994-2001 Free Software Foundation, Inc.
-#
-#  GNU Emacs is free software; you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation; either version 2, or (at your option)
-#  any later version.
-#
-#  GNU Emacs is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#
-#  You should have received a copy of the GNU General Public License
-#  along with GNU Emacs; see the file COPYING.  If not, write to
-#  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-#  Boston, MA 02111-1307, USA.
-#
-#     Geoff Voelker (voelker@cs.washington.edu)         9-6-94
-
-#
-# BEGIN CONFIGURATION
-#
-
-# Define the following to build the GUI version
-#
-NTGUI=1
-
-# Set INSTALL_DIR to be the directory into which you want emacs installed.
-#
-!ifndef INSTALL_DIR
-INSTALL_DIR     = C:\emacs
-!endif
-
-# Define MSVCNT11 to be nonzero if you are using the MSVCNT 1.1 environment.
-# MSVCNT11	= 1
-!ifndef MSVCNT11
-MSVCNT11        = 0
-!endif
-
-#
-# END CONFIGURATION
-#
-
-#
-# Allow detection of builds with MSVC 5 or later
-#
-_NMAKE_VER_5=162
-_NMAKE_VER_4=0
-
-!IFNDEF _NMAKE_VER
-_NMAKE_VER=$(_NMAKE_VER_4)
-!ENDIF
-
-# Check that the INCLUDE and LIB environment variables are set.
-#
-!ifndef INCLUDE
-!error The INCLUDE environment variable needs to be set.
-!endif
-!ifndef LIB
-!error The LIB environment variable needs to be set.
-!endif
-
-# Determine the architecture we're running on.
-# Define ARCH for our purposes;
-# Define CPU for use by ntwin32.mak;
-# Define CONFIG_H to the appropriate config.h for the system;
-#
-!ifdef PROCESSOR_ARCHITECTURE
-# We're on Windows NT
-CPU		= $(PROCESSOR_ARCHITECTURE)
-CONFIG_H	= config.nt
-OS_TYPE		= windowsnt
-! if "$(PROCESSOR_ARCHITECTURE)" == "x86"
-ARCH		= i386
-CPU		= i386
-! else
-!  if "$(PROCESSOR_ARCHITECTURE)" == "MIPS"
-ARCH		= mips
-!  else
-!   if "$(PROCESSOR_ARCHITECTURE)" == "ALPHA"
-ARCH		= alpha
-!   else
-!    if "$(PROCESSOR_ARCHITECTURE)" == "PPC"
-ARCH		= ppc
-!    else
-!error Unknown architecture type "$(PROCESSOR_ARCHITECTURE)"
-!    endif
-!   endif
-!  endif
-! endif
-!else
-# We're on Windows 95
-ARCH		= i386
-CPU		= i386
-CONFIG_H	= config.nt
-OS_TYPE		= windows95
-!endif
-
-# Include ntwin32.mak.  So far, this file seems to be supported by every
-# Microsoft compiler on NT and Windows 95 and properly defines the executable
-# names and libraries necessary to build Emacs.  I do not have access
-# to any other vendor compilers, so I do not know if they supply this
-# file, too.  For now I'll assume that they do.
-#
-!include <ntwin32.mak>
-
-# Using cvtres is necessary on NT 3.10 and doesn't hurt on later platforms.
-CVTRES		= cvtres.exe
-AR		= $(implib)
-# The assignment $(CC) = $(cc) fails even though variables are case sensitive.
-LINK_TMP	= $(link)
-LINK		= $(LINK_TMP)
-CC_TMP		= $(cc)
-CC		= $(CC_TMP)
-
-# advapi32.lib is left off of $(baselibs) on NT 3.10
-!if "$(baselibs)" == "kernel32.lib "
-ADVAPI32	= advapi32.lib
-!else
-ADVAPI32	=
-!endif
-
-# Older ntwin32.mak files do not define libc; do it for them.
-!ifndef libc
-libc		= libc.lib
-!endif
-
-# The base libraries for compiling Emacs on NT.  With MSVC, this should
-# include oldnames.lib.
-!if $(MSVCNT11)
-BASE_LIBS	= $(libc) $(baselibs) oldnames.lib
-!else
-BASE_LIBS	= $(libc) $(baselibs) -nodefaultlib:oldnames.lib
-!endif
-
-# We want any debugging info in the executable.
-!if "$(LINK)" == "link32"
-SYS_LDFLAGS	= -nologo
-!else
-SYS_LDFLAGS	= -nologo -release -incremental:no -version:3.10
-!endif
-
-# Tag the executables to run out of the swapfile when execute off CD or network shares
-SYS_LDFLAGS = $(SYS_LDFLAGS) -swaprun:cd -swaprun:net
-
-INC             = -I.
-!if "$(BUILD_TYPE)" == "spd"
-CFLAGS_COMMON	= -nologo $(INC) $(ARCH_CFLAGS) $(LOCAL_FLAGS) -DWIN32_LEAN_AND_MEAN -D$(ARCH) -Fd$(BLD)\vc.pdb
-!else
-CFLAGS_COMMON	= -nologo $(INC) $(ARCH_CFLAGS) $(LOCAL_FLAGS) -DWIN32_LEAN_AND_MEAN -D$(ARCH) -Fd$(BLD)\vc.pdb -DEMACSDEBUG
-!endif
-!if $(MSVCNT11)
-CFLAGS          = $(CFLAGS_COMMON) -D_CRTAPI1=_cdecl
-!else
-CFLAGS          = $(CFLAGS_COMMON) -D_CRTAPI1=_cdecl
-!endif
-
-!ifdef BUILD_TYPE
-OBJDIR          = obj-$(BUILD_TYPE)
-!else
-OBJDIR          = obj
-!endif
-$(OBJDIR):;	-mkdir $(OBJDIR)
-BLD             = $(OBJDIR)\$(ARCH)
-$(BLD):         $(OBJDIR)
-		-mkdir $(BLD)
-
-CP		= copy
-CP_DIR		= xcopy /f/r/i/e/d/k
-
-!if "$(OS_TYPE)" == "windows95"
-DEL		= deltree /y
-DEL_TREE	= deltree /y
-!else
-DEL		= del
-# NT better way of killing a deltree
-DEL_TREE	= rd /s/q
-!endif
-
-# Lets us add icons to the GNU Emacs folder
-ADDPM		= ..\nt\$(BLD)\addpm.exe
-
-!if "$(ARCH)" == "i386"
-!if "$(BUILD_TYPE)" == "spd"
-ARCH_CFLAGS     = -nologo -D_X86_=1 -c -Zel -W2 -H63 -Oxsb2 -G6dF -Zi -Zp8
-!else
-ARCH_CFLAGS     = -nologo -D_X86_=1 -c -Zel -W2 -H63 -Od -G3d -Zi -Zp8
-!endif
-ARCH_LDFLAGS	= -align:0x1000 $(SYS_LDFLAGS)
-
-!else
-!if "$(ARCH)" == "mips"
-ARCH_CFLAGS     = -D_MIPS_=1 -c -W2 -Zi -Od -Gt0
-ARCH_LDFLAGS	= -align:0x1000 $(SYS_LDFLAGS)
-
-!else
-!if "$(ARCH)" == "alpha"
-!if "$(BUILD_TYPE)" == "spd"
-ARCH_CFLAGS     = -D_ALPHA_=1 -c -Ze -Zi -W2 -Od -D__stdcall= -D__cdecl=
-!else
-ARCH_CFLAGS     = -D_ALPHA_=1 -c -Ze -Zi -W2 -O1 -D__stdcall= -D__cdecl=
-!endif
-ARCH_LDFLAGS	= -align:0x2000 $(SYS_LDFLAGS)
-
-!else
-!if "$(ARCH)" == "ppc"
-# These flags are a guess...if they don't work, please send me mail.
-ARCH_CFLAGS	= -D_PPC_=1 -c -Ze -Zi -W2 -Od
-ARCH_LDFLAGS	= -align:0x1000 $(SYS_LDFLAGS)
-
-!else
-!ERROR Unknown architecture type "$(ARCH)".
-!endif
-!endif
-!endif
-!endif
-
-#
-# If the compiler supports compiling multiple .c files to .o files at
-# one time, use this feature.
-#
-!IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)")
-.c{$(BLD)}.obj:
-		$(CC) $(CFLAGS) -Fo$(BLD)\ $<
-!ELSE
-.c{$(BLD)}.obj::
-		$(CC) $(CFLAGS) -Fo$(BLD)\ $<
-!ENDIF
-
-# arch-tag: a8aa26d5-5f28-4263-b42a-6f91acb7d824
--- a/nt/makefile.nt	Sat May 01 19:23:22 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,213 +0,0 @@
-#  Top level -*- makefile -*- for building GNU Emacs on Windows NT
-#  Copyright (c) 1993-2000 Free Software Foundation, Inc.
-#
-#  This file is part of GNU Emacs.
-#
-#  GNU Emacs is free software; you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation; either version 2, or (at your option)
-#  any later version.
-#
-#  GNU Emacs is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#
-#  You should have received a copy of the GNU General Public License
-#  along with GNU Emacs; see the file COPYING.  If not, write to
-#  the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-#  Boston, MA 02111-1307, USA.
-#
-#   Geoff Voelker (voelker@cs.washington.edu)	11-20-93
-#						  9-6-94
-!include makefile.def
-
-ALL		= addpm ddeclient runemacs cmdproxy addsection preprep
-!if $(MSVCNT11)
-TRES		= $(BLD)\emacs.res
-!else
-TRES		= $(BLD)\emacs.rbj
-!endif
-
-addpm:		  $(BLD) $(BLD)\addpm.exe
-$(BLD)\addpm.obj: addpm.c
-$(BLD)\addpm.exe: $(BLD)\addpm.obj
-		  $(LINK) -out:$@ -subsystem:console -entry:mainCRTStartup \
-		  $(SYS_LDFLAGS) $** $(BASE_LIBS) $(ADVAPI32) user32.lib
-
-ddeclient:	  $(BLD) $(BLD)\ddeclient.exe
-$(BLD)\ddeclient.obj: ddeclient.c
-$(BLD)\ddeclient.exe: $(BLD)\ddeclient.obj
-		  $(LINK) -out:$@ -subsystem:console -entry:mainCRTStartup \
-		  $(SYS_LDFLAGS) $** $(BASE_LIBS) $(ADVAPI32) user32.lib
-
-cmdproxy:	  $(BLD) $(BLD)\cmdproxy.exe
-$(BLD)\cmdproxy.obj: cmdproxy.c
-$(BLD)\cmdproxy.exe: $(BLD)\cmdproxy.obj
-		  $(LINK) -out:$@ -subsystem:console -entry:mainCRTStartup \
-		  $(SYS_LDFLAGS) $** $(BASE_LIBS) user32.lib
-
-addsection:	  $(BLD) $(BLD)\addsection.exe
-$(BLD)\addsection.obj: addsection.c
-$(BLD)\addsection.exe: $(BLD)\addsection.obj
-		  $(LINK) -debug:full -out:$@ -subsystem:console -entry:mainCRTStartup \
-		  $(SYS_LDFLAGS) $** $(BASE_LIBS) user32.lib
-
-preprep:	  $(BLD) $(BLD)\preprep.exe
-$(BLD)\preprep.obj: preprep.c
-$(BLD)\preprep.exe: $(BLD)\preprep.obj
-		  $(LINK) -debug:full -out:$@ -subsystem:console -entry:mainCRTStartup \
-		  $(SYS_LDFLAGS) $** $(BASE_LIBS)
-
-#
-# The resource file.  NT 3.10 requires the use of cvtres; even though
-# it is not necessary on later versions, it is still ok to use it.
-#
-$(TRES):	emacs.rc
-		$(RC) -Fo$(BLD)\emacs.res $**
-!if !$(MSVCNT11)
-		$(CVTRES) -r -$(ARCH) -o $@ $(BLD)\emacs.res
-!endif
-
-runemacs:	  $(BLD) $(BLD)\runemacs.exe
-$(BLD)\runemacs.obj: runemacs.c
-$(BLD)\runemacs.exe: $(BLD)\runemacs.obj $(TRES)
-		  $(LINK) -out:$@ -subsystem:windows -entry:WinMainCRTStartup \
-		  $(SYS_LDFLAGS) $** $(BASE_LIBS) $(ADVAPI32) user32.lib
-
-# Since Windows 95 does not support multiple commands on one command line
-# (e.g., in for loops), we cannot use for loops any more.
-# SUBDIRS	      = lib-src src lisp
-
-#
-# Build emacs
-#
-BUILD_CMD	= $(MAKE) $(MFLAGS) -f makefile.nt all
-all:		$(BLD) $(ALL)
-		cd ..\lib-src
-		$(BUILD_CMD)
-		cd ..\src
-		$(BUILD_CMD)
-		cd ..\lisp
-		$(BUILD_CMD)
-		cd ..\leim
-		if exist makefile.nt $(BUILD_CMD)
-		cd ..\nt
-
-BOOTSTRAP_CMD	= $(MAKE) $(MFLAGS) -f makefile.nt bootstrap
-bootstrap:	$(BLD) $(ALL)
-		cd ..\src
-		$(BOOTSTRAP_CMD)
-		$(BOOTCLEAN_CMD)
-		cd ..\lisp
-		$(BOOTSTRAP_CMD)
-		cd ..\nt
-
-BOOTCLEAN_CMD	= $(MAKE) $(MFLAGS) -f makefile.nt bootstrap-clean
-bootstrap-clean:
-		cd ..\src
-		$(BOOTCLEAN_CMD)
-		cd ..\lisp
-		$(BOOTCLEAN_CMD)
-
-$(INSTALL_DIR):
-		- mkdir $(INSTALL_DIR)
-
-$(INSTALL_DIR)\bin:
-		- mkdir $(INSTALL_DIR)\bin
-
-#
-# Build and install emacs in INSTALL_DIR
-#
-INSTALL_CMD	= $(MAKE) -f makefile.nt install
-install:	all $(INSTALL_DIR)
-		cd ..\lib-src
-		$(INSTALL_CMD)
-		cd ..\src
-		$(INSTALL_CMD)
-		cd ..\lisp
-		$(INSTALL_CMD)
-		cd ..\leim
-		if exist makefile.nt $(INSTALL_CMD)
-		cd ..\nt
-		- $(CP) $(BLD)\addpm.exe $(INSTALL_DIR)\bin
-		- $(CP) $(BLD)\ddeclient.exe $(INSTALL_DIR)\bin
-		- $(CP) $(BLD)\cmdproxy.exe $(INSTALL_DIR)\bin
-		- $(CP) $(BLD)\runemacs.exe $(INSTALL_DIR)\bin
-		- $(CP) ..\lib-src\fns-*.el $(INSTALL_DIR)\bin
-		- $(ADDPM) $(INSTALL_DIR)
-		- $(DEL) ..\same-dir.tst
-		- $(DEL) $(INSTALL_DIR)\same-dir.tst
-		- mkdir $(INSTALL_DIR)\etc\icons
-		- $(CP_DIR) icons $(INSTALL_DIR)\etc\icons
-		echo SameDirTest > $(INSTALL_DIR)\same-dir.tst
-		if not exist ..\same-dir.tst $(MAKE) -f makefile.nt real_install
-		- $(DEL) ..\same-dir.tst
-		- $(DEL) $(INSTALL_DIR)\same-dir.tst
-
-#
-# This installs executables from ..\bin into the installation directory
-# without building anything.
-#
-fast_install:
-		- mkdir $(INSTALL_DIR)\data
-		$(CP) ..\lib-src\DOC $(INSTALL_DIR)\etc
-		- mkdir $(INSTALL_DIR)\bin
-		- $(CP) $(BLD)\addpm.exe $(INSTALL_DIR)\bin
-		- $(CP) $(BLD)\ddeclient.exe $(INSTALL_DIR)\bin
-		- $(CP) $(BLD)\cmdproxy.exe $(INSTALL_DIR)\bin
-		- $(CP) $(BLD)\runemacs.exe $(INSTALL_DIR)\bin
-		- $(CP) ..\lib-src\fns-*.el $(INSTALL_DIR)\bin
-		- $(DEL) ..\same-dir.tst
-		- $(DEL) $(INSTALL_DIR)\same-dir.tst
-		echo SameDirTest > $(INSTALL_DIR)\same-dir.tst
-		if not exist ..\same-dir.tst $(CP) ..\bin\emacs.exe $(INSTALL_DIR)\bin
-		if not exist ..\same-dir.tst $(CP) ..\bin\etags.exe $(INSTALL_DIR)\bin
-		if not exist ..\same-dir.tst $(CP) ..\bin\ctags.exe $(INSTALL_DIR)\bin
-		if not exist ..\same-dir.tst $(MAKE) -f makefile.nt real_install
-		- $(DEL) ..\same-dir.tst
-		- $(DEL) $(INSTALL_DIR)\same-dir.tst
-
-real_install:
-		- $(DEL) ..\same-dir.tst
-		- $(DEL) $(INSTALL_DIR)\same-dir.tst
-		echo SameDirTest > $(INSTALL_DIR)\same-dir.tst
-		- mkdir $(INSTALL_DIR)\etc
-		- mkdir $(INSTALL_DIR)\info
-		- mkdir $(INSTALL_DIR)\lock
-		- mkdir $(INSTALL_DIR)\data
-		- mkdir $(INSTALL_DIR)\site-lisp
-		- mkdir $(INSTALL_DIR)\etc\icons
-		- $(CP_DIR) icons $(INSTALL_DIR)\etc\icons
-		if not exist ..\same-dir.tst $(CP_DIR) ..\etc $(INSTALL_DIR)\etc
-		if not exist ..\same-dir.tst $(CP_DIR) ..\info $(INSTALL_DIR)\info
-		- $(DEL) ..\same-dir.tst
-		- $(DEL) $(INSTALL_DIR)\same-dir.tst
-
-#
-# Maintenance
-#
-CLEAN_CMD	= $(MAKE) -f makefile.nt clean
-clean:
-		- $(DEL) *~ *.pdb
-		- $(DEL) *.orig
-		- $(DEL) *.rej
-		- $(DEL) *.crlf
-		- $(DEL_TREE) deleted
-		- $(DEL_TREE) obj
-		- $(DEL_TREE) obj-spd
-		- $(DEL) ..\etc\DOC ..\etc\DOC-X
-		cd ..\lib-src
-		$(CLEAN_CMD)
-		cd ..\src
-		$(CLEAN_CMD)
-		cd ..\lisp
-		$(CLEAN_CMD)
-		cd ..\leim
-		if exist makefile.nt $(CLEAN_CMD)
-		cd ..\nt
-
-realclean: clean
-		- $(DEL_TREE) ..\bin
-
-# arch-tag: b01debf7-6859-439e-b08e-f041aa03c32f
--- a/nt/makefile.w32-in	Sat May 01 19:23:22 2004 +0000
+++ b/nt/makefile.w32-in	Fri May 07 14:20:00 2004 +0000
@@ -217,11 +217,20 @@
 # Note that man/makefile knows how to
 # put the info files in $(infodir),
 # so we can do ok running make in the build dir.
-info: force-info
-	(cd ..\man && $(MAKE) $(MFLAGS) info)
-	(cd ..\lispref && $(MAKE) $(MFLAGS) info)
-	(cd ..\lispintro && $(MAKE) $(MFLAGS) info)
+info: force-info info-$(MAKETYPE)
 
+info-nmake:
+	cd ..\man
+	$(MAKE) $(MFLAGS) info
+	cd ..\lispref
+	$(MAKE) $(MFLAGS) info
+	cd ..\lispintro
+	$(MAKE) $(MFLAGS) info
+
+info-gmake:
+	$(MAKE) $(MFLAGS) -C ../man info
+	$(MAKE) $(MFLAGS) -C ../lispref info
+	$(MAKE) $(MFLAGS) -C ../lispintro info
 #
 # Maintenance
 #
--- a/nt/nmake.defs	Sat May 01 19:23:22 2004 +0000
+++ b/nt/nmake.defs	Fri May 07 14:20:00 2004 +0000
@@ -134,7 +134,7 @@
 		  -D_CRTAPI1=_cdecl $(DEBUG_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS)
 EMACS_EXTRA_C_FLAGS =
 
-SYS_LDFLAGS	= -release -incremental:no -version:3.10 -swaprun:cd -swaprun:net setargv.obj
+SYS_LDFLAGS	= -nologo -release -incremental:no -version:3.10 -swaprun:cd -swaprun:net setargv.obj
 
 # see comments in allocate_heap in w32heap.c before changing any of the
 # -stack, -heap, or -base settings.
--- a/src/ChangeLog	Sat May 01 19:23:22 2004 +0000
+++ b/src/ChangeLog	Fri May 07 14:20:00 2004 +0000
@@ -1,3 +1,74 @@
+2004-05-07  Juanma Barranquero  <lektu@terra.es>
+
+	* window.c (Fset_window_buffer): Fix docstring.
+
+2004-05-06  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* emacs.c (main) [VMS]: Fix var ref.
+
+2004-05-06  Romain Francoise  <romain@orebokech.com>  (tiny change)
+
+	* data.c (Fsetq_default): Fix docstring.
+
+2004-05-06  Jason Rumney  <jasonr@gnu.org>
+
+	* image.c (Display) [HAVE_NTGUI]: Redefine while loading xpm.h
+	to avoid name clash.
+
+2004-05-04  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
+
+	* fileio.c (barf_or_query_if_file_exists): Use lstat.
+	(Frename_file): Handle renaming of symlinks across file systems.
+	(Frename_file): Put symlink handling inside #ifdef S_IFLNK.
+
+2004-05-04  Kim F. Storm  <storm@cua.dk>
+
+	* xdisp.c (Qtotal): New var.
+	(syms_of_xdisp): Intern and staticpro it.
+	(calc_line_height_property): New arg total.  Set it if
+	line-spacing property has format (total . VALUE).
+	(x_produce_glyphs): Ignore line-spacing if line-height is 0.
+	Handle total line-spacing property.
+
+2004-05-03  Jan Dj,Ad(Brv  <jan.h.d@swipnet.se>
+
+	* gtkutil.c (xg_update_scrollbar_pos): Call XClearWindow to clear
+	"under" scroll bar when size/position changes.
+
+2004-05-03  Jason Rumney  <jasonr@gnu.org>
+
+	* makefile.nt: Remove.
+
+2004-05-02  Eli Zaretskii  <eliz@gnu.org>
+
+	* syntax.h (SET_RAW_SYNTAX_ENTRY, SYNTAX_ENTRY_INT): Avoid
+	compiler warnings.
+
+	* Makefile.in (region-cache.o): Depend on config.h.
+
+2004-05-02  Romain Francoise  <romain@orebokech.com>  (tiny change)
+
+	* indent.c (compute_motion): Save vpos in prev_vpos when dealing
+	with continuation lines, too.
+
+2004-05-02  Thien-Thi Nguyen  <ttn@gnu.org>
+
+	* syssignal.h (init_signals): Move decl outside `#ifdef POSIX_SIGNALS'.
+
+2004-05-01  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* xdisp.c (calc_line_height_property): YAILOM (yet another
+	int/Lisp_Object mixup).
+
+2004-05-01  Eli Zaretskii  <eliz@gnu.org>
+
+	* msdos.c (top-level): Add "#pragma pack(0)" after <dir.h>, to
+	undo bad effect of pack(4) in some versions of system headers.
+
+2004-05-01  Jason Rumney  <jasonr@gnu.org>
+
+	* w32term.c (x_draw_hollow_cursor): Sync with xterm.c
+
 2004-04-30  Kim F. Storm  <storm@cua.dk>
 
 	* buffer.c (syms_of_buffer) <line-spacing>: Allow float value.
--- a/src/Makefile.in	Sat May 01 19:23:22 2004 +0000
+++ b/src/Makefile.in	Fri May 07 14:20:00 2004 +0000
@@ -1125,7 +1125,7 @@
    blockinput.h atimer.h charset.h coding.h ccl.h msdos.h composite.h \
    keyboard.h $(config_h)
 regex.o: regex.c syntax.h buffer.h $(config_h) regex.h category.h charset.h
-region-cache.o: region-cache.c buffer.h region-cache.h
+region-cache.o: region-cache.c buffer.h region-cache.h $(config_h)
 scroll.o: scroll.c termchar.h dispextern.h frame.h msdos.h keyboard.h \
    termhooks.h $(config_h)
 search.o: search.c regex.h commands.h buffer.h region-cache.h syntax.h \
--- a/src/data.c	Sat May 01 19:23:22 2004 +0000
+++ b/src/data.c	Fri May 07 14:20:00 2004 +0000
@@ -1468,11 +1468,11 @@
 that do not have their own values for the variable.
 
 More generally, you can use multiple variables and values, as in
-  (setq-default SYMBOL VALUE SYMBOL VALUE...)
-This sets each SYMBOL's default value to the corresponding VALUE.
-The VALUE for the Nth SYMBOL can refer to the new default values
-of previous SYMs.
-usage: (setq-default SYMBOL VALUE [SYMBOL VALUE...])  */)
+  (setq-default VAR VALUE VAR VALUE...)
+This sets each VAR's default value to the corresponding VALUE.
+The VALUE for the Nth VAR can refer to the new default values
+of previous VARs.
+usage: (setq-default VAR VALUE [VAR VALUE...])  */)
      (args)
      Lisp_Object args;
 {
--- a/src/emacs.c	Sat May 01 19:23:22 2004 +0000
+++ b/src/emacs.c	Fri May 07 14:20:00 2004 +0000
@@ -895,7 +895,7 @@
   /* If -map specified, map the data file in.  */
   {
     char *file;
-    if (argmatch (argv, argc, "-map", "--map-data", 3, &mapin_file, &skip_args))
+    if (argmatch (argv, argc, "-map", "--map-data", 3, &file, &skip_args))
       mapin_data (file);
   }
 
--- a/src/fileio.c	Sat May 01 19:23:22 2004 +0000
+++ b/src/fileio.c	Fri May 07 14:20:00 2004 +0000
@@ -2351,7 +2351,7 @@
 
   /* stat is a good way to tell whether the file exists,
      regardless of what access permissions it has.  */
-  if (stat (SDATA (encoded_filename), &statbuf) >= 0)
+  if (lstat (SDATA (encoded_filename), &statbuf) >= 0)
     {
       if (! interactive)
 	Fsignal (Qfile_already_exists,
@@ -2686,11 +2686,11 @@
   Lisp_Object args[2];
 #endif
   Lisp_Object handler;
-  struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
-  Lisp_Object encoded_file, encoded_newname;
-
-  encoded_file = encoded_newname = Qnil;
-  GCPRO4 (file, newname, encoded_file, encoded_newname);
+  struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5;
+  Lisp_Object encoded_file, encoded_newname, symlink_target;
+
+  symlink_target = encoded_file = encoded_newname = Qnil;
+  GCPRO5 (file, newname, encoded_file, encoded_newname, symlink_target);
   CHECK_STRING (file);
   CHECK_STRING (newname);
   file = Fexpand_file_name (file, Qnil);
@@ -2727,10 +2727,17 @@
     {
       if (errno == EXDEV)
 	{
-	  Fcopy_file (file, newname,
-		      /* We have already prompted if it was an integer,
-			 so don't have copy-file prompt again.  */
-		      NILP (ok_if_already_exists) ? Qnil : Qt, Qt);
+#ifdef S_IFLNK
+          symlink_target = Ffile_symlink_p (file);
+          if (! NILP (symlink_target))
+            Fmake_symbolic_link (symlink_target, newname,
+                                 NILP (ok_if_already_exists) ? Qnil : Qt, Qt);
+          else
+#endif
+            Fcopy_file (file, newname,
+                        /* We have already prompted if it was an integer,
+                           so don't have copy-file prompt again.  */
+                        NILP (ok_if_already_exists) ? Qnil : Qt, Qt);
 	  Fdelete_file (file);
 	}
       else
--- a/src/gtkutil.c	Sat May 01 19:23:22 2004 +0000
+++ b/src/gtkutil.c	Fri May 07 14:20:00 2004 +0000
@@ -2760,18 +2760,16 @@
   if (wscroll)
     {
       GtkWidget *wfixed = f->output_data.x->edit_widget;
-      int winextra = canon_width > width ? (canon_width - width) / 2 : 0;
-      int bottom = top + height;
-
-      gint slider_width;
-      int oldtop, oldleft, oldbottom;
-      GtkRequisition req;
-
-      /* Get old values.  */
-      xg_find_top_left_in_fixed (wscroll, wfixed, &oldleft, &oldtop);
-      gtk_widget_size_request (wscroll, &req);
-      oldbottom = oldtop + req.height;
-
+
+      gtk_container_set_reallocate_redraws (GTK_CONTAINER (wfixed), TRUE);
+
+      /* Move and resize to new values.  */
+      gtk_fixed_move (GTK_FIXED (wfixed), wscroll, left, top);
+      gtk_widget_set_size_request (wscroll, width, height);
+
+      /* Must force out update so changed scroll bars gets redrawn.  */
+      gdk_window_process_all_updates ();
+      
       /* Scroll bars in GTK has a fixed width, so if we say width 16, it
          will only be its fixed width (14 is default) anyway, the rest is
          blank.  We are drawing the mode line across scroll bars when
@@ -2799,62 +2797,7 @@
          the scroll bar and the edge of the window and between the scroll
          bar and the fringe.  */
 
-      if (oldtop != -1 && oldleft != -1)
-        {
-          int gtkextral, gtkextrah;
-          int xl, xr, wbl, wbr;
-          int bottomdiff, topdiff;
-
-          gtk_widget_style_get (wscroll, "slider_width", &slider_width, NULL);
-          gtkextral = width > slider_width ? (width - slider_width) / 2 : 0;
-          gtkextrah = gtkextral ? (width - slider_width - gtkextral) : 0;
-
-          xl = real_left;
-          wbl = gtkextral + winextra;
-          wbr = gtkextrah + winextra;
-          xr = left + gtkextral + slider_width;
-          bottomdiff = abs (oldbottom - bottom);
-          topdiff = abs (oldtop - top);
-
-          if (oldleft != left)
-            {
-              gdk_window_clear_area (wfixed->window, xl, top, wbl, height);
-              gdk_window_clear_area (wfixed->window, xr, top, wbr, height);
-            }
-
-          if (oldtop > top)
-            {
-              gdk_window_clear_area (wfixed->window, xl, top, wbl, topdiff);
-              gdk_window_clear_area (wfixed->window, xr, top, wbr, topdiff);
-            }
-          else if (oldtop < top)
-            {
-              gdk_window_clear_area (wfixed->window, xl, oldtop, wbl, topdiff);
-              gdk_window_clear_area (wfixed->window, xr, oldtop, wbr, topdiff);
-            }
-
-          if (oldbottom > bottom)
-            {
-              gdk_window_clear_area (wfixed->window, xl, bottom, wbl,
-                                     bottomdiff);
-              gdk_window_clear_area (wfixed->window, xr, bottom, wbr,
-                                     bottomdiff);
-            }
-          else if (oldbottom < bottom)
-            {
-              gdk_window_clear_area (wfixed->window, xl, oldbottom, wbl,
-                                     bottomdiff);
-              gdk_window_clear_area (wfixed->window, xr, oldbottom, wbr,
-                                     bottomdiff);
-            }
-        }
-
-      /* Move and resize to new values.  */
-      gtk_fixed_move (GTK_FIXED (wfixed), wscroll, left, top);
-      gtk_widget_set_size_request (wscroll, width, height);
-      
-      /* Must force out update so changed scroll bars gets redrawn.  */
-      gdk_window_process_all_updates ();
+      XClearWindow (FRAME_X_DISPLAY (f), GTK_WIDGET_TO_X_WIN (wscroll));
 
       SET_FRAME_GARBAGED (f);
       cancel_mouse_face (f);
--- a/src/image.c	Sat May 01 19:23:22 2004 +0000
+++ b/src/image.c	Fri May 07 14:20:00 2004 +0000
@@ -3179,13 +3179,16 @@
 /* Indicate to xpm.h that we don't have Xlib.  */
 #define FOR_MSW
 /* simx.h in xpm defines XColor and XImage differently than Emacs.  */
+/* It also defines Display the same way as Emacs, but gcc 3.3 still barfs.  */
 #define XColor xpm_XColor
 #define XImage xpm_XImage
+#define Display xpm_Display
 #define PIXEL_ALREADY_TYPEDEFED
 #include "X11/xpm.h"
 #undef FOR_MSW
 #undef XColor
 #undef XImage
+#undef Display
 #undef PIXEL_ALREADY_TYPEDEFED
 #else
 #include "X11/xpm.h"
--- a/src/indent.c	Sat May 01 19:23:22 2004 +0000
+++ b/src/indent.c	Fri May 07 14:20:00 2004 +0000
@@ -1,5 +1,5 @@
 /* Indentation functions.
-   Copyright (C) 1985,86,87,88,93,94,95,98,2000,01,02,2003
+   Copyright (C) 1985,86,87,88,93,94,95,98,2000,01,02,03,2004
    Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
@@ -1409,6 +1409,7 @@
 	      vpos++;
 	      contin_hpos = prev_hpos;
 	      prev_hpos = 0;
+	      prev_vpos = vpos;
 	    }
 	}
 
--- a/src/makefile.nt	Sat May 01 19:23:22 2004 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1232 +0,0 @@
-#  Makefile for GNU Emacs on the Microsoft W32 API.
-#  Copyright (c) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
-#   Tim Fleehart (apollo@online.com)            17-Apr-92
-#   Geoff Voelker (voelker@cs.washington.edu)   11-20-93
-#
-#  This file is part of GNU Emacs.
-#
-#  GNU Emacs is free software; you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation; either version 2, or (at your option)
-#  any later version.
-#
-#  GNU Emacs is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#
-#  You should have received a copy of the GNU General Public License
-#  along with GNU Emacs; see the file COPYING.  If not, write to the
-#  Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-#  Boston, MA 02111-1307, USA.
-#
-
-#
-# Sets up the system dependent macros.
-#
-!include ..\nt\makefile.def
-
-SUBSYSTEM=console
-
-#
-# HAVE_CONFIG_H is required by some generic gnu sources stuck into
-# the emacs source tree.
-#
-LOCAL_FLAGS     = -Demacs=1 -DWINDOWSNT -DDOS_NT -DHAVE_CONFIG_H -I..\nt\inc
-!ifdef NTGUI
-LOCAL_FLAGS     = $(LOCAL_FLAGS) -DHAVE_NTGUI=1
-!endif
-!ifdef USE_CRT_DLL
-LOCAL_FLAGS     = $(LOCAL_FLAGS) -DUSE_CRT_DLL=1 -MD
-libc            = msvcrt.lib
-LINK_FLAGS      = -nodefaultlib
-!endif
-
-# From MSVC 5.0 onwards, it seem base relocation information is not included,
-# at least in release builds.  We need to ensure the reloc info is included
-# in order to use the MSVC profiler.
-!IF ("$(_NMAKE_VER)" == "$(_NMAKE_VER_4)")
-EXTRA_LINK      =
-!ELSE
-EXTRA_LINK      = -profile
-!ENDIF
-
-EMACS           = $(BLD)\emacs.exe
-TEMACS          = $(BLD)\temacs.exe
-TEMACS_TMP      = $(BLD)\temacs.bin
-TLIB0           = $(BLD)\temacs0.lib
-TLIB1           = $(BLD)\temacs1.lib
-TLIB2           = $(BLD)\temacs2.lib
-!IFDEF NTGUI
-TLIBW32         = $(BLD)\temacw32.lib
-!ELSE
-TLIBW32		=
-!ENDIF
-TOBJ            = $(BLD)\firstfile.obj
-!if $(MSVCNT11)
-TRES		= $(BLD)\emacs.res
-!else
-TRES		= $(BLD)\emacs.rbj
-!endif
-TLASTLIB	= $(BLD)\lastfile.lib
-
-# see comments in allocate_heap in w32heap.c before changing any of the
-# -stack, -heap, or -base settings.
-!if "$(BUILD_TYPE)" == "spd"
-LINK_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
-!else
-LINK_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)
-!endif
-
-#
-# Split up the objects into two sets so that we don't run out of
-# command line space when we link them into a library.
-#
-# Put emacs.obj in a separate lib, since we need to have firstfile.obj
-# as the "main" object file when linking.
-#
-OBJ0 =  $(BLD)\emacs.obj
-
-OBJ1 =  $(BLD)\abbrev.obj       \
-	$(BLD)\alloc.obj        \
-	$(BLD)\alloca.obj       \
-	$(BLD)\atimer.obj       \
-	$(BLD)\buffer.obj       \
-	$(BLD)\bytecode.obj     \
-	$(BLD)\callint.obj      \
-	$(BLD)\callproc.obj     \
-	$(BLD)\casefiddle.obj	\
-	$(BLD)\cm.obj           \
-	$(BLD)\cmds.obj         \
-	$(BLD)\data.obj         \
-	$(BLD)\dired.obj        \
-	$(BLD)\dispnew.obj      \
-	$(BLD)\doc.obj          \
-	$(BLD)\doprnt.obj       \
-	$(BLD)\editfns.obj      \
-	$(BLD)\eval.obj         \
-	$(BLD)\fileio.obj       \
-	$(BLD)\filelock.obj     \
-	$(BLD)\filemode.obj     \
-	$(BLD)\fns.obj          \
-	$(BLD)\indent.obj       \
-	$(BLD)\insdel.obj       \
-	$(BLD)\keyboard.obj     \
-	$(BLD)\keymap.obj       \
-	$(BLD)\lread.obj        \
-	$(BLD)\macros.obj       \
-	$(BLD)\marker.obj       \
-        $(BLD)\md5.obj          \
-	$(BLD)\minibuf.obj
-
-OBJ2 =  $(BLD)\w32.obj           \
-	$(BLD)\w32heap.obj       \
-	$(BLD)\w32inevt.obj      \
-	$(BLD)\w32proc.obj       \
-	$(BLD)\w32console.obj       \
-	$(BLD)\print.obj        \
-	$(BLD)\process.obj      \
-	$(BLD)\regex.obj        \
-	$(BLD)\scroll.obj       \
-	$(BLD)\search.obj       \
-	$(BLD)\syntax.obj       \
-	$(BLD)\sysdep.obj       \
-	$(BLD)\term.obj         \
-	$(BLD)\termcap.obj      \
-	$(BLD)\tparam.obj       \
-	$(BLD)\undo.obj         \
-	$(BLD)\unexw32.obj       \
-	$(BLD)\window.obj       \
-	$(BLD)\xdisp.obj        \
-	$(BLD)\casetab.obj      \
-	$(BLD)\floatfns.obj     \
-	$(BLD)\frame.obj        \
-	$(BLD)\gmalloc.obj      \
-	$(BLD)\intervals.obj    \
-	$(BLD)\composite.obj    \
-	$(BLD)\ralloc.obj       \
-	$(BLD)\textprop.obj     \
-	$(BLD)\vm-limit.obj	\
-	$(BLD)\region-cache.obj	\
-	$(BLD)\strftime.obj	\
-	$(BLD)\charset.obj	\
-	$(BLD)\coding.obj	\
-	$(BLD)\category.obj	\
-	$(BLD)\ccl.obj		\
-	$(BLD)\fontset.obj
-
-WIN32OBJ = $(BLD)\w32term.obj	\
-	   $(BLD)\w32xfns.obj	\
-	   $(BLD)\w32fns.obj	\
-	   $(BLD)\xfaces.obj	\
-	   $(BLD)\w32select.obj	\
-	   $(BLD)\w32menu.obj	\
-	   $(BLD)\w32reg.obj    \
-	   $(BLD)\w32bdf.obj
-
-LIBS =  $(TLIB0)	\
-	$(TLIB1)	\
-	$(TLIB2)	\
-!IFDEF NTGUI
-	$(TLIBW32)      \
-!ENDIF
-	$(TLASTLIB)	\
-!IFDEF NTGUI
-	gdi32.lib       \
-	comdlg32.lib    \
-!ENDIF
-#	libcmt.lib      \
-	$(BASE_LIBS)	\
-	$(ADVAPI32)	\
-	user32.lib	\
-	mpr.lib		\
-	shell32.lib	\
-	setargv.obj
-
-#
-# Build the executable and dump it.
-#
-all:            $(BLD) $(EMACS)
-
-#
-# Headers we would preprocess if we could.
-#
-PREPARED_HEADERS = config.h epaths.h
-config.h:	..\nt\$(CONFIG_H)
-		$(CP) $** $@
-epaths.h:	..\nt\paths.h
-		$(CP) $** $@
-
-#
-# Make sure we have the DOC file in the right place.
-#
-DOC		= $(OBJDIR)\etc\DOC-X
-$(DOC):;	cd ..\lib-src
-		- $(DEL) DOC-X
-		$(MAKE) $(MFLAGS) -f makefile.nt all
-		cd ..\src
-
-#
-# The dumped executable
-#
-emacs:          $(EMACS)
-$(EMACS):       $(DOC) $(TEMACS)
-		$(MAKEDIR)\$(BLD)\temacs.exe -batch -l loadup dump
-
-#
-# The undumped executable
-# Note the extra post-link step to insert a static preload heap section.
-# If preload runs out of memory, increase the last argument to addsection
-# (it is the preload heap size in MB).
-#
-temacs:         $(BLD) $(TEMACS)
-$(TEMACS):      $(PREPARED_HEADERS) $(TLIB0) $(TLIB1) $(TLIB2) $(TLIBW32) $(TLASTLIB) $(TOBJ) $(TRES)
-		$(LINK) -out:$(TEMACS_TMP) $(LINK_FLAGS) $(TOBJ) $(TRES) $(LIBS)
-		..\nt\$(BLD)\addsection $(TEMACS_TMP) $(TEMACS) EMHEAP 16
-
-bootstrap: bootstrap-emacs
-
-#
-# Build a temacs with a sufficiently large PURESIZE to load the
-# Lisp files from loadup.el in source form.
-#
-bootstrap-temacs: bootstrap-clean
-		$(MAKE) $(MFLAGS) -f makefile.nt temacs CFLAGS="$(CFLAGS) -DPURESIZE=5000000"
-
-#
-# Dump an Emacs executable named bootstrap-emacs containing the
-# files from loadup.el in source form.
-#
-bootstrap-emacs: bootstrap-temacs
-		$(MAKEDIR)\$(BLD)\temacs.exe -batch -l loadup bootstrap
-		- mkdir ..\bin
-		$(CP) $(EMACS) ..\bin
-
-#
-# Force recompile of files that depend on PURESIZE
-#
-bootstrap-clean:
-		- $(DEL) $(BLD)\alloc.obj
-		- $(DEL) $(BLD)\data.obj
-		- $(DEL) $(BLD)\intervals.obj
-		- $(DEL) $(BLD)\keyboard.obj
-		- $(DEL) $(BLD)\keymap.obj
-
-#
-# The resource file.  NT 3.10 requires the use of cvtres; even though
-# it is not necessary on later versions, it is still ok to use it.
-#
-$(TRES):	..\nt\emacs.rc
-		$(RC) -i..\nt -Fo$(BLD)\emacs.res $**
-!if !$(MSVCNT11)
-		$(CVTRES) -r -$(ARCH) -o $@ $(BLD)\emacs.res
-!endif
-
-#
-# Build the library.  Split up the build into two phases...otherwise we
-# run out of command line space.
-#
-$(TLIB0):       $(OBJ0)
-		@- $(AR) -out:$@ $**
-$(TLIB1):       $(OBJ1)
-		@- $(AR) -out:$@ $**
-$(TLIB2):	$(OBJ2)
-		@- $(AR) -out:$@ $**
-!IFDEF NTGUI
-$(TLIBW32):	$(WIN32OBJ)
-		@- $(AR) -out:$@ $**
-!ENDIF
-
-#
-# Place lastfile.obj in its own library so that it can be loaded after
-# the source libraries but before any system libraries.  Doing so defines
-# the end of Emacs' data section portably across compilers and systems.
-#
-$(TLASTLIB):	$(BLD)\lastfile.obj
-		@- $(AR) -out:$@ $**
-
-#
-# Assuming INSTALL_DIR is defined, build and install emacs in it.
-#
-install:        all
-		- mkdir $(INSTALL_DIR)\bin
-		$(CP) $(EMACS) $(INSTALL_DIR)\bin
-
-#
-# Maintenance
-#
-clean:;         - $(DEL) *~ s\*~
-		- $(DEL) *.pdb config.h epaths.h
-		- $(DEL) *.orig *.rej *.crlf
-		- $(DEL) s\*.orig s\*.rej s\*.crlf
-		- $(DEL_TREE) deleted
-		- $(DEL_TREE) obj
-		- $(DEL_TREE) obj-spd
-
-#
-# These files are the ones that compile conditionally on CANNOT_DUMP...
-# this target is mostly used for debugging.
-#
-cleandump:;     cd $(BLD)
-		- $(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
-		cd ..\..
-
-
-### DEPENDENCIES ###
-
-EMACS_ROOT	= ..
-SRC		= .
-
-$(BLD)\abbrev.obj : \
-	$(SRC)\abbrev.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\commands.h \
-	$(SRC)\buffer.h \
-	$(SRC)\window.h
-
-$(BLD)\alloc.obj : \
-	$(SRC)\alloc.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\intervals.h \
-	$(SRC)\composite.h \
-	$(SRC)\puresize.h \
-	$(SRC)\buffer.h \
-	$(SRC)\window.h \
-	$(SRC)\frame.h \
-	$(SRC)\blockinput.h \
-	$(SRC)\syssignal.h
-
-$(BLD)\alloca.obj : \
-	$(SRC)\alloca.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\s\ms-w32.h \
-	$(SRC)\m\intel386.h \
-	$(SRC)\config.h \
-	$(SRC)\blockinput.h
-
-$(BLD)\atimer.obj : \
-	$(SRC)\atimer.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\s\ms-w32.h \
-	$(SRC)\m\intel386.h \
-	$(SRC)\config.h \
-	$(SRC)\atimer.h \
-	$(SRC)\syssignal.h \
-	$(SRC)\systime.h \
-	$(SRC)\blockinput.h
-
-$(BLD)\buffer.obj : \
-	$(SRC)\buffer.c \
-	$(EMACS_ROOT)\nt\inc\sys\param.h \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\intervals.h \
-	$(SRC)\composite.h \
-	$(SRC)\frame.h \
-	$(SRC)\window.h \
-	$(SRC)\commands.h \
-	$(SRC)\buffer.h \
-	$(SRC)\indent.h \
-	$(SRC)\blockinput.h \
-	$(SRC)\region-cache.h
-
-$(BLD)\bytecode.obj : \
-	$(SRC)\bytecode.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\buffer.h \
-	$(SRC)\syntax.h
-
-$(BLD)\callint.obj : \
-	$(SRC)\callint.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\buffer.h \
-	$(SRC)\commands.h \
-	$(SRC)\keyboard.h \
-	$(SRC)\window.h
-
-$(BLD)\callproc.obj : \
-	$(SRC)\callproc.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\msdos.h \
-	$(EMACS_ROOT)\nt\inc\sys\param.h \
-	$(SRC)\commands.h \
-	$(SRC)\buffer.h \
-	$(SRC)\process.h \
-	$(SRC)\syssignal.h \
-	$(EMACS_ROOT)\nt\inc\sys\ioctl.h \
-	$(EMACS_ROOT)\nt\inc\sys\file.h \
-	$(SRC)\systty.h
-
-$(BLD)\casefiddle.obj : \
-	$(SRC)\casefiddle.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\buffer.h \
-	$(SRC)\commands.h \
-	$(SRC)\syntax.h
-	$(CC) $(CFLAGS) -Fo$@ casefiddle.c
-
-$(BLD)\casetab.obj : \
-	$(SRC)\casetab.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\buffer.h
-
-$(BLD)\cm.obj : \
-	$(SRC)\cm.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\cm.h \
-	$(SRC)\termhooks.h
-
-$(BLD)\cmds.obj : \
-	$(SRC)\cmds.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\commands.h \
-	$(SRC)\buffer.h \
-	$(SRC)\syntax.h
-
-$(BLD)\composite.obj : \
-	$(SRC)\composite.c \
-	$(SRC)\buffer.h \
-	$(SRC)\charset.h \
-	$(SRC)\intervals.h \
-	$(SRC)\composite.h \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h
-
-$(BLD)\data.obj : \
-	$(SRC)\data.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\puresize.h \
-	$(SRC)\buffer.h \
-	$(SRC)\syssignal.h
-
-$(BLD)\dired.obj : \
-	$(SRC)\dired.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\ndir.h \
-	$(SRC)\buffer.h \
-	$(SRC)\commands.h \
-	$(SRC)\regex.h
-
-$(BLD)\dispnew.obj : \
-	$(SRC)\dispnew.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\termchar.h \
-	$(SRC)\termopts.h \
-	$(SRC)\termhooks.h \
-	$(SRC)\cm.h \
-	$(SRC)\buffer.h \
-	$(SRC)\frame.h \
-	$(SRC)\window.h \
-	$(SRC)\commands.h \
-	$(SRC)\disptab.h \
-	$(SRC)\indent.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\intervals.h \
-	$(SRC)\composite.h \
-	$(EMACS_ROOT)\nt\inc\sys\ioctl.h \
-	$(EMACS_ROOT)\nt\inc\sys\file.h \
-	$(SRC)\systty.h \
-	$(SRC)\w32term.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\xterm.h \
-	$(SRC)\systime.h
-
-$(BLD)\doc.obj : \
-	$(SRC)\doc.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(EMACS_ROOT)\nt\inc\sys\file.h \
-	$(SRC)\buffer.h \
-	$(SRC)\keyboard.h
-
-$(BLD)\doprnt.obj : \
-	$(SRC)\doprnt.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h
-
-$(BLD)\dosfns.obj : \
-	$(SRC)\dosfns.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\buffer.h \
-	$(SRC)\termchar.h \
-	$(SRC)\termhooks.h \
-	$(SRC)\frame.h \
-	$(SRC)\dosfns.h \
-	$(SRC)\msdos.h
-
-$(BLD)\editfns.obj : \
-	$(SRC)\editfns.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\uaf.h \
-	$(EMACS_ROOT)\nt\inc\pwd.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\intervals.h \
-	$(SRC)\composite.h \
-	$(SRC)\buffer.h \
-	$(SRC)\window.h \
-	$(SRC)\systime.h
-
-$(BLD)\emacs.obj : \
-	$(SRC)\emacs.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\commands.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\intervals.h \
-	$(SRC)\composite.h \
-	$(EMACS_ROOT)\nt\inc\sys\ioctl.h \
-	$(EMACS_ROOT)\nt\inc\sys\file.h \
-	$(SRC)\systty.h \
-	$(SRC)\syssignal.h \
-	$(SRC)\process.h
-
-$(BLD)\eval.obj : \
-	$(SRC)\eval.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\blockinput.h \
-	$(SRC)\commands.h \
-	$(SRC)\keyboard.h
-
-$(BLD)\fileio.obj : \
-	$(SRC)\fileio.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\uaf.h \
-	$(EMACS_ROOT)\nt\inc\pwd.h \
-	$(SRC)\msdos.h \
-	$(EMACS_ROOT)\nt\inc\sys\param.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\intervals.h \
-	$(SRC)\composite.h \
-	$(SRC)\buffer.h \
-	$(SRC)\window.h \
-	$(EMACS_ROOT)\nt\inc\sys\file.h \
-	$(SRC)\systime.h
-
-$(BLD)\filelock.obj : \
-	$(SRC)\filelock.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\uaf.h \
-	$(EMACS_ROOT)\nt\inc\pwd.h \
-	$(EMACS_ROOT)\nt\inc\sys\file.h \
-	$(EMACS_ROOT)\src\epaths.h \
-	$(SRC)\buffer.h \
-	$(SRC)\ndir.h
-
-$(BLD)\filemode.obj : \
-	$(SRC)\filemode.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\s\ms-w32.h \
-	$(SRC)\m\intel386.h \
-	$(SRC)\config.h
-
-$(BLD)\firstfile.obj : \
-	$(SRC)\firstfile.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h
-
-$(BLD)\floatfns.obj : \
-	$(SRC)\floatfns.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\syssignal.h
-
-$(BLD)\fns.obj : \
-	$(SRC)\fns.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\commands.h \
-	$(SRC)\buffer.h \
-	$(SRC)\keyboard.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\intervals.h \
-	$(SRC)\composite.h \
-        $(SRC)\md5.h
-
-$(BLD)\frame.obj : \
-	$(SRC)\frame.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\frame.h \
-	$(SRC)\termhooks.h \
-	$(SRC)\window.h \
-	$(SRC)\buffer.h \
-	$(SRC)\commands.h \
-	$(SRC)\keyboard.h
-
-$(BLD)\getloadavg.obj : \
-	$(SRC)\getloadavg.c \
-	$(EMACS_ROOT)\nt\inc\sys\param.h \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\s\ms-w32.h \
-	$(SRC)\m\intel386.h \
-	$(SRC)\config.h \
-	$(EMACS_ROOT)\nt\inc\sys\file.h
-
-$(BLD)\gmalloc.obj : \
-	$(SRC)\gmalloc.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(EMACS_ROOT)\nt\inc\sys\param.h \
-	$(SRC)\getpagesize.h
-	$(CC) $(CFLAGS) -D__STDC__ -Fo$@ gmalloc.c
-
-$(BLD)\hftctl.obj : \
-	$(SRC)\hftctl.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(EMACS_ROOT)\nt\inc\sys\ioctl.h
-
-$(BLD)\indent.obj : \
-	$(SRC)\indent.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\buffer.h \
-	$(SRC)\indent.h \
-	$(SRC)\frame.h \
-	$(SRC)\window.h \
-	$(SRC)\termchar.h \
-	$(SRC)\termopts.h \
-	$(SRC)\disptab.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\intervals.h \
-	$(SRC)\region-cache.h \
-	$(SRC)\composite.h
-
-$(BLD)\insdel.obj : \
-	$(SRC)\insdel.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\intervals.h \
-	$(SRC)\composite.h \
-	$(SRC)\buffer.h \
-	$(SRC)\window.h \
-	$(SRC)\blockinput.h
-
-$(BLD)\intervals.obj : \
-	$(SRC)\intervals.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\intervals.h \
-	$(SRC)\composite.h \
-	$(SRC)\keyboard.h \
-	$(SRC)\buffer.h \
-	$(SRC)\puresize.h
-
-$(BLD)\keyboard.obj : \
-	$(SRC)\keyboard.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\termchar.h \
-	$(SRC)\termopts.h \
-	$(SRC)\termhooks.h \
-	$(SRC)\macros.h \
-	$(SRC)\frame.h \
-	$(SRC)\window.h \
-	$(SRC)\commands.h \
-	$(SRC)\buffer.h \
-	$(SRC)\disptab.h \
-	$(SRC)\keyboard.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\intervals.h \
-	$(SRC)\composite.h \
-	$(SRC)\blockinput.h \
-	$(SRC)\msdos.h \
-	$(SRC)\syssignal.h \
-	$(EMACS_ROOT)\nt\inc\sys\ioctl.h \
-	$(EMACS_ROOT)\nt\inc\sys\file.h \
-	$(SRC)\systty.h \
-	$(SRC)\w32term.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\xterm.h \
-	$(SRC)\systime.h \
-	$(SRC)\atimer.h
-
-$(BLD)\keymap.obj : \
-	$(SRC)\keymap.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\commands.h \
-	$(SRC)\buffer.h \
-	$(SRC)\keyboard.h \
-	$(SRC)\termhooks.h \
-	$(SRC)\blockinput.h
-
-$(BLD)\lastfile.obj : \
-	$(SRC)\lastfile.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h
-
-$(BLD)\lread.obj : \
-	$(SRC)\lread.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(EMACS_ROOT)\nt\inc\sys\file.h \
-	$(SRC)\buffer.h \
-	$(EMACS_ROOT)\src\epaths.h \
-	$(SRC)\commands.h \
-	$(SRC)\keyboard.h \
-	$(SRC)\termhooks.h \
-	$(SRC)\msdos.h
-
-$(BLD)\macros.obj : \
-	$(SRC)\macros.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\macros.h \
-	$(SRC)\commands.h \
-	$(SRC)\buffer.h \
-	$(SRC)\window.h
-
-$(BLD)\marker.obj : \
-	$(SRC)\marker.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\buffer.h
-
-$(BLD)\md5.obj : \
-        $(SRC)\md5.c \
-        $(SRC)\md5.h
-
-$(BLD)\minibuf.obj : \
-	$(SRC)\minibuf.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\commands.h \
-	$(SRC)\buffer.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\frame.h \
-	$(SRC)\window.h \
-	$(SRC)\syntax.h
-
-$(BLD)\w32.obj : \
-	$(SRC)\w32.c \
-	$(SRC)\w32.h \
-	$(SRC)\s\ms-w32.h \
-	$(SRC)\m\intel386.h \
-	$(SRC)\config.h \
-	$(EMACS_ROOT)\nt\inc\pwd.h \
-	$(SRC)\w32heap.h
-
-$(BLD)\w32heap.obj : \
-	$(SRC)\w32heap.c \
-	$(SRC)\w32heap.h \
-	$(SRC)\s\ms-w32.h \
-	$(SRC)\m\intel386.h \
-	$(SRC)\config.h
-
-$(BLD)\w32inevt.obj : \
-	$(SRC)\w32inevt.c \
-	$(SRC)\s\ms-w32.h \
-	$(SRC)\m\intel386.h \
-	$(SRC)\config.h \
-	$(SRC)\frame.h \
-	$(SRC)\blockinput.h \
-	$(SRC)\termhooks.h \
-	$(SRC)\w32heap.h \
-	$(SRC)\w32term.h \
-	$(SRC)\w32gui.h
-
-$(BLD)\w32proc.obj : \
-	$(SRC)\w32proc.c \
-	$(SRC)\s\ms-w32.h \
-	$(SRC)\m\intel386.h \
-	$(SRC)\config.h \
-	$(SRC)\w32.h \
-	$(SRC)\w32heap.h \
-	$(SRC)\systime.h
-
-$(BLD)\w32console.obj : \
-	$(SRC)\w32console.c \
-	$(SRC)\s\ms-w32.h \
-	$(SRC)\m\intel386.h \
-	$(SRC)\config.h \
-	$(SRC)\frame.h \
-	$(SRC)\disptab.h \
-	$(SRC)\termhooks.h \
-	$(SRC)\w32inevt.h
-
-$(BLD)\prefix-args.obj : \
-	$(SRC)\prefix-args.c
-
-$(BLD)\print.obj : \
-	$(SRC)\print.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\buffer.h \
-	$(SRC)\frame.h \
-	$(SRC)\window.h \
-	$(SRC)\process.h \
-	$(SRC)\termchar.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\intervals.h \
-	$(SRC)\composite.h
-
-$(BLD)\process.obj : \
-	$(SRC)\process.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(EMACS_ROOT)\nt\inc\sys\ioctl.h \
-	$(EMACS_ROOT)\nt\inc\sys\file.h \
-	$(SRC)\systty.h \
-	$(SRC)\window.h \
-	$(SRC)\buffer.h \
-	$(SRC)\process.h \
-	$(SRC)\termhooks.h \
-	$(SRC)\commands.h \
-	$(SRC)\frame.h \
-	$(SRC)\syssignal.h \
-	$(SRC)\syswait.h \
-	$(SRC)\systime.h \
-	$(SRC)\termopts.h \
-	$(SRC)\composite.h \
-	$(SRC)\atimer.h
-
-$(BLD)\ralloc.obj : \
-	$(SRC)\ralloc.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\s\ms-w32.h \
-	$(SRC)\m\intel386.h \
-	$(SRC)\config.h \
-	$(EMACS_ROOT)\nt\inc\sys\param.h \
-	$(SRC)\getpagesize.h
-
-$(BLD)\regex.obj : \
-	$(SRC)\regex.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\s\ms-w32.h \
-	$(SRC)\m\intel386.h \
-	$(SRC)\config.h \
-	$(SRC)\buffer.h \
-	$(SRC)\syntax.h \
-	$(SRC)\regex.h
-
-$(BLD)\region-cache.obj : \
-	$(SRC)\region-cache.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\buffer.h \
-	$(SRC)\region-cache.h
-
-$(BLD)\scroll.obj : \
-	$(SRC)\scroll.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\termchar.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\frame.h
-
-$(BLD)\search.obj : \
-	$(SRC)\search.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\syntax.h \
-	$(SRC)\buffer.h \
-	$(SRC)\commands.h \
-	$(SRC)\blockinput.h \
-	$(SRC)\regex.h \
-	$(SRC)\region-cache.h \
-	$(SRC)\composite.h
-
-$(BLD)\strftime.obj : \
-	$(SRC)\strftime.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h
-
-$(BLD)\syntax.obj : \
-	$(SRC)\syntax.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\commands.h \
-	$(SRC)\buffer.h \
-	$(SRC)\syntax.h \
-	$(SRC)\composite.h
-
-$(BLD)\sysdep.obj : \
-	$(SRC)\sysdep.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\blockinput.h \
-	$(SRC)\dosfns.h \
-	$(SRC)\msdos.h \
-	$(EMACS_ROOT)\nt\inc\sys\param.h \
-	$(EMACS_ROOT)\nt\inc\sys\file.h \
-	$(EMACS_ROOT)\nt\inc\sys\ioctl.h \
-	$(EMACS_ROOT)\nt\inc\sys\file.h \
-	$(SRC)\systty.h \
-	$(SRC)\syswait.h \
-	$(SRC)\frame.h \
-	$(SRC)\window.h \
-	$(SRC)\termhooks.h \
-	$(SRC)\termchar.h \
-	$(SRC)\termopts.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\process.h \
-	$(SRC)\ndir.h \
-	$(SRC)\syssignal.h \
-	$(SRC)\systime.h \
-	$(SRC)\uaf.h \
-	$(EMACS_ROOT)\src\acldef.h \
-	$(EMACS_ROOT)\src\chpdef.h
-
-$(BLD)\term.obj : \
-	$(SRC)\term.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\termchar.h \
-	$(SRC)\termopts.h \
-	$(SRC)\cm.h \
-	$(SRC)\frame.h \
-	$(SRC)\disptab.h \
-	$(SRC)/dispextern.h \
-	$(SRC)\termhooks.h \
-	$(SRC)\keyboard.h
-
-$(BLD)\termcap.obj : \
-	$(SRC)\termcap.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(EMACS_ROOT)\nt\inc\sys\file.h
-
-$(BLD)\terminfo.obj : \
-	$(SRC)\terminfo.c
-
-$(BLD)\textprop.obj : \
-	$(SRC)\textprop.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\intervals.h \
-	$(SRC)\composite.h \
-	$(SRC)\buffer.h \
-	$(SRC)\window.h
-
-$(BLD)\tparam.obj : \
-	$(SRC)\tparam.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h
-
-$(BLD)\undo.obj : \
-	$(SRC)\undo.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\buffer.h \
-	$(SRC)\commands.h
-
-$(BLD)\unexw32.obj : \
-	$(SRC)\unexw32.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\w32heap.h
-
-$(BLD)\vm-limit.obj : \
-	$(SRC)\vm-limit.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\mem-limits.h
-
-$(BLD)\widget.obj : \
-	$(SRC)\widget.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\xterm.h \
-	$(SRC)\frame.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\widget.h \
-	$(SRC)\widgetprv.h
-
-$(BLD)\window.obj : \
-	$(SRC)\window.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\buffer.h \
-	$(SRC)\frame.h \
-	$(SRC)\window.h \
-	$(SRC)\commands.h \
-	$(SRC)\indent.h \
-	$(SRC)\termchar.h \
-	$(SRC)\disptab.h \
-	$(SRC)\keyboard.h \
-	$(SRC)\composite.h
-
-$(BLD)\xdisp.obj : \
-	$(SRC)\xdisp.c \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\frame.h \
-	$(SRC)\window.h \
-	$(SRC)\termchar.h \
-	$(SRC)\buffer.h \
-	$(SRC)\indent.h \
-	$(SRC)\commands.h \
-	$(SRC)\macros.h \
-	$(SRC)\disptab.h \
-	$(SRC)\termhooks.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\intervals.h \
-	$(SRC)\composite.h
-
-$(BLD)\xfaces.obj: \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\xfaces.c \
-	$(SRC)\charset.h \
-	$(SRC)\fontset.h \
-	$(SRC)\w32term.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\buffer.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\frame.h \
-	$(SRC)\blockinput.h \
-	$(SRC)\window.h \
-	$(SRC)\intervals.h \
-	$(SRC)\composite.h
-
-$(BLD)\w32fns.obj: \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\w32fns.c \
-	$(SRC)\w32term.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\frame.h \
-	$(SRC)\window.h \
-	$(SRC)\buffer.h \
-	$(SRC)\charset.h \
-	$(SRC)\coding.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\keyboard.h \
-	$(SRC)\blockinput.h \
-	$(SRC)\epaths.h \
-	$(SRC)\w32heap.h \
-	$(SRC)\termhooks.h
-
-$(BLD)\w32menu.obj: \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\w32menu.c \
-	$(SRC)\termhooks.h \
-	$(SRC)\frame.h \
-	$(SRC)\window.h \
-	$(SRC)\keyboard.h \
-	$(SRC)\blockinput.h \
-	$(SRC)\buffer.h \
-	$(SRC)\charset.h \
-	$(SRC)\coding.h
-
-$(BLD)\w32term.obj: \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\w32term.c \
-	$(SRC)\blockinput.h \
-	$(SRC)\w32heap.h \
-	$(SRC)\w32term.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\systty.h \
-	$(SRC)\systime.h \
-	$(SRC)\frame.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\termhooks.h \
-	$(SRC)\termopts.h \
-	$(SRC)\termchar.h \
-	$(SRC)\gnu.h \
-	$(SRC)\disptab.h \
-	$(SRC)\buffer.h \
-	$(SRC)\window.h \
-	$(SRC)\keyboard.h \
-	$(SRC)\intervals.h \
-	$(SRC)\composite.h \
-	$(SRC)\atimer.h
-
-$(BLD)\w32select.obj: \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\w32select.c \
-	$(SRC)\w32term.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\frame.h \
-	$(SRC)\blockinput.h
-
-$(BLD)\w32reg.obj: \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\w32reg.c \
-	$(SRC)\w32term.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\blockinput.h
-
-$(BLD)\w32xfns.obj: \
-	$(EMACS_ROOT)\src\s\ms-w32.h \
-	$(EMACS_ROOT)\src\m\intel386.h \
-	$(EMACS_ROOT)\src\config.h \
-	$(SRC)\w32xfns.c \
-
-$(BLD)\w32bdf.obj: \
-	$(EMACS_ROOT)\src/s\ms-w32.h \
-	$(EMACS_ROOT)\src/m\intel386.h \
-	$(EMACS_ROOT)\src/config.h \
-	$(SRC)\w32bdf.c \
-	$(SRC)\charset.h \
-	$(SRC)\frame.h \
-	$(SRC)\dispextern.h \
-	$(SRC)\fontset.h \
-	$(SRC)\blockinput.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\w32term.h \
-	$(SRC)\w32gui.h \
-	$(SRC)\w32bdf.h \
-	$(SRC)\w32.h \
-	$(SRC)\frame.h \
-	$(SRC)\blockinput.h
-
-# arch-tag: ee9a97ba-19b7-4b50-a127-aaf4efe494dc
--- a/src/msdos.c	Sat May 01 19:23:22 2004 +0000
+++ b/src/msdos.c	Fri May 07 14:20:00 2004 +0000
@@ -40,6 +40,7 @@
 #include <unistd.h>	 /* for chdir, dup, dup2, etc. */
 #include <dir.h>	 /* for getdisk */
 #if __DJGPP__ >= 2
+#pragma pack(0)		 /* dir.h does a pack(4), which isn't GCC's default */
 #include <fcntl.h>
 #include <io.h>		 /* for setmode */
 #include <dpmi.h>	 /* for __dpmi_xxx stuff */
--- a/src/syntax.h	Sat May 01 19:23:22 2004 +0000
+++ b/src/syntax.h	Fri May 07 14:20:00 2004 +0000
@@ -58,7 +58,7 @@
 /* Set the syntax entry VAL for char C in table TABLE.  */
 
 #define SET_RAW_SYNTAX_ENTRY(table, c, val)				\
-  ((c) < CHAR_TABLE_SINGLE_BYTE_SLOTS					\
+  ((((c) & 0xFF) == (c))						\
    ? (XCHAR_TABLE (table)->contents[(unsigned char) (c)] = (val))	\
    : Faset ((table), make_number (c), (val)))
 
@@ -106,7 +106,7 @@
 #endif
 
 #define SYNTAX_ENTRY_INT(c)				\
-  ((c) < CHAR_TABLE_SINGLE_BYTE_SLOTS			\
+  ((((c) & 0xFF) == (c))				\
    ? SYNTAX_ENTRY_FOLLOW_PARENT (CURRENT_SYNTAX_TABLE,	\
 				 (unsigned char) (c))	\
    : Faref (CURRENT_SYNTAX_TABLE,			\
--- a/src/syssignal.h	Sat May 01 19:23:22 2004 +0000
+++ b/src/syssignal.h	Fri May 07 14:20:00 2004 +0000
@@ -18,6 +18,8 @@
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 Boston, MA 02111-1307, USA.  */
 
+extern void init_signals P_ ((void));
+
 #ifdef POSIX_SIGNALS
 
 /* Don't #include <signal.h>.  That header should always be #included
@@ -32,7 +34,6 @@
 #define SIGEMPTYMASK (empty_mask)
 #define SIGFULLMASK (full_mask)
 extern sigset_t empty_mask, full_mask;
-extern void init_signals P_ ((void));
 
 /* POSIX pretty much destroys any possibility of writing sigmask as a
    macro in standard C.  We always define our own version because the
--- a/src/w32term.c	Sat May 01 19:23:22 2004 +0000
+++ b/src/w32term.c	Fri May 07 14:20:00 2004 +0000
@@ -4177,8 +4177,7 @@
   /* So people can tell when we have read the available input.  */
   input_signal_count++;
 
-  /* TODO: tool-bars, ghostscript integration, mouse
-     cursors. */
+  /* TODO: ghostscript integration. */
   while (get_next_msg (&msg, FALSE))
     {
       struct input_event inev;
@@ -4934,28 +4933,38 @@
   struct frame *f = XFRAME (WINDOW_FRAME (w));
   HDC hdc;
   RECT rect;
-  int wd;
+  int wd, h;
   struct glyph *cursor_glyph;
   HBRUSH hb = CreateSolidBrush (f->output_data.w32->cursor_pixel);
 
+  /* Get the glyph the cursor is on.  If we can't tell because
+     the current matrix is invalid or such, give up.  */
+  cursor_glyph = get_phys_cursor_glyph (w);
+  if (cursor_glyph == NULL)
+    return;
+
   /* Compute frame-relative coordinates from window-relative
      coordinates.  */
   rect.left = WINDOW_TEXT_TO_FRAME_PIXEL_X (w, w->phys_cursor.x);
   rect.top = (WINDOW_TO_FRAME_PIXEL_Y (w, w->phys_cursor.y)
               + row->ascent - w->phys_cursor_ascent);
-  rect.bottom = rect.top + row->height;
-
-  /* Get the glyph the cursor is on.  If we can't tell because
-     the current matrix is invalid or such, give up.  */
-  cursor_glyph = get_phys_cursor_glyph (w);
-  if (cursor_glyph == NULL)
-    return;
+
+  /* Compute the proper height and ascent of the rectangle, based
+     on the actual glyph.  Using the full height of the row looks
+     bad when there are tall images on that row.  */
+  h = max (min (FRAME_LINE_HEIGHT (f), row->height),
+	   cursor_glyph->ascent + cursor_glyph->descent);
+  if (h < row->height)
+    rect.top += row->ascent /* - w->phys_cursor_ascent */ + cursor_glyph->descent - h;
+  h--;
+
+  rect.bottom = rect.top + h;
 
   /* Compute the width of the rectangle to draw.  If on a stretch
      glyph, and `x-stretch-block-cursor' is nil, don't draw a
      rectangle as wide as the glyph, but use a canonical character
      width instead.  */
-  wd = cursor_glyph->pixel_width;
+  wd = cursor_glyph->pixel_width; /* TODO: Why off by one compared with X? */
   if (cursor_glyph->type == STRETCH_GLYPH
       && !x_stretch_cursor_p)
     wd = min (FRAME_COLUMN_WIDTH (f), wd);
--- a/src/window.c	Sat May 01 19:23:22 2004 +0000
+++ b/src/window.c	Fri May 07 14:20:00 2004 +0000
@@ -1,6 +1,6 @@
 /* Window creation, deletion and examination for GNU Emacs.
    Does not include redisplay.
-   Copyright (C) 1985,86,87,93,94,95,96,97,1998,2000, 2001, 2002, 2003
+   Copyright (C) 1985,86,87, 1993,94,95,96,97,98, 2000,01,02,03,04
    Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
@@ -3025,7 +3025,7 @@
 DEFUN ("set-window-buffer", Fset_window_buffer, Sset_window_buffer, 2, 3, 0,
        doc: /* Make WINDOW display BUFFER as its contents.
 BUFFER can be a buffer or buffer name.
-Optional third arg KEEP_MARGINS non-nil means that WINDOW's current
+Optional third arg KEEP-MARGINS non-nil means that WINDOW's current
 display margins, fringe widths, and scroll bar settings are maintained;
 the default is to reset these from BUFFER's local settings or the frame
 defaults.  */)
--- a/src/xdisp.c	Sat May 01 19:23:22 2004 +0000
+++ b/src/xdisp.c	Fri May 07 14:20:00 2004 +0000
@@ -304,7 +304,7 @@
 Lisp_Object Qslice;
 Lisp_Object Qcenter;
 Lisp_Object Qmargin, Qpointer;
-Lisp_Object Qline_height;
+Lisp_Object Qline_height, Qtotal;
 extern Lisp_Object Qheight;
 extern Lisp_Object QCwidth, QCheight, QCascent;
 extern Lisp_Object Qscroll_bar;
@@ -18522,11 +18522,11 @@
    Returns height in pixels, or nil.  */
 
 static Lisp_Object
-calc_line_height_property (it, prop, font, boff)
+calc_line_height_property (it, prop, font, boff, total)
      struct it *it;
      Lisp_Object prop;
      XFontStruct *font;
-     int boff;
+     int boff, *total;
 {
   Lisp_Object val;
   Lisp_Object face_name = Qnil;
@@ -18538,6 +18538,12 @@
   if (NILP (val))
     return val;
 
+  if (total && CONSP (val) && EQ (XCAR (val), Qtotal))
+    {
+      *total = 1;
+      val = XCDR (val);
+    }
+
   if (INTEGERP (val))
     return val;
 
@@ -18571,12 +18577,12 @@
 
       face_id = lookup_named_face (it->f, face_name, ' ');
       if (face_id < 0)
-	return -1;
+	return make_number (-1);
 
       face = FACE_FROM_ID (it->f, face_id);
       font = face->font;
       if (font == NULL)
-	return -1;
+	return make_number (-1);
 
       font_info = FONT_INFO_FROM_ID (it->f, face->font_info_id);
       boff = font_info->baseline_offset;
@@ -18806,13 +18812,13 @@
 	     But if previous part of the line set a height, don't
 	     increase that height */
 
-	  Lisp_Object height, spacing;
+	  Lisp_Object height;
 
 	  it->override_ascent = -1;
 	  it->pixel_width = 0;
 	  it->nglyphs = 0;
 
-	  height = calc_line_height_property(it, Qline_height, font, boff);
+	  height = calc_line_height_property(it, Qline_height, font, boff, 0);
 
 	  if (it->override_ascent >= 0)
 	    {
@@ -18845,6 +18851,9 @@
 	    }
 	  else
 	    {
+	      Lisp_Object spacing;
+	      int total = 0;
+
 	      it->phys_ascent = it->ascent;
 	      it->phys_descent = it->descent;
 
@@ -18858,16 +18867,14 @@
 	      if (!NILP (height)
 		  && XINT (height) > it->ascent + it->descent)
 		it->ascent = XINT (height) - it->descent;
-	    }
-
-	  spacing = calc_line_height_property(it, Qline_spacing, font, boff);
-	  if (!NILP (spacing))
-	    {
-	      int sp = XINT (spacing);
-	      if (sp < 0)
-		extra_line_spacing = (-sp) - (it->phys_ascent + it->phys_descent);
-	      else
-		extra_line_spacing = sp;
+
+	      spacing = calc_line_height_property(it, Qline_spacing, font, boff, &total);
+	      if (INTEGERP (spacing))
+		{
+		  extra_line_spacing = XINT (spacing);
+		  if (total)
+		    extra_line_spacing -= (it->phys_ascent + it->phys_descent);
+		}
 	    }
 	}
       else if (it->char_to_display == '\t')
@@ -21894,6 +21901,8 @@
   staticpro (&Qcenter);
   Qline_height = intern ("line-height");
   staticpro (&Qline_height);
+  Qtotal = intern ("total");
+  staticpro (&Qtotal);
   QCalign_to = intern (":align-to");
   staticpro (&QCalign_to);
   QCrelative_width = intern (":relative-width");