# This is a patch for xemacs-21.5.2 to update it to xemacs-21.5.3
# 
# To apply this patch:
# STEP 1: Chdir to the source directory.
# STEP 2: Run the 'applypatch' program with this patch file as input.
#
# If you do not have 'applypatch', it is part of the 'makepatch' package
# that you can fetch from the Comprehensive Perl Archive Network:
# http://www.perl.com/CPAN/authors/Johan_Vromans/makepatch-x.y.tar.gz
# In the above URL, 'x' should be 2 or higher.
#
# To apply this patch without the use of 'applypatch':
# STEP 1: Chdir to the source directory.
# If you have a decent Bourne-type shell:
# STEP 2: Run the shell with this file as input.
# If you don't have such a shell, you may need to manually create/delete
# the files as shown below.
# STEP 3: Run the 'patch' program with this file as input.
#
# These are the commands needed to create/delete files/directories:
#
rm -f './lisp/x-font-menu.elc'
rm -f './lisp/x-compose.elc'
rm -f './lisp/win32-native.elc'
rm -f './lisp/widgets-gtk.elc'
rm -f './lisp/wid-edit.elc'
rm -f './lisp/wid-browse.elc'
rm -f './lisp/view-less.elc'
rm -f './lisp/userlock.elc'
rm -f './lisp/term/xterm.elc'
rm -f './lisp/term/wyse50.elc'
rm -f './lisp/term/vt420.elc'
rm -f './lisp/term/vt400.elc'
rm -f './lisp/term/vt320.elc'
rm -f './lisp/term/vt300.elc'
rm -f './lisp/term/vt240.elc'
rm -f './lisp/term/vt220.elc'
rm -f './lisp/term/vt201.elc'
rm -f './lisp/term/vt200.elc'
rm -f './lisp/term/vt125.elc'
rm -f './lisp/term/vt102.elc'
rm -f './lisp/term/vt100.elc'
rm -f './lisp/term/vt100-led.elc'
rm -f './lisp/term/vt-control.elc'
rm -f './lisp/term/tvi970.elc'
rm -f './lisp/term/sup-mouse.elc'
rm -f './lisp/term/scoansi.elc'
rm -f './lisp/term/news.elc'
rm -f './lisp/term/lk201.elc'
rm -f './lisp/term/linux.elc'
rm -f './lisp/term/keyswap.elc'
rm -f './lisp/term/cygwin.elc'
rm -f './lisp/term/bobcat.elc'
rm -f './lisp/term/bg-mouse.elc'
rm -f './lisp/term/apollo.elc'
rm -f './lisp/term/AT386.elc'
rm -f './lisp/symbols.elc'
rm -f './lisp/symbol-syntax.elc'
rm -f './lisp/sound.elc'
rm -f './lisp/rect.elc'
rm -f './lisp/picture.elc'
rm -f './lisp/package-ui.elc'
rm -f './lisp/package-net.elc'
rm -f './lisp/package-info.elc'
rm -f './lisp/package-get.elc'
rm -f './lisp/package-admin.elc'
rm -f './lisp/mwheel.elc'
rm -f './lisp/mule/custom-load.elc'
rm -f './lisp/mule/custom-load.el'
rm -f './lisp/msw-select.elc'
rm -f './lisp/msw-mouse.elc'
rm -f './lisp/msw-init.elc'
rm -f './lisp/msw-glyphs.elc'
rm -f './lisp/msw-font-menu.elc'
rm -f './lisp/msw-faces.elc'
rm -f './lisp/lisp-mnt.elc'
rm -f './lisp/ldap.elc'
rm -f './lisp/info.elc'
rm -f './lisp/hyper-apropos.elc'
rm -f './lisp/help-nomule.elc'
rm -f './lisp/help-macro.elc'
rm -f './lisp/gtk.elc'
rm -f './lisp/gtk-widgets.elc'
rm -f './lisp/gtk-widget-accessors.elc'
rm -f './lisp/gtk-select.elc'
rm -f './lisp/gtk-password-dialog.elc'
rm -f './lisp/gtk-package.elc'
rm -f './lisp/gtk-mouse.elc'
rm -f './lisp/gtk-marshal.elc'
rm -f './lisp/gtk-iso8859-1.elc'
rm -f './lisp/gtk-init.elc'
rm -f './lisp/gtk-glyphs.elc'
rm -f './lisp/gtk-font-menu.elc'
rm -f './lisp/gtk-file-dialog.elc'
rm -f './lisp/gtk-ffi.elc'
rm -f './lisp/gtk-faces.elc'
rm -f './lisp/gtk-extra.elc'
rm -f './lisp/gtk-compose.elc'
rm -f './lisp/gpm.elc'
rm -f './lisp/gnuserv.elc'
rm -f './lisp/gnome.elc'
rm -f './lisp/gnome-widgets.elc'
rm -f './lisp/glade.elc'
rm -f './lisp/generic-widgets.elc'
rm -f './lisp/gdk.elc'
rm -f './lisp/font.elc'
rm -f './lisp/font-menu.elc'
rm -f './lisp/font-lock.elc'
rm -f './lisp/finder.elc'
rm -f './lisp/files-nomule.elc'
rm -f './lisp/etags.elc'
rm -f './lisp/dragdrop.elc'
rm -f './lisp/disp-table.elc'
rm -f './lisp/disass.elc'
rm -f './lisp/dialog-gtk.elc'
rm -f './lisp/custom-load.elc'
rm -f './lisp/custom-load.el'
rm -f './lisp/cus-load.elc'
rm -f './lisp/cus-face.elc'
rm -f './lisp/cus-edit.elc'
rm -f './lisp/cus-dep.elc'
rm -f './lisp/config.elc'
rm -f './lisp/compat.elc'
rm -f './lisp/cl-compat.elc'
rm -f './lisp/check-features.elc'
rm -f './lisp/callers-of-rpt.elc'
rm -f './lisp/build-report.elc'
rm -f './lisp/blessmail.elc'
rm -f './lisp/behavior.elc'
rm -f './lisp/behavior-defs.elc'
rm -f './lisp/apropos.elc'
rm -f './lisp/alist.elc'
rm -f './lisp/about.elc'
rm -f './info/xemacs.info-9'
rm -f './info/xemacs.info-8'
rm -f './info/xemacs.info-7'
rm -f './info/xemacs.info-6'
rm -f './info/xemacs.info-5'
rm -f './info/xemacs.info-4'
rm -f './info/xemacs.info-3'
rm -f './info/xemacs.info-23'
rm -f './info/xemacs.info-22'
rm -f './info/xemacs.info-21'
rm -f './info/xemacs.info-20'
rm -f './info/xemacs.info-2'
rm -f './info/xemacs.info-19'
rm -f './info/xemacs.info-18'
rm -f './info/xemacs.info-17'
rm -f './info/xemacs.info-16'
rm -f './info/xemacs.info-15'
rm -f './info/xemacs.info-14'
rm -f './info/xemacs.info-13'
rm -f './info/xemacs.info-12'
rm -f './info/xemacs.info-11'
rm -f './info/xemacs.info-10'
rm -f './info/xemacs.info-1'
rm -f './info/xemacs.info'
rm -f './info/xemacs-faq.info-6'
rm -f './info/xemacs-faq.info-5'
rm -f './info/xemacs-faq.info-4'
rm -f './info/xemacs-faq.info-3'
rm -f './info/xemacs-faq.info-2'
rm -f './info/xemacs-faq.info-1'
rm -f './info/xemacs-faq.info'
rm -f './info/widget.info'
rm -f './info/texinfo.info-9'
rm -f './info/texinfo.info-8'
rm -f './info/texinfo.info-7'
rm -f './info/texinfo.info-6'
rm -f './info/texinfo.info-5'
rm -f './info/texinfo.info-4'
rm -f './info/texinfo.info-3'
rm -f './info/texinfo.info-2'
rm -f './info/texinfo.info-12'
rm -f './info/texinfo.info-11'
rm -f './info/texinfo.info-10'
rm -f './info/texinfo.info-1'
rm -f './info/texinfo.info'
rm -f './info/termcap.info-3'
rm -f './info/termcap.info-2'
rm -f './info/termcap.info-1'
rm -f './info/termcap.info'
rm -f './info/term.info'
rm -f './info/standards.info-4'
rm -f './info/standards.info-3'
rm -f './info/standards.info-2'
rm -f './info/standards.info-1'
rm -f './info/standards.info'
rm -f './info/new-users-guide.info-3'
rm -f './info/new-users-guide.info-2'
rm -f './info/new-users-guide.info-1'
rm -f './info/new-users-guide.info'
rm -f './info/lispref.info-9'
rm -f './info/lispref.info-8'
rm -f './info/lispref.info-7'
rm -f './info/lispref.info-6'
rm -f './info/lispref.info-5'
rm -f './info/lispref.info-48'
rm -f './info/lispref.info-47'
rm -f './info/lispref.info-46'
rm -f './info/lispref.info-45'
rm -f './info/lispref.info-44'
rm -f './info/lispref.info-43'
rm -f './info/lispref.info-42'
rm -f './info/lispref.info-41'
rm -f './info/lispref.info-40'
rm -f './info/lispref.info-4'
rm -f './info/lispref.info-39'
rm -f './info/lispref.info-38'
rm -f './info/lispref.info-37'
rm -f './info/lispref.info-36'
rm -f './info/lispref.info-35'
rm -f './info/lispref.info-34'
rm -f './info/lispref.info-33'
rm -f './info/lispref.info-32'
rm -f './info/lispref.info-31'
rm -f './info/lispref.info-30'
rm -f './info/lispref.info-3'
rm -f './info/lispref.info-29'
rm -f './info/lispref.info-28'
rm -f './info/lispref.info-27'
rm -f './info/lispref.info-26'
rm -f './info/lispref.info-25'
rm -f './info/lispref.info-24'
rm -f './info/lispref.info-23'
rm -f './info/lispref.info-22'
rm -f './info/lispref.info-21'
rm -f './info/lispref.info-20'
rm -f './info/lispref.info-2'
rm -f './info/lispref.info-19'
rm -f './info/lispref.info-18'
rm -f './info/lispref.info-17'
rm -f './info/lispref.info-16'
rm -f './info/lispref.info-15'
rm -f './info/lispref.info-14'
rm -f './info/lispref.info-13'
rm -f './info/lispref.info-12'
rm -f './info/lispref.info-11'
rm -f './info/lispref.info-10'
rm -f './info/lispref.info-1'
rm -f './info/lispref.info'
rm -f './info/internals.info-9'
rm -f './info/internals.info-8'
rm -f './info/internals.info-7'
rm -f './info/internals.info-6'
rm -f './info/internals.info-5'
rm -f './info/internals.info-4'
rm -f './info/internals.info-3'
rm -f './info/internals.info-2'
rm -f './info/internals.info-1'
rm -f './info/internals.info'
rm -f './info/info.info'
rm -f './info/external-widget.info'
rm -f './info/emodules.info'
rm -f './info/custom.info'
rm -f './info/cl.info-6'
rm -f './info/cl.info-5'
rm -f './info/cl.info-4'
rm -f './info/cl.info-3'
rm -f './info/cl.info-2'
rm -f './info/cl.info-1'
rm -f './info/cl.info'
touch './GNUmakefile'
chmod 0444 './GNUmakefile'
touch './Installation'
chmod 0644 './Installation'
touch './Makefile'
chmod 0444 './Makefile'
touch './Makefile.in'
chmod 0644 './Makefile.in'
touch './config.log'
chmod 0644 './config.log'
touch './config.status'
chmod 0755 './config.status'
touch './lib-src/DOC'
chmod 0644 './lib-src/DOC'
touch './lib-src/GNUmakefile'
chmod 0444 './lib-src/GNUmakefile'
touch './lib-src/Makefile'
chmod 0444 './lib-src/Makefile'
touch './lib-src/Makefile.in'
chmod 0644 './lib-src/Makefile.in'
touch './lib-src/config.values'
chmod 0644 './lib-src/config.values'
touch './lib-src/ellcc.h'
chmod 0644 './lib-src/ellcc.h'
touch './lwlib/GNUmakefile'
chmod 0444 './lwlib/GNUmakefile'
touch './lwlib/Makefile'
chmod 0444 './lwlib/Makefile'
touch './lwlib/Makefile.in'
chmod 0644 './lwlib/Makefile.in'
touch './lwlib/config.h'
chmod 0644 './lwlib/config.h'
touch './src/Emacs.ad.h'
chmod 0644 './src/Emacs.ad.h'
touch './src/GNUmakefile'
chmod 0444 './src/GNUmakefile'
touch './src/Makefile'
chmod 0444 './src/Makefile'
touch './src/Makefile.in'
chmod 0644 './src/Makefile.in'
touch './src/config.h'
chmod 0644 './src/config.h'
touch './src/paths.h'
chmod 0644 './src/paths.h'
touch './src/select-common.h'
chmod 0644 './src/select-common.h'
touch './src/sheap-adjust.h'
chmod 0644 './src/sheap-adjust.h'
touch './src/update-elc.stamp'
chmod 0644 './src/update-elc.stamp'
#
# This command terminates the shell and need not be executed manually.
exit
#
#### End of Preamble ####

#### Patch data follows ####
diff --text -u 'xemacs-21.5.2/CHANGES-beta' 'xemacs-21.5.3/CHANGES-beta'
Index: ././CHANGES-beta
--- ././CHANGES-beta	Sat Jul 28 16:38:49 2001
+++ ././CHANGES-beta	Fri Sep  7 15:40:06 2001
@@ -1,3 +1,15 @@
+to 21.5.3 "asparagus"
+-- Add missing XIM unregister callback on Motif -- Glynn Clements
+-- Improve debugging in event-msw.c, fix "can't close last window" bug
+   -- Adrian Aichner
+-- Improve Info docs for widget.el -- Stephen J. Turnbull
+-- Many small bug, typo, and warning fixes -- Ben Wing, Stephen J. Turnbull,
+   Adrian Aichner
+-- Autoload handling improvements -- Didier Verna
+-- More 'report-xemacs-bug' updates -- Steve Youngs
+-- Fix unsigned warnings; turn sign-compare warnings on for NT -- Ben Wing
+-- Synch configure.usage options with configure -- Peter Brown
+
 to 21.5.2 "artichoke"
 -- fixes and improvements -- Ben Wing
    -- etags.c synched to upstream
diff --text -u 'xemacs-21.5.2/ChangeLog' 'xemacs-21.5.3/ChangeLog'
Index: ././ChangeLog
--- ././ChangeLog	Sat Jul 28 16:48:22 2001
+++ ././ChangeLog	Fri Sep  7 18:13:25 2001
@@ -1,3 +1,16 @@
+2001-09-07  Stephen J. Turnbull  <stephen@xemacs.org>
+
+	* XEmacs 21.5.3 "asparagus" is released.
+
+2001-08-02  Peter Brown  <rendhalver@users.sourceforge.net>
+
+	* configure.usage (--with-dialogs): added lucid to list of options
+	* configure.usage (--with-widgets): added lucid to list of options
+	* configure.usage (--with-dragndrop): added GTK to list of protocols
+	* configure.usage (--mail-locking): added `locking' or `mmdf' to
+	list of options syncing options documentation with those in
+	configure.in
+
 2001-07-28  Stephen J. Turnbull  <stephen@xemacs.org>
 
 	* XEmacs 21.5.2 "artichoke" is released.
diff --text -u /dev/null 'xemacs-21.5.3/GNUmakefile'
Index: ././GNUmakefile
--- ././GNUmakefile	Thu Jan  1 09:00:00 1970
+++ ././GNUmakefile	Fri Sep  7 18:15:55 2001
@@ -0,0 +1,277 @@
+RECURSIVE_MAKE=$(MAKE)
+SHELL = /bin/sh
+LANG = C
+LC_ALL = C
+RM = rm -f
+MAKEPATH=./lib-src/make-path
+pwd = /bin/pwd
+TAR = tar
+CC=gcc
+CPP=gcc -E
+LN_S=ln -s
+CFLAGS=-g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare
+CPPFLAGS=
+version=21.5-b3
+configuration=i686-pc-linux
+PROGNAME=xemacs
+prefix=/usr/local
+inststaticdir=${PROGNAME}
+instvardir=${PROGNAME}-${version}
+exec_prefix=${prefix}
+bindir=${exec_prefix}/bin
+datadir=${prefix}/lib
+pkgdir=${datadir}/${instvardir}/lisp
+statedir=${prefix}/lib
+libdir=${exec_prefix}/lib
+mandir=${prefix}/man/man1
+manext=.1
+infodir=${datadir}/${instvardir}/info
+infopath=
+srcdir=/playpen/mozilla/XEmacs/xemacs-21.5.3
+blddir=/playpen/mozilla/XEmacs/xemacs-21.5.3
+lispdir=${datadir}/${instvardir}/lisp
+moduledir=${datadir}/${instvardir}/${configuration}/modules
+sitelispdir=${datadir}/${inststaticdir}/site-lisp
+sitemoduledir=${datadir}/${inststaticdir}/site-modules
+buildlispdir=${srcdir}/lisp
+etcdir=${datadir}/${instvardir}/etc
+docdir=${archlibdir}
+archlibdir=${datadir}/${instvardir}/${configuration}
+INSTALL =  /usr/bin/install -c
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_DATA = ${INSTALL} -m 644
+MAKE_SUBDIR =  lib-src lwlib src
+SUBDIR = ${MAKE_SUBDIR} man  
+SUBDIR_MAKEFILES = lib-src/Makefile lib-src/GNUmakefile lwlib/Makefile lwlib/GNUmakefile src/Makefile src/GNUmakefile
+INSTALL_ARCH_DEP_SUBDIR =  lib-src src
+COPYDIR = ${srcdir}/etc ${srcdir}/lisp
+COPYDESTS = ${etcdir} ${lispdir}
+GENERATED_HEADERS = src/paths.h src/Emacs.ad.h src/config.h lwlib/config.h src/sheap-adjust.h
+GENERATED_LISP = lisp/finder-inf.el
+all: ${PROGNAME} all-elc info
+${PROGNAME}:	${GENERATED_HEADERS} ${MAKE_SUBDIR} ${GENERATED_LISP}
+.SUFFIXES:
+.NO_PARALLEL:	${GENERATED_HEADERS} ${MAKE_SUBDIR} dump-elcs
+.PHONY: ${SUBDIR} all beta all-elc all-elcs dump-elc dump-elcs finder
+beta: clean all-elc finder info
+dist: all-elc info
+.PHONY: config configure depend
+config: configure depend
+configure: ${srcdir}/configure ${srcdir}/lib-src/config.values.in
+${srcdir}/configure : ${srcdir}/configure.in
+	cd ${srcdir} && autoconf
+${srcdir}/lib-src/config.values.in : ${srcdir}/configure
+	cd ${srcdir} && $(SHELL) lib-src/config.values.sh
+depend ${srcdir}/src/depend:
+	cd ./src && $(RECURSIVE_MAKE) depend
+all-elc all-elcs: lib-src lwlib dump-elcs src
+	${blddir}/src/${PROGNAME} -batch -vanilla \
+		-l update-elc-2.el -f batch-update-elc-2 lisp
+dump-elc dump-elcs: ${GENERATED_HEADERS} FRC.dump-elcs
+	cd ./src && $(RECURSIVE_MAKE) dump-elcs
+finder: src
+	@echo "Building finder database ..."
+	@(cd ./lisp; \
+		${blddir}/src/${PROGNAME} -batch -vanilla \
+		-eval '(setq finder-compile-keywords-quiet t)' \
+		-l finder -f finder-compile-keywords )
+	@echo "Building finder database ...(done)"
+lisp/finder-inf.el:
+	@echo "Building finder database ..."
+	@(cd ./lisp; \
+		${blddir}/src/${PROGNAME} -batch -vanilla \
+		-eval '(setq finder-compile-keywords-quiet t)' \
+		-l finder -f finder-compile-keywords )
+	@echo "Building finder database ...(done)"
+src/Emacs.ad.h: ${srcdir}/etc/Emacs.ad
+	@echo "Producing \`src/Emacs.ad.h' from \`etc/Emacs.ad'."
+	@$(RM) src/Emacs.ad.h
+	@(echo "/*	Do not edit this file!" ; \
+	  echo "  	Automatically generated from ${srcdir}/etc/Emacs.ad" ; \
+	  echo " */" ; \
+	  $(SHELL) ${srcdir}/lib-src/ad2c ${srcdir}/etc/Emacs.ad ) > \
+	  src/Emacs.ad.h
+src/sheap-adjust.h:
+	@echo "Resetting \`src/sheap-adjust.h'."; \
+	(echo "/*	Do not edit this file!" ; \
+	 echo "  	Automatically generated by XEmacs */" ; \
+	 echo "#define SHEAP_ADJUSTMENT 0") > $@
+src:  lwlib FRC.src
+pkg-src/tree-x: pkg-src/FRC.tree-x
+lib-src: FRC.lib-src
+lwlib:	FRC.lwlib
+dynodump: FRC.dynodump
+FRC.src FRC.lib-src FRC.lwlib FRC.dynodump pkg-src/FRC.tree-x:
+FRC.lisp.finder-inf.el:
+${SUBDIR}: ${SUBDIR_MAKEFILES} ${GENERATED_HEADERS} FRC
+	cd ./$@ && $(RECURSIVE_MAKE) all
+Makefile: ${srcdir}/Makefile.in config.status
+	./config.status
+src/Makefile: ${srcdir}/src/Makefile.in.in ${srcdir}/src/depend config.status
+	./config.status
+lib-src/Makefile: ${srcdir}/lib-src/Makefile.in.in config.status
+	./config.status
+lwlib/Makefile: ${srcdir}/lwlib/Makefile.in.in config.status
+	./config.status
+pkg-src/tree-x/Makefile: ${srcdir}/pkg-src/tree-x/Makefile.in.in config.status
+	./config.status
+src/config.h: ${srcdir}/src/config.h.in
+	./config.status && touch $@
+src/paths.h: ${srcdir}/src/paths.h.in
+	./config.status && touch $@
+lwlib/config.h: ${srcdir}/lwlib/config.h.in
+	./config.status && touch $@
+.PHONY: install-only install install-arch-dep install-arch-indep gzip.el mkdir
+.PHONY: check-features
+check-features: all
+	${blddir}/src/${PROGNAME} -batch -l check-features.el
+install-only: ${MAKE_SUBDIR} check-features install-arch-dep install-arch-indep
+install: all check-features install-arch-dep install-arch-indep
+install-arch-dep: mkdir
+	for subdir in ${INSTALL_ARCH_DEP_SUBDIR}; do \
+	(cd ./$${subdir} && $(RECURSIVE_MAKE) install prefix=${prefix} \
+	    exec_prefix=${exec_prefix} bindir=${bindir} libdir=${libdir} \
+	    archlibdir=${archlibdir}) ; done
+	if test "`(cd ${archlibdir} && $(pwd))`" != \
+		"`(cd ./lib-src && $(pwd))`"; then \
+	   if test -f ../Installation; then \
+		${INSTALL_DATA} ../Installation ${archlibdir}/Installation; \
+	   fi; \
+	   ${INSTALL_DATA} lib-src/config.values ${docdir}/config.values; \
+	   ${INSTALL_DATA} lib-src/DOC ${docdir}/DOC; \
+	   for subdir in `find ${archlibdir} -type d ! -name RCS ! -name SCCS ! -name CVS -print` ; \
+	     do (cd $${subdir} && $(RM) -r RCS CVS SCCS \#* *~) ; done ; \
+	else true; fi
+	${INSTALL_PROGRAM} src/${PROGNAME} ${bindir}/${PROGNAME}-${version}
+	-chmod 0755 ${bindir}/${PROGNAME}-${version}
+	cd ${bindir} && $(RM) ./${PROGNAME} && ${LN_S} ${PROGNAME}-${version} ./${PROGNAME}
+	if test "${prefix}" != "${exec_prefix}"; then \
+	  $(MAKEPATH) ${exec_prefix}/lib/${instvardir}; \
+	  for dir in \
+		lib/${inststaticdir} \
+	 	lib/${instvardir}/etc \
+		lib/${instvardir}/info \
+		lib/${instvardir}/lisp; do \
+	    if test ! -d ${exec_prefix}/$${dir}; then \
+	      $(LN_S) ${prefix}/$${dir} ${exec_prefix}/$${dir}; fi; \
+	  done; \
+	fi
+install-arch-indep: mkdir info
+	-@set ${COPYDESTS} ; \
+	 for dir in ${COPYDIR} ; do \
+	   if test "`(cd $$1 && $(pwd))`" != \
+		   "`(cd $${dir} && $(pwd))`"; then \
+	     : do nothing - echo "rm -rf $$1" ; \
+	   fi ; \
+	   shift ; \
+	 done
+	-set ${COPYDESTS} ; \
+	 for dir in ${COPYDESTS} ; do \
+	   if test ! -d $${dir} ; then mkdir $${dir} ; fi ; \
+	 done ; \
+	 for dir in ${COPYDIR} ; do \
+	   dest=$$1 ; shift ; \
+	   test -d $${dir} \
+	     -a "`(cd $${dir} && $(pwd))`" != \
+		"`(cd $${dest} && $(pwd))`" \
+	   && (echo "Copying $${dir}..." ; \
+	       (cd $${dir} && $(TAR) -cf - . ) | \
+		(cd $${dest} && umask 022 && $(TAR) -xf - );\
+	       chmod 0755 $${dest}; \
+	       for subdir in `find $${dest} -type d ! -name RCS ! -name SCCS ! -name CVS -print` ; do \
+		 (cd $${subdir} && $(RM) -r RCS CVS SCCS \#* *~) ; \
+	       done) ; \
+	 done
+	if test "`(cd ${srcdir}/info && $(pwd))`" != \
+		"`(cd ${infodir} && $(pwd))`" && cd ${srcdir}/info; then \
+	  if test ! -f ${infodir}/dir -a -f dir ; then \
+	    ${INSTALL_DATA} ${srcdir}/info/dir ${infodir}/dir ; \
+	  fi ; \
+	  for file in *.info* ; do \
+	    ${INSTALL_DATA} $${file} ${infodir}/$${file} ; \
+	    chmod 0644 ${infodir}/$${file}; \
+	  done ; \
+	fi
+	cd ${srcdir}/etc && \
+	  for page in xemacs etags ctags gnuserv gnuclient gnuattach gnudoit; do \
+	    ${INSTALL_DATA} ${srcdir}/etc/$${page}.1 ${mandir}/$${page}${manext} ; \
+	    chmod 0644 ${mandir}/$${page}${manext} ; \
+	  done
+	@echo "If you would like to save approximately 2M of disk space, do"
+	@echo "make gzip-el"
+	@echo "or you may run "
+	@echo ${srcdir}/lib-src/gzip-el.sh lispdir " from the command line."
+	@echo "Where lispdir is where the lisp files were installed, i.e.,"
+	@echo "${lispdir}"
+gzip-el:
+	$(SHELL) ${srcdir}/lib-src/gzip-el.sh ${lispdir}
+mkdir: FRC.mkdir
+	${MAKEPATH} ${COPYDESTS} ${docdir} ${infodir} ${archlibdir} \
+	  ${mandir} ${bindir} ${datadir} ${libdir} ${pkgdir} \
+	  ${moduledir} ${sitemoduledir} \
+	  ${sitelispdir}
+FRC FRC.src.paths.h FRC.mkdir FRC.dump-elcs FRC.info:
+FRC.mostlyclean FRC.clean FRC.distclean FRC.realclean FRC.tags:
+.PHONY: mostlyclean clean distclean realclean extraclean
+mostlyclean: FRC.mostlyclean
+	for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+clean: FRC.clean
+	for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	$(RM) core
+top_distclean=\
+	$(RM) config.status config.log confdefs.h config-tmp-* build-install Installation ; \
+	$(RM) core .sbinit lock/* GNUmakefile Makefile Makefile.in ; \
+	$(RM) lisp/finder-inf.el* Installation.el Installation.elc ; \
+	$(RM) -r site-packages xemacs-packages mule-packages site-lisp
+distclean: FRC.distclean
+	for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	-${top_distclean}
+realclean: FRC.realclean
+	for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	-${top_distclean}
+	$(RM) TAGS
+extraclean:
+	for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	$(RM) *~ \#*
+	-${top_distclean}
+SOURCES = ChangeLog GETTING.GNU.SOFTWARE INSTALL Makefile.in PROBLEMS \
+	README build-install.in configure make-dist move-if-change
+.PHONY: unlock relock TAGS tags check dist info dvi mcs
+unlock:
+	chmod u+w $(SOURCES) cpp/*
+	-cd ./elisp && chmod u+w Makefile README *.texi
+	for d in src etc lib-src lisp; do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	cd ./lisp/term && chmod u+w README *.el
+	cd ./man && chmod u+w *texi* ChangeLog split-man
+	cd ./lwlib && chmod u+w *.[ch] Makefile.in.in
+relock:
+	chmod u-w $(SOURCES) cpp/*
+	-cd ./elisp && chmod u-w Makefile README *.texi
+	for d in src etc lib-src lisp; do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	cd ./lisp/term && chmod u+w README *.el
+	cd ./man && chmod u+w *texi* ChangeLog split-man
+	cd ./lwlib && chmod u+w *.[ch] Makefile.in.in
+PRUNE_VC = -name SCCS -prune -o -name RCS -prune -o -name CVS -prune -o
+tagslisp = lisp
+TAGS tags: FRC.tags
+	@echo "If you don't have a copy of etags around, then do 'make lib-src' first."
+	$(RM) ${srcdir}/TAGS
+	@PATH=`$(pwd)`/lib-src:$$PATH HOME=/-=-; export PATH HOME; \
+	  echo "Using etags from `which etags`."
+	PATH=`$(pwd)`/lib-src:$$PATH ; export PATH; cd ${srcdir} && \
+	find src lwlib lib-src ${PRUNE_VC} -name '*.[ch]' -print | \
+	  xargs etags -a -r '/[ 	]*DEF\(VAR\|INE\)_[A-Z_]+[ 	]*([ 	]*"\([^"]+\)"/\2/'; \
+	find ${tagslisp} ${PRUNE_VC} -name '*.el' ! -name 'auto-autoloads.el' -print | \
+	  xargs etags -a -l none -r "/^(def\\(var\\|un\\|alias\\|const\\|macro\\|subst\\|struct\\|face\\|group\\|custom\\|ine-\\(function\\|compiler-macro\\|[a-z-]+alias\\)\\)[ 	]+'?\\([^ 	]+\\)/\\3/"
+check:
+	cd ./src && $(RECURSIVE_MAKE) $@
+info: FRC.info
+	cd ${srcdir}/man && $(RECURSIVE_MAKE) $@
+dvi:
+	cd ${srcdir}/man && $(RECURSIVE_MAKE) $@
+mcs:
+	date=`LANG=C LC_ALL=C date -u '+%e %b %Y'`; \
+	ident="@(#)RELEASE VERSION XEmacs ${version} $${date}"; \
+	for f in `file lib-src/* src/${PROGNAME} | grep ELF | sed -e 's/:.*//'`; do \
+	  mcs -da "$${ident} `echo $${f} | sed 's/.*\///'`" $${f}; \
+	done
diff --text -u /dev/null 'xemacs-21.5.3/Installation'
Index: ././Installation
--- ././Installation	Thu Jan  1 09:00:00 1970
+++ ././Installation	Fri Sep  7 18:15:47 2001
@@ -0,0 +1,69 @@
+uname -a: Linux tleepslib 2.2.18 #1 SMP Tue Dec 26 11:36:10 JST 2000 i686 unknown
+
+./configure  '--with-mule'
+
+
+XEmacs 21.5-b3 "asparagus" configured for `i686-pc-linux'.
+
+
+Compilation / Installation:
+  Source code location:              /playpen/mozilla/XEmacs/xemacs-21.5.3
+  Installation prefix:               /usr/local
+  Operating system description file: `s/linux.h'
+  Machine description file:          `m/intel386.h'
+  Compiler:                          gcc -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare
+  Relocating allocator for buffers:  no
+  GNU version of malloc:             yes
+    - Using Doug Lea's new malloc from the GNU C Library.
+
+Window System:
+  Compiling in support for the X window system:
+    - X Windows headers location:                 /usr/X11R6/include
+    - X Windows libraries location:               /usr/X11R6/lib
+    - Handling WM_COMMAND properly.
+  Using Lucid menubars.
+  Using Lucid scrollbars.
+  Using Motif dialog boxes.
+  Using Motif native widgets.
+
+TTY:
+  Compiling in support for ncurses.
+  Compiling in support for GPM (General Purpose Mouse).
+
+Images:
+  Compiling in support for GIF  images (builtin).
+  Compiling in support for XPM  images.
+  Compiling in support for PNG  images.
+  Compiling in support for JPEG images.
+  Compiling in support for TIFF images.
+
+Sound:
+  Compiling in support for sound (native).
+  Compiling in support for NAS (network audio system).
+  Compiling in support for ESD (Enlightened Sound Daemon).
+
+Databases:
+  Compiling in support for Berkeley database.
+  Compiling in support for PostgreSQL.
+    - Using PostgreSQL header file:  postgresql/libpq-fe.h
+    - Using PostgreSQL V7 bindings.
+
+Internationalization:
+  Compiling in support for Mule (multi-lingual Emacs).
+  Compiling in support for XIM (X11R5+ I18N input method).
+    - Using raw Xlib to provide XIM support.
+  Compiling in support for Canna on Mule.
+  Compiling in support for the WNN input method on Mule.
+
+Mail:
+  Compiling in support for "dot-locking" mail spool file locking method.
+
+Other Features:
+  Compiling in support for dynamic shared object modules.
+  Compiling in support for extra debugging code.
+  WARNING: ---------------------------------------------------------
+  WARNING: Compiling in support for runtime error checking.
+  WARNING: XEmacs will run noticeably more slowly as a result.
+  WARNING: Error checking is on by default for XEmacs beta releases.
+  WARNING: ---------------------------------------------------------
+
diff --text -u /dev/null 'xemacs-21.5.3/Makefile'
Index: ././Makefile
--- ././Makefile	Thu Jan  1 09:00:00 1970
+++ ././Makefile	Fri Sep  7 18:15:55 2001
@@ -0,0 +1,277 @@
+RECURSIVE_MAKE=$(MAKE) $(MFLAGS) CC='$(CC)' CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS)' CPPFLAGS='$(CPPFLAGS)'
+SHELL = /bin/sh
+LANG = C
+LC_ALL = C
+RM = rm -f
+MAKEPATH=./lib-src/make-path
+pwd = /bin/pwd
+TAR = tar
+CC=gcc
+CPP=gcc -E
+LN_S=ln -s
+CFLAGS=-g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare
+CPPFLAGS=
+version=21.5-b3
+configuration=i686-pc-linux
+PROGNAME=xemacs
+prefix=/usr/local
+inststaticdir=${PROGNAME}
+instvardir=${PROGNAME}-${version}
+exec_prefix=${prefix}
+bindir=${exec_prefix}/bin
+datadir=${prefix}/lib
+pkgdir=${datadir}/${instvardir}/lisp
+statedir=${prefix}/lib
+libdir=${exec_prefix}/lib
+mandir=${prefix}/man/man1
+manext=.1
+infodir=${datadir}/${instvardir}/info
+infopath=
+srcdir=/playpen/mozilla/XEmacs/xemacs-21.5.3
+blddir=/playpen/mozilla/XEmacs/xemacs-21.5.3
+lispdir=${datadir}/${instvardir}/lisp
+moduledir=${datadir}/${instvardir}/${configuration}/modules
+sitelispdir=${datadir}/${inststaticdir}/site-lisp
+sitemoduledir=${datadir}/${inststaticdir}/site-modules
+buildlispdir=${srcdir}/lisp
+etcdir=${datadir}/${instvardir}/etc
+docdir=${archlibdir}
+archlibdir=${datadir}/${instvardir}/${configuration}
+INSTALL =  /usr/bin/install -c
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_DATA = ${INSTALL} -m 644
+MAKE_SUBDIR =  lib-src lwlib src
+SUBDIR = ${MAKE_SUBDIR} man  
+SUBDIR_MAKEFILES = lib-src/Makefile lib-src/GNUmakefile lwlib/Makefile lwlib/GNUmakefile src/Makefile src/GNUmakefile
+INSTALL_ARCH_DEP_SUBDIR =  lib-src src
+COPYDIR = ${srcdir}/etc ${srcdir}/lisp
+COPYDESTS = ${etcdir} ${lispdir}
+GENERATED_HEADERS = src/paths.h src/Emacs.ad.h src/config.h lwlib/config.h src/sheap-adjust.h
+GENERATED_LISP = lisp/finder-inf.el
+all: ${PROGNAME} all-elc info
+${PROGNAME}:	${GENERATED_HEADERS} ${MAKE_SUBDIR} ${GENERATED_LISP}
+.SUFFIXES:
+.NO_PARALLEL:	${GENERATED_HEADERS} ${MAKE_SUBDIR} dump-elcs
+.PHONY: ${SUBDIR} all beta all-elc all-elcs dump-elc dump-elcs finder
+beta: clean all-elc finder info
+dist: all-elc info
+.PHONY: config configure depend
+config: configure depend
+configure: ${srcdir}/configure ${srcdir}/lib-src/config.values.in
+${srcdir}/configure : ${srcdir}/configure.in
+	cd ${srcdir} && autoconf
+${srcdir}/lib-src/config.values.in : ${srcdir}/configure
+	cd ${srcdir} && $(SHELL) lib-src/config.values.sh
+depend ${srcdir}/src/depend:
+	cd ./src && $(RECURSIVE_MAKE) depend
+all-elc all-elcs: lib-src lwlib dump-elcs src
+	${blddir}/src/${PROGNAME} -batch -vanilla \
+		-l update-elc-2.el -f batch-update-elc-2 lisp
+dump-elc dump-elcs: ${GENERATED_HEADERS} FRC.dump-elcs
+	cd ./src && $(RECURSIVE_MAKE) dump-elcs
+finder: src
+	@echo "Building finder database ..."
+	@(cd ./lisp; \
+		${blddir}/src/${PROGNAME} -batch -vanilla \
+		-eval '(setq finder-compile-keywords-quiet t)' \
+		-l finder -f finder-compile-keywords )
+	@echo "Building finder database ...(done)"
+lisp/finder-inf.el:
+	@echo "Building finder database ..."
+	@(cd ./lisp; \
+		${blddir}/src/${PROGNAME} -batch -vanilla \
+		-eval '(setq finder-compile-keywords-quiet t)' \
+		-l finder -f finder-compile-keywords )
+	@echo "Building finder database ...(done)"
+src/Emacs.ad.h: ${srcdir}/etc/Emacs.ad
+	@echo "Producing \`src/Emacs.ad.h' from \`etc/Emacs.ad'."
+	@$(RM) src/Emacs.ad.h
+	@(echo "/*	Do not edit this file!" ; \
+	  echo "  	Automatically generated from ${srcdir}/etc/Emacs.ad" ; \
+	  echo " */" ; \
+	  $(SHELL) ${srcdir}/lib-src/ad2c ${srcdir}/etc/Emacs.ad ) > \
+	  src/Emacs.ad.h
+src/sheap-adjust.h:
+	@echo "Resetting \`src/sheap-adjust.h'."; \
+	(echo "/*	Do not edit this file!" ; \
+	 echo "  	Automatically generated by XEmacs */" ; \
+	 echo "#define SHEAP_ADJUSTMENT 0") > $@
+src:  lwlib FRC.src
+pkg-src/tree-x: pkg-src/FRC.tree-x
+lib-src: FRC.lib-src
+lwlib:	FRC.lwlib
+dynodump: FRC.dynodump
+FRC.src FRC.lib-src FRC.lwlib FRC.dynodump pkg-src/FRC.tree-x:
+FRC.lisp.finder-inf.el:
+${SUBDIR}: ${SUBDIR_MAKEFILES} ${GENERATED_HEADERS} FRC
+	cd ./$@ && $(RECURSIVE_MAKE) all
+Makefile: ${srcdir}/Makefile.in config.status
+	./config.status
+src/Makefile: ${srcdir}/src/Makefile.in.in ${srcdir}/src/depend config.status
+	./config.status
+lib-src/Makefile: ${srcdir}/lib-src/Makefile.in.in config.status
+	./config.status
+lwlib/Makefile: ${srcdir}/lwlib/Makefile.in.in config.status
+	./config.status
+pkg-src/tree-x/Makefile: ${srcdir}/pkg-src/tree-x/Makefile.in.in config.status
+	./config.status
+src/config.h: ${srcdir}/src/config.h.in
+	./config.status && touch $@
+src/paths.h: ${srcdir}/src/paths.h.in
+	./config.status && touch $@
+lwlib/config.h: ${srcdir}/lwlib/config.h.in
+	./config.status && touch $@
+.PHONY: install-only install install-arch-dep install-arch-indep gzip.el mkdir
+.PHONY: check-features
+check-features: all
+	${blddir}/src/${PROGNAME} -batch -l check-features.el
+install-only: ${MAKE_SUBDIR} check-features install-arch-dep install-arch-indep
+install: all check-features install-arch-dep install-arch-indep
+install-arch-dep: mkdir
+	for subdir in ${INSTALL_ARCH_DEP_SUBDIR}; do \
+	(cd ./$${subdir} && $(RECURSIVE_MAKE) install prefix=${prefix} \
+	    exec_prefix=${exec_prefix} bindir=${bindir} libdir=${libdir} \
+	    archlibdir=${archlibdir}) ; done
+	if test "`(cd ${archlibdir} && $(pwd))`" != \
+		"`(cd ./lib-src && $(pwd))`"; then \
+	   if test -f ../Installation; then \
+		${INSTALL_DATA} ../Installation ${archlibdir}/Installation; \
+	   fi; \
+	   ${INSTALL_DATA} lib-src/config.values ${docdir}/config.values; \
+	   ${INSTALL_DATA} lib-src/DOC ${docdir}/DOC; \
+	   for subdir in `find ${archlibdir} -type d ! -name RCS ! -name SCCS ! -name CVS -print` ; \
+	     do (cd $${subdir} && $(RM) -r RCS CVS SCCS \#* *~) ; done ; \
+	else true; fi
+	${INSTALL_PROGRAM} src/${PROGNAME} ${bindir}/${PROGNAME}-${version}
+	-chmod 0755 ${bindir}/${PROGNAME}-${version}
+	cd ${bindir} && $(RM) ./${PROGNAME} && ${LN_S} ${PROGNAME}-${version} ./${PROGNAME}
+	if test "${prefix}" != "${exec_prefix}"; then \
+	  $(MAKEPATH) ${exec_prefix}/lib/${instvardir}; \
+	  for dir in \
+		lib/${inststaticdir} \
+	 	lib/${instvardir}/etc \
+		lib/${instvardir}/info \
+		lib/${instvardir}/lisp; do \
+	    if test ! -d ${exec_prefix}/$${dir}; then \
+	      $(LN_S) ${prefix}/$${dir} ${exec_prefix}/$${dir}; fi; \
+	  done; \
+	fi
+install-arch-indep: mkdir info
+	-@set ${COPYDESTS} ; \
+	 for dir in ${COPYDIR} ; do \
+	   if test "`(cd $$1 && $(pwd))`" != \
+		   "`(cd $${dir} && $(pwd))`"; then \
+	     : do nothing - echo "rm -rf $$1" ; \
+	   fi ; \
+	   shift ; \
+	 done
+	-set ${COPYDESTS} ; \
+	 for dir in ${COPYDESTS} ; do \
+	   if test ! -d $${dir} ; then mkdir $${dir} ; fi ; \
+	 done ; \
+	 for dir in ${COPYDIR} ; do \
+	   dest=$$1 ; shift ; \
+	   test -d $${dir} \
+	     -a "`(cd $${dir} && $(pwd))`" != \
+		"`(cd $${dest} && $(pwd))`" \
+	   && (echo "Copying $${dir}..." ; \
+	       (cd $${dir} && $(TAR) -cf - . ) | \
+		(cd $${dest} && umask 022 && $(TAR) -xf - );\
+	       chmod 0755 $${dest}; \
+	       for subdir in `find $${dest} -type d ! -name RCS ! -name SCCS ! -name CVS -print` ; do \
+		 (cd $${subdir} && $(RM) -r RCS CVS SCCS \#* *~) ; \
+	       done) ; \
+	 done
+	if test "`(cd ${srcdir}/info && $(pwd))`" != \
+		"`(cd ${infodir} && $(pwd))`" && cd ${srcdir}/info; then \
+	  if test ! -f ${infodir}/dir -a -f dir ; then \
+	    ${INSTALL_DATA} ${srcdir}/info/dir ${infodir}/dir ; \
+	  fi ; \
+	  for file in *.info* ; do \
+	    ${INSTALL_DATA} $${file} ${infodir}/$${file} ; \
+	    chmod 0644 ${infodir}/$${file}; \
+	  done ; \
+	fi
+	cd ${srcdir}/etc && \
+	  for page in xemacs etags ctags gnuserv gnuclient gnuattach gnudoit; do \
+	    ${INSTALL_DATA} ${srcdir}/etc/$${page}.1 ${mandir}/$${page}${manext} ; \
+	    chmod 0644 ${mandir}/$${page}${manext} ; \
+	  done
+	@echo "If you would like to save approximately 2M of disk space, do"
+	@echo "make gzip-el"
+	@echo "or you may run "
+	@echo ${srcdir}/lib-src/gzip-el.sh lispdir " from the command line."
+	@echo "Where lispdir is where the lisp files were installed, i.e.,"
+	@echo "${lispdir}"
+gzip-el:
+	$(SHELL) ${srcdir}/lib-src/gzip-el.sh ${lispdir}
+mkdir: FRC.mkdir
+	${MAKEPATH} ${COPYDESTS} ${docdir} ${infodir} ${archlibdir} \
+	  ${mandir} ${bindir} ${datadir} ${libdir} ${pkgdir} \
+	  ${moduledir} ${sitemoduledir} \
+	  ${sitelispdir}
+FRC FRC.src.paths.h FRC.mkdir FRC.dump-elcs FRC.info:
+FRC.mostlyclean FRC.clean FRC.distclean FRC.realclean FRC.tags:
+.PHONY: mostlyclean clean distclean realclean extraclean
+mostlyclean: FRC.mostlyclean
+	for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+clean: FRC.clean
+	for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	$(RM) core
+top_distclean=\
+	$(RM) config.status config.log confdefs.h config-tmp-* build-install Installation ; \
+	$(RM) core .sbinit lock/* GNUmakefile Makefile Makefile.in ; \
+	$(RM) lisp/finder-inf.el* Installation.el Installation.elc ; \
+	$(RM) -r site-packages xemacs-packages mule-packages site-lisp
+distclean: FRC.distclean
+	for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	-${top_distclean}
+realclean: FRC.realclean
+	for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	-${top_distclean}
+	$(RM) TAGS
+extraclean:
+	for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	$(RM) *~ \#*
+	-${top_distclean}
+SOURCES = ChangeLog GETTING.GNU.SOFTWARE INSTALL Makefile.in PROBLEMS \
+	README build-install.in configure make-dist move-if-change
+.PHONY: unlock relock TAGS tags check dist info dvi mcs
+unlock:
+	chmod u+w $(SOURCES) cpp/*
+	-cd ./elisp && chmod u+w Makefile README *.texi
+	for d in src etc lib-src lisp; do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	cd ./lisp/term && chmod u+w README *.el
+	cd ./man && chmod u+w *texi* ChangeLog split-man
+	cd ./lwlib && chmod u+w *.[ch] Makefile.in.in
+relock:
+	chmod u-w $(SOURCES) cpp/*
+	-cd ./elisp && chmod u-w Makefile README *.texi
+	for d in src etc lib-src lisp; do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	cd ./lisp/term && chmod u+w README *.el
+	cd ./man && chmod u+w *texi* ChangeLog split-man
+	cd ./lwlib && chmod u+w *.[ch] Makefile.in.in
+PRUNE_VC = -name SCCS -prune -o -name RCS -prune -o -name CVS -prune -o
+tagslisp = lisp
+TAGS tags: FRC.tags
+	@echo "If you don't have a copy of etags around, then do 'make lib-src' first."
+	$(RM) ${srcdir}/TAGS
+	@PATH=`$(pwd)`/lib-src:$$PATH HOME=/-=-; export PATH HOME; \
+	  echo "Using etags from `which etags`."
+	PATH=`$(pwd)`/lib-src:$$PATH ; export PATH; cd ${srcdir} && \
+	find src lwlib lib-src ${PRUNE_VC} -name '*.[ch]' -print | \
+	  xargs etags -a -r '/[ 	]*DEF\(VAR\|INE\)_[A-Z_]+[ 	]*([ 	]*"\([^"]+\)"/\2/'; \
+	find ${tagslisp} ${PRUNE_VC} -name '*.el' ! -name 'auto-autoloads.el' -print | \
+	  xargs etags -a -l none -r "/^(def\\(var\\|un\\|alias\\|const\\|macro\\|subst\\|struct\\|face\\|group\\|custom\\|ine-\\(function\\|compiler-macro\\|[a-z-]+alias\\)\\)[ 	]+'?\\([^ 	]+\\)/\\3/"
+check:
+	cd ./src && $(RECURSIVE_MAKE) $@
+info: FRC.info
+	cd ${srcdir}/man && $(RECURSIVE_MAKE) $@
+dvi:
+	cd ${srcdir}/man && $(RECURSIVE_MAKE) $@
+mcs:
+	date=`LANG=C LC_ALL=C date -u '+%e %b %Y'`; \
+	ident="@(#)RELEASE VERSION XEmacs ${version} $${date}"; \
+	for f in `file lib-src/* src/${PROGNAME} | grep ELF | sed -e 's/:.*//'`; do \
+	  mcs -da "$${ident} `echo $${f} | sed 's/.*\///'`" $${f}; \
+	done
diff --text -u /dev/null 'xemacs-21.5.3/Makefile.in'
Index: ././Makefile.in
--- ././Makefile.in	Thu Jan  1 09:00:00 1970
+++ ././Makefile.in	Fri Sep  7 18:15:49 2001
@@ -0,0 +1,655 @@
+# Generated automatically from Makefile.in.in by configure.
+## DIST: This is the distribution Makefile for XEmacs.  configure can
+## DIST: make most of the changes to this file you might want, so try
+## DIST: that first.
+
+## This file is part of XEmacs.
+
+## XEmacs 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.
+
+## XEmacs 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 XEmacs; see the file COPYING.  If not, write to
+## the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+## Boston, MA 02111-1307, USA.
+
+## make all	to compile and build XEmacs.
+## make install	to build and install it.
+## make install-only	to install after a previous complete build
+## make TAGS	to update tags tables.
+
+## make clean  or  make mostlyclean
+##      Delete all files from the current directory that are normally
+##      created by building the program.	 Don't delete the files that
+##      record the configuration.  Also preserve files that could be made
+##      by building, but normally aren't because the distribution comes
+##      with them.
+
+##      Delete `.dvi' files here if they are not part of the distribution.
+
+## make distclean
+##      Delete all files from the current directory that are created by
+##      configuring or building the program.  If you have unpacked the
+##      source and built the program without creating any other files,
+##      `make distclean' should leave only the files that were in the
+##      distribution.
+
+## make realclean
+##      Delete everything from the current directory that can be
+##      reconstructed with this Makefile.  This typically includes
+##      everything deleted by distclean, plus more: C source files
+##      produced by Bison, tags tables, info files, and so on.
+
+## make extraclean
+##      Still more severe - delete backup and autosave files, too.
+
+#define NOT_C_CODE
+#include "src/config.h"
+
+#ifdef USE_GNU_MAKE
+RECURSIVE_MAKE=$(MAKE)
+#else
+
+RECURSIVE_MAKE=$(MAKE) $(MFLAGS) CC='$(CC)' CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS)' CPPFLAGS='$(CPPFLAGS)'
+#endif
+
+SHELL = /bin/sh
+LANG = C
+LC_ALL = C
+RM = rm -f
+MAKEPATH=./lib-src/make-path
+pwd = /bin/pwd
+TAR = tar
+
+## ==================== Things `configure' Might Edit ====================
+
+CC=gcc
+CPP=gcc -E
+LN_S=ln -s
+CFLAGS=-g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare
+CPPFLAGS=
+
+## These help us choose version- and architecture-specific directories
+## to install files in.
+
+## This should be the number of the XEmacs version we're building,
+## like `19.12' or `19.13'.
+version=21.5-b3
+
+## This should be the name of the configuration we're building XEmacs
+## for, like `mips-dec-ultrix' or `sparc-sun-sunos'.
+configuration=i686-pc-linux
+
+## This will be the name of the generated binary and is set automatically
+## by configure.
+PROGNAME=xemacs
+
+## ==================== Where To Install Things ====================
+
+## The default location for installation.  Everything is placed in
+## subdirectories of this directory.  The default values for many of
+## the variables below are expressed in terms of this one, so you may
+## not need to change them.  This defaults to /usr/local.
+prefix=/usr/local
+
+## Variable data (as per each program update) goes here
+## The default is ${PROGNAME}
+inststaticdir=${PROGNAME}
+
+## Static data (constant across program updates) goes here
+## The default is ${PROGNAME}-${version}
+instvardir=${PROGNAME}-${version}
+
+## Like `prefix', but used for architecture-specific files.
+exec_prefix=${prefix}
+
+## Where to install XEmacs and other binaries that people will want to
+## run directly (like etags).
+bindir=${exec_prefix}/bin
+
+## Where to install architecture-independent data files.
+## ${lispdir} and ${etcdir} are subdirectories of this.
+datadir=${prefix}/lib
+
+## Where to find XEmacs packages.
+pkgdir=${datadir}/${instvardir}/lisp
+
+## Where to install and expect the files that XEmacs modifies as it runs.
+## These files are all architecture-independent. Right now, the
+## only such data is the locking directory;
+statedir=${prefix}/lib
+
+## Where to install and expect executable files to be run by XEmacs
+## rather than directly by users, and other architecture-dependent data
+## ${archlibdir} is a subdirectory of this.
+libdir=${exec_prefix}/lib
+
+## Where to install XEmacs's man pages, and what extension they should have.
+mandir=${prefix}/man/man1
+manext=.1
+
+## Where to install and expect the info files describing XEmacs.  In the
+## past, this defaulted to a subdirectory of ${prefix}/lib/xemacs, but
+## since there are now many packages documented with the texinfo
+## system, it is inappropriate to imply that it is part of XEmacs.
+infodir=${datadir}/${instvardir}/info
+
+## Document me.
+## See callproc.c for code which references this.
+infopath=
+
+## Where to find the source code.  The source code for XEmacs's C kernel is
+## expected to be in ${srcdir}/src, and the source code for XEmacs's
+## utility programs is expected to be in ${srcdir}/lib-src.  This is
+## set by the configure script's `--srcdir' option.
+srcdir=/playpen/mozilla/XEmacs/xemacs-21.5.3
+
+## Where the build is done.
+blddir=/playpen/mozilla/XEmacs/xemacs-21.5.3
+
+## ==================== XEmacs-specific directories ====================
+
+## These variables hold the values XEmacs will actually use.  They are
+## based on the values of the standard Make variables above.
+
+## Where to install the lisp files distributed with
+## XEmacs.  This includes the XEmacs version, so that the
+## lisp files for different versions of XEmacs will install
+## themselves in separate directories.
+lispdir=${datadir}/${instvardir}/lisp
+
+## Where to install the module files distributed with
+## XEmacs.  This includes the XEmacs version, so that the
+## module files for different versions of XEmacs will install
+## themselves in separate directories.
+moduledir=${datadir}/${instvardir}/${configuration}/modules
+
+## Directory XEmacs should search for lisp files specific
+## to this site (i.e. customizations), before consulting
+## ${lispdir}.
+sitelispdir=${datadir}/${inststaticdir}/site-lisp
+
+## Directory XEmacs should search for module files specific
+## to this site (i.e. customizations), before consulting
+## ${moduledir}.
+sitemoduledir=${datadir}/${inststaticdir}/site-modules
+
+## Where XEmacs will search for its lisp files while
+## building.  This is only used during the process of
+## compiling XEmacs, to help XEmacs find its lisp files
+## before they've been installed in their final location.
+## It's usually identical to lispdir, except that the
+## entry for the directory containing the installed lisp
+## files has been replaced with ../lisp.  This should be a
+## colon-separated list of directories.
+buildlispdir=${srcdir}/lisp
+
+## Where to install the other architecture-independent
+## data files distributed with XEmacs (like the tutorial,
+## the cookie recipes and the Zippy database). This path
+## usually contains the XEmacs version number, so the data
+## files for multiple versions of XEmacs may be installed
+## at once.
+etcdir=${datadir}/${instvardir}/etc
+
+## Where to put the DOC file.
+docdir=${archlibdir}
+
+## Where to put executables to be run by XEmacs rather than
+## the user.  This path usually includes the XEmacs version
+## and configuration name, so that multiple configurations
+## for multiple versions of XEmacs may be installed at
+## once.
+archlibdir=${datadir}/${instvardir}/${configuration}
+
+## ==================== Utility Programs for the Build ====================
+
+## Allow the user to specify the install program.
+INSTALL =  /usr/bin/install -c
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_DATA = ${INSTALL} -m 644
+
+## ============================= Targets ==============================
+
+## Subdirectories to make recursively.  `lisp' is not included
+## because the compiled lisp files are part of the distribution
+## and you cannot remake them without installing XEmacs first.
+MAKE_SUBDIR =  lib-src lwlib src
+
+## Subdirectories that can be made recursively.
+SUBDIR = ${MAKE_SUBDIR} man  
+
+## The makefiles of the directories in ${MAKE_SUBDIR}.
+SUBDIR_MAKEFILES = lib-src/Makefile lib-src/GNUmakefile lwlib/Makefile lwlib/GNUmakefile src/Makefile src/GNUmakefile
+
+## Subdirectories to `make install-arch-dep' recursively
+INSTALL_ARCH_DEP_SUBDIR =  lib-src src
+
+## Subdirectories to install, and where they'll go.
+## lib-src's makefile knows how to install it, so we don't do that here.
+## When installing the info files, we need to do special things to
+## avoid nuking an existing dir file, so we don't do that here;
+## instead, we have written out explicit code in the `install' targets.
+COPYDIR = ${srcdir}/etc ${srcdir}/lisp
+COPYDESTS = ${etcdir} ${lispdir}
+GENERATED_HEADERS = src/paths.h src/Emacs.ad.h src/config.h lwlib/config.h src/sheap-adjust.h
+GENERATED_LISP = lisp/finder-inf.el
+
+all: ${PROGNAME} all-elc info
+
+${PROGNAME}:	${GENERATED_HEADERS} ${MAKE_SUBDIR} ${GENERATED_LISP}
+
+## For performance and consistency, no built-in rules
+.SUFFIXES:
+
+.NO_PARALLEL:	${GENERATED_HEADERS} ${MAKE_SUBDIR} dump-elcs
+.PHONY: ${SUBDIR} all beta all-elc all-elcs dump-elc dump-elcs finder
+
+## Convenience target for XEmacs beta testers
+beta: clean all-elc finder info
+
+## Convenience target for XEmacs maintainers
+## This would run `make-xemacsdist' if I were really confident that everything
+## was turnkey.
+dist: all-elc info
+
+## Convenience target for XEmacs maintainers
+## Updates some rarely generated files:
+## - configure from configure.in
+## - config.values.in from configure
+## - src/depend from src/*.[ch]
+.PHONY: config configure depend
+config: configure depend
+configure: ${srcdir}/configure ${srcdir}/lib-src/config.values.in
+
+${srcdir}/configure : ${srcdir}/configure.in
+	cd ${srcdir} && autoconf
+
+${srcdir}/lib-src/config.values.in : ${srcdir}/configure
+	cd ${srcdir} && $(SHELL) lib-src/config.values.sh
+
+depend ${srcdir}/src/depend:
+	cd ./src && $(RECURSIVE_MAKE) depend
+
+## Build XEmacs and recompile out-of-date and missing .elc files along
+## the way.
+all-elc all-elcs: lib-src lwlib dump-elcs src
+	${blddir}/src/${PROGNAME} -batch -vanilla \
+		-l update-elc-2.el -f batch-update-elc-2 lisp
+
+## Sub-target for all-elc.
+dump-elc dump-elcs: ${GENERATED_HEADERS} FRC.dump-elcs
+	cd ./src && $(RECURSIVE_MAKE) dump-elcs
+
+finder: src
+	@echo "Building finder database ..."
+	@(cd ./lisp; \
+		${blddir}/src/${PROGNAME} -batch -vanilla \
+		-eval '(setq finder-compile-keywords-quiet t)' \
+		-l finder -f finder-compile-keywords )
+	@echo "Building finder database ...(done)"
+
+lisp/finder-inf.el:
+	@echo "Building finder database ..."
+	@(cd ./lisp; \
+		${blddir}/src/${PROGNAME} -batch -vanilla \
+		-eval '(setq finder-compile-keywords-quiet t)' \
+		-l finder -f finder-compile-keywords )
+	@echo "Building finder database ...(done)"
+
+## We have to force the building of Emacs.ad.h as well in order to get it
+## updated correctly when VPATH is being used.  Since we use move-if-change,
+## it will only actually change if the user modified ${etcdir}/Emacs.ad.
+src/Emacs.ad.h: ${srcdir}/etc/Emacs.ad
+	@echo "Producing \`src/Emacs.ad.h' from \`etc/Emacs.ad'."
+	@$(RM) src/Emacs.ad.h
+	@(echo "/*	Do not edit this file!" ; \
+	  echo "  	Automatically generated from ${srcdir}/etc/Emacs.ad" ; \
+	  echo " */" ; \
+	  $(SHELL) ${srcdir}/lib-src/ad2c ${srcdir}/etc/Emacs.ad ) > \
+	  src/Emacs.ad.h
+
+src/sheap-adjust.h:
+	@echo "Resetting \`src/sheap-adjust.h'."; \
+	(echo "/*	Do not edit this file!" ; \
+	 echo "  	Automatically generated by XEmacs */" ; \
+	 echo "#define SHEAP_ADJUSTMENT 0") > $@
+
+src:  lwlib FRC.src
+pkg-src/tree-x: pkg-src/FRC.tree-x
+lib-src: FRC.lib-src
+lwlib:	FRC.lwlib
+dynodump: FRC.dynodump
+FRC.src FRC.lib-src FRC.lwlib FRC.dynodump pkg-src/FRC.tree-x:
+FRC.lisp.finder-inf.el:
+
+${SUBDIR}: ${SUBDIR_MAKEFILES} ${GENERATED_HEADERS} FRC
+	cd ./$@ && $(RECURSIVE_MAKE) all
+
+Makefile: ${srcdir}/Makefile.in config.status
+	./config.status
+
+src/Makefile: ${srcdir}/src/Makefile.in.in ${srcdir}/src/depend config.status
+	./config.status
+
+lib-src/Makefile: ${srcdir}/lib-src/Makefile.in.in config.status
+	./config.status
+
+lwlib/Makefile: ${srcdir}/lwlib/Makefile.in.in config.status
+	./config.status
+
+pkg-src/tree-x/Makefile: ${srcdir}/pkg-src/tree-x/Makefile.in.in config.status
+	./config.status
+
+src/config.h: ${srcdir}/src/config.h.in
+	./config.status && touch $@
+
+src/paths.h: ${srcdir}/src/paths.h.in
+	./config.status && touch $@
+
+lwlib/config.h: ${srcdir}/lwlib/config.h.in
+	./config.status && touch $@
+
+## ==================== Installation ====================
+
+## If we let lib-src do its own installation, that means we
+## don't have to duplicate the list of utilities to install in
+## this Makefile as well.
+
+## On AIX, use tar xBf.
+## On Xenix, use tar xpf.
+
+.PHONY: install-only install install-arch-dep install-arch-indep gzip.el mkdir
+.PHONY: check-features
+
+## We delete each directory in ${COPYDESTS} before we copy into it;
+## that way, we can reinstall over directories that have been put in
+## place with their files read-only (perhaps because they are checked
+## into RCS).  In order to make this safe, we make sure that the
+## source exists and is distinct from the destination.
+
+## FSF doesn't depend on `all', but rather on ${MAKE_SUBDIR}, so that
+## they "won't ever modify src/paths.h".  But that means you can't do
+## 'make install' right off the bat because src/paths.h won't exist.
+## And, in XEmacs case, src/Emacs.ad.h won't exist either.  I also
+## don't see the point in avoiding modifying paths.h.  It creates an
+## inconsistency in the build process.  So we go ahead and depend on
+## all.  --cet
+
+check-features: all
+	${blddir}/src/${PROGNAME} -batch -l check-features.el
+
+install-only: ${MAKE_SUBDIR} check-features install-arch-dep install-arch-indep
+
+install: all check-features install-arch-dep install-arch-indep
+
+install-arch-dep: mkdir
+	for subdir in ${INSTALL_ARCH_DEP_SUBDIR}; do \
+	(cd ./$${subdir} && $(RECURSIVE_MAKE) install prefix=${prefix} \
+	    exec_prefix=${exec_prefix} bindir=${bindir} libdir=${libdir} \
+	    archlibdir=${archlibdir}) ; done
+	if test "`(cd ${archlibdir} && $(pwd))`" != \
+		"`(cd ./lib-src && $(pwd))`"; then \
+	   if test -f ../Installation; then \
+		${INSTALL_DATA} ../Installation ${archlibdir}/Installation; \
+	   fi; \
+	   ${INSTALL_DATA} lib-src/config.values ${docdir}/config.values; \
+	   ${INSTALL_DATA} lib-src/DOC ${docdir}/DOC; \
+	   for subdir in `find ${archlibdir} -type d ! -name RCS ! -name SCCS ! -name CVS -print` ; \
+	     do (cd $${subdir} && $(RM) -r RCS CVS SCCS \#* *~) ; done ; \
+	else true; fi
+#ifdef PDUMP
+	${INSTALL_DATA} src/${PROGNAME}.dmp ${bindir}/${PROGNAME}-${version}-`src/${PROGNAME} -sd`.dmp
+#endif
+#ifdef WIN32_NATIVE
+	${INSTALL_PROGRAM} src/${PROGNAME} ${bindir}/${PROGNAME}
+	-chmod 0755 ${bindir}/${PROGNAME}
+#else
+	${INSTALL_PROGRAM} src/${PROGNAME} ${bindir}/${PROGNAME}-${version}
+	-chmod 0755 ${bindir}/${PROGNAME}-${version}
+# ifdef CYGWIN
+	cd ${bindir} && $(RM) ./${PROGNAME} && ${LN_S} ${PROGNAME}-${version}.exe ./${PROGNAME}
+# else
+	cd ${bindir} && $(RM) ./${PROGNAME} && ${LN_S} ${PROGNAME}-${version} ./${PROGNAME}
+# endif /* CYGWIN */
+#endif /* WIN32_NATIVE */
+	if test "${prefix}" != "${exec_prefix}"; then \
+	  $(MAKEPATH) ${exec_prefix}/lib/${instvardir}; \
+	  for dir in \
+		lib/${inststaticdir} \
+	 	lib/${instvardir}/etc \
+		lib/${instvardir}/info \
+		lib/${instvardir}/lisp; do \
+	    if test ! -d ${exec_prefix}/$${dir}; then \
+	      $(LN_S) ${prefix}/$${dir} ${exec_prefix}/$${dir}; fi; \
+	  done; \
+	fi
+
+install-arch-indep: mkdir info
+	-@set ${COPYDESTS} ; \
+	 for dir in ${COPYDIR} ; do \
+	   if test "`(cd $$1 && $(pwd))`" != \
+		   "`(cd $${dir} && $(pwd))`"; then \
+	     : do nothing - echo "rm -rf $$1" ; \
+	   fi ; \
+	   shift ; \
+	 done
+	-set ${COPYDESTS} ; \
+	 for dir in ${COPYDESTS} ; do \
+	   if test ! -d $${dir} ; then mkdir $${dir} ; fi ; \
+	 done ; \
+	 for dir in ${COPYDIR} ; do \
+	   dest=$$1 ; shift ; \
+	   test -d $${dir} \
+	     -a "`(cd $${dir} && $(pwd))`" != \
+		"`(cd $${dest} && $(pwd))`" \
+	   && (echo "Copying $${dir}..." ; \
+	       (cd $${dir} && $(TAR) -cf - . ) | \
+		(cd $${dest} && umask 022 && $(TAR) -xf - );\
+	       chmod 0755 $${dest}; \
+	       for subdir in `find $${dest} -type d ! -name RCS ! -name SCCS ! -name CVS -print` ; do \
+		 (cd $${subdir} && $(RM) -r RCS CVS SCCS \#* *~) ; \
+	       done) ; \
+	 done
+	if test "`(cd ${srcdir}/info && $(pwd))`" != \
+		"`(cd ${infodir} && $(pwd))`" && cd ${srcdir}/info; then \
+	  if test ! -f ${infodir}/dir -a -f dir ; then \
+	    ${INSTALL_DATA} ${srcdir}/info/dir ${infodir}/dir ; \
+	  fi ; \
+	  for file in *.info* ; do \
+	    ${INSTALL_DATA} $${file} ${infodir}/$${file} ; \
+	    chmod 0644 ${infodir}/$${file}; \
+	  done ; \
+	fi
+	cd ${srcdir}/etc && \
+	  for page in xemacs etags ctags gnuserv gnuclient gnuattach gnudoit; do \
+	    ${INSTALL_DATA} ${srcdir}/etc/$${page}.1 ${mandir}/$${page}${manext} ; \
+	    chmod 0644 ${mandir}/$${page}${manext} ; \
+	  done
+	@echo "If you would like to save approximately 2M of disk space, do"
+	@echo "make gzip-el"
+	@echo "or you may run "
+	@echo ${srcdir}/lib-src/gzip-el.sh lispdir " from the command line."
+	@echo "Where lispdir is where the lisp files were installed, i.e.,"
+	@echo "${lispdir}"
+
+gzip-el:
+	$(SHELL) ${srcdir}/lib-src/gzip-el.sh ${lispdir}
+
+## Build all the directories to install XEmacs in.
+## Since we may be creating several layers of directories,
+## (e.g. /usr/local/lib/${PROGNAME}-20.5/sparc-sun-solaris2.6), we use
+## make-path instead of mkdir.  Not all mkdirs have the `-p' flag.
+mkdir: FRC.mkdir
+	${MAKEPATH} ${COPYDESTS} ${docdir} ${infodir} ${archlibdir} \
+	  ${mandir} ${bindir} ${datadir} ${libdir} ${pkgdir} \
+#ifdef HAVE_SHLIB
+	  ${moduledir} ${sitemoduledir} \
+#endif
+	  ${sitelispdir}
+
+## Delete all the installed files that the `install' target would
+## create (but not the noninstalled files such as `make all' would
+## create).
+
+#### Don't delete the lisp and etc directories if they're in the source tree.
+#### This target has not been updated in sometime and until it is it
+#### would be extremely dangerous for anyone to use it.
+##uninstall:
+##	(cd ./lib-src; 					\
+##	 $(RECURSIVE_MAKE) uninstall			\
+##	    prefix=${prefix} exec_prefix=${exec_prefix}	\
+##	    bindir=${bindir} libdir=${libdir} archlibdir=${archlibdir})
+##	for dir in ${lispdir} ${etcdir} ; do 		\
+##	  case `(cd $${dir} ; $(pwd))` in			\
+##	    `(cd ${srcdir} ; $(pwd))`* ) ;;		\
+##	    * ) $(RM) $${dir} ;;			\
+##	  esac ;					\
+##	  case $${dir} in				\
+##	    ${datadir}/${PROGNAME}/${version}/* )		\
+##	      $(RM) -r ${datadir}/${PROGNAME}/${version}	\
+##	    ;;						\
+##	  esac ;					\
+##	done
+##	cd ${infodir} && $(RM) cl* ${PROGNAME}* forms* info* vip*
+##	cd ${mandir} && $(RM) xemacs.1 etags.1 ctags.1 gnuserv.1
+##	cd ${bindir} && $(RM) ${PROGNAME}-${version} ${PROGNAME}
+
+
+## Some makes seem to remember that they've built something called FRC,
+## so you can only use a given FRC once per makefile.
+FRC FRC.src.paths.h FRC.mkdir FRC.dump-elcs FRC.info:
+FRC.mostlyclean FRC.clean FRC.distclean FRC.realclean FRC.tags:
+
+## ==================== Cleaning up and miscellanea ====================
+
+.PHONY: mostlyclean clean distclean realclean extraclean
+
+## `mostlyclean'
+##      Like `clean', but may refrain from deleting a few files that people
+##      normally don't want to recompile.  For example, the `mostlyclean'
+##      target for GCC does not delete `libgcc.a', because recompiling it
+##      is rarely necessary and takes a lot of time.
+mostlyclean: FRC.mostlyclean
+	for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+
+## `clean'
+##      Delete all files from the current directory that are normally
+##      created by building the program.  Don't delete the files that
+##      record the configuration.  Also preserve files that could be made
+##      by building, but normally aren't because the distribution comes
+##      with them.
+
+##      Delete `.dvi' files here if they are not part of the distribution.
+clean: FRC.clean
+	for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	$(RM) core
+
+## `distclean'
+##      Delete all files from the current directory that are created by
+##      configuring or building the program.  If you have unpacked the
+##      source and built the program without creating any other files,
+##      `make distclean' should leave only the files that were in the
+##      distribution.
+top_distclean=\
+	$(RM) config.status config.log confdefs.h config-tmp-* build-install Installation ; \
+	$(RM) core .sbinit lock/* GNUmakefile Makefile Makefile.in ; \
+	$(RM) lisp/finder-inf.el* Installation.el Installation.elc ; \
+	$(RM) -r site-packages xemacs-packages mule-packages site-lisp
+
+distclean: FRC.distclean
+	for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	-${top_distclean}
+
+## `realclean'
+##      Delete everything from the current directory that can be
+##      reconstructed with this Makefile.  This typically includes
+##      everything deleted by distclean, plus more: C source files
+##      produced by Bison, tags tables, info files, and so on.
+
+##      One exception, however: `make realclean' should not delete
+##      `configure' even if `configure' can be remade using a rule in the
+##      Makefile.  More generally, `make realclean' should not delete
+##      anything that needs to exist in order to run `configure' and then
+##      begin to build the program.
+realclean: FRC.realclean
+	for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	-${top_distclean}
+	$(RM) TAGS
+
+## This doesn't actually appear in the coding standards, but Karl
+## says GCC supports it, and that's where the configuration part of
+## the coding standards seem to come from.  It's like distclean, but
+## it deletes backup and autosave files too.
+extraclean:
+	for d in $(SUBDIR); do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	$(RM) *~ \#*
+	-${top_distclean}
+
+## Unlocking and relocking.  The idea of these productions is to reduce
+## hassles when installing an incremental tar of XEmacs.  Do `make unlock'
+## before unlocking the file to take the write locks off all sources so
+## that tar xvof will overwrite them without fuss.  Then do `make relock'
+## afterward so that VC mode will know which files should be checked in
+## if you want to mung them.
+
+## Note: it's no disaster if these productions miss a file or two; tar
+## and VC will swiftly let you know if this happens, and it is easily
+## corrected.
+SOURCES = ChangeLog GETTING.GNU.SOFTWARE INSTALL Makefile.in PROBLEMS \
+	README build-install.in configure make-dist move-if-change
+
+.PHONY: unlock relock TAGS tags check dist info dvi mcs
+
+unlock:
+	chmod u+w $(SOURCES) cpp/*
+	-cd ./elisp && chmod u+w Makefile README *.texi
+	for d in src etc lib-src lisp; do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	cd ./lisp/term && chmod u+w README *.el
+	cd ./man && chmod u+w *texi* ChangeLog split-man
+	cd ./lwlib && chmod u+w *.[ch] Makefile.in.in
+
+relock:
+	chmod u-w $(SOURCES) cpp/*
+	-cd ./elisp && chmod u-w Makefile README *.texi
+	for d in src etc lib-src lisp; do (cd ./$$d && $(RECURSIVE_MAKE) $@); done
+	cd ./lisp/term && chmod u+w README *.el
+	cd ./man && chmod u+w *texi* ChangeLog split-man
+	cd ./lwlib && chmod u+w *.[ch] Makefile.in.in
+
+PRUNE_VC = -name SCCS -prune -o -name RCS -prune -o -name CVS -prune -o
+tagslisp = lisp
+TAGS tags: FRC.tags
+	@echo "If you don't have a copy of etags around, then do 'make lib-src' first."
+	$(RM) ${srcdir}/TAGS
+	@PATH=`$(pwd)`/lib-src:$$PATH HOME=/-=-; export PATH HOME; \
+	  echo "Using etags from `which etags`."
+	PATH=`$(pwd)`/lib-src:$$PATH ; export PATH; cd ${srcdir} && \
+	find src lwlib lib-src ${PRUNE_VC} -name '*.[ch]' -print | \
+	  xargs etags -a -r '/[ 	]*DEF\(VAR\|INE\)_[A-Z_]+[ 	]*([ 	]*"\([^"]+\)"/\2/'; \
+	find ${tagslisp} ${PRUNE_VC} -name '*.el' ! -name 'auto-autoloads.el' -print | \
+	  xargs etags -a -l none -r "/^(def\\(var\\|un\\|alias\\|const\\|macro\\|subst\\|struct\\|face\\|group\\|custom\\|ine-\\(function\\|compiler-macro\\|[a-z-]+alias\\)\\)[ 	]+'?\\([^ 	]+\\)/\\3/"
+
+check:
+	cd ./src && $(RECURSIVE_MAKE) $@
+
+info: FRC.info
+	cd ${srcdir}/man && $(RECURSIVE_MAKE) $@
+
+dvi:
+	cd ${srcdir}/man && $(RECURSIVE_MAKE) $@
+
+## Fix up version information in executables (Solaris-only)
+mcs:
+	date=`LANG=C LC_ALL=C date -u '+%e %b %Y'`; \
+	ident="@(#)RELEASE VERSION XEmacs ${version} $${date}"; \
+	for f in `file lib-src/* src/${PROGNAME} | grep ELF | sed -e 's/:.*//'`; do \
+	  mcs -da "$${ident} `echo $${f} | sed 's/.*\///'`" $${f}; \
+	done
diff --text -u /dev/null 'xemacs-21.5.3/config.log'
Index: ././config.log
--- ././config.log	Thu Jan  1 09:00:00 1970
+++ ././config.log	Fri Sep  7 18:15:46 2001
@@ -0,0 +1,1037 @@
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+configure:847: checking whether ln -s works
+configure:1112: checking host system type
+configure:1627: checking for gcc
+configure:1731: checking whether the C compiler (gcc  ) works
+configure:1749: gcc -o conftest              conftest.c           1>&5
+configure:1777: checking whether the C compiler (gcc  ) is a cross-compiler
+configure:1782: checking whether we are using GNU C
+configure:1789: gcc -E conftest.c
+configure:1807: checking whether gcc accepts -g
+configure:2270: checking how to run the C preprocessor
+configure:2289: gcc -E       conftest.c >/dev/null 2>conftest.out
+configure:2349: checking for AIX
+configure:2378: checking for GNU libc
+configure:2392: gcc -c        conftest.c 1>&5
+configure:2483: gcc -o conftest              conftest.c           1>&5
+configure:2798: checking for buggy gcc versions
+configure:2921: checking for dynodump
+configure:3213: checking for malloc_set_state
+configure:3239: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare             conftest.c          -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:3259: checking whether __after_morecore_hook exists
+configure:3268: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare             conftest.c          -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:3324: checking for ranlib
+configure:3379: checking for a BSD compatible install
+configure:3433: checking for bison
+configure:3465: checking for a.out.h
+configure:3473: gcc -E       conftest.c >/dev/null 2>conftest.out
+configure:3465: checking for elf.h
+configure:3473: gcc -E       conftest.c >/dev/null 2>conftest.out
+configure:3465: checking for cygwin/version.h
+configure:3473: gcc -E       conftest.c >/dev/null 2>conftest.out
+configure:3469: cygwin/version.h: No such file or directory
+configure: failed program was:
+#line 3468 "configure"
+#include "confdefs.h"
+#include <cygwin/version.h>
+configure:3465: checking for fcntl.h
+configure:3473: gcc -E       conftest.c >/dev/null 2>conftest.out
+configure:3465: checking for inttypes.h
+configure:3473: gcc -E       conftest.c >/dev/null 2>conftest.out
+configure:3465: checking for libgen.h
+configure:3473: gcc -E       conftest.c >/dev/null 2>conftest.out
+configure:3465: checking for locale.h
+configure:3473: gcc -E       conftest.c >/dev/null 2>conftest.out
+configure:3465: checking for mach/mach.h
+configure:3473: gcc -E       conftest.c >/dev/null 2>conftest.out
+configure:3469: mach/mach.h: No such file or directory
+configure: failed program was:
+#line 3468 "configure"
+#include "confdefs.h"
+#include <mach/mach.h>
+configure:3465: checking for sys/param.h
+configure:3473: gcc -E       conftest.c >/dev/null 2>conftest.out
+configure:3465: checking for sys/pstat.h
+configure:3473: gcc -E       conftest.c >/dev/null 2>conftest.out
+configure:3469: sys/pstat.h: No such file or directory
+configure: failed program was:
+#line 3468 "configure"
+#include "confdefs.h"
+#include <sys/pstat.h>
+configure:3465: checking for sys/time.h
+configure:3473: gcc -E       conftest.c >/dev/null 2>conftest.out
+configure:3465: checking for sys/timeb.h
+configure:3473: gcc -E       conftest.c >/dev/null 2>conftest.out
+configure:3465: checking for sys/un.h
+configure:3473: gcc -E       conftest.c >/dev/null 2>conftest.out
+configure:3465: checking for ulimit.h
+configure:3473: gcc -E       conftest.c >/dev/null 2>conftest.out
+configure:3465: checking for unistd.h
+configure:3473: gcc -E       conftest.c >/dev/null 2>conftest.out
+configure:3503: checking for sys/wait.h that is POSIX.1 compatible
+configure:3522: gcc -c -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       conftest.c 1>&5
+configure:3546: checking for ANSI C header files
+configure:3557: gcc -E       conftest.c >/dev/null 2>conftest.out
+configure:3621: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare             conftest.c          -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:3647: checking whether time.h and sys/time.h may both be included
+configure:3659: gcc -c -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       conftest.c 1>&5
+configure: In function `main':
+configure:3655: warning: unused variable `tp'
+configure:3683: checking for sys_siglist declaration in signal.h or unistd.h
+configure:3698: gcc -c -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       conftest.c 1>&5
+configure: In function `main':
+configure:3694: warning: initialization discards qualifiers from pointer target type
+configure:3694: warning: unused variable `msg'
+configure:3724: checking for utime
+configure:3734: gcc -c -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       conftest.c 1>&5
+configure:3811: checking return type of signal handlers
+configure:3831: gcc -c -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       conftest.c 1>&5
+configure: In function `main':
+configure:3827: warning: unused variable `i'
+configure:3853: checking for size_t
+configure:3887: checking for pid_t
+configure:3921: checking for uid_t in sys/types.h
+configure:3960: checking for mode_t
+configure:3994: checking for off_t
+configure:4028: checking for ssize_t
+configure:4063: checking for socklen_t
+configure:4074: gcc -c -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       conftest.c 1>&5
+configure:4124: checking for struct timeval
+configure:4142: gcc -c -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       conftest.c 1>&5
+configure:4164: checking whether struct tm is in sys/time.h or time.h
+configure:4175: gcc -c -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       conftest.c 1>&5
+configure: In function `main':
+configure:4171: warning: statement with no effect
+configure:4199: checking for tm_zone in struct tm
+configure:4210: gcc -c -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       conftest.c 1>&5
+configure: In function `main':
+configure:4206: warning: statement with no effect
+configure:4272: checking for working const
+configure:4324: gcc -c -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       conftest.c 1>&5
+configure: In function `main':
+configure:4298: warning: unused variable `s'
+configure:4303: warning: declaration of `x' shadows previous local
+configure:4309: warning: declaration of `p' shadows previous local
+configure:4318: warning: unused variable `foo'
+configure:4286: warning: unused variable `zero'
+configure:4280: warning: unused variable `x'
+configure:4297: warning: `t' might be used uninitialized in this function
+configure:4315: warning: `b' might be used uninitialized in this function
+configure:4349: checking whether make sets ${MAKE}
+configure:4374: checking whether byte ordering is bigendian
+configure:4390: gcc -c -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       conftest.c 1>&5
+configure:4405: gcc -c -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       conftest.c 1>&5
+configure: In function `main':
+configure:4400: `not' undeclared (first use in this function)
+configure:4400: (Each undeclared identifier is reported only once
+configure:4400: for each function it appears in.)
+configure:4400: parse error before `big'
+configure: failed program was:
+#line 4394 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/param.h>
+int main() {
+
+#if BYTE_ORDER != BIG_ENDIAN
+ not big endian
+#endif
+; return 0; }
+configure:4462: checking size of short
+configure:4477: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare             conftest.c          -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:4469: warning: return-type defaults to `int'
+configure:4505: checking size of int
+configure:4520: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare             conftest.c          -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:4512: warning: return-type defaults to `int'
+configure:4542: checking size of long
+configure:4557: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare             conftest.c          -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:4549: warning: return-type defaults to `int'
+configure:4579: checking size of long long
+configure:4594: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare             conftest.c          -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:4586: warning: return-type defaults to `int'
+configure:4616: checking size of void *
+configure:4631: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare             conftest.c          -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:4623: warning: return-type defaults to `int'
+configure:4654: checking for long file names
+configure:4700: checking for sin
+configure:4726: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare             conftest.c          -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:4710: warning: conflicting types for built-in function `sin'
+/tmp/ccaQ93dX.o: In function `main':
+/playpen/mozilla/XEmacs/xemacs-21.5.3/configure:4720: undefined reference to `sin'
+collect2: ld returned 1 exit status
+configure: failed program was:
+#line 4703 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char sin(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char sin();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_sin) || defined (__stub___sin)
+choke me
+#else
+sin();
+#endif
+
+; return 0; }
+configure:4744: checking for sin in -lm
+configure:4760: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare             conftest.c   -lm         -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:4753: warning: conflicting types for built-in function `sin'
+configure:4811: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare             conftest.c       -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:4830: checking for mkstemp
+configure:4856: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare             conftest.c       -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:4885: checking type of mail spool file locking
+configure:4889: checking for lockf
+configure:4915: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare             conftest.c       -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:4889: checking for flock
+configure:4915: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare             conftest.c       -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:5049: checking whether the -xildoff compiler flag is required
+configure:5072: checking for specified window system
+configure:5525: checking for X
+configure:5844: checking for dnet_ntoa in -ldnet
+configure:5860: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include       conftest.c   -ldnet      -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+/usr/bin/ld: cannot find -ldnet
+collect2: ld returned 1 exit status
+configure: failed program was:
+#line 5849 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char dnet_ntoa();
+
+int main() {
+dnet_ntoa()
+; return 0; }
+configure:5884: checking for dnet_ntoa in -ldnet_stub
+configure:5900: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include       conftest.c   -ldnet_stub      -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+/usr/bin/ld: cannot find -ldnet_stub
+collect2: ld returned 1 exit status
+configure: failed program was:
+#line 5889 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char dnet_ntoa();
+
+int main() {
+dnet_ntoa()
+; return 0; }
+configure:5929: checking for gethostbyname
+configure:5955: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include       conftest.c       -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:6022: checking for connect
+configure:6048: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include       conftest.c       -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:6111: checking for remove
+configure:6137: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include       conftest.c       -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:6198: checking for shmat
+configure:6224: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include       conftest.c       -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:6297: checking for IceConnectionNumber in -lICE
+configure:6313: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include  -L/usr/X11R6/lib      conftest.c   -lICE      -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:6480: checking for X defines extracted by xmkmf
+configure:6529: checking for X11/Intrinsic.h
+configure:6537: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:6561: checking for XOpenDisplay in -lX11
+configure:6577: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lX11      -lSM -lICE -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:6645: checking for XShapeSelectInput in -lXext
+configure:6661: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lXext   -lX11   -lSM -lICE -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:6684: checking for XtOpenDisplay in -lXt
+configure:6700: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lXt   -lXext -lX11   -lSM -lICE -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:6723: checking the version of X11 being used
+configure:6730: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXt -lXext -lX11   -lSM -lICE -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:6761: checking for XConvertCase
+configure:6787: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXt -lXext -lX11   -lSM -lICE -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:6819: checking for X11/Xlocale.h
+configure:6827: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:6860: checking for XRegisterIMInstantiateCallback
+configure:6886: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXt -lXext -lX11   -lSM -lICE -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:6914: checking for standard XRegisterIMInstantiateCallback prototype
+configure:6928: gcc -c -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include conftest.c 1>&5
+configure:6921: conflicting types for `XRegisterIMInstantiateCallback'
+/usr/X11R6/include/X11/Xlib.h:4747: previous declaration of `XRegisterIMInstantiateCallback'
+configure: failed program was:
+#line 6916 "configure"
+#include "confdefs.h"
+
+#define NeedFunctionPrototypes 1
+#include <X11/Xlib.h>
+extern Bool XRegisterIMInstantiateCallback(
+   Display*, struct _XrmHashBucketRec*, char*, char*, XIMProc, XPointer*);
+
+int main() {
+
+; return 0; }
+configure:6949: checking for XmuReadBitmapDataFromFile in -lXmu
+configure:6965: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lXmu   -lXt -lXext -lX11   -lSM -lICE -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:7004: checking for main in -lXbsd
+configure:7016: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lXbsd   -lXmu -lXt -lXext -lX11   -lSM -lICE -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+/usr/bin/ld: cannot find -lXbsd
+collect2: ld returned 1 exit status
+configure: failed program was:
+#line 7009 "configure"
+#include "confdefs.h"
+
+int main() {
+main()
+; return 0; }
+configure:7053: checking for MS-Windows
+configure:7056: checking for main in -lgdi32
+configure:7068: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lgdi32   -lXmu -lXt -lXext -lX11   -lSM -lICE -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+/usr/bin/ld: cannot find -lgdi32
+collect2: ld returned 1 exit status
+configure: failed program was:
+#line 7061 "configure"
+#include "confdefs.h"
+
+int main() {
+main()
+; return 0; }
+configure:7210: checking for X11/extensions/shape.h
+configure:7218: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:7270: checking for WM_COMMAND option
+configure:7285: checking for X11/Xauth.h
+configure:7293: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:7316: checking for XauGetAuthByAddr in -lXau
+configure:7332: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lXau   -lXmu -lXt -lXext -lX11   -lSM -lICE -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:7377: checking for tt_c.h
+configure:7385: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:7381: tt_c.h: No such file or directory
+configure: failed program was:
+#line 7380 "configure"
+#include "confdefs.h"
+#include <tt_c.h>
+configure:7377: checking for Tt/tt_c.h
+configure:7385: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:7381: Tt/tt_c.h: No such file or directory
+configure: failed program was:
+#line 7380 "configure"
+#include "confdefs.h"
+#include <Tt/tt_c.h>
+configure:7377: checking for desktop/tt_c.h
+configure:7385: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:7381: desktop/tt_c.h: No such file or directory
+configure: failed program was:
+#line 7380 "configure"
+#include "confdefs.h"
+#include <desktop/tt_c.h>
+configure:7494: checking for Dt/Dt.h
+configure:7502: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:7498: Dt/Dt.h: No such file or directory
+configure: failed program was:
+#line 7497 "configure"
+#include "confdefs.h"
+#include <Dt/Dt.h>
+configure:7642: checking for LDAP
+configure:7645: checking for ldap.h
+configure:7653: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:7649: ldap.h: No such file or directory
+configure: failed program was:
+#line 7648 "configure"
+#include "confdefs.h"
+#include <ldap.h>
+configure:7955: checking for PostgreSQL
+configure:7960: checking for libpq-fe.h
+configure:7968: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:7964: libpq-fe.h: No such file or directory
+configure: failed program was:
+#line 7963 "configure"
+#include "confdefs.h"
+#include <libpq-fe.h>
+configure:7960: checking for pgsql/libpq-fe.h
+configure:7968: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:7964: pgsql/libpq-fe.h: No such file or directory
+configure: failed program was:
+#line 7963 "configure"
+#include "confdefs.h"
+#include <pgsql/libpq-fe.h>
+configure:7960: checking for postgresql/libpq-fe.h
+configure:7968: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:7992: checking for PQconnectdb in -lpq
+configure:8008: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lpq   -lXmu -lXt -lXext -lX11   -lSM -lICE -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:8041: checking for PQconnectStart in -lpq
+configure:8057: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lpq   -lXmu -lXt -lXext -lX11   -lSM -lICE -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:8105: checking for graphics libraries
+configure:8110: checking for Xpm - no older than 3.4f
+configure:8122: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c  -lXpm  -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure: In function `main':
+configure:8118: warning: implicit declaration of function `XpmLibraryVersion'
+configure:8164: checking for "FOR_MSW" xpm
+configure:8174: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c  -lXpm  -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure: In function `main':
+configure:8170: warning: implicit declaration of function `XpmCreatePixmapFromData'
+configure:8200: checking for compface.h
+configure:8208: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:8204: compface.h: No such file or directory
+configure: failed program was:
+#line 8203 "configure"
+#include "confdefs.h"
+#include <compface.h>
+configure:8299: checking for inflate in -lc
+configure:8315: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lc   -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+/tmp/ccXfSFUK.o: In function `main':
+/playpen/mozilla/XEmacs/xemacs-21.5.3/configure:8311: undefined reference to `inflate'
+collect2: ld returned 1 exit status
+configure: failed program was:
+#line 8304 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char inflate();
+
+int main() {
+inflate()
+; return 0; }
+configure:8334: checking for inflate in -lz
+configure:8350: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lz   -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:8415: checking for jpeglib.h
+configure:8423: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:8446: checking for jpeg_destroy_decompress in -ljpeg
+configure:8462: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -ljpeg   -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:8498: checking for pow
+configure:8524: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:8545: checking for png.h
+configure:8553: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:8576: checking for png_read_image in -lpng
+configure:8592: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lpng   -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:8615: checking for workable png version information
+configure:8626: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c  -lpng -lz  -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:8669: checking for tiffio.h
+configure:8677: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:8700: checking for TIFFClientOpen in -ltiff
+configure:8716: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -ltiff   -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:8842: checking for X11 graphics libraries
+configure:8845: checking for the Athena widgets
+configure:8859: checking for XawScrollbarSetThumb in -lXaw
+configure:8875: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lXaw   -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:8891: checking for threeDClassRec in -lXaw
+configure:8907: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lXaw   -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+/tmp/ccTB0ibL.o: In function `main':
+/playpen/mozilla/XEmacs/xemacs-21.5.3/configure:8903: undefined reference to `threeDClassRec'
+collect2: ld returned 1 exit status
+configure: failed program was:
+#line 8896 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char threeDClassRec();
+
+int main() {
+threeDClassRec()
+; return 0; }
+configure:9019: checking for X11/Xaw/ThreeD.h
+configure:9027: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:9023: X11/Xaw/ThreeD.h: No such file or directory
+configure: failed program was:
+#line 9022 "configure"
+#include "confdefs.h"
+#include <X11/Xaw/ThreeD.h>
+configure:9047: checking for X11/Xaw/XawInit.h
+configure:9055: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:9377: checking for Xm/Xm.h
+configure:9385: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:9402: checking for XmStringFree in -lXm
+configure:9418: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lXm   -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:9447: checking for Lesstif
+configure:9879: checking for Mule-related features
+configure:9904: checking for libintl.h
+configure:9912: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:9943: checking for strerror in -lintl
+configure:9959: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lintl   -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+/usr/bin/ld: cannot find -lintl
+collect2: ld returned 1 exit status
+configure: failed program was:
+#line 9948 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char strerror();
+
+int main() {
+strerror()
+; return 0; }
+configure:9992: checking for Mule input methods
+configure:9995: checking for XIM
+configure:9998: checking for XOpenIM in -lX11
+configure:10014: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lX11   -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10178: checking for wnn/jllib.h
+configure:10186: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:10209: checking for wnn/commonhd.h
+configure:10217: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:10242: checking for crypt
+configure:10268: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10348: checking for jl_dic_list_e in -lwnn
+configure:10364: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lwnn   -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10514: checking for jl_fi_dic_list in -lwnn
+configure:10530: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lwnn   -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+/tmp/cck6v7pI.o: In function `main':
+/playpen/mozilla/XEmacs/xemacs-21.5.3/configure:10526: undefined reference to `jl_fi_dic_list'
+collect2: ld returned 1 exit status
+configure: failed program was:
+#line 10519 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char jl_fi_dic_list();
+
+int main() {
+jl_fi_dic_list()
+; return 0; }
+configure:10565: checking for canna/jrkanji.h
+configure:10573: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:10636: checking for canna/RK.h
+configure:10644: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:10667: checking for RkBgnBun in -lRKC
+configure:10683: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lRKC   -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10706: checking for jrKanjiControl in -lcanna
+configure:10722: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lcanna   -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10771: checking for layout_object_getvalue in -li18n
+configure:10787: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -li18n   -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+/usr/bin/ld: cannot find -li18n
+collect2: ld returned 1 exit status
+configure: failed program was:
+#line 10776 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char layout_object_getvalue();
+
+int main() {
+layout_object_getvalue()
+; return 0; }
+configure:10873: checking for cbrt
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for closedir
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for dup2
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for eaccess
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+/tmp/ccecl0J9.o: In function `main':
+/playpen/mozilla/XEmacs/xemacs-21.5.3/configure:10893: undefined reference to `eaccess'
+collect2: ld returned 1 exit status
+configure: failed program was:
+#line 10876 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char eaccess(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char eaccess();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_eaccess) || defined (__stub___eaccess)
+choke me
+#else
+eaccess();
+#endif
+
+; return 0; }
+configure:10873: checking for fmod
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for fpathconf
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for frexp
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for ftime
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for getaddrinfo
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for gethostname
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for getnameinfo
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for getpagesize
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for gettimeofday
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for getcwd
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for getwd
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+/tmp/cclm0ngU.o: In function `main':
+/playpen/mozilla/XEmacs/xemacs-21.5.3/configure:10893: the `getwd' function is dangerous and should not be used.
+configure:10873: checking for logb
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for lrand48
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for matherr
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for mkdir
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for mktime
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for perror
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for poll
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for random
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for rename
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for res_init
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+/tmp/ccowsyjR.o: In function `main':
+/playpen/mozilla/XEmacs/xemacs-21.5.3/configure:10893: undefined reference to `res_init'
+collect2: ld returned 1 exit status
+configure: failed program was:
+#line 10876 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char res_init(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char res_init();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_res_init) || defined (__stub___res_init)
+choke me
+#else
+res_init();
+#endif
+
+; return 0; }
+configure:10873: checking for rint
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for rmdir
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for select
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for setitimer
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for setpgid
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for setlocale
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for setsid
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for sigblock
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for sighold
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for sigprocmask
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for snprintf
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for stpcpy
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for strerror
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for tzset
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for ulimit
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for usleep
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for waitpid
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for vsnprintf
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for fsync
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for ftruncate
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10873: checking for umask
+configure:10899: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10931: checking for getpt
+configure:10957: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10931: checking for _getpty
+configure:10957: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+/tmp/cctCAJNi.o: In function `main':
+/playpen/mozilla/XEmacs/xemacs-21.5.3/configure:10951: undefined reference to `_getpty'
+collect2: ld returned 1 exit status
+configure: failed program was:
+#line 10934 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char _getpty(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char _getpty();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub__getpty) || defined (__stub____getpty)
+choke me
+#else
+_getpty();
+#endif
+
+; return 0; }
+configure:10931: checking for grantpt
+configure:10957: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10931: checking for unlockpt
+configure:10957: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10931: checking for ptsname
+configure:10957: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10931: checking for killpg
+configure:10957: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10931: checking for tcgetpgrp
+configure:10957: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:10986: checking for openpty
+configure:11012: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+/tmp/cc3SN6V3.o: In function `main':
+/playpen/mozilla/XEmacs/xemacs-21.5.3/configure:11006: undefined reference to `openpty'
+collect2: ld returned 1 exit status
+configure: failed program was:
+#line 10989 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char openpty(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char openpty();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_openpty) || defined (__stub___openpty)
+choke me
+#else
+openpty();
+#endif
+
+; return 0; }
+configure:11031: checking for openpty in -lutil
+configure:11047: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lutil   -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:11082: checking for libutil.h
+configure:11090: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:11086: libutil.h: No such file or directory
+configure: failed program was:
+#line 11085 "configure"
+#include "confdefs.h"
+#include <libutil.h>
+configure:11082: checking for util.h
+configure:11090: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:11086: util.h: No such file or directory
+configure: failed program was:
+#line 11085 "configure"
+#include "confdefs.h"
+#include <util.h>
+configure:11168: checking for pty.h
+configure:11176: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:11253: checking for stropts.h
+configure:11261: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:11294: checking for isastream
+configure:11320: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:11351: checking for strtio.h
+configure:11359: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:11355: strtio.h: No such file or directory
+configure: failed program was:
+#line 11354 "configure"
+#include "confdefs.h"
+#include <strtio.h>
+configure:11396: checking for getloadavg
+configure:11422: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:11455: checking for sys/loadavg.h
+configure:11463: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:11459: sys/loadavg.h: No such file or directory
+configure: failed program was:
+#line 11458 "configure"
+#include "confdefs.h"
+#include <sys/loadavg.h>
+configure:11640: checking whether netdb declares h_errno
+configure:11649: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:11669: checking for sigsetjmp
+configure:11678: gcc -c -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include conftest.c 1>&5
+configure:11698: checking whether localtime caches TZ
+configure:11737: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:11709: warning: return-type defaults to `int'
+configure:11709: warning: no previous prototype for `unset_TZ'
+configure: In function `unset_TZ':
+configure:11714: warning: control reaches end of non-void function
+configure: At top level:
+configure:11718: warning: return-type defaults to `int'
+configure:11767: checking whether gettimeofday accepts one or two arguments
+configure:11790: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure: In function `main':
+configure:11784: warning: declaration of `time' shadows global declaration
+configure:11812: checking for inline
+configure:11824: gcc -c -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include conftest.c 1>&5
+configure: In function `main':
+configure:11820: warning: control reaches end of non-void function
+configure: At top level:
+configure:11820: warning: return-type defaults to `int'
+configure:11820: warning: no previous prototype for `foo'
+configure:11865: checking for working alloca.h
+configure:11875: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure: In function `main':
+configure:11871: warning: unused variable `p'
+configure:11899: checking for alloca
+configure:11930: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure: In function `main':
+configure:11926: warning: unused variable `p'
+configure:12104: checking for vfork.h
+configure:12112: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:12108: vfork.h: No such file or directory
+configure: failed program was:
+#line 12107 "configure"
+#include "confdefs.h"
+#include <vfork.h>
+configure:12140: checking for working vfork
+configure:12238: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:12164: warning: return-type defaults to `int'
+configure: In function `sparc_address_test':
+configure:12180: warning: control reaches end of non-void function
+configure: At top level:
+configure:12181: warning: return-type defaults to `int'
+configure: In function `main':
+configure:12164: warning: inlining failed in call to `sparc_address_test'
+configure:12185: warning: called from here
+configure:12219: warning: implicit declaration of function `wait'
+configure:12264: checking for working strcoll
+configure:12277: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:12270: warning: return-type defaults to `int'
+configure:12305: checking for getpgrp
+configure:12331: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:12359: checking whether getpgrp takes no argument
+configure:12417: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:12378: warning: return-type defaults to `int'
+configure: In function `main':
+configure:12379: warning: implicit declaration of function `getpid'
+configure:12380: warning: implicit declaration of function `getpgrp'
+configure:12392: warning: implicit declaration of function `fork'
+configure:12402: warning: implicit declaration of function `setpgrp'
+configure:12410: warning: implicit declaration of function `wait'
+configure:12444: checking for working mmap
+configure:12480: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure: In function `main':
+configure:12464: warning: unused variable `p'
+configure:12509: checking for M_MMAP_THRESHOLD
+configure:12523: gcc -c -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include conftest.c 1>&5
+configure:12548: checking for termios.h
+configure:12556: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:12639: checking for socket
+configure:12665: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:12680: checking for netinet/in.h
+configure:12688: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:12705: checking for arpa/inet.h
+configure:12713: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:12738: checking for sun_len member in struct sockaddr_un
+configure:12751: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure: In function `main':
+configure:12747: structure has no member named `sun_len'
+configure: failed program was:
+#line 12740 "configure"
+#include "confdefs.h"
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+      
+int main() {
+static struct sockaddr_un x; x.sun_len = 1;
+; return 0; }
+configure:12769: checking for ip_mreq struct in netinet/in.h
+configure:12781: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure: In function `main':
+configure:12777: warning: unused variable `x'
+configure:12812: checking for msgget
+configure:12838: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:12853: checking for sys/ipc.h
+configure:12861: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:12878: checking for sys/msg.h
+configure:12886: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:12924: checking for dirent.h
+configure:12932: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:13000: checking for nlist.h
+configure:13008: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:13004: nlist.h: No such file or directory
+configure: failed program was:
+#line 13003 "configure"
+#include "confdefs.h"
+#include <nlist.h>
+configure:13038: checking for sound support
+configure:13212: checking for machine/soundcard.h
+configure:13220: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:13216: machine/soundcard.h: No such file or directory
+configure: failed program was:
+#line 13215 "configure"
+#include "confdefs.h"
+#include <machine/soundcard.h>
+configure:13212: checking for sys/soundcard.h
+configure:13220: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:13274: checking for audio/audiolib.h
+configure:13282: gcc -E       -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:13300: checking for AuOpenServer in -laudio
+configure:13316: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare       -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -laudio   -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:13386: checking for esd-config
+configure:13415: checking for esd_play_stream
+configure:13441: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare        -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -laudio -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -L/usr/lib -lesd -laudiofile -lm -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:13492: checking for TTY-related features
+configure:13508: checking for tgetent in -lncurses
+configure:13524: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare        -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lncurses   -laudio -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -L/usr/lib -lesd -laudiofile -lm -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:13557: checking for ncurses/curses.h
+configure:13565: gcc -E        -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:13561: ncurses/curses.h: No such file or directory
+configure: failed program was:
+#line 13560 "configure"
+#include "confdefs.h"
+#include <ncurses/curses.h>
+configure:13587: checking for ncurses/term.h
+configure:13595: gcc -E        -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:13591: ncurses/term.h: No such file or directory
+configure: failed program was:
+#line 13590 "configure"
+#include "confdefs.h"
+#include <ncurses/term.h>
+configure:13625: checking for ncurses/curses.h
+configure:13633: gcc -E    -I/usr/include/ncurses     -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:13629: ncurses/curses.h: No such file or directory
+configure: failed program was:
+#line 13628 "configure"
+#include "confdefs.h"
+#include <ncurses/curses.h>
+configure:13813: checking for gpm.h
+configure:13821: gcc -E        -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:13844: checking for Gpm_Open in -lgpm
+configure:13860: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare        -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -lgpm   -laudio -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lncurses -L/usr/lib -lesd -laudiofile -lm -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:13910: checking for database support
+configure:13915: checking for ndbm.h
+configure:13923: gcc -E        -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:13919: ndbm.h: No such file or directory
+configure: failed program was:
+#line 13918 "configure"
+#include "confdefs.h"
+#include <ndbm.h>
+configure:14099: checking for Berkeley db.h
+configure:14124: gcc -c -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare        -I/usr/X11R6/include conftest.c 1>&5
+configure:14117: db/db.h: No such file or directory
+configure: failed program was:
+#line 14102 "configure"
+#include "confdefs.h"
+
+#include <stdlib.h>
+#if !(defined __GLIBC__ && __GLIBC_MINOR__ >= 1)
+#ifdef HAVE_INTTYPES_H
+#define __BIT_TYPES_DEFINED__
+#include <inttypes.h>
+typedef uint8_t  u_int8_t;
+typedef uint16_t u_int16_t;
+typedef uint32_t u_int32_t;
+#ifdef WE_DONT_NEED_QUADS
+typedef uint64_t u_int64_t;
+#endif
+#endif
+#endif
+#include <db/db.h>
+
+int main() {
+
+; return 0; }
+configure:14124: gcc -c -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare        -I/usr/X11R6/include conftest.c 1>&5
+configure:14140: checking for Berkeley DB version
+configure:14181: checking for db_create
+configure:14207: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare        -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -laudio -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lgpm -lncurses -L/usr/lib -lesd -laudiofile -lm -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+/tmp/ccDwBdpd.o: In function `main':
+/playpen/mozilla/XEmacs/xemacs-21.5.3/configure:14201: undefined reference to `db_create'
+collect2: ld returned 1 exit status
+configure: failed program was:
+#line 14184 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char db_create(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char db_create();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_db_create) || defined (__stub___db_create)
+choke me
+#else
+db_create();
+#endif
+
+; return 0; }
+configure:14226: checking for db_create in -ldb
+configure:14242: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare        -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c   -ldb   -laudio -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -lgpm -lncurses -L/usr/lib -lesd -laudiofile -lm -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:14377: checking for module support
+configure:14384: checking for dlfcn.h
+configure:14392: gcc -E        -I/usr/X11R6/include conftest.c >/dev/null 2>conftest.out
+configure:14409: checking for dlopen in -lc
+configure:14418: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare        -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -laudio -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -ldb -lgpm -lncurses -L/usr/lib -lesd -laudiofile -lm -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:14571: checking how to build dynamic libraries for i686-pc-linux
+configure:14623: checking how to produce PIC code
+configure:14724: checking if PIC flag -fPIC really works
+configure:14735: gcc -c -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare -fPIC -DPIC        -I/usr/X11R6/include conftest.c 1>&5
+configure: In function `main':
+configure:14731: warning: unused variable `x'
+configure:14766: checking if C compiler can produce shared libraries
+configure:14824: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare        -I/usr/X11R6/include -shared      -L/usr/X11R6/lib  conftest.c 1>&5
+configure: In function `main':
+configure:14820: warning: unused variable `x'
+configure:14849: checking for ld used by GCC
+configure:14912: checking if the linker is GNU ld
+GNU ld version 2.11.90.0.31 (with BFD 2.11.90.0.31)
+configure:15151: checking for dlerror
+configure:15177: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare        -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -laudio -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -ldb -lgpm -lncurses -L/usr/lib -lesd -laudiofile -lm -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+configure:15151: checking for _dlerror
+configure:15177: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare        -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -laudio -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -ldb -lgpm -lncurses -L/usr/lib -lesd -laudiofile -lm -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
+/tmp/ccocOauD.o: In function `main':
+/playpen/mozilla/XEmacs/xemacs-21.5.3/configure:15171: undefined reference to `_dlerror'
+collect2: ld returned 1 exit status
+configure: failed program was:
+#line 15154 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char _dlerror(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char _dlerror();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub__dlerror) || defined (__stub____dlerror)
+choke me
+#else
+_dlerror();
+#endif
+
+; return 0; }
+configure:15220: gcc -o conftest -g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare        -I/usr/X11R6/include      -L/usr/X11R6/lib  conftest.c    -laudio -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11   -lSM -lICE -ldb -lgpm -lncurses -L/usr/lib -lesd -laudiofile -lm -lpq -lm    -lutil -lgcc -lc -lgcc /usr/lib/crtn.o 1>&5
diff --text -u /dev/null 'xemacs-21.5.3/config.status'
Index: ././config.status
--- ././config.status	Thu Jan  1 09:00:00 1970
+++ ././config.status	Fri Sep  7 18:15:48 2001
@@ -0,0 +1,1283 @@
+#! /bin/sh
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# This directory was configured as follows,
+# on host tleepslib:
+#
+# ./configure --with-mule
+#
+# Compiler output produced by configure, useful for debugging
+# configure, is in ./config.log if it exists.
+
+ac_cs_usage="Usage: ./config.status [--recheck] [--version] [--help]"
+for ac_option
+do
+  case "$ac_option" in
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    echo "running ${CONFIG_SHELL-/bin/sh} ./configure --with-mule --no-create --no-recursion"
+    exec ${CONFIG_SHELL-/bin/sh} ./configure --with-mule --no-create --no-recursion ;;
+  -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
+    echo "./config.status generated by autoconf version 2.13"
+    exit 0 ;;
+  -help | --help | --hel | --he | --h)
+    echo "$ac_cs_usage"; exit 0 ;;
+  *) echo "$ac_cs_usage"; exit 1 ;;
+  esac
+done
+
+ac_given_srcdir=/playpen/mozilla/XEmacs/xemacs-21.5.3
+ac_given_INSTALL="/usr/bin/install -c"
+
+trap 'rm -fr  Makefile.in lib-src/Makefile.in lwlib/Makefile.in src/Makefile.in src/paths.h lib-src/config.values lib-src/ellcc.h src/config.h lwlib/config.h conftest*; exit 1' 1 2 15
+
+# Protect against being on the right side of a sed subst in config.status.
+sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\&%]/\\&/g;
+ s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF
+
+
+s%@SHELL@%/bin/sh%g
+s%@CFLAGS@%-g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare%g
+s%@CPPFLAGS@%%g
+s%@CXXFLAGS@%%g
+s%@FFLAGS@%%g
+s%@DEFS@%-DHAVE_CONFIG_H%g
+s%@LDFLAGS@%%g
+s%@LIBS@%-ldb -lgpm -lncurses -L/usr/lib -lesd -laudiofile -lm -lpq -lm %g
+s%@exec_prefix@%${prefix}%g
+s%@prefix@%/usr/local%g
+s%@program_transform_name@%s,x,x,%g
+s%@bindir@%${exec_prefix}/bin%g
+s%@sbindir@%%g
+s%@libexecdir@%%g
+s%@datadir@%${prefix}/lib%g
+s%@sysconfdir@%%g
+s%@sharedstatedir@%%g
+s%@localstatedir@%%g
+s%@libdir@%${exec_prefix}/lib%g
+s%@includedir@%%g
+s%@oldincludedir@%%g
+s%@infodir@%${datadir}/${instvardir}/info%g
+s%@mandir@%${prefix}/man/man1%g
+s%@LN_S@%ln -s%g
+s%@blddir@%/playpen/mozilla/XEmacs/xemacs-21.5.3%g
+s%@CC@%gcc%g
+s%@CPP@%gcc -E%g
+s%@start_flags@%%g
+s%@ld_switch_shared@%-c%g
+s%@start_files@%pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o%g
+s%@ld@%$(CC) -nostdlib%g
+s%@lib_gcc@%`$(CC) $(C_SWITCH_X_SITE) -print-libgcc-file-name`%g
+s%@RANLIB@%ranlib%g
+s%@INSTALL_PROGRAM@%${INSTALL}%g
+s%@INSTALL_SCRIPT@%${INSTALL_PROGRAM}%g
+s%@INSTALL_DATA@%${INSTALL} -m 644%g
+s%@YACC@%bison -y%g
+s%@SET_MAKE@%%g
+s%@GTK_CONFIG@%no%g
+s%@X_CFLAGS@% -I/usr/X11R6/include%g
+s%@X_PRE_LIBS@% -lSM -lICE%g
+s%@X_LIBS@% -L/usr/X11R6/lib%g
+s%@X_EXTRA_LIBS@%%g
+s%@install_pp@%%g
+s%@libs_xauth@%-lXau -lXmu -lXt -lXext -lX11 -lSM -lICE%g
+s%@dnd_objs@%%g
+s%@lwlib_objs@% lwlib-Xm.o xlwmenu.o xlwscrollbar.o xlwtabs.o xlwgcs.o lwlib-Xlw.o%g
+s%@ALLOCA@%%g
+s%@have_esd_config@%yes%g
+s%@dll_ld@%gcc%g
+s%@dll_cflags@%-fPIC%g
+s%@dll_ldflags@%-shared%g
+s%@dll_post@%%g
+s%@dll_ldo@%-o%g
+s%@ld_dynamic_link_flags@%-Wl,-export-dynamic%g
+s%@SRC_SUBDIR_DEPS@% lwlib%g
+s%@INSTALL_ARCH_DEP_SUBDIR@% lib-src src%g
+s%@MAKE_SUBDIR@% lib-src lwlib src%g
+s%@SUBDIR_MAKEFILES@%lib-src/Makefile lib-src/GNUmakefile lwlib/Makefile lwlib/GNUmakefile src/Makefile src/GNUmakefile%g
+s%@PROGNAME@%xemacs%g
+s%@version@%21.5-b3%g
+s%@configuration@%i686-pc-linux%g
+s%@canonical@%i686-pc-linux%g
+s%@inststaticdir@%${PROGNAME}%g
+s%@instvardir@%${PROGNAME}-${version}%g
+s%@srcdir@%/playpen/mozilla/XEmacs/xemacs-21.5.3%g
+s%@pkgdir@%${datadir}/${instvardir}/lisp%g
+s%@statedir@%${prefix}/lib%g
+s%@extra_includes@%%g
+s%@PREFIX_USER_DEFINED@%%g
+s%@PREFIX@%/usr/local%g
+s%@EXEC_PREFIX_USER_DEFINED@%%g
+s%@EXEC_PREFIX@%/usr/local%g
+s%@INFODIR_USER_DEFINED@%%g
+s%@INFODIR@%/usr/local/lib/xemacs-21.5-b3/info%g
+s%@infopath@%%g
+s%@INFOPATH_USER_DEFINED@%%g
+s%@INFOPATH@%%g
+s%@package_path@%%g
+s%@PACKAGE_PATH_USER_DEFINED@%%g
+s%@PACKAGE_PATH@%%g
+s%@lispdir@%${datadir}/${instvardir}/lisp%g
+s%@LISPDIR_USER_DEFINED@%%g
+s%@LISPDIR@%/usr/local/lib/xemacs-21.5-b3/lisp%g
+s%@moduledir@%${datadir}/${instvardir}/${configuration}/modules%g
+s%@MODULEDIR_USER_DEFINED@%%g
+s%@MODULEDIR@%/usr/local/lib/xemacs-21.5-b3/i686-pc-linux/modules%g
+s%@sitelispdir@%${datadir}/${inststaticdir}/site-lisp%g
+s%@SITELISPDIR_USER_DEFINED@%%g
+s%@SITELISPDIR@%/usr/local/lib/xemacs/site-lisp%g
+s%@sitemoduledir@%${datadir}/${inststaticdir}/site-modules%g
+s%@SITEMODULEDIR_USER_DEFINED@%%g
+s%@SITEMODULEDIR@%/usr/local/lib/xemacs/site-modules%g
+s%@etcdir@%${datadir}/${instvardir}/etc%g
+s%@ETCDIR_USER_DEFINED@%%g
+s%@ETCDIR@%/usr/local/lib/xemacs-21.5-b3/etc%g
+s%@docdir@%${archlibdir}%g
+s%@DOCDIR_USER_DEFINED@%%g
+s%@DOCDIR@%/usr/local/lib/xemacs-21.5-b3/i686-pc-linux%g
+s%@archlibdir@%${datadir}/${instvardir}/${configuration}%g
+s%@ARCHLIBDIR_USER_DEFINED@%%g
+s%@ARCHLIBDIR@%/usr/local/lib/xemacs-21.5-b3/i686-pc-linux%g
+s%@bitmapdir@%%g
+s%@extra_objs@%debug.o tests.o filelock.o unexelf.o balloon_help.o balloon-x.o postgresql.o dgif_lib.o gif_io.o menubar.o scrollbar.o dialog.o toolbar.o menubar-x.o scrollbar-x.o dialog-x.o toolbar-x.o gui-x.o mule.o mule-ccl.o mule-charset.o file-coding.o input-method-xlib.o mule-wnnfns.o mule-canna.o realpath.o inline.o linuxplay.o nas.o esd.o miscplay.o console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o terminfo.o gpmevent.o event-unixoid.o database.o sysdll.o emodules.o process-unix.o%g
+s%@machfile@%m/intel386.h%g
+s%@opsysfile@%s/linux.h%g
+s%@c_switch_general@%-DHAVE_CONFIG_H%g
+s%@c_switch_window_system@%-I/usr/X11R6/include%g
+s%@c_switch_all@%-DHAVE_CONFIG_H -I/usr/X11R6/include%g
+s%@ld_switch_general@%%g
+s%@ld_switch_window_system@%-L/usr/X11R6/lib%g
+s%@ld_switch_all@%-L/usr/X11R6/lib%g
+s%@ld_libs_general@%-ldb -lgpm -lncurses -L/usr/lib -lesd -laudiofile -lm -lpq -lm -lutil -lgcc -lc -lgcc /usr/lib/crtn.o%g
+s%@ld_libs_window_system@%-laudio -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11 -lSM -lICE%g
+s%@ld_libs_all@%-laudio -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11 -lSM -lICE -ldb -lgpm -lncurses -L/usr/lib -lesd -laudiofile -lm -lpq -lm -lutil -lgcc -lc -lgcc /usr/lib/crtn.o%g
+s%@RECURSIVE_MAKE@%$(MAKE) $(MFLAGS) CC='$(CC)' CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS)' CPPFLAGS='$(CPPFLAGS)'%g
+s%@native_sound_lib@%%g
+s%@sound_cflags@%%g
+s%@dynodump_arch@%%g
+s%@XEMACS_CC@%gcc%g
+s%@internal_makefile_list@%Makefile.in lib-src/Makefile.in lwlib/Makefile.in src/Makefile.in%g
+
+CEOF
+
+# Split the substitutions into bite-sized pieces for seds with
+# small command number limits, like on Digital OSF/1 and HP-UX.
+ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
+ac_file=1 # Number of current file.
+ac_beg=1 # First line for current file.
+ac_end=$ac_max_sed_cmds # Line after last line for current file.
+ac_more_lines=:
+ac_sed_cmds=""
+while $ac_more_lines; do
+  if test $ac_beg -gt 1; then
+    sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
+  else
+    sed "${ac_end}q" conftest.subs > conftest.s$ac_file
+  fi
+  if test ! -s conftest.s$ac_file; then
+    ac_more_lines=false
+    rm -f conftest.s$ac_file
+  else
+    if test -z "$ac_sed_cmds"; then
+      ac_sed_cmds="sed -f conftest.s$ac_file"
+    else
+      ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
+    fi
+    ac_file=`expr $ac_file + 1`
+    ac_beg=$ac_end
+    ac_end=`expr $ac_end + $ac_max_sed_cmds`
+  fi
+done
+if test -z "$ac_sed_cmds"; then
+  ac_sed_cmds=cat
+fi
+
+CONFIG_FILES=${CONFIG_FILES-" Makefile.in lib-src/Makefile.in lwlib/Makefile.in src/Makefile.in:src/Makefile.in.in:src/depend src/paths.h lib-src/config.values lib-src/ellcc.h"}
+for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case "$ac_file" in
+  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+  *) ac_file_in="${ac_file}.in" ;;
+  esac
+
+  # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
+
+  # Remove last slash and all that follows it.  Not all systems have dirname.
+  ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+    # The file is in a subdirectory.
+    test ! -d "$ac_dir" && mkdir "$ac_dir"
+    ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
+    # A "../" for each directory in $ac_dir_suffix.
+    ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
+  else
+    ac_dir_suffix= ac_dots=
+  fi
+
+  case "$ac_given_srcdir" in
+  .)  srcdir=.
+      if test -z "$ac_dots"; then top_srcdir=.
+      else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
+  /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
+  *) # Relative path.
+    srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
+    top_srcdir="$ac_dots$ac_given_srcdir" ;;
+  esac
+
+  case "$ac_given_INSTALL" in
+  [/$]*) INSTALL="$ac_given_INSTALL" ;;
+  *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
+  esac
+
+  echo creating "$ac_file"
+  rm -f "$ac_file"
+  configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
+  case "$ac_file" in
+  *Makefile*) ac_comsub="1i\\
+# $configure_input" ;;
+  *) ac_comsub= ;;
+  esac
+
+  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+  sed -e "$ac_comsub
+s%@configure_input@%$configure_input%g
+s%@srcdir@%$srcdir%g
+s%@top_srcdir@%$top_srcdir%g
+s%@INSTALL@%$INSTALL%g
+" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
+fi; done
+rm -f conftest.s*
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s%^\([ 	]*\)#\([ 	]*define[ 	][ 	]*\)'
+ac_dB='\([ 	][ 	]*\)[^ 	]*%\1#\2'
+ac_dC='\3'
+ac_dD='%g'
+# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
+ac_uA='s%^\([ 	]*\)#\([ 	]*\)undef\([ 	][ 	]*\)'
+ac_uB='\([ 	]\)%\1#\2define\3'
+ac_uC=' '
+ac_uD='\4%g'
+# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_eA='s%^\([ 	]*\)#\([ 	]*\)undef\([ 	][ 	]*\)'
+ac_eB='$%\1#\2define\3'
+ac_eC=' '
+ac_eD='%g'
+
+if test "${CONFIG_HEADERS+set}" != set; then
+  CONFIG_HEADERS="src/config.h lwlib/config.h"
+fi
+for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case "$ac_file" in
+  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+  *) ac_file_in="${ac_file}.in" ;;
+  esac
+
+  echo creating $ac_file
+
+  rm -f conftest.frag conftest.in conftest.out
+  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+  cat $ac_file_inputs > conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}EMACS_MAJOR_VERSION${ac_dB}EMACS_MAJOR_VERSION${ac_dC}21${ac_dD}
+${ac_uA}EMACS_MAJOR_VERSION${ac_uB}EMACS_MAJOR_VERSION${ac_uC}21${ac_uD}
+${ac_eA}EMACS_MAJOR_VERSION${ac_eB}EMACS_MAJOR_VERSION${ac_eC}21${ac_eD}
+${ac_dA}EMACS_MINOR_VERSION${ac_dB}EMACS_MINOR_VERSION${ac_dC}5${ac_dD}
+${ac_uA}EMACS_MINOR_VERSION${ac_uB}EMACS_MINOR_VERSION${ac_uC}5${ac_uD}
+${ac_eA}EMACS_MINOR_VERSION${ac_eB}EMACS_MINOR_VERSION${ac_eC}5${ac_eD}
+${ac_dA}EMACS_BETA_VERSION${ac_dB}EMACS_BETA_VERSION${ac_dC}3${ac_dD}
+${ac_uA}EMACS_BETA_VERSION${ac_uB}EMACS_BETA_VERSION${ac_uC}3${ac_uD}
+${ac_eA}EMACS_BETA_VERSION${ac_eB}EMACS_BETA_VERSION${ac_eC}3${ac_eD}
+${ac_dA}XEMACS_CODENAME${ac_dB}XEMACS_CODENAME${ac_dC}"asparagus"${ac_dD}
+${ac_uA}XEMACS_CODENAME${ac_uB}XEMACS_CODENAME${ac_uC}"asparagus"${ac_uD}
+${ac_eA}XEMACS_CODENAME${ac_eB}XEMACS_CODENAME${ac_eC}"asparagus"${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}EMACS_VERSION${ac_dB}EMACS_VERSION${ac_dC}"21.5-b3"${ac_dD}
+${ac_uA}EMACS_VERSION${ac_uB}EMACS_VERSION${ac_uC}"21.5-b3"${ac_uD}
+${ac_eA}EMACS_VERSION${ac_eB}EMACS_VERSION${ac_eC}"21.5-b3"${ac_eD}
+${ac_dA}EMACS_PROGNAME${ac_dB}EMACS_PROGNAME${ac_dC}"xemacs"${ac_dD}
+${ac_uA}EMACS_PROGNAME${ac_uB}EMACS_PROGNAME${ac_uC}"xemacs"${ac_uD}
+${ac_eA}EMACS_PROGNAME${ac_eB}EMACS_PROGNAME${ac_eC}"xemacs"${ac_eD}
+${ac_dA}ERROR_CHECK_EXTENTS${ac_dB}ERROR_CHECK_EXTENTS${ac_dC}1${ac_dD}
+${ac_uA}ERROR_CHECK_EXTENTS${ac_uB}ERROR_CHECK_EXTENTS${ac_uC}1${ac_uD}
+${ac_eA}ERROR_CHECK_EXTENTS${ac_eB}ERROR_CHECK_EXTENTS${ac_eC}1${ac_eD}
+${ac_dA}ERROR_CHECK_TYPECHECK${ac_dB}ERROR_CHECK_TYPECHECK${ac_dC}1${ac_dD}
+${ac_uA}ERROR_CHECK_TYPECHECK${ac_uB}ERROR_CHECK_TYPECHECK${ac_uC}1${ac_uD}
+${ac_eA}ERROR_CHECK_TYPECHECK${ac_eB}ERROR_CHECK_TYPECHECK${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}ERROR_CHECK_BUFPOS${ac_dB}ERROR_CHECK_BUFPOS${ac_dC}1${ac_dD}
+${ac_uA}ERROR_CHECK_BUFPOS${ac_uB}ERROR_CHECK_BUFPOS${ac_uC}1${ac_uD}
+${ac_eA}ERROR_CHECK_BUFPOS${ac_eB}ERROR_CHECK_BUFPOS${ac_eC}1${ac_eD}
+${ac_dA}ERROR_CHECK_GC${ac_dB}ERROR_CHECK_GC${ac_dC}1${ac_dD}
+${ac_uA}ERROR_CHECK_GC${ac_uB}ERROR_CHECK_GC${ac_uC}1${ac_uD}
+${ac_eA}ERROR_CHECK_GC${ac_eB}ERROR_CHECK_GC${ac_eC}1${ac_eD}
+${ac_dA}ERROR_CHECK_MALLOC${ac_dB}ERROR_CHECK_MALLOC${ac_dC}1${ac_dD}
+${ac_uA}ERROR_CHECK_MALLOC${ac_uB}ERROR_CHECK_MALLOC${ac_uC}1${ac_uD}
+${ac_eA}ERROR_CHECK_MALLOC${ac_eB}ERROR_CHECK_MALLOC${ac_eC}1${ac_eD}
+${ac_dA}ERROR_CHECK_BYTE_CODE${ac_dB}ERROR_CHECK_BYTE_CODE${ac_dC}1${ac_dD}
+${ac_uA}ERROR_CHECK_BYTE_CODE${ac_uB}ERROR_CHECK_BYTE_CODE${ac_uC}1${ac_uD}
+${ac_eA}ERROR_CHECK_BYTE_CODE${ac_eB}ERROR_CHECK_BYTE_CODE${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}ERROR_CHECK_GLYPHS${ac_dB}ERROR_CHECK_GLYPHS${ac_dC}1${ac_dD}
+${ac_uA}ERROR_CHECK_GLYPHS${ac_uB}ERROR_CHECK_GLYPHS${ac_uC}1${ac_uD}
+${ac_eA}ERROR_CHECK_GLYPHS${ac_eB}ERROR_CHECK_GLYPHS${ac_eC}1${ac_eD}
+${ac_dA}DEBUG_XEMACS${ac_dB}DEBUG_XEMACS${ac_dC}1${ac_dD}
+${ac_uA}DEBUG_XEMACS${ac_uB}DEBUG_XEMACS${ac_uC}1${ac_uD}
+${ac_eA}DEBUG_XEMACS${ac_eB}DEBUG_XEMACS${ac_eC}1${ac_eD}
+${ac_dA}USE_ASSERTIONS${ac_dB}USE_ASSERTIONS${ac_dC}1${ac_dD}
+${ac_uA}USE_ASSERTIONS${ac_uB}USE_ASSERTIONS${ac_uC}1${ac_uD}
+${ac_eA}USE_ASSERTIONS${ac_eB}USE_ASSERTIONS${ac_eC}1${ac_eD}
+${ac_dA}MEMORY_USAGE_STATS${ac_dB}MEMORY_USAGE_STATS${ac_dC}1${ac_dD}
+${ac_uA}MEMORY_USAGE_STATS${ac_uB}MEMORY_USAGE_STATS${ac_uC}1${ac_uD}
+${ac_eA}MEMORY_USAGE_STATS${ac_eB}MEMORY_USAGE_STATS${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}config_machfile${ac_dB}config_machfile${ac_dC}"m/intel386.h"${ac_dD}
+${ac_uA}config_machfile${ac_uB}config_machfile${ac_uC}"m/intel386.h"${ac_uD}
+${ac_eA}config_machfile${ac_eB}config_machfile${ac_eC}"m/intel386.h"${ac_eD}
+${ac_dA}config_opsysfile${ac_dB}config_opsysfile${ac_dC}"s/linux.h"${ac_dD}
+${ac_uA}config_opsysfile${ac_uB}config_opsysfile${ac_uC}"s/linux.h"${ac_uD}
+${ac_eA}config_opsysfile${ac_eB}config_opsysfile${ac_eC}"s/linux.h"${ac_eD}
+${ac_dA}STACK_TRACE_EYE_CATCHER${ac_dB}STACK_TRACE_EYE_CATCHER${ac_dC}xemacs_21_5_b3_i686_pc_linux${ac_dD}
+${ac_uA}STACK_TRACE_EYE_CATCHER${ac_uB}STACK_TRACE_EYE_CATCHER${ac_uC}xemacs_21_5_b3_i686_pc_linux${ac_uD}
+${ac_eA}STACK_TRACE_EYE_CATCHER${ac_eB}STACK_TRACE_EYE_CATCHER${ac_eC}xemacs_21_5_b3_i686_pc_linux${ac_eD}
+${ac_dA}CLASH_DETECTION${ac_dB}CLASH_DETECTION${ac_dC}1${ac_dD}
+${ac_uA}CLASH_DETECTION${ac_uB}CLASH_DETECTION${ac_uC}1${ac_uD}
+${ac_eA}CLASH_DETECTION${ac_eB}CLASH_DETECTION${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}_GNU_SOURCE${ac_dB}_GNU_SOURCE${ac_dC}1${ac_dD}
+${ac_uA}_GNU_SOURCE${ac_uB}_GNU_SOURCE${ac_uC}1${ac_uD}
+${ac_eA}_GNU_SOURCE${ac_eB}_GNU_SOURCE${ac_eC}1${ac_eD}
+${ac_dA}_POSIX_C_SOURCE${ac_dB}_POSIX_C_SOURCE${ac_dC}199506L${ac_dD}
+${ac_uA}_POSIX_C_SOURCE${ac_uB}_POSIX_C_SOURCE${ac_uC}199506L${ac_uD}
+${ac_eA}_POSIX_C_SOURCE${ac_eB}_POSIX_C_SOURCE${ac_eC}199506L${ac_eD}
+${ac_dA}_XOPEN_SOURCE${ac_dB}_XOPEN_SOURCE${ac_dC}500${ac_dD}
+${ac_uA}_XOPEN_SOURCE${ac_uB}_XOPEN_SOURCE${ac_uC}500${ac_uD}
+${ac_eA}_XOPEN_SOURCE${ac_eB}_XOPEN_SOURCE${ac_eC}500${ac_eD}
+${ac_dA}_XOPEN_SOURCE_EXTENDED${ac_dB}_XOPEN_SOURCE_EXTENDED${ac_dC}1${ac_dD}
+${ac_uA}_XOPEN_SOURCE_EXTENDED${ac_uB}_XOPEN_SOURCE_EXTENDED${ac_uC}1${ac_uD}
+${ac_eA}_XOPEN_SOURCE_EXTENDED${ac_eB}_XOPEN_SOURCE_EXTENDED${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}DOUG_LEA_MALLOC${ac_dB}DOUG_LEA_MALLOC${ac_dC}1${ac_dD}
+${ac_uA}DOUG_LEA_MALLOC${ac_uB}DOUG_LEA_MALLOC${ac_uC}1${ac_uD}
+${ac_eA}DOUG_LEA_MALLOC${ac_eB}DOUG_LEA_MALLOC${ac_eC}1${ac_eD}
+${ac_dA}HAVE_A_OUT_H${ac_dB}HAVE_A_OUT_H${ac_dC}1${ac_dD}
+${ac_uA}HAVE_A_OUT_H${ac_uB}HAVE_A_OUT_H${ac_uC}1${ac_uD}
+${ac_eA}HAVE_A_OUT_H${ac_eB}HAVE_A_OUT_H${ac_eC}1${ac_eD}
+${ac_dA}HAVE_ELF_H${ac_dB}HAVE_ELF_H${ac_dC}1${ac_dD}
+${ac_uA}HAVE_ELF_H${ac_uB}HAVE_ELF_H${ac_uC}1${ac_uD}
+${ac_eA}HAVE_ELF_H${ac_eB}HAVE_ELF_H${ac_eC}1${ac_eD}
+${ac_dA}HAVE_FCNTL_H${ac_dB}HAVE_FCNTL_H${ac_dC}1${ac_dD}
+${ac_uA}HAVE_FCNTL_H${ac_uB}HAVE_FCNTL_H${ac_uC}1${ac_uD}
+${ac_eA}HAVE_FCNTL_H${ac_eB}HAVE_FCNTL_H${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_INTTYPES_H${ac_dB}HAVE_INTTYPES_H${ac_dC}1${ac_dD}
+${ac_uA}HAVE_INTTYPES_H${ac_uB}HAVE_INTTYPES_H${ac_uC}1${ac_uD}
+${ac_eA}HAVE_INTTYPES_H${ac_eB}HAVE_INTTYPES_H${ac_eC}1${ac_eD}
+${ac_dA}HAVE_LIBGEN_H${ac_dB}HAVE_LIBGEN_H${ac_dC}1${ac_dD}
+${ac_uA}HAVE_LIBGEN_H${ac_uB}HAVE_LIBGEN_H${ac_uC}1${ac_uD}
+${ac_eA}HAVE_LIBGEN_H${ac_eB}HAVE_LIBGEN_H${ac_eC}1${ac_eD}
+${ac_dA}HAVE_LOCALE_H${ac_dB}HAVE_LOCALE_H${ac_dC}1${ac_dD}
+${ac_uA}HAVE_LOCALE_H${ac_uB}HAVE_LOCALE_H${ac_uC}1${ac_uD}
+${ac_eA}HAVE_LOCALE_H${ac_eB}HAVE_LOCALE_H${ac_eC}1${ac_eD}
+${ac_dA}HAVE_SYS_PARAM_H${ac_dB}HAVE_SYS_PARAM_H${ac_dC}1${ac_dD}
+${ac_uA}HAVE_SYS_PARAM_H${ac_uB}HAVE_SYS_PARAM_H${ac_uC}1${ac_uD}
+${ac_eA}HAVE_SYS_PARAM_H${ac_eB}HAVE_SYS_PARAM_H${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_SYS_TIME_H${ac_dB}HAVE_SYS_TIME_H${ac_dC}1${ac_dD}
+${ac_uA}HAVE_SYS_TIME_H${ac_uB}HAVE_SYS_TIME_H${ac_uC}1${ac_uD}
+${ac_eA}HAVE_SYS_TIME_H${ac_eB}HAVE_SYS_TIME_H${ac_eC}1${ac_eD}
+${ac_dA}HAVE_SYS_TIMEB_H${ac_dB}HAVE_SYS_TIMEB_H${ac_dC}1${ac_dD}
+${ac_uA}HAVE_SYS_TIMEB_H${ac_uB}HAVE_SYS_TIMEB_H${ac_uC}1${ac_uD}
+${ac_eA}HAVE_SYS_TIMEB_H${ac_eB}HAVE_SYS_TIMEB_H${ac_eC}1${ac_eD}
+${ac_dA}HAVE_SYS_UN_H${ac_dB}HAVE_SYS_UN_H${ac_dC}1${ac_dD}
+${ac_uA}HAVE_SYS_UN_H${ac_uB}HAVE_SYS_UN_H${ac_uC}1${ac_uD}
+${ac_eA}HAVE_SYS_UN_H${ac_eB}HAVE_SYS_UN_H${ac_eC}1${ac_eD}
+${ac_dA}HAVE_ULIMIT_H${ac_dB}HAVE_ULIMIT_H${ac_dC}1${ac_dD}
+${ac_uA}HAVE_ULIMIT_H${ac_uB}HAVE_ULIMIT_H${ac_uC}1${ac_uD}
+${ac_eA}HAVE_ULIMIT_H${ac_eB}HAVE_ULIMIT_H${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_UNISTD_H${ac_dB}HAVE_UNISTD_H${ac_dC}1${ac_dD}
+${ac_uA}HAVE_UNISTD_H${ac_uB}HAVE_UNISTD_H${ac_uC}1${ac_uD}
+${ac_eA}HAVE_UNISTD_H${ac_eB}HAVE_UNISTD_H${ac_eC}1${ac_eD}
+${ac_dA}HAVE_SYS_WAIT_H${ac_dB}HAVE_SYS_WAIT_H${ac_dC}1${ac_dD}
+${ac_uA}HAVE_SYS_WAIT_H${ac_uB}HAVE_SYS_WAIT_H${ac_uC}1${ac_uD}
+${ac_eA}HAVE_SYS_WAIT_H${ac_eB}HAVE_SYS_WAIT_H${ac_eC}1${ac_eD}
+${ac_dA}STDC_HEADERS${ac_dB}STDC_HEADERS${ac_dC}1${ac_dD}
+${ac_uA}STDC_HEADERS${ac_uB}STDC_HEADERS${ac_uC}1${ac_uD}
+${ac_eA}STDC_HEADERS${ac_eB}STDC_HEADERS${ac_eC}1${ac_eD}
+${ac_dA}TIME_WITH_SYS_TIME${ac_dB}TIME_WITH_SYS_TIME${ac_dC}1${ac_dD}
+${ac_uA}TIME_WITH_SYS_TIME${ac_uB}TIME_WITH_SYS_TIME${ac_uC}1${ac_uD}
+${ac_eA}TIME_WITH_SYS_TIME${ac_eB}TIME_WITH_SYS_TIME${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}SYS_SIGLIST_DECLARED${ac_dB}SYS_SIGLIST_DECLARED${ac_dC}1${ac_dD}
+${ac_uA}SYS_SIGLIST_DECLARED${ac_uB}SYS_SIGLIST_DECLARED${ac_uC}1${ac_uD}
+${ac_eA}SYS_SIGLIST_DECLARED${ac_eB}SYS_SIGLIST_DECLARED${ac_eC}1${ac_eD}
+${ac_dA}HAVE_UTIME${ac_dB}HAVE_UTIME${ac_dC}1${ac_dD}
+${ac_uA}HAVE_UTIME${ac_uB}HAVE_UTIME${ac_uC}1${ac_uD}
+${ac_eA}HAVE_UTIME${ac_eB}HAVE_UTIME${ac_eC}1${ac_eD}
+${ac_dA}RETSIGTYPE${ac_dB}RETSIGTYPE${ac_dC}void${ac_dD}
+${ac_uA}RETSIGTYPE${ac_uB}RETSIGTYPE${ac_uC}void${ac_uD}
+${ac_eA}RETSIGTYPE${ac_eB}RETSIGTYPE${ac_eC}void${ac_eD}
+${ac_dA}HAVE_TIMEVAL${ac_dB}HAVE_TIMEVAL${ac_dC}1${ac_dD}
+${ac_uA}HAVE_TIMEVAL${ac_uB}HAVE_TIMEVAL${ac_uC}1${ac_uD}
+${ac_eA}HAVE_TIMEVAL${ac_eB}HAVE_TIMEVAL${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_TM_ZONE${ac_dB}HAVE_TM_ZONE${ac_dC}1${ac_dD}
+${ac_uA}HAVE_TM_ZONE${ac_uB}HAVE_TM_ZONE${ac_uC}1${ac_uD}
+${ac_eA}HAVE_TM_ZONE${ac_eB}HAVE_TM_ZONE${ac_eC}1${ac_eD}
+${ac_dA}SIZEOF_SHORT${ac_dB}SIZEOF_SHORT${ac_dC}2${ac_dD}
+${ac_uA}SIZEOF_SHORT${ac_uB}SIZEOF_SHORT${ac_uC}2${ac_uD}
+${ac_eA}SIZEOF_SHORT${ac_eB}SIZEOF_SHORT${ac_eC}2${ac_eD}
+${ac_dA}SIZEOF_INT${ac_dB}SIZEOF_INT${ac_dC}4${ac_dD}
+${ac_uA}SIZEOF_INT${ac_uB}SIZEOF_INT${ac_uC}4${ac_uD}
+${ac_eA}SIZEOF_INT${ac_eB}SIZEOF_INT${ac_eC}4${ac_eD}
+${ac_dA}SIZEOF_LONG${ac_dB}SIZEOF_LONG${ac_dC}4${ac_dD}
+${ac_uA}SIZEOF_LONG${ac_uB}SIZEOF_LONG${ac_uC}4${ac_uD}
+${ac_eA}SIZEOF_LONG${ac_eB}SIZEOF_LONG${ac_eC}4${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}SIZEOF_LONG_LONG${ac_dB}SIZEOF_LONG_LONG${ac_dC}8${ac_dD}
+${ac_uA}SIZEOF_LONG_LONG${ac_uB}SIZEOF_LONG_LONG${ac_uC}8${ac_uD}
+${ac_eA}SIZEOF_LONG_LONG${ac_eB}SIZEOF_LONG_LONG${ac_eC}8${ac_eD}
+${ac_dA}SIZEOF_VOID_P${ac_dB}SIZEOF_VOID_P${ac_dC}4${ac_dD}
+${ac_uA}SIZEOF_VOID_P${ac_uB}SIZEOF_VOID_P${ac_uC}4${ac_uD}
+${ac_eA}SIZEOF_VOID_P${ac_eB}SIZEOF_VOID_P${ac_eC}4${ac_eD}
+${ac_dA}HAVE_LONG_FILE_NAMES${ac_dB}HAVE_LONG_FILE_NAMES${ac_dC}1${ac_dD}
+${ac_uA}HAVE_LONG_FILE_NAMES${ac_uB}HAVE_LONG_FILE_NAMES${ac_uC}1${ac_uD}
+${ac_eA}HAVE_LONG_FILE_NAMES${ac_eB}HAVE_LONG_FILE_NAMES${ac_eC}1${ac_eD}
+${ac_dA}HAVE_LIBM${ac_dB}HAVE_LIBM${ac_dC}1${ac_dD}
+${ac_uA}HAVE_LIBM${ac_uB}HAVE_LIBM${ac_uC}1${ac_uD}
+${ac_eA}HAVE_LIBM${ac_eB}HAVE_LIBM${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}LISP_FLOAT_TYPE${ac_dB}LISP_FLOAT_TYPE${ac_dC}1${ac_dD}
+${ac_uA}LISP_FLOAT_TYPE${ac_uB}LISP_FLOAT_TYPE${ac_uC}1${ac_uD}
+${ac_eA}LISP_FLOAT_TYPE${ac_eB}LISP_FLOAT_TYPE${ac_eC}1${ac_eD}
+${ac_dA}HAVE_INVERSE_HYPERBOLIC${ac_dB}HAVE_INVERSE_HYPERBOLIC${ac_dC}1${ac_dD}
+${ac_uA}HAVE_INVERSE_HYPERBOLIC${ac_uB}HAVE_INVERSE_HYPERBOLIC${ac_uC}1${ac_uD}
+${ac_eA}HAVE_INVERSE_HYPERBOLIC${ac_eB}HAVE_INVERSE_HYPERBOLIC${ac_eC}1${ac_eD}
+${ac_dA}HAVE_MKSTEMP${ac_dB}HAVE_MKSTEMP${ac_dC}1${ac_dD}
+${ac_uA}HAVE_MKSTEMP${ac_uB}HAVE_MKSTEMP${ac_uC}1${ac_uD}
+${ac_eA}HAVE_MKSTEMP${ac_eB}HAVE_MKSTEMP${ac_eC}1${ac_eD}
+${ac_dA}HAVE_LOCKF${ac_dB}HAVE_LOCKF${ac_dC}1${ac_dD}
+${ac_uA}HAVE_LOCKF${ac_uB}HAVE_LOCKF${ac_uC}1${ac_uD}
+${ac_eA}HAVE_LOCKF${ac_eB}HAVE_LOCKF${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_FLOCK${ac_dB}HAVE_FLOCK${ac_dC}1${ac_dD}
+${ac_uA}HAVE_FLOCK${ac_uB}HAVE_FLOCK${ac_uC}1${ac_uD}
+${ac_eA}HAVE_FLOCK${ac_eB}HAVE_FLOCK${ac_eC}1${ac_eD}
+${ac_dA}MAIL_LOCK_DOT${ac_dB}MAIL_LOCK_DOT${ac_dC}1${ac_dD}
+${ac_uA}MAIL_LOCK_DOT${ac_uB}MAIL_LOCK_DOT${ac_uC}1${ac_uD}
+${ac_eA}MAIL_LOCK_DOT${ac_eB}MAIL_LOCK_DOT${ac_eC}1${ac_eD}
+${ac_dA}HAVE_X_WINDOWS${ac_dB}HAVE_X_WINDOWS${ac_dC}1${ac_dD}
+${ac_uA}HAVE_X_WINDOWS${ac_uB}HAVE_X_WINDOWS${ac_uC}1${ac_uD}
+${ac_eA}HAVE_X_WINDOWS${ac_eB}HAVE_X_WINDOWS${ac_eC}1${ac_eD}
+${ac_dA}BITMAPDIR${ac_dB}BITMAPDIR${ac_dC}"/usr/X11R6/include/X11/bitmaps:/usr/X11R6/include/bitmaps"${ac_dD}
+${ac_uA}BITMAPDIR${ac_uB}BITMAPDIR${ac_uC}"/usr/X11R6/include/X11/bitmaps:/usr/X11R6/include/bitmaps"${ac_uD}
+${ac_eA}BITMAPDIR${ac_eB}BITMAPDIR${ac_eC}"/usr/X11R6/include/X11/bitmaps:/usr/X11R6/include/bitmaps"${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}FUNCPROTO${ac_dB}FUNCPROTO${ac_dC}15${ac_dD}
+${ac_uA}FUNCPROTO${ac_uB}FUNCPROTO${ac_uC}15${ac_uD}
+${ac_eA}FUNCPROTO${ac_eB}FUNCPROTO${ac_eC}15${ac_eD}
+${ac_dA}NARROWPROTO${ac_dB}NARROWPROTO${ac_dC}1${ac_dD}
+${ac_uA}NARROWPROTO${ac_uB}NARROWPROTO${ac_uC}1${ac_uD}
+${ac_eA}NARROWPROTO${ac_eB}NARROWPROTO${ac_eC}1${ac_eD}
+${ac_dA}linux${ac_dB}linux${ac_dC}1${ac_dD}
+${ac_uA}linux${ac_uB}linux${ac_uC}1${ac_uD}
+${ac_eA}linux${ac_eB}linux${ac_eC}1${ac_eD}
+${ac_dA}__i386__${ac_dB}__i386__${ac_dC}1${ac_dD}
+${ac_uA}__i386__${ac_uB}__i386__${ac_uC}1${ac_uD}
+${ac_eA}__i386__${ac_eB}__i386__${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}_POSIX_SOURCE${ac_dB}_POSIX_SOURCE${ac_dC}1${ac_dD}
+${ac_uA}_POSIX_SOURCE${ac_uB}_POSIX_SOURCE${ac_uC}1${ac_uD}
+${ac_eA}_POSIX_SOURCE${ac_eB}_POSIX_SOURCE${ac_eC}1${ac_eD}
+${ac_dA}_BSD_SOURCE${ac_dB}_BSD_SOURCE${ac_dC}1${ac_dD}
+${ac_uA}_BSD_SOURCE${ac_uB}_BSD_SOURCE${ac_uC}1${ac_uD}
+${ac_eA}_BSD_SOURCE${ac_eB}_BSD_SOURCE${ac_eC}1${ac_eD}
+${ac_dA}_SVID_SOURCE${ac_dB}_SVID_SOURCE${ac_dC}1${ac_dD}
+${ac_uA}_SVID_SOURCE${ac_uB}_SVID_SOURCE${ac_uC}1${ac_uD}
+${ac_eA}_SVID_SOURCE${ac_eB}_SVID_SOURCE${ac_eC}1${ac_eD}
+${ac_dA}THIS_IS_X11R6${ac_dB}THIS_IS_X11R6${ac_dC}1${ac_dD}
+${ac_uA}THIS_IS_X11R6${ac_uB}THIS_IS_X11R6${ac_uC}1${ac_uD}
+${ac_eA}THIS_IS_X11R6${ac_eB}THIS_IS_X11R6${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_XCONVERTCASE${ac_dB}HAVE_XCONVERTCASE${ac_dC}1${ac_dD}
+${ac_uA}HAVE_XCONVERTCASE${ac_uB}HAVE_XCONVERTCASE${ac_uC}1${ac_uD}
+${ac_eA}HAVE_XCONVERTCASE${ac_eB}HAVE_XCONVERTCASE${ac_eC}1${ac_eD}
+${ac_dA}HAVE_X11_XLOCALE_H${ac_dB}HAVE_X11_XLOCALE_H${ac_dC}1${ac_dD}
+${ac_uA}HAVE_X11_XLOCALE_H${ac_uB}HAVE_X11_XLOCALE_H${ac_uC}1${ac_uD}
+${ac_eA}HAVE_X11_XLOCALE_H${ac_eB}HAVE_X11_XLOCALE_H${ac_eC}1${ac_eD}
+${ac_dA}HAVE_XREGISTERIMINSTANTIATECALLBACK${ac_dB}HAVE_XREGISTERIMINSTANTIATECALLBACK${ac_dC}1${ac_dD}
+${ac_uA}HAVE_XREGISTERIMINSTANTIATECALLBACK${ac_uB}HAVE_XREGISTERIMINSTANTIATECALLBACK${ac_uC}1${ac_uD}
+${ac_eA}HAVE_XREGISTERIMINSTANTIATECALLBACK${ac_eB}HAVE_XREGISTERIMINSTANTIATECALLBACK${ac_eC}1${ac_eD}
+${ac_dA}XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE${ac_dB}XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE${ac_dC}1${ac_dD}
+${ac_uA}XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE${ac_uB}XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE${ac_uC}1${ac_uD}
+${ac_eA}XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE${ac_eB}XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_XMU${ac_dB}HAVE_XMU${ac_dC}1${ac_dD}
+${ac_uA}HAVE_XMU${ac_uB}HAVE_XMU${ac_uC}1${ac_uD}
+${ac_eA}HAVE_XMU${ac_eB}HAVE_XMU${ac_eC}1${ac_eD}
+${ac_dA}HAVE_BALLOON_HELP${ac_dB}HAVE_BALLOON_HELP${ac_dC}1${ac_dD}
+${ac_uA}HAVE_BALLOON_HELP${ac_uB}HAVE_BALLOON_HELP${ac_uC}1${ac_uD}
+${ac_eA}HAVE_BALLOON_HELP${ac_eB}HAVE_BALLOON_HELP${ac_eC}1${ac_eD}
+${ac_dA}HAVE_WMCOMMAND${ac_dB}HAVE_WMCOMMAND${ac_dC}1${ac_dD}
+${ac_uA}HAVE_WMCOMMAND${ac_uB}HAVE_WMCOMMAND${ac_uC}1${ac_uD}
+${ac_eA}HAVE_WMCOMMAND${ac_eB}HAVE_WMCOMMAND${ac_eC}1${ac_eD}
+${ac_dA}HAVE_XAUTH${ac_dB}HAVE_XAUTH${ac_dC}1${ac_dD}
+${ac_uA}HAVE_XAUTH${ac_uB}HAVE_XAUTH${ac_uC}1${ac_uD}
+${ac_eA}HAVE_XAUTH${ac_eB}HAVE_XAUTH${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_POSTGRESQL${ac_dB}HAVE_POSTGRESQL${ac_dC}1${ac_dD}
+${ac_uA}HAVE_POSTGRESQL${ac_uB}HAVE_POSTGRESQL${ac_uC}1${ac_uD}
+${ac_eA}HAVE_POSTGRESQL${ac_eB}HAVE_POSTGRESQL${ac_eC}1${ac_eD}
+${ac_dA}HAVE_POSTGRESQLV7${ac_dB}HAVE_POSTGRESQLV7${ac_dC}1${ac_dD}
+${ac_uA}HAVE_POSTGRESQLV7${ac_uB}HAVE_POSTGRESQLV7${ac_uC}1${ac_uD}
+${ac_eA}HAVE_POSTGRESQLV7${ac_eB}HAVE_POSTGRESQLV7${ac_eC}1${ac_eD}
+${ac_dA}LIBPQ_FE_H_FILE${ac_dB}LIBPQ_FE_H_FILE${ac_dC}"postgresql/libpq-fe.h"${ac_dD}
+${ac_uA}LIBPQ_FE_H_FILE${ac_uB}LIBPQ_FE_H_FILE${ac_uC}"postgresql/libpq-fe.h"${ac_uD}
+${ac_eA}LIBPQ_FE_H_FILE${ac_eB}LIBPQ_FE_H_FILE${ac_eC}"postgresql/libpq-fe.h"${ac_eD}
+${ac_dA}HAVE_XPM${ac_dB}HAVE_XPM${ac_dC}1${ac_dD}
+${ac_uA}HAVE_XPM${ac_uB}HAVE_XPM${ac_uC}1${ac_uD}
+${ac_eA}HAVE_XPM${ac_eB}HAVE_XPM${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_GIF${ac_dB}HAVE_GIF${ac_dC}1${ac_dD}
+${ac_uA}HAVE_GIF${ac_uB}HAVE_GIF${ac_uC}1${ac_uD}
+${ac_eA}HAVE_GIF${ac_eB}HAVE_GIF${ac_eC}1${ac_eD}
+${ac_dA}HAVE_JPEG${ac_dB}HAVE_JPEG${ac_dC}1${ac_dD}
+${ac_uA}HAVE_JPEG${ac_uB}HAVE_JPEG${ac_uC}1${ac_uD}
+${ac_eA}HAVE_JPEG${ac_eB}HAVE_JPEG${ac_eC}1${ac_eD}
+${ac_dA}HAVE_PNG${ac_dB}HAVE_PNG${ac_dC}1${ac_dD}
+${ac_uA}HAVE_PNG${ac_uB}HAVE_PNG${ac_uC}1${ac_uD}
+${ac_eA}HAVE_PNG${ac_eB}HAVE_PNG${ac_eC}1${ac_eD}
+${ac_dA}HAVE_TIFF${ac_dB}HAVE_TIFF${ac_dC}1${ac_dD}
+${ac_uA}HAVE_TIFF${ac_uB}HAVE_TIFF${ac_uC}1${ac_uD}
+${ac_eA}HAVE_TIFF${ac_eB}HAVE_TIFF${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}LWLIB_USES_MOTIF${ac_dB}LWLIB_USES_MOTIF${ac_dC}1${ac_dD}
+${ac_uA}LWLIB_USES_MOTIF${ac_uB}LWLIB_USES_MOTIF${ac_uC}1${ac_uD}
+${ac_eA}LWLIB_USES_MOTIF${ac_eB}LWLIB_USES_MOTIF${ac_eC}1${ac_eD}
+${ac_dA}NEED_MOTIF${ac_dB}NEED_MOTIF${ac_dC}1${ac_dD}
+${ac_uA}NEED_MOTIF${ac_uB}NEED_MOTIF${ac_uC}1${ac_uD}
+${ac_eA}NEED_MOTIF${ac_eB}NEED_MOTIF${ac_eC}1${ac_eD}
+${ac_dA}NEED_LUCID${ac_dB}NEED_LUCID${ac_dC}1${ac_dD}
+${ac_uA}NEED_LUCID${ac_uB}NEED_LUCID${ac_uC}1${ac_uD}
+${ac_eA}NEED_LUCID${ac_eB}NEED_LUCID${ac_eC}1${ac_eD}
+${ac_dA}LWLIB_TABS_LUCID${ac_dB}LWLIB_TABS_LUCID${ac_dC}1${ac_dD}
+${ac_uA}LWLIB_TABS_LUCID${ac_uB}LWLIB_TABS_LUCID${ac_uC}1${ac_uD}
+${ac_eA}LWLIB_TABS_LUCID${ac_eB}LWLIB_TABS_LUCID${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_MENUBARS${ac_dB}HAVE_MENUBARS${ac_dC}1${ac_dD}
+${ac_uA}HAVE_MENUBARS${ac_uB}HAVE_MENUBARS${ac_uC}1${ac_uD}
+${ac_eA}HAVE_MENUBARS${ac_eB}HAVE_MENUBARS${ac_eC}1${ac_eD}
+${ac_dA}HAVE_SCROLLBARS${ac_dB}HAVE_SCROLLBARS${ac_dC}1${ac_dD}
+${ac_uA}HAVE_SCROLLBARS${ac_uB}HAVE_SCROLLBARS${ac_uC}1${ac_uD}
+${ac_eA}HAVE_SCROLLBARS${ac_eB}HAVE_SCROLLBARS${ac_eC}1${ac_eD}
+${ac_dA}HAVE_DIALOGS${ac_dB}HAVE_DIALOGS${ac_dC}1${ac_dD}
+${ac_uA}HAVE_DIALOGS${ac_uB}HAVE_DIALOGS${ac_uC}1${ac_uD}
+${ac_eA}HAVE_DIALOGS${ac_eB}HAVE_DIALOGS${ac_eC}1${ac_eD}
+${ac_dA}HAVE_TOOLBARS${ac_dB}HAVE_TOOLBARS${ac_dC}1${ac_dD}
+${ac_uA}HAVE_TOOLBARS${ac_uB}HAVE_TOOLBARS${ac_uC}1${ac_uD}
+${ac_eA}HAVE_TOOLBARS${ac_eB}HAVE_TOOLBARS${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_WIDGETS${ac_dB}HAVE_WIDGETS${ac_dC}1${ac_dD}
+${ac_uA}HAVE_WIDGETS${ac_uB}HAVE_WIDGETS${ac_uC}1${ac_uD}
+${ac_eA}HAVE_WIDGETS${ac_eB}HAVE_WIDGETS${ac_eC}1${ac_eD}
+${ac_dA}LWLIB_MENUBARS_LUCID${ac_dB}LWLIB_MENUBARS_LUCID${ac_dC}1${ac_dD}
+${ac_uA}LWLIB_MENUBARS_LUCID${ac_uB}LWLIB_MENUBARS_LUCID${ac_uC}1${ac_uD}
+${ac_eA}LWLIB_MENUBARS_LUCID${ac_eB}LWLIB_MENUBARS_LUCID${ac_eC}1${ac_eD}
+${ac_dA}LWLIB_SCROLLBARS_LUCID${ac_dB}LWLIB_SCROLLBARS_LUCID${ac_dC}1${ac_dD}
+${ac_uA}LWLIB_SCROLLBARS_LUCID${ac_uB}LWLIB_SCROLLBARS_LUCID${ac_uC}1${ac_uD}
+${ac_eA}LWLIB_SCROLLBARS_LUCID${ac_eB}LWLIB_SCROLLBARS_LUCID${ac_eC}1${ac_eD}
+${ac_dA}LWLIB_DIALOGS_MOTIF${ac_dB}LWLIB_DIALOGS_MOTIF${ac_dC}1${ac_dD}
+${ac_uA}LWLIB_DIALOGS_MOTIF${ac_uB}LWLIB_DIALOGS_MOTIF${ac_uC}1${ac_uD}
+${ac_eA}LWLIB_DIALOGS_MOTIF${ac_eB}LWLIB_DIALOGS_MOTIF${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}LWLIB_WIDGETS_MOTIF${ac_dB}LWLIB_WIDGETS_MOTIF${ac_dC}1${ac_dD}
+${ac_uA}LWLIB_WIDGETS_MOTIF${ac_uB}LWLIB_WIDGETS_MOTIF${ac_uC}1${ac_uD}
+${ac_eA}LWLIB_WIDGETS_MOTIF${ac_eB}LWLIB_WIDGETS_MOTIF${ac_eC}1${ac_eD}
+${ac_dA}MULE${ac_dB}MULE${ac_dC}1${ac_dD}
+${ac_uA}MULE${ac_uB}MULE${ac_uC}1${ac_uD}
+${ac_eA}MULE${ac_eB}MULE${ac_eC}1${ac_eD}
+${ac_dA}FILE_CODING${ac_dB}FILE_CODING${ac_dC}1${ac_dD}
+${ac_uA}FILE_CODING${ac_uB}FILE_CODING${ac_uC}1${ac_uD}
+${ac_eA}FILE_CODING${ac_eB}FILE_CODING${ac_eC}1${ac_eD}
+${ac_dA}HAVE_LIBINTL_H${ac_dB}HAVE_LIBINTL_H${ac_dC}1${ac_dD}
+${ac_uA}HAVE_LIBINTL_H${ac_uB}HAVE_LIBINTL_H${ac_uC}1${ac_uD}
+${ac_eA}HAVE_LIBINTL_H${ac_eB}HAVE_LIBINTL_H${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_XIM${ac_dB}HAVE_XIM${ac_dC}1${ac_dD}
+${ac_uA}HAVE_XIM${ac_uB}HAVE_XIM${ac_uC}1${ac_uD}
+${ac_eA}HAVE_XIM${ac_eB}HAVE_XIM${ac_eC}1${ac_eD}
+${ac_dA}XIM_XLIB${ac_dB}XIM_XLIB${ac_dC}1${ac_dD}
+${ac_uA}XIM_XLIB${ac_uB}XIM_XLIB${ac_uC}1${ac_uD}
+${ac_eA}XIM_XLIB${ac_eB}XIM_XLIB${ac_eC}1${ac_eD}
+${ac_dA}HAVE_CRYPT${ac_dB}HAVE_CRYPT${ac_dC}1${ac_dD}
+${ac_uA}HAVE_CRYPT${ac_uB}HAVE_CRYPT${ac_uC}1${ac_uD}
+${ac_eA}HAVE_CRYPT${ac_eB}HAVE_CRYPT${ac_eC}1${ac_eD}
+${ac_dA}HAVE_WNN${ac_dB}HAVE_WNN${ac_dC}1${ac_dD}
+${ac_uA}HAVE_WNN${ac_uB}HAVE_WNN${ac_uC}1${ac_uD}
+${ac_eA}HAVE_WNN${ac_eB}HAVE_WNN${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_CANNA${ac_dB}HAVE_CANNA${ac_dC}1${ac_dD}
+${ac_uA}HAVE_CANNA${ac_uB}HAVE_CANNA${ac_uC}1${ac_uD}
+${ac_eA}HAVE_CANNA${ac_eB}HAVE_CANNA${ac_eC}1${ac_eD}
+${ac_dA}HAVE_CBRT${ac_dB}HAVE_CBRT${ac_dC}1${ac_dD}
+${ac_uA}HAVE_CBRT${ac_uB}HAVE_CBRT${ac_uC}1${ac_uD}
+${ac_eA}HAVE_CBRT${ac_eB}HAVE_CBRT${ac_eC}1${ac_eD}
+${ac_dA}HAVE_CLOSEDIR${ac_dB}HAVE_CLOSEDIR${ac_dC}1${ac_dD}
+${ac_uA}HAVE_CLOSEDIR${ac_uB}HAVE_CLOSEDIR${ac_uC}1${ac_uD}
+${ac_eA}HAVE_CLOSEDIR${ac_eB}HAVE_CLOSEDIR${ac_eC}1${ac_eD}
+${ac_dA}HAVE_DUP2${ac_dB}HAVE_DUP2${ac_dC}1${ac_dD}
+${ac_uA}HAVE_DUP2${ac_uB}HAVE_DUP2${ac_uC}1${ac_uD}
+${ac_eA}HAVE_DUP2${ac_eB}HAVE_DUP2${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_FMOD${ac_dB}HAVE_FMOD${ac_dC}1${ac_dD}
+${ac_uA}HAVE_FMOD${ac_uB}HAVE_FMOD${ac_uC}1${ac_uD}
+${ac_eA}HAVE_FMOD${ac_eB}HAVE_FMOD${ac_eC}1${ac_eD}
+${ac_dA}HAVE_FPATHCONF${ac_dB}HAVE_FPATHCONF${ac_dC}1${ac_dD}
+${ac_uA}HAVE_FPATHCONF${ac_uB}HAVE_FPATHCONF${ac_uC}1${ac_uD}
+${ac_eA}HAVE_FPATHCONF${ac_eB}HAVE_FPATHCONF${ac_eC}1${ac_eD}
+${ac_dA}HAVE_FREXP${ac_dB}HAVE_FREXP${ac_dC}1${ac_dD}
+${ac_uA}HAVE_FREXP${ac_uB}HAVE_FREXP${ac_uC}1${ac_uD}
+${ac_eA}HAVE_FREXP${ac_eB}HAVE_FREXP${ac_eC}1${ac_eD}
+${ac_dA}HAVE_FTIME${ac_dB}HAVE_FTIME${ac_dC}1${ac_dD}
+${ac_uA}HAVE_FTIME${ac_uB}HAVE_FTIME${ac_uC}1${ac_uD}
+${ac_eA}HAVE_FTIME${ac_eB}HAVE_FTIME${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_GETADDRINFO${ac_dB}HAVE_GETADDRINFO${ac_dC}1${ac_dD}
+${ac_uA}HAVE_GETADDRINFO${ac_uB}HAVE_GETADDRINFO${ac_uC}1${ac_uD}
+${ac_eA}HAVE_GETADDRINFO${ac_eB}HAVE_GETADDRINFO${ac_eC}1${ac_eD}
+${ac_dA}HAVE_GETHOSTNAME${ac_dB}HAVE_GETHOSTNAME${ac_dC}1${ac_dD}
+${ac_uA}HAVE_GETHOSTNAME${ac_uB}HAVE_GETHOSTNAME${ac_uC}1${ac_uD}
+${ac_eA}HAVE_GETHOSTNAME${ac_eB}HAVE_GETHOSTNAME${ac_eC}1${ac_eD}
+${ac_dA}HAVE_GETNAMEINFO${ac_dB}HAVE_GETNAMEINFO${ac_dC}1${ac_dD}
+${ac_uA}HAVE_GETNAMEINFO${ac_uB}HAVE_GETNAMEINFO${ac_uC}1${ac_uD}
+${ac_eA}HAVE_GETNAMEINFO${ac_eB}HAVE_GETNAMEINFO${ac_eC}1${ac_eD}
+${ac_dA}HAVE_GETPAGESIZE${ac_dB}HAVE_GETPAGESIZE${ac_dC}1${ac_dD}
+${ac_uA}HAVE_GETPAGESIZE${ac_uB}HAVE_GETPAGESIZE${ac_uC}1${ac_uD}
+${ac_eA}HAVE_GETPAGESIZE${ac_eB}HAVE_GETPAGESIZE${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_GETTIMEOFDAY${ac_dB}HAVE_GETTIMEOFDAY${ac_dC}1${ac_dD}
+${ac_uA}HAVE_GETTIMEOFDAY${ac_uB}HAVE_GETTIMEOFDAY${ac_uC}1${ac_uD}
+${ac_eA}HAVE_GETTIMEOFDAY${ac_eB}HAVE_GETTIMEOFDAY${ac_eC}1${ac_eD}
+${ac_dA}HAVE_GETCWD${ac_dB}HAVE_GETCWD${ac_dC}1${ac_dD}
+${ac_uA}HAVE_GETCWD${ac_uB}HAVE_GETCWD${ac_uC}1${ac_uD}
+${ac_eA}HAVE_GETCWD${ac_eB}HAVE_GETCWD${ac_eC}1${ac_eD}
+${ac_dA}HAVE_GETWD${ac_dB}HAVE_GETWD${ac_dC}1${ac_dD}
+${ac_uA}HAVE_GETWD${ac_uB}HAVE_GETWD${ac_uC}1${ac_uD}
+${ac_eA}HAVE_GETWD${ac_eB}HAVE_GETWD${ac_eC}1${ac_eD}
+${ac_dA}HAVE_LOGB${ac_dB}HAVE_LOGB${ac_dC}1${ac_dD}
+${ac_uA}HAVE_LOGB${ac_uB}HAVE_LOGB${ac_uC}1${ac_uD}
+${ac_eA}HAVE_LOGB${ac_eB}HAVE_LOGB${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_LRAND48${ac_dB}HAVE_LRAND48${ac_dC}1${ac_dD}
+${ac_uA}HAVE_LRAND48${ac_uB}HAVE_LRAND48${ac_uC}1${ac_uD}
+${ac_eA}HAVE_LRAND48${ac_eB}HAVE_LRAND48${ac_eC}1${ac_eD}
+${ac_dA}HAVE_MATHERR${ac_dB}HAVE_MATHERR${ac_dC}1${ac_dD}
+${ac_uA}HAVE_MATHERR${ac_uB}HAVE_MATHERR${ac_uC}1${ac_uD}
+${ac_eA}HAVE_MATHERR${ac_eB}HAVE_MATHERR${ac_eC}1${ac_eD}
+${ac_dA}HAVE_MKDIR${ac_dB}HAVE_MKDIR${ac_dC}1${ac_dD}
+${ac_uA}HAVE_MKDIR${ac_uB}HAVE_MKDIR${ac_uC}1${ac_uD}
+${ac_eA}HAVE_MKDIR${ac_eB}HAVE_MKDIR${ac_eC}1${ac_eD}
+${ac_dA}HAVE_MKTIME${ac_dB}HAVE_MKTIME${ac_dC}1${ac_dD}
+${ac_uA}HAVE_MKTIME${ac_uB}HAVE_MKTIME${ac_uC}1${ac_uD}
+${ac_eA}HAVE_MKTIME${ac_eB}HAVE_MKTIME${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_PERROR${ac_dB}HAVE_PERROR${ac_dC}1${ac_dD}
+${ac_uA}HAVE_PERROR${ac_uB}HAVE_PERROR${ac_uC}1${ac_uD}
+${ac_eA}HAVE_PERROR${ac_eB}HAVE_PERROR${ac_eC}1${ac_eD}
+${ac_dA}HAVE_POLL${ac_dB}HAVE_POLL${ac_dC}1${ac_dD}
+${ac_uA}HAVE_POLL${ac_uB}HAVE_POLL${ac_uC}1${ac_uD}
+${ac_eA}HAVE_POLL${ac_eB}HAVE_POLL${ac_eC}1${ac_eD}
+${ac_dA}HAVE_RANDOM${ac_dB}HAVE_RANDOM${ac_dC}1${ac_dD}
+${ac_uA}HAVE_RANDOM${ac_uB}HAVE_RANDOM${ac_uC}1${ac_uD}
+${ac_eA}HAVE_RANDOM${ac_eB}HAVE_RANDOM${ac_eC}1${ac_eD}
+${ac_dA}HAVE_RENAME${ac_dB}HAVE_RENAME${ac_dC}1${ac_dD}
+${ac_uA}HAVE_RENAME${ac_uB}HAVE_RENAME${ac_uC}1${ac_uD}
+${ac_eA}HAVE_RENAME${ac_eB}HAVE_RENAME${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_RINT${ac_dB}HAVE_RINT${ac_dC}1${ac_dD}
+${ac_uA}HAVE_RINT${ac_uB}HAVE_RINT${ac_uC}1${ac_uD}
+${ac_eA}HAVE_RINT${ac_eB}HAVE_RINT${ac_eC}1${ac_eD}
+${ac_dA}HAVE_RMDIR${ac_dB}HAVE_RMDIR${ac_dC}1${ac_dD}
+${ac_uA}HAVE_RMDIR${ac_uB}HAVE_RMDIR${ac_uC}1${ac_uD}
+${ac_eA}HAVE_RMDIR${ac_eB}HAVE_RMDIR${ac_eC}1${ac_eD}
+${ac_dA}HAVE_SELECT${ac_dB}HAVE_SELECT${ac_dC}1${ac_dD}
+${ac_uA}HAVE_SELECT${ac_uB}HAVE_SELECT${ac_uC}1${ac_uD}
+${ac_eA}HAVE_SELECT${ac_eB}HAVE_SELECT${ac_eC}1${ac_eD}
+${ac_dA}HAVE_SETITIMER${ac_dB}HAVE_SETITIMER${ac_dC}1${ac_dD}
+${ac_uA}HAVE_SETITIMER${ac_uB}HAVE_SETITIMER${ac_uC}1${ac_uD}
+${ac_eA}HAVE_SETITIMER${ac_eB}HAVE_SETITIMER${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_SETPGID${ac_dB}HAVE_SETPGID${ac_dC}1${ac_dD}
+${ac_uA}HAVE_SETPGID${ac_uB}HAVE_SETPGID${ac_uC}1${ac_uD}
+${ac_eA}HAVE_SETPGID${ac_eB}HAVE_SETPGID${ac_eC}1${ac_eD}
+${ac_dA}HAVE_SETLOCALE${ac_dB}HAVE_SETLOCALE${ac_dC}1${ac_dD}
+${ac_uA}HAVE_SETLOCALE${ac_uB}HAVE_SETLOCALE${ac_uC}1${ac_uD}
+${ac_eA}HAVE_SETLOCALE${ac_eB}HAVE_SETLOCALE${ac_eC}1${ac_eD}
+${ac_dA}HAVE_SETSID${ac_dB}HAVE_SETSID${ac_dC}1${ac_dD}
+${ac_uA}HAVE_SETSID${ac_uB}HAVE_SETSID${ac_uC}1${ac_uD}
+${ac_eA}HAVE_SETSID${ac_eB}HAVE_SETSID${ac_eC}1${ac_eD}
+${ac_dA}HAVE_SIGBLOCK${ac_dB}HAVE_SIGBLOCK${ac_dC}1${ac_dD}
+${ac_uA}HAVE_SIGBLOCK${ac_uB}HAVE_SIGBLOCK${ac_uC}1${ac_uD}
+${ac_eA}HAVE_SIGBLOCK${ac_eB}HAVE_SIGBLOCK${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_SIGHOLD${ac_dB}HAVE_SIGHOLD${ac_dC}1${ac_dD}
+${ac_uA}HAVE_SIGHOLD${ac_uB}HAVE_SIGHOLD${ac_uC}1${ac_uD}
+${ac_eA}HAVE_SIGHOLD${ac_eB}HAVE_SIGHOLD${ac_eC}1${ac_eD}
+${ac_dA}HAVE_SIGPROCMASK${ac_dB}HAVE_SIGPROCMASK${ac_dC}1${ac_dD}
+${ac_uA}HAVE_SIGPROCMASK${ac_uB}HAVE_SIGPROCMASK${ac_uC}1${ac_uD}
+${ac_eA}HAVE_SIGPROCMASK${ac_eB}HAVE_SIGPROCMASK${ac_eC}1${ac_eD}
+${ac_dA}HAVE_SNPRINTF${ac_dB}HAVE_SNPRINTF${ac_dC}1${ac_dD}
+${ac_uA}HAVE_SNPRINTF${ac_uB}HAVE_SNPRINTF${ac_uC}1${ac_uD}
+${ac_eA}HAVE_SNPRINTF${ac_eB}HAVE_SNPRINTF${ac_eC}1${ac_eD}
+${ac_dA}HAVE_STPCPY${ac_dB}HAVE_STPCPY${ac_dC}1${ac_dD}
+${ac_uA}HAVE_STPCPY${ac_uB}HAVE_STPCPY${ac_uC}1${ac_uD}
+${ac_eA}HAVE_STPCPY${ac_eB}HAVE_STPCPY${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_STRERROR${ac_dB}HAVE_STRERROR${ac_dC}1${ac_dD}
+${ac_uA}HAVE_STRERROR${ac_uB}HAVE_STRERROR${ac_uC}1${ac_uD}
+${ac_eA}HAVE_STRERROR${ac_eB}HAVE_STRERROR${ac_eC}1${ac_eD}
+${ac_dA}HAVE_TZSET${ac_dB}HAVE_TZSET${ac_dC}1${ac_dD}
+${ac_uA}HAVE_TZSET${ac_uB}HAVE_TZSET${ac_uC}1${ac_uD}
+${ac_eA}HAVE_TZSET${ac_eB}HAVE_TZSET${ac_eC}1${ac_eD}
+${ac_dA}HAVE_ULIMIT${ac_dB}HAVE_ULIMIT${ac_dC}1${ac_dD}
+${ac_uA}HAVE_ULIMIT${ac_uB}HAVE_ULIMIT${ac_uC}1${ac_uD}
+${ac_eA}HAVE_ULIMIT${ac_eB}HAVE_ULIMIT${ac_eC}1${ac_eD}
+${ac_dA}HAVE_USLEEP${ac_dB}HAVE_USLEEP${ac_dC}1${ac_dD}
+${ac_uA}HAVE_USLEEP${ac_uB}HAVE_USLEEP${ac_uC}1${ac_uD}
+${ac_eA}HAVE_USLEEP${ac_eB}HAVE_USLEEP${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_WAITPID${ac_dB}HAVE_WAITPID${ac_dC}1${ac_dD}
+${ac_uA}HAVE_WAITPID${ac_uB}HAVE_WAITPID${ac_uC}1${ac_uD}
+${ac_eA}HAVE_WAITPID${ac_eB}HAVE_WAITPID${ac_eC}1${ac_eD}
+${ac_dA}HAVE_VSNPRINTF${ac_dB}HAVE_VSNPRINTF${ac_dC}1${ac_dD}
+${ac_uA}HAVE_VSNPRINTF${ac_uB}HAVE_VSNPRINTF${ac_uC}1${ac_uD}
+${ac_eA}HAVE_VSNPRINTF${ac_eB}HAVE_VSNPRINTF${ac_eC}1${ac_eD}
+${ac_dA}HAVE_FSYNC${ac_dB}HAVE_FSYNC${ac_dC}1${ac_dD}
+${ac_uA}HAVE_FSYNC${ac_uB}HAVE_FSYNC${ac_uC}1${ac_uD}
+${ac_eA}HAVE_FSYNC${ac_eB}HAVE_FSYNC${ac_eC}1${ac_eD}
+${ac_dA}HAVE_FTRUNCATE${ac_dB}HAVE_FTRUNCATE${ac_dC}1${ac_dD}
+${ac_uA}HAVE_FTRUNCATE${ac_uB}HAVE_FTRUNCATE${ac_uC}1${ac_uD}
+${ac_eA}HAVE_FTRUNCATE${ac_eB}HAVE_FTRUNCATE${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_UMASK${ac_dB}HAVE_UMASK${ac_dC}1${ac_dD}
+${ac_uA}HAVE_UMASK${ac_uB}HAVE_UMASK${ac_uC}1${ac_uD}
+${ac_eA}HAVE_UMASK${ac_eB}HAVE_UMASK${ac_eC}1${ac_eD}
+${ac_dA}HAVE_GETPT${ac_dB}HAVE_GETPT${ac_dC}1${ac_dD}
+${ac_uA}HAVE_GETPT${ac_uB}HAVE_GETPT${ac_uC}1${ac_uD}
+${ac_eA}HAVE_GETPT${ac_eB}HAVE_GETPT${ac_eC}1${ac_eD}
+${ac_dA}HAVE_GRANTPT${ac_dB}HAVE_GRANTPT${ac_dC}1${ac_dD}
+${ac_uA}HAVE_GRANTPT${ac_uB}HAVE_GRANTPT${ac_uC}1${ac_uD}
+${ac_eA}HAVE_GRANTPT${ac_eB}HAVE_GRANTPT${ac_eC}1${ac_eD}
+${ac_dA}HAVE_UNLOCKPT${ac_dB}HAVE_UNLOCKPT${ac_dC}1${ac_dD}
+${ac_uA}HAVE_UNLOCKPT${ac_uB}HAVE_UNLOCKPT${ac_uC}1${ac_uD}
+${ac_eA}HAVE_UNLOCKPT${ac_eB}HAVE_UNLOCKPT${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_PTSNAME${ac_dB}HAVE_PTSNAME${ac_dC}1${ac_dD}
+${ac_uA}HAVE_PTSNAME${ac_uB}HAVE_PTSNAME${ac_uC}1${ac_uD}
+${ac_eA}HAVE_PTSNAME${ac_eB}HAVE_PTSNAME${ac_eC}1${ac_eD}
+${ac_dA}HAVE_KILLPG${ac_dB}HAVE_KILLPG${ac_dC}1${ac_dD}
+${ac_uA}HAVE_KILLPG${ac_uB}HAVE_KILLPG${ac_uC}1${ac_uD}
+${ac_eA}HAVE_KILLPG${ac_eB}HAVE_KILLPG${ac_eC}1${ac_eD}
+${ac_dA}HAVE_TCGETPGRP${ac_dB}HAVE_TCGETPGRP${ac_dC}1${ac_dD}
+${ac_uA}HAVE_TCGETPGRP${ac_uB}HAVE_TCGETPGRP${ac_uC}1${ac_uD}
+${ac_eA}HAVE_TCGETPGRP${ac_eB}HAVE_TCGETPGRP${ac_eC}1${ac_eD}
+${ac_dA}HAVE_OPENPTY${ac_dB}HAVE_OPENPTY${ac_dC}1${ac_dD}
+${ac_uA}HAVE_OPENPTY${ac_uB}HAVE_OPENPTY${ac_uC}1${ac_uD}
+${ac_eA}HAVE_OPENPTY${ac_eB}HAVE_OPENPTY${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_PTY_H${ac_dB}HAVE_PTY_H${ac_dC}1${ac_dD}
+${ac_uA}HAVE_PTY_H${ac_uB}HAVE_PTY_H${ac_uC}1${ac_uD}
+${ac_eA}HAVE_PTY_H${ac_eB}HAVE_PTY_H${ac_eC}1${ac_eD}
+${ac_dA}HAVE_STROPTS_H${ac_dB}HAVE_STROPTS_H${ac_dC}1${ac_dD}
+${ac_uA}HAVE_STROPTS_H${ac_uB}HAVE_STROPTS_H${ac_uC}1${ac_uD}
+${ac_eA}HAVE_STROPTS_H${ac_eB}HAVE_STROPTS_H${ac_eC}1${ac_eD}
+${ac_dA}HAVE_ISASTREAM${ac_dB}HAVE_ISASTREAM${ac_dC}1${ac_dD}
+${ac_uA}HAVE_ISASTREAM${ac_uB}HAVE_ISASTREAM${ac_uC}1${ac_uD}
+${ac_eA}HAVE_ISASTREAM${ac_eB}HAVE_ISASTREAM${ac_eC}1${ac_eD}
+${ac_dA}HAVE_GETLOADAVG${ac_dB}HAVE_GETLOADAVG${ac_dC}1${ac_dD}
+${ac_uA}HAVE_GETLOADAVG${ac_uB}HAVE_GETLOADAVG${ac_uC}1${ac_uD}
+${ac_eA}HAVE_GETLOADAVG${ac_eB}HAVE_GETLOADAVG${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_H_ERRNO${ac_dB}HAVE_H_ERRNO${ac_dC}1${ac_dD}
+${ac_uA}HAVE_H_ERRNO${ac_uB}HAVE_H_ERRNO${ac_uC}1${ac_uD}
+${ac_eA}HAVE_H_ERRNO${ac_eB}HAVE_H_ERRNO${ac_eC}1${ac_eD}
+${ac_dA}HAVE_SIGSETJMP${ac_dB}HAVE_SIGSETJMP${ac_dC}1${ac_dD}
+${ac_uA}HAVE_SIGSETJMP${ac_uB}HAVE_SIGSETJMP${ac_uC}1${ac_uD}
+${ac_eA}HAVE_SIGSETJMP${ac_eB}HAVE_SIGSETJMP${ac_eC}1${ac_eD}
+${ac_dA}HAVE_ALLOCA_H${ac_dB}HAVE_ALLOCA_H${ac_dC}1${ac_dD}
+${ac_uA}HAVE_ALLOCA_H${ac_uB}HAVE_ALLOCA_H${ac_uC}1${ac_uD}
+${ac_eA}HAVE_ALLOCA_H${ac_eB}HAVE_ALLOCA_H${ac_eC}1${ac_eD}
+${ac_dA}HAVE_ALLOCA${ac_dB}HAVE_ALLOCA${ac_dC}1${ac_dD}
+${ac_uA}HAVE_ALLOCA${ac_uB}HAVE_ALLOCA${ac_uC}1${ac_uD}
+${ac_eA}HAVE_ALLOCA${ac_eB}HAVE_ALLOCA${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_STRCOLL${ac_dB}HAVE_STRCOLL${ac_dC}1${ac_dD}
+${ac_uA}HAVE_STRCOLL${ac_uB}HAVE_STRCOLL${ac_uC}1${ac_uD}
+${ac_eA}HAVE_STRCOLL${ac_eB}HAVE_STRCOLL${ac_eC}1${ac_eD}
+${ac_dA}HAVE_GETPGRP${ac_dB}HAVE_GETPGRP${ac_dC}1${ac_dD}
+${ac_uA}HAVE_GETPGRP${ac_uB}HAVE_GETPGRP${ac_uC}1${ac_uD}
+${ac_eA}HAVE_GETPGRP${ac_eB}HAVE_GETPGRP${ac_eC}1${ac_eD}
+${ac_dA}GETPGRP_VOID${ac_dB}GETPGRP_VOID${ac_dC}1${ac_dD}
+${ac_uA}GETPGRP_VOID${ac_uB}GETPGRP_VOID${ac_uC}1${ac_uD}
+${ac_eA}GETPGRP_VOID${ac_eB}GETPGRP_VOID${ac_eC}1${ac_eD}
+${ac_dA}HAVE_MMAP${ac_dB}HAVE_MMAP${ac_dC}1${ac_dD}
+${ac_uA}HAVE_MMAP${ac_uB}HAVE_MMAP${ac_uC}1${ac_uD}
+${ac_eA}HAVE_MMAP${ac_eB}HAVE_MMAP${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_TERMIOS${ac_dB}HAVE_TERMIOS${ac_dC}1${ac_dD}
+${ac_uA}HAVE_TERMIOS${ac_uB}HAVE_TERMIOS${ac_uC}1${ac_uD}
+${ac_eA}HAVE_TERMIOS${ac_eB}HAVE_TERMIOS${ac_eC}1${ac_eD}
+${ac_dA}SIGNALS_VIA_CHARACTERS${ac_dB}SIGNALS_VIA_CHARACTERS${ac_dC}1${ac_dD}
+${ac_uA}SIGNALS_VIA_CHARACTERS${ac_uB}SIGNALS_VIA_CHARACTERS${ac_uC}1${ac_uD}
+${ac_eA}SIGNALS_VIA_CHARACTERS${ac_eB}SIGNALS_VIA_CHARACTERS${ac_eC}1${ac_eD}
+${ac_dA}NO_TERMIO${ac_dB}NO_TERMIO${ac_dC}1${ac_dD}
+${ac_uA}NO_TERMIO${ac_uB}NO_TERMIO${ac_uC}1${ac_uD}
+${ac_eA}NO_TERMIO${ac_eB}NO_TERMIO${ac_eC}1${ac_eD}
+${ac_dA}HAVE_SOCKETS${ac_dB}HAVE_SOCKETS${ac_dC}1${ac_dD}
+${ac_uA}HAVE_SOCKETS${ac_uB}HAVE_SOCKETS${ac_uC}1${ac_uD}
+${ac_eA}HAVE_SOCKETS${ac_eB}HAVE_SOCKETS${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_MULTICAST${ac_dB}HAVE_MULTICAST${ac_dC}1${ac_dD}
+${ac_uA}HAVE_MULTICAST${ac_uB}HAVE_MULTICAST${ac_uC}1${ac_uD}
+${ac_eA}HAVE_MULTICAST${ac_eB}HAVE_MULTICAST${ac_eC}1${ac_eD}
+${ac_dA}HAVE_SYSVIPC${ac_dB}HAVE_SYSVIPC${ac_dC}1${ac_dD}
+${ac_uA}HAVE_SYSVIPC${ac_uB}HAVE_SYSVIPC${ac_uC}1${ac_uD}
+${ac_eA}HAVE_SYSVIPC${ac_eB}HAVE_SYSVIPC${ac_eC}1${ac_eD}
+${ac_dA}SYSV_SYSTEM_DIR${ac_dB}SYSV_SYSTEM_DIR${ac_dC}1${ac_dD}
+${ac_uA}SYSV_SYSTEM_DIR${ac_uB}SYSV_SYSTEM_DIR${ac_uC}1${ac_uD}
+${ac_eA}SYSV_SYSTEM_DIR${ac_eB}SYSV_SYSTEM_DIR${ac_eC}1${ac_eD}
+${ac_dA}SOUNDCARD_H_FILE${ac_dB}SOUNDCARD_H_FILE${ac_dC}"sys/soundcard.h"${ac_dD}
+${ac_uA}SOUNDCARD_H_FILE${ac_uB}SOUNDCARD_H_FILE${ac_uC}"sys/soundcard.h"${ac_uD}
+${ac_eA}SOUNDCARD_H_FILE${ac_eB}SOUNDCARD_H_FILE${ac_eC}"sys/soundcard.h"${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_NATIVE_SOUND${ac_dB}HAVE_NATIVE_SOUND${ac_dC}1${ac_dD}
+${ac_uA}HAVE_NATIVE_SOUND${ac_uB}HAVE_NATIVE_SOUND${ac_uC}1${ac_uD}
+${ac_eA}HAVE_NATIVE_SOUND${ac_eB}HAVE_NATIVE_SOUND${ac_eC}1${ac_eD}
+${ac_dA}HAVE_NAS_SOUND${ac_dB}HAVE_NAS_SOUND${ac_dC}1${ac_dD}
+${ac_uA}HAVE_NAS_SOUND${ac_uB}HAVE_NAS_SOUND${ac_uC}1${ac_uD}
+${ac_eA}HAVE_NAS_SOUND${ac_eB}HAVE_NAS_SOUND${ac_eC}1${ac_eD}
+${ac_dA}HAVE_ESD_SOUND${ac_dB}HAVE_ESD_SOUND${ac_dC}1${ac_dD}
+${ac_uA}HAVE_ESD_SOUND${ac_uB}HAVE_ESD_SOUND${ac_uC}1${ac_uD}
+${ac_eA}HAVE_ESD_SOUND${ac_eB}HAVE_ESD_SOUND${ac_eC}1${ac_eD}
+${ac_dA}HAVE_TTY${ac_dB}HAVE_TTY${ac_dC}1${ac_dD}
+${ac_uA}HAVE_TTY${ac_uB}HAVE_TTY${ac_uC}1${ac_uD}
+${ac_eA}HAVE_TTY${ac_eB}HAVE_TTY${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_NCURSES${ac_dB}HAVE_NCURSES${ac_dC}1${ac_dD}
+${ac_uA}HAVE_NCURSES${ac_uB}HAVE_NCURSES${ac_uC}1${ac_uD}
+${ac_eA}HAVE_NCURSES${ac_eB}HAVE_NCURSES${ac_eC}1${ac_eD}
+${ac_dA}CURSES_H_FILE${ac_dB}CURSES_H_FILE${ac_dC}"curses.h"${ac_dD}
+${ac_uA}CURSES_H_FILE${ac_uB}CURSES_H_FILE${ac_uC}"curses.h"${ac_uD}
+${ac_eA}CURSES_H_FILE${ac_eB}CURSES_H_FILE${ac_eC}"curses.h"${ac_eD}
+${ac_dA}TERM_H_FILE${ac_dB}TERM_H_FILE${ac_dC}"term.h"${ac_dD}
+${ac_uA}TERM_H_FILE${ac_uB}TERM_H_FILE${ac_uC}"term.h"${ac_uD}
+${ac_eA}TERM_H_FILE${ac_eB}TERM_H_FILE${ac_eC}"term.h"${ac_eD}
+${ac_dA}HAVE_GPM${ac_dB}HAVE_GPM${ac_dC}1${ac_dD}
+${ac_uA}HAVE_GPM${ac_uB}HAVE_GPM${ac_uC}1${ac_uD}
+${ac_eA}HAVE_GPM${ac_eB}HAVE_GPM${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}DB_H_FILE${ac_dB}DB_H_FILE${ac_dC}"db.h"${ac_dD}
+${ac_uA}DB_H_FILE${ac_uB}DB_H_FILE${ac_uC}"db.h"${ac_uD}
+${ac_eA}DB_H_FILE${ac_eB}DB_H_FILE${ac_eC}"db.h"${ac_eD}
+${ac_dA}HAVE_BERKELEY_DB${ac_dB}HAVE_BERKELEY_DB${ac_dC}1${ac_dD}
+${ac_uA}HAVE_BERKELEY_DB${ac_uB}HAVE_BERKELEY_DB${ac_uC}1${ac_uD}
+${ac_eA}HAVE_BERKELEY_DB${ac_eB}HAVE_BERKELEY_DB${ac_eC}1${ac_eD}
+${ac_dA}HAVE_DATABASE${ac_dB}HAVE_DATABASE${ac_dC}1${ac_dD}
+${ac_uA}HAVE_DATABASE${ac_uB}HAVE_DATABASE${ac_uC}1${ac_uD}
+${ac_eA}HAVE_DATABASE${ac_eB}HAVE_DATABASE${ac_eC}1${ac_eD}
+${ac_dA}HAVE_DLOPEN${ac_dB}HAVE_DLOPEN${ac_dC}1${ac_dD}
+${ac_uA}HAVE_DLOPEN${ac_uB}HAVE_DLOPEN${ac_uC}1${ac_uD}
+${ac_eA}HAVE_DLOPEN${ac_eB}HAVE_DLOPEN${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}HAVE_SHLIB${ac_dB}HAVE_SHLIB${ac_dC}1${ac_dD}
+${ac_uA}HAVE_SHLIB${ac_uB}HAVE_SHLIB${ac_uC}1${ac_uD}
+${ac_eA}HAVE_SHLIB${ac_eB}HAVE_SHLIB${ac_eC}1${ac_eD}
+${ac_dA}HAVE_DLERROR${ac_dB}HAVE_DLERROR${ac_dC}1${ac_dD}
+${ac_uA}HAVE_DLERROR${ac_uB}HAVE_DLERROR${ac_uC}1${ac_uD}
+${ac_eA}HAVE_DLERROR${ac_eB}HAVE_DLERROR${ac_eC}1${ac_eD}
+${ac_dA}HAVE_UNIX_PROCESSES${ac_dB}HAVE_UNIX_PROCESSES${ac_dC}1${ac_dD}
+${ac_uA}HAVE_UNIX_PROCESSES${ac_uB}HAVE_UNIX_PROCESSES${ac_uC}1${ac_uD}
+${ac_eA}HAVE_UNIX_PROCESSES${ac_eB}HAVE_UNIX_PROCESSES${ac_eC}1${ac_eD}
+${ac_dA}PREFIX_USER_DEFINED${ac_dB}PREFIX_USER_DEFINED${ac_dC}1${ac_dD}
+${ac_uA}PREFIX_USER_DEFINED${ac_uB}PREFIX_USER_DEFINED${ac_uC}1${ac_uD}
+${ac_eA}PREFIX_USER_DEFINED${ac_eB}PREFIX_USER_DEFINED${ac_eC}1${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}INHIBIT_SITE_LISP${ac_dB}INHIBIT_SITE_LISP${ac_dC}1${ac_dD}
+${ac_uA}INHIBIT_SITE_LISP${ac_uB}INHIBIT_SITE_LISP${ac_uC}1${ac_uD}
+${ac_eA}INHIBIT_SITE_LISP${ac_eB}INHIBIT_SITE_LISP${ac_eC}1${ac_eD}
+${ac_dA}EMACS_CONFIGURATION${ac_dB}EMACS_CONFIGURATION${ac_dC}"i686-pc-linux"${ac_dD}
+${ac_uA}EMACS_CONFIGURATION${ac_uB}EMACS_CONFIGURATION${ac_uC}"i686-pc-linux"${ac_uD}
+${ac_eA}EMACS_CONFIGURATION${ac_eB}EMACS_CONFIGURATION${ac_eC}"i686-pc-linux"${ac_eD}
+${ac_dA}EMACS_CONFIG_OPTIONS${ac_dB}EMACS_CONFIG_OPTIONS${ac_dC}"--with-mule"${ac_dD}
+${ac_uA}EMACS_CONFIG_OPTIONS${ac_uB}EMACS_CONFIG_OPTIONS${ac_uC}"--with-mule"${ac_uD}
+${ac_eA}EMACS_CONFIG_OPTIONS${ac_eB}EMACS_CONFIG_OPTIONS${ac_eC}"--with-mule"${ac_eD}
+${ac_dA}LD_SWITCH_X_SITE${ac_dB}LD_SWITCH_X_SITE${ac_dC}${ac_dD}
+${ac_uA}LD_SWITCH_X_SITE${ac_uB}LD_SWITCH_X_SITE${ac_uC}${ac_uD}
+${ac_eA}LD_SWITCH_X_SITE${ac_eB}LD_SWITCH_X_SITE${ac_eC}${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}LD_SWITCH_X_SITE_AUX${ac_dB}LD_SWITCH_X_SITE_AUX${ac_dC}${ac_dD}
+${ac_uA}LD_SWITCH_X_SITE_AUX${ac_uB}LD_SWITCH_X_SITE_AUX${ac_uC}${ac_uD}
+${ac_eA}LD_SWITCH_X_SITE_AUX${ac_eB}LD_SWITCH_X_SITE_AUX${ac_eC}${ac_eD}
+${ac_dA}C_SWITCH_X_SITE${ac_dB}C_SWITCH_X_SITE${ac_dC}${ac_dD}
+${ac_uA}C_SWITCH_X_SITE${ac_uB}C_SWITCH_X_SITE${ac_uC}${ac_uD}
+${ac_eA}C_SWITCH_X_SITE${ac_eB}C_SWITCH_X_SITE${ac_eC}${ac_eD}
+${ac_dA}LD_SWITCH_SITE${ac_dB}LD_SWITCH_SITE${ac_dC}${ac_dD}
+${ac_uA}LD_SWITCH_SITE${ac_uB}LD_SWITCH_SITE${ac_uC}${ac_uD}
+${ac_eA}LD_SWITCH_SITE${ac_eB}LD_SWITCH_SITE${ac_eC}${ac_eD}
+${ac_dA}C_SWITCH_SITE${ac_dB}C_SWITCH_SITE${ac_dC}${ac_dD}
+${ac_uA}C_SWITCH_SITE${ac_uB}C_SWITCH_SITE${ac_uC}${ac_uD}
+${ac_eA}C_SWITCH_SITE${ac_eB}C_SWITCH_SITE${ac_eC}${ac_eD}
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  cat > conftest.frag <<CEOF
+${ac_dA}GNU_MALLOC${ac_dB}GNU_MALLOC${ac_dC}1${ac_dD}
+${ac_uA}GNU_MALLOC${ac_uB}GNU_MALLOC${ac_uC}1${ac_uD}
+${ac_eA}GNU_MALLOC${ac_eB}GNU_MALLOC${ac_eC}1${ac_eD}
+${ac_dA}USE_GCC${ac_dB}USE_GCC${ac_dC}1${ac_dD}
+${ac_uA}USE_GCC${ac_uB}USE_GCC${ac_uC}1${ac_uD}
+${ac_eA}USE_GCC${ac_eB}USE_GCC${ac_eC}1${ac_eD}
+s%^[ 	]*#[ 	]*undef[ 	][ 	]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
+CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+
+  rm -f conftest.frag conftest.h
+  echo "/* $ac_file.  Generated automatically by configure.  */" > conftest.h
+  cat conftest.in >> conftest.h
+  rm -f conftest.in
+  if cmp -s $ac_file conftest.h 2>/dev/null; then
+    echo "$ac_file is unchanged"
+    rm -f conftest.h
+  else
+    # Remove last slash and all that follows it.  Not all systems have dirname.
+      ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+      if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+      # The file is in a subdirectory.
+      test ! -d "$ac_dir" && mkdir "$ac_dir"
+    fi
+    rm -f $ac_file
+    mv conftest.h $ac_file
+  fi
+fi; done
+
+CPP="gcc -E"
+ top_srcdir="/playpen/mozilla/XEmacs/xemacs-21.5.3"
+ MAKE_SUBDIR=" lib-src lwlib src"
+
+for dir in . $MAKE_SUBDIR; do
+  (
+    cd $dir
+    rm -f junk.c
+    < Makefile.in \
+      sed -e '/^# Generated/d' \
+          -e 's%/\*\*/#.*%%' \
+          -e 's/^ *# */#/' \
+          -e '/^##/d' \
+          -e '/^#/ {
+p
+d
+}'        \
+	  -e '/./ {
+s/\([\"]\)/\\\1/g
+s/^/"/
+s/$/"/
+}'  > junk.c;
+
+
+
+    echo creating $dir/Makefile
+$CPP -I. -I${top_srcdir}/src  junk.c \
+  | sed -e 's/^\#.*//'		\
+	-e 's/^[ 	][ 	]*$//'\
+	-e 's/^ /	/'		\
+	-e '/^[ ]*$/d'	\
+	-e '/^\"/ {
+	s/\\\([\"]\)/\1/g
+	s/^[ 	]*\"//
+	s/\"[ 	]*$//
+}' > Makefile.new
+    chmod 444 Makefile.new
+    mv -f Makefile.new Makefile
+
+    echo creating $dir/GNUmakefile
+$CPP -I. -I${top_srcdir}/src -DUSE_GNU_MAKE junk.c \
+  | sed -e 's/^\#.*//'		\
+	-e 's/^[ 	][ 	]*$//'\
+	-e 's/^ /	/'		\
+	-e '/^[ ]*$/d'	\
+	-e '/^\"/ {
+	s/\\\([\"]\)/\1/g
+	s/^[ 	]*\"//
+	s/\"[ 	]*$//
+}' > Makefile.new
+    chmod 444 Makefile.new
+    mv -f Makefile.new GNUmakefile
+
+    rm -f junk.c
+  )
+done
+
+sed < config.status >> lib-src/config.values \
+  -e '/{ac_dA}.*{ac_dB}.*{ac_dC}.*{ac_dD}$/!d' \
+  -e 's/\${ac_dA}\(.*\)\${ac_dB}.*\${ac_dC}\(.*\)\${ac_dD}/\1 \2/' \
+  -e 's/^\([^ ]*\) $/\1 ""/' \
+  -e 's/ 1$/ t/'
+
+
+exit 0
diff --text -u 'xemacs-21.5.2/configure.usage' 'xemacs-21.5.3/configure.usage'
Index: ././configure.usage
--- ././configure.usage	Thu Jun  7 15:37:25 2001
+++ ././configure.usage	Thu Aug  2 03:59:04 2001
@@ -77,15 +77,16 @@
                         *WARNING*  The Motif menubar is currently broken.
 --with-scrollbars=TYPE  Use TYPE scrollbars
                         (lucid, motif, athena, or no).
---with-dialogs=TYPE     Use TYPE dialog boxes (motif, athena, or no).
+--with-dialogs=TYPE     Use TYPE dialog boxes (lucid, motif, athena, or no).
                         Lucid menubars and scrollbars are the default.
                         Motif dialog boxes will be used if Motif can be found.
---with-widgets=TYPE     Use TYPE widgets (motif, athena, or no).
+--with-widgets=TYPE     Use TYPE widgets (lucid, motif, athena, or no).
                         Motif widgets will be used if Motif can be found.
                         Other widget types are currently unsupported.
 --with-dragndrop        Compile in the generic drag and drop API. This is
                         automatically added if one of the drag and drop
-                        protocols is found (currently CDE, OffiX, MSWindows).
+                        protocols is found (currently CDE, OffiX, MSWindows,
+                        and GTK).
                         *WARNING*  The Drag'n'drop support is under development
                                    and is considered experimental.
 --with-cde              Compile in support for CDE drag and drop.
@@ -154,7 +155,7 @@
 
 --mail-locking=TYPE (*) Specify the locking to be used by movemail to prevent
                         concurrent updates of mail spool files. Valid types
-                        are `lockf', `flock', and `dot'.
+                        are `lockf', `flock', `dot', `locking' or `mmdf'.
 --with-pop              Support POP for mail retrieval.
 --with-kerberos         Support Kerberos-authenticated POP.
 --with-hesiod           Support Hesiod to get the POP server host.
diff --text -u 'xemacs-21.5.2/etc/BETA' 'xemacs-21.5.3/etc/BETA'
Index: ././etc/BETA
--- ././etc/BETA	Fri Apr 13 03:20:44 2001
+++ ././etc/BETA	Thu Aug 23 06:03:16 2001
@@ -197,7 +197,18 @@
 
 After you have verified that you have a functional editor, fire up
 your favorite mail program and send a build report to
-xemacs-build-reports@xemacs.org.  The build report should include
+xemacs-build-reports@xemacs.org.
+
+Preferrably this is done from XEmacs, following these simple steps:
+
+M-x customize-group RET build-report RET
+M-x build-report RET
+
+See also
+http://www.xemacs.org/Releases/Public-21.2/tester.html#reporting
+
+If you create the report manually by other means, here is what the
+build report should include:
 
 1. Your hardware configuration (OS version, etc.)
 
diff --text -u 'xemacs-21.5.2/lib-src/ChangeLog' 'xemacs-21.5.3/lib-src/ChangeLog'
Index: ././lib-src/ChangeLog
--- ././lib-src/ChangeLog	Sat Jul 28 16:48:22 2001
+++ ././lib-src/ChangeLog	Fri Sep  7 18:13:25 2001
@@ -1,3 +1,22 @@
+2001-09-07  Stephen J. Turnbull  <stephen@xemacs.org>
+
+	* XEmacs 21.5.3 "asparagus" is released.
+
+2001-06-24  Ben Wing  <ben@xemacs.org>
+
+	* gnuserv.c (permitted):
+	* gnuserv.c (setup_table):
+	* gnuslib.c (connect_to_internet_server):
+	* make-docfile.c (scan_c_file):
+	* mmencode.c (fromqp):
+	* movemail.c:
+	* movemail.c (main):
+	* movemail.c (xmalloc):
+	* ootags.c (prolog_pred):
+	* ootags.c (erlang_func):
+	* yow.c (yow):
+	Fix unsigned warnings.  See src/ChangeLog for details.
+
 2001-07-28  Stephen J. Turnbull  <stephen@xemacs.org>
 
 	* XEmacs 21.5.2 "artichoke" is released.
diff --text -u /dev/null 'xemacs-21.5.3/lib-src/DOC'
Index: ././lib-src/DOC
--- ././lib-src/DOC	Thu Jan  1 09:00:00 1970
+++ ././lib-src/DOC	Fri Sep  7 18:26:44 2001
@@ -0,0 +1,26894 @@
+Fexpand-abbrev
+Expand the abbrev before point, if any.
+Effective when explicitly called even when `abbrev-mode' is nil.
+Returns the abbrev symbol, if expansion took place.
+If no abbrev matched, but `pre-abbrev-expand-hook' changed the buffer,
+ returns t.
+
+arguments: ()
+Vglobal-abbrev-table
+The abbrev table whose abbrevs affect all buffers.
+Each buffer may also have a local abbrev table.
+If it does, the local table overrides the global one
+for any particular abbrev defined in both.Vlast-abbrev
+The abbrev-symbol of the last abbrev expanded.
+See the function `abbrev-symbol'.Vlast-abbrev-text
+The exact text of the last abbrev expanded.
+nil if the abbrev has already been unexpanded.Vlast-abbrev-location
+The location of the start of the last abbrev expanded.Vabbrev-start-location
+Buffer position for `expand-abbrev' to use as the start of the abbrev.
+nil means use the word before point as the abbrev.
+Calling `expand-abbrev' sets this to nil.Vabbrev-start-location-buffer
+Buffer that `abbrev-start-location' has been set for.
+Trying to expand an abbrev in any other buffer clears `abbrev-start-location'.Vabbrev-all-caps
+*Non-nil means expand multi-word abbrevs all caps if abbrev was so.Vpre-abbrev-expand-hook
+Function or functions to be called before abbrev expansion is done.
+This is the first thing that `expand-abbrev' does, and so this may change
+the current abbrev table before abbrev lookup happens.Fcons
+Create a new cons, give it CAR and CDR as components, and return it.
+
+arguments: (CAR CDR)
+Flist
+Return a newly created list with specified arguments as elements.
+Any number of arguments, even zero arguments, are allowed.Fmake-list
+Return a new list of length LENGTH, with each element being OBJECT.
+
+arguments: (LENGTH OBJECT)
+Fmake-vector
+Return a new vector of length LENGTH, with each element being OBJECT.
+See also the function `vector'.
+
+arguments: (LENGTH OBJECT)
+Fvector
+Return a newly created vector with specified arguments as elements.
+Any number of arguments, even zero arguments, are allowed.Fmake-bit-vector
+Return a new bit vector of length LENGTH. with each bit set to BIT.
+BIT must be one of the integers 0 or 1.  See also the function `bit-vector'.
+
+arguments: (LENGTH BIT)
+Fbit-vector
+Return a newly created bit vector with specified arguments as elements.
+Any number of arguments, even zero arguments, are allowed.
+Each argument must be one of the integers 0 or 1.Fmake-byte-code
+Return a new compiled-function object.
+Usage: (arglist instructions constants stack-depth
+	&optional doc-string interactive)
+Note that, unlike all other emacs-lisp functions, calling this with five
+arguments is NOT the same as calling it with six arguments, the last of
+which is nil.  If the INTERACTIVE arg is specified as nil, then that means
+that this function was defined with `(interactive)'.  If the arg is not
+specified, then that means the function is not interactive.
+This is terrible behavior which is retained for compatibility with old
+`.elc' files which expect these semantics.Fmake-symbol
+Return a newly allocated uninterned symbol whose name is NAME.
+Its value and function definition are void, and its property list is nil.
+
+arguments: (NAME)
+Fmake-marker
+Return a new marker which does not point at any place.
+
+arguments: ()
+Fmake-string
+Return a new string consisting of LENGTH copies of CHARACTER.
+LENGTH must be a non-negative integer.
+
+arguments: (LENGTH CHARACTER)
+Fstring
+Concatenate all the argument characters and make the result a string.Fpurecopy
+Kept for compatibility, returns its argument.
+Old:
+Make a copy of OBJECT in pure storage.
+Recursively copies contents of vectors and cons cells.
+Does not copy symbols.
+
+arguments: (OBJECT)
+Fgarbage-collect
+Reclaim storage for Lisp objects no longer needed.
+Return info on amount of space in use:
+ ((USED-CONSES . FREE-CONSES) (USED-SYMS . FREE-SYMS)
+  (USED-MARKERS . FREE-MARKERS) USED-STRING-CHARS USED-VECTOR-SLOTS
+  PLIST)
+  where `PLIST' is a list of alternating keyword/value pairs providing
+  more detailed information.
+Garbage collection happens automatically if you cons more than
+`gc-cons-threshold' bytes of Lisp data since previous garbage collection.
+
+arguments: ()
+Fconsing-since-gc
+Return the number of bytes consed since the last garbage collection.
+"Consed" is a misnomer in that this actually counts allocation
+of all different kinds of objects, not just conses.
+
+If this value exceeds `gc-cons-threshold', a garbage collection happens.
+
+arguments: ()
+Fmemory-limit
+Return the address of the last byte Emacs has allocated, divided by 1024.
+This may be helpful in debugging Emacs's memory usage.
+The value is divided by 1024 to make sure it will fit in a lisp integer.
+
+arguments: ()
+Vgc-cons-threshold
+*Number of bytes of consing between garbage collections.
+"Consing" is a misnomer in that this actually counts allocation
+of all different kinds of objects, not just conses.
+Garbage collection can happen automatically once this many bytes have been
+allocated since the last garbage collection.  All data types count.
+
+Garbage collection happens automatically when `eval' or `funcall' are
+called.  (Note that `funcall' is called implicitly as part of evaluation.)
+By binding this temporarily to a large number, you can effectively
+prevent garbage collection during a part of the program.
+
+See also `consing-since-gc'.Vdebug-allocation
+If non-zero, print out information to stderr about all objects allocated.
+See also `debug-allocation-backtrace-length'.Vdebug-allocation-backtrace-length
+Length (in stack frames) of short backtrace printed out by `debug-allocation'.Vpurify-flag
+Non-nil means loading Lisp code in order to dump an executable.
+This means that certain objects should be allocated in readonly space.Vpre-gc-hook
+Function or functions to be run just before each garbage collection.
+Interrupts, garbage collection, and errors are inhibited while this hook
+runs, so be extremely careful in what you add here.  In particular, avoid
+consing, and do not interact with the user.Vpost-gc-hook
+Function or functions to be run just after each garbage collection.
+Interrupts, garbage collection, and errors are inhibited while this hook
+runs, so be extremely careful in what you add here.  In particular, avoid
+consing, and do not interact with the user.Vgc-message
+String to print to indicate that a garbage collection is in progress.
+This is printed in the echo area.  If the selected frame is on a
+window system and `gc-pointer-glyph' specifies a value (i.e. a pointer
+image instance) in the domain of the selected frame, the mouse pointer
+will change instead of this message being printed.Vgc-pointer-glyph
+Pointer glyph used to indicate that a garbage collection is in progress.
+If the selected window is on a window system and this glyph specifies a
+value (i.e. a pointer image instance) in the domain of the selected
+window, the pointer will be changed as specified during garbage collection.
+Otherwise, a message will be printed in the echo area, as controlled
+by `gc-message'.Fbufferp
+Return t if OBJECT is an editor buffer.
+
+arguments: (OBJECT)
+Fbuffer-live-p
+Return t if OBJECT is an editor buffer that has not been deleted.
+
+arguments: (OBJECT)
+Fbuffer-list
+Return a list of all existing live buffers.
+The order is specific to the selected frame; if the optional FRAME
+argument is provided, the ordering for that frame is returned instead.
+If the FRAME argument is t, then the global (non-frame) ordering is
+returned instead.
+
+arguments: (&optional FRAME)
+Fdecode-buffer
+Validate BUFFER or if BUFFER is nil, return the current buffer.
+If BUFFER is a valid buffer or a string representing a valid buffer,
+the corresponding buffer object will be returned.  Otherwise an error
+will be signaled.
+
+arguments: (BUFFER)
+Fget-buffer
+Return the buffer named BUFFER-NAME (a string), or nil if there is none.
+BUFFER-NAME may also be a buffer; if so, the value is that buffer.
+
+arguments: (BUFFER-NAME)
+Fget-file-buffer
+Return the buffer visiting file FILENAME (a string).
+The buffer's `buffer-file-name' must match exactly the expansion of FILENAME.
+If there is no such live buffer, return nil.
+
+Normally, the comparison is done by canonicalizing FILENAME (using
+`expand-file-name') and comparing that to the value of `buffer-file-name'
+for each existing buffer.  However,  If `find-file-compare-truenames' is
+non-nil, FILENAME will be converted to its truename and the search will be
+done on each buffer's value of `buffer-file-truename' instead of
+`buffer-file-name'.  Otherwise, if `find-file-use-truenames' is non-nil,
+FILENAME will be converted to its truename and used for searching, but
+the search will still be done on `buffer-file-name'.
+
+arguments: (FILENAME)
+Fget-buffer-create
+Return the buffer named NAME, or create such a buffer and return it.
+A new buffer is created if there is no live buffer named NAME.
+If NAME starts with a space, the new buffer does not keep undo information.
+If NAME is a buffer instead of a string, then it is the value returned.
+The value is never nil.
+
+arguments: (NAME)
+Fmake-indirect-buffer
+Create and return an indirect buffer for buffer BASE-BUFFER, named NAME.
+BASE-BUFFER should be an existing buffer (or buffer name).
+NAME should be a string which is not the name of an existing buffer.
+
+If BASE-BUFFER is itself an indirect buffer, the base buffer for that buffer
+ is made the base buffer for the newly created buffer. (Thus, there will
+ never be indirect buffers whose base buffers are themselves indirect.)
+
+arguments: (BASE-BUFFER NAME)
+Fgenerate-new-buffer-name
+Return a string that is the name of no existing buffer based on NAME.
+If there is no live buffer named NAME, then return NAME.
+Otherwise modify name by appending `<NUMBER>', incrementing NUMBER
+until an unused name is found, and then return that name.
+Optional second argument IGNORE specifies a name that is okay to use
+(if it is in the sequence to be tried)
+even if a buffer with that name exists.
+
+arguments: (NAME &optional IGNORE)
+Fbuffer-name
+Return the name of BUFFER, as a string.
+With no argument or nil as argument, return the name of the current buffer.
+
+arguments: (&optional BUFFER)
+Fbuffer-file-name
+Return name of file BUFFER is visiting, or nil if none.
+No argument or nil as argument means use the current buffer.
+
+arguments: (&optional BUFFER)
+Fbuffer-base-buffer
+Return the base buffer of indirect buffer BUFFER.
+If BUFFER is not indirect, return nil.
+
+arguments: (&optional BUFFER)
+Fbuffer-indirect-children
+Return a list of all indirect buffers whose base buffer is BUFFER.
+If BUFFER is indirect, the return value will always be nil; see
+`make-indirect-buffer'.
+
+arguments: (&optional BUFFER)
+Fbuffer-local-variables
+Return an alist of variables that are buffer-local in BUFFER.
+Most elements look like (SYMBOL . VALUE), describing one variable.
+For a symbol that is locally unbound, just the symbol appears in the value.
+Note that storing new VALUEs in these elements doesn't change the variables.
+No argument or nil as argument means use current buffer as BUFFER.
+
+arguments: (&optional BUFFER)
+Fbuffer-modified-p
+Return t if BUFFER was modified since its file was last read or saved.
+No argument or nil as argument means use current buffer as BUFFER.
+
+arguments: (&optional BUFFER)
+Fset-buffer-modified-p
+Mark BUFFER as modified or unmodified according to FLAG.
+A non-nil FLAG means mark the buffer modified.  No argument or nil
+as BUFFER means use current buffer.
+
+arguments: (FLAG &optional BUFFER)
+Fbuffer-modified-tick
+Return BUFFER's tick counter, incremented for each change in text.
+Each buffer has a tick counter which is incremented each time the text in
+that buffer is changed.  It wraps around occasionally.
+No argument or nil as argument means use current buffer as BUFFER.
+
+arguments: (&optional BUFFER)
+Frename-buffer
+Change current buffer's name to NEWNAME (a string).
+If second arg UNIQUE is nil or omitted, it is an error if a
+buffer named NEWNAME already exists.
+If UNIQUE is non-nil, come up with a new name using
+`generate-new-buffer-name'.
+Interactively, one can set UNIQUE with a prefix argument.
+Returns the name we actually gave the buffer.
+This does not change the name of the visited file (if any).
+
+arguments: (NEWNAME &optional UNIQUE)
+Fother-buffer
+Return most recently selected buffer other than BUFFER.
+Buffers not visible in windows are preferred to visible buffers,
+unless optional third argument VISIBLE-OK is non-nil.
+If no other buffer exists, the buffer `*scratch*' is returned.
+If BUFFER is omitted or nil, some interesting buffer is returned.
+
+The ordering is for this frame; If second optional argument FRAME
+is provided, then the ordering is for that frame.  If the second arg
+is t, then the global ordering is returned.
+
+Note: In FSF Emacs, this function takes two arguments: BUFFER and
+VISIBLE-OK.
+
+arguments: (&optional BUFFER FRAME VISIBLE-OK)
+Fbuffer-disable-undo
+Stop keeping undo information for BUFFER.
+Any undo records it already has are discarded.
+No argument or nil as argument means do this for the current buffer.
+
+arguments: (&optional BUFFER)
+Fbuffer-enable-undo
+Start keeping undo information for BUFFER.
+No argument or nil as argument means do this for the current buffer.
+
+arguments: (&optional BUFFER)
+Fkill-buffer
+Kill the buffer BUFFER.
+The argument may be a buffer or may be the name of a buffer.
+An argument of nil means kill the current buffer.
+
+Value is t if the buffer is actually killed, nil if user says no.
+
+The value of `kill-buffer-hook' (which may be local to that buffer),
+if not void, is a list of functions to be called, with no arguments,
+before the buffer is actually killed.  The buffer to be killed is current
+when the hook functions are called.
+
+Any processes that have this buffer as the `process-buffer' are killed
+with `delete-process'.
+
+arguments: (BUFFER)
+Frecord-buffer
+Place buffer BUFFER first in the buffer order.
+Call this function when a buffer is selected "visibly".
+
+This function changes the global buffer order and the per-frame buffer
+order for the selected frame.  The buffer order keeps track of recency
+of selection so that `other-buffer' will return a recently selected
+buffer.  See `other-buffer' for more information.
+
+arguments: (BUFFER)
+Fset-buffer-major-mode
+Set an appropriate major mode for BUFFER, according to `default-major-mode'.
+Use this function before selecting the buffer, since it may need to inspect
+the current buffer's major mode.
+
+arguments: (BUFFER)
+Fcurrent-buffer
+Return the current buffer as a Lisp object.
+
+arguments: ()
+Fset-buffer
+Make the buffer BUFFER current for editing operations.
+BUFFER may be a buffer or the name of an existing buffer.
+See also `save-excursion' when you want to make a buffer current temporarily.
+This function does not display the buffer, so its effect ends
+when the current command terminates.
+Use `switch-to-buffer' or `pop-to-buffer' to switch buffers permanently.
+
+arguments: (BUFFER)
+Fbarf-if-buffer-read-only
+Signal a `buffer-read-only' error if BUFFER is read-only.
+Optional argument BUFFER defaults to the current buffer.
+
+If optional argument START is non-nil, all extents in the buffer
+which overlap that part of the buffer are checked to ensure none has a
+`read-only' property. (Extents that lie completely within the range,
+however, are not checked.) END defaults to the value of START.
+
+If START and END are equal, the range checked is [START, END] (i.e.
+closed on both ends); otherwise, the range checked is (START, END)
+(open on both ends), except that extents that lie completely within
+[START, END] are not checked.  See `extent-in-region-p' for a fuller
+discussion.
+
+arguments: (&optional BUFFER START END)
+Fbury-buffer
+Put BUFFER at the end of the list of all buffers.
+There it is the least likely candidate for `other-buffer' to return;
+thus, the least likely buffer for \[switch-to-buffer] to select by default.
+If BUFFER is nil or omitted, bury the current buffer.
+Also, if BUFFER is nil or omitted, remove the current buffer from the
+selected window if it is displayed there.
+Because of this, you may need to specify (current-buffer) as
+BUFFER when calling from minibuffer.
+If BEFORE is non-nil, it specifies a buffer before which BUFFER
+will be placed, instead of being placed at the end.
+
+arguments: (&optional BUFFER BEFORE)
+Ferase-buffer
+Delete the entire contents of the BUFFER.
+Any clipping restriction in effect (see `narrow-to-region') is removed,
+so the buffer is truly empty after this.
+BUFFER defaults to the current buffer if omitted.
+
+arguments: (&optional BUFFER)
+Fkill-all-local-variables
+Switch to Fundamental mode by killing current buffer's local variables.
+Most local variable bindings are eliminated so that the default values
+become effective once more.  Also, the syntax table is set from
+`standard-syntax-table', the category table is set from
+`standard-category-table' (if support for Mule exists), local keymap is set
+to nil, the abbrev table is set from `fundamental-mode-abbrev-table',
+and all specifier specifications whose locale is the current buffer
+are removed.  This function also forces redisplay of the modeline.
+
+Every function to select a new major mode starts by
+calling this function.
+
+As a special exception, local variables whose names have
+a non-nil `permanent-local' property are not eliminated by this function.
+
+The first thing this function does is run
+the normal hook `change-major-mode-hook'.
+
+arguments: ()
+Fbuffer-memory-usage
+Return stats about the memory usage of buffer BUFFER.
+The values returned are in the form of an alist of usage types and byte
+counts.  The byte counts attempt to encompass all the memory used
+by the buffer (separate from the memory logically associated with a
+buffer or frame), including internal structures and any malloc()
+overhead associated with them.  In practice, the byte counts are
+underestimated because certain memory usage is very hard to determine
+(e.g. the amount of memory used inside the Xt library or inside the
+X server) and because there is other stuff that might logically
+be associated with a window, buffer, or frame (e.g. window configurations,
+glyphs) but should not obviously be included in the usage counts.
+
+Multiple slices of the total memory usage may be returned, separated
+by a nil.  Each slice represents a particular view of the memory, a
+particular way of partitioning it into groups.  Within a slice, there
+is no overlap between the groups of memory, and each slice collectively
+represents all the memory concerned.
+
+arguments: (BUFFER)
+Vchange-major-mode-hook
+List of hooks to be run before killing local variables in a buffer.
+This should be used by any mode that temporarily alters the contents or
+the read-only state of the buffer.  See also `kill-all-local-variables'.Vfind-file-compare-truenames
+If this is true, then the `find-file' command will check the truenames
+of all visited files when deciding whether a given file is already in
+a buffer, instead of just `buffer-file-name'.  This means that if you
+attempt to visit another file which is a symbolic link to a file which
+is already in a buffer, the existing buffer will be found instead of a
+newly-created one.  This works if any component of the pathname
+(including a non-terminal component) is a symbolic link as well, but
+doesn't work with hard links (nothing does).
+
+See also the variable `find-file-use-truenames'.Vfind-file-use-truenames
+If this is true, then a buffer's visited file-name will always be
+chased back to the real file; it will never be a symbolic link, and there
+will never be a symbolic link anywhere in its directory path.
+That is, the buffer-file-name and buffer-file-truename will be equal.
+This doesn't work with hard links.
+
+See also the variable `find-file-compare-truenames'.Vbefore-change-functions
+List of functions to call before each text change.
+Two arguments are passed to each function: the positions of
+the beginning and end of the range of old text to be changed.
+(For an insertion, the beginning and end are at the same place.)
+No information is given about the length of the text after the change.
+
+Buffer changes made while executing the `before-change-functions'
+don't call any before-change or after-change functions.Vafter-change-functions
+List of functions to call after each text change.
+Three arguments are passed to each function: the positions of
+the beginning and end of the range of changed text,
+and the length of the pre-change text replaced by that range.
+(For an insertion, the pre-change length is zero;
+for a deletion, that length is the number of characters deleted,
+and the post-change beginning and end are at the same place.)
+
+Buffer changes made while executing `after-change-functions'
+don't call any before-change or after-change functions.Vbefore-change-function
+
+Vafter-change-function
+
+Vfirst-change-hook
+A list of functions to call before changing a buffer which is unmodified.
+The functions are run using the `run-hooks' function.Vundo-threshold
+Keep no more undo information once it exceeds this size.
+This threshold is applied when garbage collection happens.
+The size is counted as the number of bytes occupied,
+which includes both saved text and other data.Vundo-high-threshold
+Don't keep more than this much size of undo information.
+A command which pushes past this size is itself forgotten.
+This threshold is applied when garbage collection happens.
+The size is counted as the number of bytes occupied,
+which includes both saved text and other data.Vinhibit-read-only
+*Non-nil means disregard read-only status of buffers or characters.
+If the value is t, disregard `buffer-read-only' and all `read-only'
+text properties.  If the value is a list, disregard `buffer-read-only'
+and disregard a `read-only' extent property or text property if the
+property value is a member of the list.Vkill-buffer-query-functions
+List of functions called with no args to query before killing a buffer.Vdelete-auto-save-files
+*Non-nil means delete auto-save file when a buffer is saved or killed.Vdefault-modeline-format
+Default value of `modeline-format' for buffers that don't override it.
+This is the same as (default-value 'modeline-format).Vdefault-abbrev-mode
+Default value of `abbrev-mode' for buffers that do not override it.
+This is the same as (default-value 'abbrev-mode).Vdefault-ctl-arrow
+Default value of `ctl-arrow' for buffers that do not override it.
+This is the same as (default-value 'ctl-arrow).Vdefault-display-direction
+Default display-direction for buffers that do not override it.
+This is the same as (default-value 'display-direction).
+Note: This is not yet implemented.Vdefault-truncate-lines
+Default value of `truncate-lines' for buffers that do not override it.
+This is the same as (default-value 'truncate-lines).Vdefault-fill-column
+Default value of `fill-column' for buffers that do not override it.
+This is the same as (default-value 'fill-column).Vdefault-left-margin
+Default value of `left-margin' for buffers that do not override it.
+This is the same as (default-value 'left-margin).Vdefault-tab-width
+Default value of `tab-width' for buffers that do not override it.
+This is the same as (default-value 'tab-width).Vdefault-case-fold-search
+Default value of `case-fold-search' for buffers that don't override it.
+This is the same as (default-value 'case-fold-search).Vmodeline-format
+Template for displaying modeline for current buffer.
+Each buffer has its own value of this variable.
+Value may be a string, symbol, glyph, generic specifier, list or cons cell.
+For a symbol, its value is processed (but it is ignored if t or nil).
+ A string appearing directly as the value of a symbol is processed verbatim
+ in that the %-constructs below are not recognized.
+For a glyph, it is inserted as is.
+For a generic specifier (i.e. a specifier of type `generic'), its instance
+ is computed in the current window using the equivalent of `specifier-instance'
+ and the value is processed.
+For a list whose car is a symbol, the symbol's value is taken,
+ and if that is non-nil, the cadr of the list is processed recursively.
+ Otherwise, the caddr of the list (if there is one) is processed.
+For a list whose car is a string or list, each element is processed
+ recursively and the results are effectively concatenated.
+For a list whose car is an integer, the cdr of the list is processed
+ and padded (if the number is positive) or truncated (if negative)
+ to the width specified by that number.
+For a list whose car is an extent, the cdr of the list is processed
+ normally but the results are displayed using the face of the
+ extent, and mouse clicks over this section are processed using the
+ keymap of the extent. (In addition, if the extent has a help-echo
+ property, that string will be echoed when the mouse moves over this
+ section.) If extents are nested, all keymaps are properly consulted
+ when processing mouse clicks, but multiple faces are not correctly
+ merged (only the first face is used), and lists of faces are not
+ correctly handled.  See `generated-modeline-string' for more information.
+A string is printed verbatim in the modeline except for %-constructs:
+  (%-constructs are processed when the string is the entire modeline-format
+   or when it is found in a cons-cell or a list)
+  %b -- print buffer name.      %c -- print the current column number.
+  %f -- print visited file name.
+  %* -- print %, * or hyphen.   %+ -- print *, % or hyphen.
+	% means buffer is read-only and * means it is modified.
+	For a modified read-only buffer, %* gives % and %+ gives *.
+  %s -- print process status.   %l -- print the current line number.
+  %S -- print name of selected frame (only meaningful under X Windows).
+  %p -- print percent of buffer above top of window, or Top, Bot or All.
+  %P -- print percent of buffer above bottom of window, perhaps plus Top,
+        or print Bottom or All.
+  %n -- print Narrow if appropriate.
+  %C -- under XEmacs/mule, print the mnemonic for `buffer-file-coding-system'.
+  %[ -- print one [ for each recursive editing level.  %] similar.
+  %% -- print %.                %- -- print infinitely many dashes.
+Decimal digits after the % specify field width to which to pad.Vdefault-major-mode
+*Major mode for new buffers.  Defaults to `fundamental-mode'.
+nil here means use current buffer's major mode.Vfundamental-mode-abbrev-table
+The abbrev table of mode-specific abbrevs for Fundamental Mode.Vmajor-mode
+Symbol for current buffer's major mode.Vmode-name
+Pretty name of current buffer's major mode (a string).Vabbrev-mode
+Non-nil turns on automatic expansion of abbrevs as they are inserted.
+Automatically becomes buffer-local when set in any fashion.Vcase-fold-search
+*Non-nil if searches should ignore case.
+Automatically becomes buffer-local when set in any fashion.Vfill-column
+*Column beyond which automatic line-wrapping should happen.
+Automatically becomes buffer-local when set in any fashion.Vleft-margin
+*Column for the default indent-line-function to indent to.
+Linefeed indents to this column in Fundamental mode.
+Automatically becomes buffer-local when set in any fashion.
+Do not confuse this with the specifier `left-margin-width';
+that controls the size of a margin that is displayed outside
+of the text area.Vtab-width
+*Distance between tab stops (for display of tab characters), in columns.
+Automatically becomes buffer-local when set in any fashion.Vctl-arrow
+*Non-nil means display control chars with uparrow.
+Nil means use backslash and octal digits.
+An integer means characters >= ctl-arrow are assumed to be printable, and
+will be displayed as a single glyph.
+Any other value is the same as 160 - the code SPC with the high bit on.
+
+The interpretation of this variable is likely to change in the future.
+
+Automatically becomes buffer-local when set in any fashion.
+This variable does not apply to characters whose display is specified
+in the current display table (if there is one).Vtruncate-lines
+*Non-nil means do not display continuation lines;
+give each line of text one frame line.
+Automatically becomes buffer-local when set in any fashion.
+
+Note that this is overridden by the variable
+`truncate-partial-width-windows' if that variable is non-nil
+and this buffer is not full-frame width.Vdefault-directory
+Name of default directory of current buffer.  Should end with slash.
+Each buffer has its own value of this variable.Vdefault-buffer-file-coding-system
+Default value of `buffer-file-coding-system' for buffers that do not override it.
+This is the same as (default-value 'buffer-file-coding-system).
+This value is used both for buffers without associated files and
+for buffers whose files do not have any apparent coding system.
+See `buffer-file-coding-system'.Vbuffer-file-coding-system
+*Current coding system for the current buffer.
+When the buffer is written out into a file, this coding system will be
+used for the encoding.  Automatically buffer-local when set in any
+fashion.  This is normally set automatically when a file is loaded in
+based on the determined coding system of the file (assuming that
+`buffer-file-coding-system-for-read' is set to `undecided', which
+calls for automatic determination of the file's coding system).
+Normally the modeline indicates the current file coding system using
+its mnemonic abbreviation.
+
+The default value for this variable (which is normally used for
+buffers without associated files) is also used when automatic
+detection of a file's encoding is called for and there was no
+discernible encoding in the file (i.e. it was entirely or almost
+entirely ASCII).  The default value should generally *not* be set to
+nil (equivalent to `no-conversion'), because if extended characters
+are ever inserted into the buffer, they will be lost when the file is
+written out.  A good choice is `iso-2022-8' (the simple ISO 2022 8-bit
+encoding), which will write out ASCII and Latin-1 characters in the
+standard (and highly portable) fashion and use standard escape
+sequences for other charsets.  Another reasonable choice is
+`escape-quoted', which is equivalent to `iso-2022-8' but prefixes
+certain control characters with ESC to make sure they are not
+interpreted as escape sequences when read in.  This latter coding
+system results in more "correct" output in the presence of control
+characters in the buffer, in the sense that when read in again using
+the same coding system, the result will virtually always match the
+original contents of the buffer, which is not the case with
+`iso-2022-8'; but the output is less portable when dealing with binary
+data -- there may be stray ESC characters when the file is read by
+another program.
+
+`buffer-file-coding-system' does *not* control the coding system used when
+a file is read in.  Use the variables `buffer-file-coding-system-for-read'
+and `buffer-file-coding-system-alist' for that.  From a Lisp program, if
+you wish to unilaterally specify the coding system used for one
+particular operation, you should bind the variable
+`coding-system-for-read' rather than changing the other two
+variables just mentioned, which are intended to be used for
+global environment specification.Vauto-fill-function
+Function called (if non-nil) to perform auto-fill.
+It is called after self-inserting a space at a column beyond `fill-column'.
+Each buffer has its own value of this variable.
+NOTE: This variable is not an ordinary hook;
+It may not be a list of functions.Vbuffer-file-name
+Name of file visited in current buffer, or nil if not visiting a file.
+Each buffer has its own value of this variable.Vbuffer-file-truename
+The real name of the file visited in the current buffer,
+or nil if not visiting a file.  This is the result of passing
+buffer-file-name to the `file-truename' function.  Every buffer has
+its own value of this variable.  This variable is automatically
+maintained by the functions that change the file name associated
+with a buffer.Vbuffer-auto-save-file-name
+Name of file for auto-saving current buffer,
+or nil if buffer should not be auto-saved.
+Each buffer has its own value of this variable.Vbuffer-read-only
+Non-nil if this buffer is read-only.
+Each buffer has its own value of this variable.Vbuffer-backed-up
+Non-nil if this buffer's file has been backed up.
+Backing up is done before the first time the file is saved.
+Each buffer has its own value of this variable.Vbuffer-saved-size
+Length of current buffer when last read in, saved or auto-saved.
+0 initially.
+Each buffer has its own value of this variable.Vselective-display
+Non-nil enables selective display:
+Integer N as value means display only lines
+ that start with less than n columns of space.
+A value of t means, after a ^M, all the rest of the line is invisible.
+ Then ^M's in the file are written into files as newlines.
+
+Automatically becomes buffer-local when set in any fashion.Vselective-display-ellipses
+t means display ... on previous line when a line is invisible.
+Automatically becomes buffer-local when set in any fashion.Vlocal-abbrev-table
+Local (mode-specific) abbrev table of current buffer.Voverwrite-mode
+Non-nil if self-insertion should replace existing text.
+The value should be one of `overwrite-mode-textual',
+`overwrite-mode-binary', or nil.
+If it is `overwrite-mode-textual', self-insertion still
+inserts at the end of a line, and inserts when point is before a tab,
+until the tab is filled in.
+If `overwrite-mode-binary', self-insertion replaces newlines and tabs too.
+Automatically becomes buffer-local when set in any fashion.
+
+Normally, you shouldn't modify this variable by hand, but use the functions
+`overwrite-mode' and `binary-overwrite-mode' instead. However, you can
+customize the default value from the options menu.Vbuffer-undo-list
+List of undo entries in current buffer.
+Recent changes come first; older changes follow newer.
+
+An entry (START . END) represents an insertion which begins at
+position START and ends at position END.
+
+An entry (TEXT . POSITION) represents the deletion of the string TEXT
+from (abs POSITION).  If POSITION is positive, point was at the front
+of the text being deleted; if negative, point was at the end.
+
+An entry (t HIGH . LOW) indicates that the buffer previously had
+"unmodified" status.  HIGH and LOW are the high and low 16-bit portions
+of the visited file's modification time, as of that time.  If the
+modification time of the most recent save is different, this entry is
+obsolete.
+
+An entry of the form EXTENT indicates that EXTENT was attached in
+the buffer.  Undoing an entry of this form detaches EXTENT.
+
+An entry of the form (EXTENT START END) indicates that EXTENT was
+detached from the buffer.  Undoing an entry of this form attaches
+EXTENT from START to END.
+
+An entry of the form POSITION indicates that point was at the buffer
+location given by the integer.  Undoing an entry of this form places
+point at POSITION.
+
+nil marks undo boundaries.  The undo command treats the changes
+between two undo boundaries as a single step to be undone.
+
+If the value of the variable is t, undo information is not recorded.Vpoint-before-scroll
+Value of point before the last series of scroll operations, or nil.Vbuffer-file-format
+List of formats to use when saving this buffer.
+Formats are defined by `format-alist'.  This variable is
+set when a file is visited.  Automatically local in all buffers.Vbuffer-invisibility-spec
+Invisibility spec of this buffer.
+The default is t, which means that text is invisible
+if it has (or is covered by an extent with) a non-nil `invisible' property.
+If the value is a list, a text character is invisible if its `invisible'
+property is an element in that list.
+If an element is a cons cell of the form (PROPERTY . ELLIPSIS),
+then characters with property value PROPERTY are invisible,
+and they have an ellipsis as well if ELLIPSIS is non-nil.
+Note that the actual characters used for the ellipsis are controllable
+using `invisible-text-glyph', and default to "...".Vgenerated-modeline-string
+String of characters in this buffer's modeline as of the last redisplay.
+Each time the modeline is recomputed, the resulting characters are
+stored in this string, which is resized as necessary.  You may not
+set this variable, and modifying this string will not change the
+modeline; you have to change `modeline-format' if you want that.
+
+For each extent in `modeline-format' that is encountered when
+processing the modeline, a corresponding extent is placed in
+`generated-modeline-string' and covers the text over which the
+extent in `modeline-format' applies.  The extent in
+`generated-modeline-string' is made a child of the extent in
+`modeline-format', which means that it inherits all properties from
+that extent.  Note that the extents in `generated-modeline-string'
+are managed automatically.  You should not explicitly put any extents
+in `generated-modeline-string'; if you do, they will disappear the
+next time the modeline is processed.
+
+For extents in `modeline-format', the following properties are currently
+handled:
+
+`face'
+	Affects the face of the modeline text.  Currently, faces do
+	not merge properly; only the most recently encountered face
+	is used.  This is a bug.
+
+`keymap'
+	Affects the disposition of button events over the modeline
+	text.  Multiple applicable keymaps *are* handled properly,
+	and `modeline-map' still applies to any events that don't
+	have bindings in extent-specific keymaps.
+
+`help-echo'
+	If a string, causes the string to be displayed when the mouse
+	moves over the text.Fcompiled-function-p
+Return t if OBJECT is a byte-compiled function object.
+
+arguments: (OBJECT)
+Fcompiled-function-arglist
+Return the argument list of the compiled-function object FUNCTION.
+
+arguments: (FUNCTION)
+Fcompiled-function-instructions
+Return the byte-opcode string of the compiled-function object FUNCTION.
+
+arguments: (FUNCTION)
+Fcompiled-function-constants
+Return the constants vector of the compiled-function object FUNCTION.
+
+arguments: (FUNCTION)
+Fcompiled-function-stack-depth
+Return the maximum stack depth of the compiled-function object FUNCTION.
+
+arguments: (FUNCTION)
+Fcompiled-function-doc-string
+Return the doc string of the compiled-function object FUNCTION, if available.
+Functions that had their doc strings snarfed into the DOC file will have
+an integer returned instead of a string.
+
+arguments: (FUNCTION)
+Fcompiled-function-interactive
+Return the interactive spec of the compiled-function object FUNCTION, or nil.
+If non-nil, the return value will be a list whose first element is
+`interactive' and whose second element is the interactive spec.
+
+arguments: (FUNCTION)
+Fcompiled-function-domain
+Return the domain of the compiled-function object FUNCTION, or nil.
+This is only meaningful if I18N3 was enabled when emacs was compiled.
+
+arguments: (FUNCTION)
+Ffetch-bytecode
+If the byte code for compiled function FUNCTION is lazy-loaded, fetch it now.
+
+arguments: (FUNCTION)
+Foptimize-compiled-function
+Convert compiled function FUNCTION into an optimized internal form.
+
+arguments: (FUNCTION)
+Fbyte-code
+Function used internally in byte-compiled code.
+First argument INSTRUCTIONS is a string of byte code.
+Second argument CONSTANTS is a vector of constants.
+Third argument STACK-DEPTH is the maximum stack depth used in this function.
+If STACK-DEPTH is incorrect, Emacs may crash.
+
+arguments: (INSTRUCTIONS CONSTANTS STACK-DEPTH)
+Vbyte-code-meter
+A vector of vectors which holds a histogram of byte code usage.
+(aref (aref byte-code-meter 0) CODE) indicates how many times the byte
+opcode CODE has been executed.
+(aref (aref byte-code-meter CODE1) CODE2), where CODE1 is not 0,
+indicates how many times the byte opcodes CODE1 and CODE2 have been
+executed in succession.Vbyte-metering-on
+If non-nil, keep profiling information on byte code usage.
+The variable `byte-code-meter' indicates how often each byte opcode is used.
+If a symbol has a property named `byte-code-meter' whose value is an
+integer, it is incremented each time that symbol's function is called.Finteractive
+Specify a way of parsing arguments for interactive use of a function.
+For example, write
+  (defun foo (arg) "Doc string" (interactive "p") ...use arg...)
+to make ARG be the prefix argument when `foo' is called as a command.
+The "call" to `interactive' is actually a declaration rather than a function;
+ it tells `call-interactively' how to read arguments
+ to pass to the function.
+When actually called, `interactive' just returns nil.
+
+The argument of `interactive' is usually a string containing a code letter
+ followed by a prompt.  (Some code letters do not use I/O to get
+ the argument and do not need prompts.)  To prompt for multiple arguments,
+ give a code letter, its prompt, a newline, and another code letter, etc.
+ Prompts are passed to format, and may use % escapes to print the
+ arguments that have already been read.
+If the argument is not a string, it is evaluated to get a list of
+ arguments to pass to the function.
+Just `(interactive)' means pass no args when calling interactively.
+
+Code letters available are:
+a -- Function name: symbol with a function definition.
+b -- Name of existing buffer.
+B -- Name of buffer, possibly nonexistent.
+c -- Character.
+C -- Command name: symbol with interactive function definition.
+d -- Value of point as number.  Does not do I/O.
+D -- Directory name.
+e -- Last mouse-button or misc-user event that invoked this command.
+     If used more than once, the Nth `e' returns the Nth such event.
+     Does not do I/O.
+f -- Existing file name.
+F -- Possibly nonexistent file name.
+i -- Always nil, ignore.  Use to skip arguments when interactive.
+k -- Key sequence (a vector of events).
+K -- Key sequence to be redefined (do not automatically down-case).
+m -- Value of mark as number.  Does not do I/O.
+n -- Number read using minibuffer.
+N -- Prefix arg converted to number, or if none, do like code `n'.
+p -- Prefix arg converted to number.  Does not do I/O.
+P -- Prefix arg in raw form.  Does not do I/O.
+r -- Region: point and mark as 2 numeric args, smallest first.  Does no I/O.
+s -- Any string.
+S -- Any symbol.
+v -- Variable name: symbol that is user-variable-p.
+x -- Lisp expression read but not evaluated.
+X -- Lisp expression read and evaluated.
+z -- Coding system. (Always nil if no Mule support.)
+Z -- Coding system, nil if no prefix arg. (Always nil if no Mule support.)
+In addition, if the string begins with `*'
+ then an error is signaled if the buffer is read-only.
+ This happens before reading any arguments.
+If the string begins with `@', then the window the mouse is over is selected
+ before anything else is done.
+If the string begins with `_', then this command will not cause the region
+ to be deactivated when it completes; that is, `zmacs-region-stays' will be
+ set to t when the command exits successfully.
+You may use any of `@', `*' and `_' at the beginning of the string;
+ they are processed in the order that they appear.
+
+
+When writing your own interactive spec, it can be useful to know the
+equivalent Lisp expressions for the various code letters.  They are:
+
+a -- (read-function "PROMPT")
+b -- (let ((def (current-buffer)))
+       (if (eq (selected-window) (active-minibuffer-window))
+           (setq def (other-buffer def))
+       (read-buffer "PROMPT" def t)))
+B -- (read-buffer "PROMPT" (other-buffer (current-buffer)))
+c -- (prog1
+         (let ((cursor-in-echo-area t))
+           (message "%s" "PROMPT")
+           (read-char))
+       (message nil))
+C -- (read-command "PROMPT")
+d -- (point)
+D -- (read-directory-name "PROMPT" nil default-directory t)
+e -- current-mouse-event ;; #### not quite right. needs access to the KEYS
+                         ;; argument of `call-interactively', but that's
+                         ;; currently impossible.
+f -- (read-file-name "PROMPT" nil nil 0)
+F -- (read-file-name "PROMPT")
+i -- nil
+k -- (read-key-sequence "PROMPT")
+K -- (read-key-sequence "PROMPT" nil t)
+m -- (mark)
+n -- (read-number "PROMPT")
+N -- (if current-prefix-arg
+         (prefix-numeric-value current-prefix-arg)
+       (read-number "PROMPT"))
+p -- (prefix-numeric-value current-prefix-arg)
+P -- current-prefix-arg
+r -- (if (and zmacs-regions (not zmacs-region-active-p))
+         (error "The region is not active now"))
+     (let ((tem (marker-buffer (mark-marker t))))
+       (unless (and tem (eq tem (current-buffer)))
+         (error "The mark is now set now")))
+     (region-beginning) +
+     (region-end)
+s -- (read-string "PROMPT")
+S -- (let (tem prev-tem)
+       (while (not tem)
+         (setq tem (completing-read "PROMPT" obarray nil nil prev-tem))
+         (setq prev-tem tem)
+         (setq tem (intern tem))
+         (if (= (length tem) 0)
+             (setq tem nil))))
+v -- (read-variable "PROMPT")
+x -- (read-expression "PROMPT")
+X -- (eval (read-expression "PROMPT"))
+z -- (and (fboundp 'read-coding-system) (read-coding-system "PROMPT"))
+Z -- (and current-prefix-arg (fboundp 'read-coding-system)
+       (read-coding-system "PROMPT"))
+
+`*' (barf-if-buffer-read-only)
+`@' (let ((event current-mouse-event)) ;; #### not quite right; needs the
+      (when event                      ;; value from the `e' spec above.
+        (let ((window event-window event))
+          (when window
+            (if (and (window-minibuffer-p window)
+                     (not (and (> (minibuffer-depth) 0)
+                               (eq window (active-minibuffer-window)))))
+              (error "Attempt to select inactive minibuffer window"))
+            (select window)))))
+`_' (setq zmacs-region-stays t)
+Fquote-maybe
+Quote EXPR if it is not self quoting.
+
+arguments: (EXPR)
+Fcall-interactively
+Call FUNCTION, reading args according to its interactive calling specs.
+Return the value FUNCTION returns.
+The function contains a specification of how to do the argument reading.
+In the case of user-defined functions, this is specified by placing a call
+to the function `interactive' at the top level of the function body.
+See `interactive'.
+
+If optional second arg RECORD-FLAG is the symbol `lambda', the interactive
+calling arguments for FUNCTION are read and returned as a list,
+but the function is not called on them.
+
+If RECORD-FLAG is `t' then unconditionally put this command in the
+command-history.  Otherwise, this is done only if an arg is read using
+the minibuffer.
+
+The argument KEYS specifies the value to use instead of (this-command-keys)
+when reading the arguments.
+
+arguments: (FUNCTION &optional RECORD-FLAG KEYS)
+Fprefix-numeric-value
+Return numeric meaning of raw prefix argument RAW.
+A raw prefix argument is what you get from `(interactive "P")'.
+Its numeric meaning is what you would get from `(interactive "p")'.
+
+arguments: (RAW)
+Vcurrent-prefix-arg
+The value of the prefix argument for this editing command.
+It may be a number, or the symbol `-' for just a minus sign as arg,
+or a list whose car is a number for just one or more C-U's
+or nil if no argument has been specified.
+This is what `(interactive "P")' returns.Vcommand-history
+List of recent commands that read arguments from terminal.
+Each command is represented as a form to evaluate.Vcommand-debug-status
+Debugging status of current interactive command.
+Bound each time `call-interactively' is called;
+may be set by the debugger as a reminder for itself.Fold-call-process-internal
+Call PROGRAM synchronously in separate process, with coding-system specified.
+Arguments are
+ (PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS).
+The program's input comes from file INFILE (nil means `/dev/null').
+Insert output in BUFFER before point; t means current buffer;
+ nil for BUFFER means discard it; 0 means discard and don't wait.
+BUFFER can also have the form (REAL-BUFFER STDERR-FILE); in that case,
+REAL-BUFFER says what to do with standard output, as above,
+while STDERR-FILE says what to do with standard error in the child.
+STDERR-FILE may be nil (discard standard error output),
+t (mix it with ordinary output), or a file name string.
+
+Fourth arg DISPLAY non-nil means redisplay buffer as output is inserted.
+Remaining arguments are strings passed as command arguments to PROGRAM.
+
+If BUFFER is 0, `call-process' returns immediately with value nil.
+Otherwise it waits for PROGRAM to terminate and returns a numeric exit status
+ or a signal description string.
+If you quit, the process is killed with SIGINT, or SIGKILL if you
+ quit again.Fgetenv
+Return the value of environment variable VAR, as a string.
+VAR is a string, the name of the variable.
+When invoked interactively, prints the value in the echo area.
+
+arguments: (VAR &optional INTERACTIVEP)
+Vbinary-process-input
+*If non-nil then new subprocesses are assumed to take binary input.Vbinary-process-output
+*If non-nil then new subprocesses are assumed to produce binary output.Vshell-file-name
+*File name to load inferior shells from.
+Initialized from the SHELL environment variable.Vprocess-environment
+List of environment variables for subprocesses to inherit.
+Each element should be a string of the form ENVVARNAME=VALUE.
+The environment which Emacs inherits is placed in this variable
+when Emacs starts.Fupcase
+Convert STRING-OR-CHAR to upper case and return that.
+STRING-OR-CHAR may be a character or string.  The result has the same type.
+STRING-OR-CHAR is not altered--the value is a copy.
+See also `capitalize', `downcase' and `upcase-initials'.
+Optional second arg BUFFER specifies which buffer's case tables to use,
+ and defaults to the current buffer.
+
+arguments: (STRING-OR-CHAR &optional BUFFER)
+Fdowncase
+Convert STRING-OR-CHAR to lower case and return that.
+STRING-OR-CHAR may be a character or string.  The result has the same type.
+STRING-OR-CHAR is not altered--the value is a copy.
+Optional second arg BUFFER specifies which buffer's case tables to use,
+ and defaults to the current buffer.
+
+arguments: (STRING-OR-CHAR &optional BUFFER)
+Fcapitalize
+Convert STRING-OR-CHAR to capitalized form and return that.
+This means that each word's first character is upper case
+and the rest is lower case.
+STRING-OR-CHAR may be a character or string.  The result has the same type.
+STRING-OR-CHAR is not altered--the value is a copy.
+Optional second arg BUFFER specifies which buffer's case tables to use,
+ and defaults to the current buffer.
+
+arguments: (STRING-OR-CHAR &optional BUFFER)
+Fupcase-initials
+Convert the initial of each word in STRING-OR-CHAR to upper case.
+Do not change the other letters of each word.
+STRING-OR-CHAR may be a character or string.  The result has the same type.
+STRING-OR-CHAR is not altered--the value is a copy.
+Optional second arg BUFFER specifies which buffer's case tables to use,
+ and defaults to the current buffer.
+
+arguments: (STRING-OR-CHAR &optional BUFFER)
+Fupcase-region
+Convert the region to upper case.  In programs, wants two arguments.
+These arguments specify the starting and ending character numbers of
+ the region to operate on.  When used as a command, the text between
+ point and the mark is operated on.
+See also `capitalize-region'.
+Optional third arg BUFFER defaults to the current buffer.
+
+arguments: (START END &optional BUFFER)
+Fdowncase-region
+Convert the region to lower case.  In programs, wants two arguments.
+These arguments specify the starting and ending character numbers of
+ the region to operate on.  When used as a command, the text between
+ point and the mark is operated on.
+Optional third arg BUFFER defaults to the current buffer.
+
+arguments: (START END &optional BUFFER)
+Fcapitalize-region
+Convert the region to capitalized form.
+Capitalized form means each word's first character is upper case
+ and the rest of it is lower case.
+In programs, give two arguments, the starting and ending
+ character positions to operate on.
+Optional third arg BUFFER defaults to the current buffer.
+
+arguments: (START END &optional BUFFER)
+Fupcase-initials-region
+Upcase the initial of each word in the region.
+Subsequent letters of each word are not changed.
+In programs, give two arguments, the starting and ending
+ character positions to operate on.
+Optional third arg BUFFER defaults to the current buffer.
+
+arguments: (START END &optional BUFFER)
+Fupcase-word
+Convert following word (or COUNT words) to upper case, moving over.
+With negative argument, convert previous words but do not move.
+See also `capitalize-word'.
+Optional second arg BUFFER defaults to the current buffer.
+
+arguments: (COUNT &optional BUFFER)
+Fdowncase-word
+Convert following word (or COUNT words) to lower case, moving over.
+With negative argument, convert previous words but do not move.
+Optional second arg BUFFER defaults to the current buffer.
+
+arguments: (COUNT &optional BUFFER)
+Fcapitalize-word
+Capitalize the following word (or COUNT words), moving over.
+This gives the word(s) a first character in upper case
+ and the rest lower case.
+With negative argument, capitalize previous words but do not move.
+Optional second arg BUFFER defaults to the current buffer.
+
+arguments: (COUNT &optional BUFFER)
+Fcase-table-p
+Return t if OBJECT is a case table.
+See `set-case-table' for more information on these data structures.
+
+arguments: (OBJECT)
+Fget-case-table
+Return CHAR-CASE version of CHARACTER in CASE-TABLE.
+
+CHAR-CASE is either downcase or upcase.
+
+arguments: (CHAR-CASE CHARACTER CASE-TABLE)
+Fput-case-table
+Set CHAR-CASE version of CHARACTER to be VALUE in CASE-TABLE.
+
+CHAR-CASE is either downcase or upcase.
+See also `put-case-table-pair'.
+
+arguments: (CHAR-CASE CHARACTER VALUE CASE-TABLE)
+Fput-case-table-pair
+Make UC and LC a pair of inter-case-converting letters in CASE-TABLE.
+UC is an uppercase character and LC is a downcase character.
+
+arguments: (UC LC CASE-TABLE)
+Fcopy-case-table
+Return a new case table which is a copy of CASE-TABLE
+
+arguments: (CASE-TABLE)
+Fcurrent-case-table
+Return the case table of BUFFER, which defaults to the current buffer.
+
+arguments: (&optional BUFFER)
+Fstandard-case-table
+Return the standard case table.
+This is the one used for new buffers.
+
+arguments: ()
+Fset-case-table
+Select CASE-TABLE as the new case table for the current buffer.
+A case table is a case-table object or list
+ (DOWNCASE UPCASE CANONICALIZE EQUIVALENCES)
+ where each element is either nil or a string of length 256.
+The latter is provided for backward-compatibility.
+DOWNCASE maps each character to its lower-case equivalent.
+UPCASE maps each character to its upper-case equivalent;
+ if lower and upper case characters are in 1-1 correspondence,
+ you may use nil and the upcase table will be deduced from DOWNCASE.
+CANONICALIZE maps each character to a canonical equivalent;
+ any two characters that are related by case-conversion have the same
+ canonical equivalent character; it may be nil, in which case it is
+ deduced from DOWNCASE and UPCASE.
+EQUIVALENCES is a map that cyclicly permutes each equivalence class
+ (of characters with the same canonical equivalent); it may be nil,
+ in which case it is deduced from CANONICALIZE.
+
+See also `get-case-table', `put-case-table' and `put-case-table-pair'.
+
+arguments: (CASE-TABLE)
+Fset-standard-case-table
+Select CASE-TABLE as the new standard case table for new buffers.
+See `set-case-table' for more info on case tables.
+
+arguments: (CASE-TABLE)
+Fchar-table-p
+Return non-nil if OBJECT is a char table.
+
+A char table is a table that maps characters (or ranges of characters)
+to values.  Char tables are specialized for characters, only allowing
+particular sorts of ranges to be assigned values.  Although this
+loses in generality, it makes for extremely fast (constant-time)
+lookups, and thus is feasible for applications that do an extremely
+large number of lookups (e.g. scanning a buffer for a character in
+a particular syntax, where a lookup in the syntax table must occur
+once per character).
+
+When Mule support exists, the types of ranges that can be assigned
+values are
+
+-- all characters
+-- an entire charset
+-- a single row in a two-octet charset
+-- a single character
+
+When Mule support is not present, the types of ranges that can be
+assigned values are
+
+-- all characters
+-- a single character
+
+To create a char table, use `make-char-table'.
+To modify a char table, use `put-char-table' or `remove-char-table'.
+To retrieve the value for a particular character, use `get-char-table'.
+See also `map-char-table', `clear-char-table', `copy-char-table',
+`valid-char-table-type-p', `char-table-type-list',
+`valid-char-table-value-p', and `check-char-table-value'.
+
+arguments: (OBJECT)
+Fchar-table-type-list
+Return a list of the recognized char table types.
+See `valid-char-table-type-p'.
+
+arguments: ()
+Fvalid-char-table-type-p
+Return t if TYPE if a recognized char table type.
+
+Each char table type is used for a different purpose and allows different
+sorts of values.  The different char table types are
+
+`category'
+	Used for category tables, which specify the regexp categories
+	that a character is in.  The valid values are nil or a
+	bit vector of 95 elements.  Higher-level Lisp functions are
+	provided for working with category tables.  Currently categories
+	and category tables only exist when Mule support is present.
+`char'
+	A generalized char table, for mapping from one character to
+	another.  Used for case tables, syntax matching tables,
+	`keyboard-translate-table', etc.  The valid values are characters.
+`generic'
+        An even more generalized char table, for mapping from a
+	character to anything.
+`display'
+	Used for display tables, which specify how a particular character
+	is to appear when displayed.  #### Not yet implemented.
+`syntax'
+	Used for syntax tables, which specify the syntax of a particular
+	character.  Higher-level Lisp functions are provided for
+	working with syntax tables.  The valid values are integers.
+
+
+arguments: (TYPE)
+Fchar-table-type
+Return the type of CHAR-TABLE.
+See `valid-char-table-type-p'.
+
+arguments: (CHAR-TABLE)
+Freset-char-table
+Reset CHAR-TABLE to its default state.
+
+arguments: (CHAR-TABLE)
+Fmake-char-table
+Return a new, empty char table of type TYPE.
+Currently recognized types are 'char, 'category, 'display, 'generic,
+and 'syntax.  See `valid-char-table-type-p'.
+
+arguments: (TYPE)
+Fcopy-char-table
+Return a new char table which is a copy of CHAR-TABLE.
+It will contain the same values for the same characters and ranges
+as CHAR-TABLE.  The values will not themselves be copied.
+
+arguments: (CHAR-TABLE)
+Fget-char-table
+Find value for CHARACTER in CHAR-TABLE.
+
+arguments: (CHARACTER CHAR-TABLE)
+Fget-range-char-table
+Find value for a range in CHAR-TABLE.
+If there is more than one value, return MULTI (defaults to nil).
+
+arguments: (RANGE CHAR-TABLE &optional MULTI)
+Fvalid-char-table-value-p
+Return non-nil if VALUE is a valid value for CHAR-TABLE-TYPE.
+
+arguments: (VALUE CHAR-TABLE-TYPE)
+Fcheck-valid-char-table-value
+Signal an error if VALUE is not a valid value for CHAR-TABLE-TYPE.
+
+arguments: (VALUE CHAR-TABLE-TYPE)
+Fput-char-table
+Set the value for chars in RANGE to be VALUE in CHAR-TABLE.
+
+RANGE specifies one or more characters to be affected and should be
+one of the following:
+
+-- t (all characters are affected)
+-- A charset (only allowed when Mule support is present)
+-- A vector of two elements: a two-octet charset and a row number
+   (only allowed when Mule support is present)
+-- A single character
+
+VALUE must be a value appropriate for the type of CHAR-TABLE.
+See `valid-char-table-type-p'.
+
+arguments: (RANGE VALUE CHAR-TABLE)
+Fmap-char-table
+Map FUNCTION over entries in CHAR-TABLE, calling it with two args,
+each key and value in the table.
+
+RANGE specifies a subrange to map over and is in the same format as
+the RANGE argument to `put-range-table'.  If omitted or t, it defaults to
+the entire table.
+
+arguments: (FUNCTION CHAR-TABLE &optional RANGE)
+Fcategory-table-p
+Return t if OBJECT is a category table.
+A category table is a type of char table used for keeping track of
+categories.  Categories are used for classifying characters for use
+in regexps -- you can refer to a category rather than having to use
+a complicated [] expression (and category lookups are significantly
+faster).
+
+There are 95 different categories available, one for each printable
+character (including space) in the ASCII charset.  Each category
+is designated by one such character, called a "category designator".
+They are specified in a regexp using the syntax "\cX", where X is
+a category designator.
+
+A category table specifies, for each character, the categories that
+the character is in.  Note that a character can be in more than one
+category.  More specifically, a category table maps from a character
+to either the value nil (meaning the character is in no categories)
+or a 95-element bit vector, specifying for each of the 95 categories
+whether the character is in that category.
+
+Special Lisp functions are provided that abstract this, so you do not
+have to directly manipulate bit vectors.
+
+arguments: (OBJECT)
+Fcheck-category-at
+Return t if category of the character at POSITION includes DESIGNATOR.
+Optional third arg BUFFER specifies which buffer to use, and defaults
+to the current buffer.
+Optional fourth arg CATEGORY-TABLE specifies the category table to
+use, and defaults to BUFFER's category table.
+
+arguments: (POSITION DESIGNATOR &optional BUFFER CATEGORY-TABLE)
+Fchar-in-category-p
+Return t if category of CHARACTER includes DESIGNATOR, else nil.
+Optional third arg CATEGORY-TABLE specifies the category table to use,
+and defaults to the standard category table.
+
+arguments: (CHARACTER DESIGNATOR &optional CATEGORY-TABLE)
+Fcategory-table
+Return BUFFER's current category table.
+BUFFER defaults to the current buffer.
+
+arguments: (&optional BUFFER)
+Fstandard-category-table
+Return the standard category table.
+This is the one used for new buffers.
+
+arguments: ()
+Fcopy-category-table
+Return a new category table which is a copy of CATEGORY-TABLE.
+CATEGORY-TABLE defaults to the standard category table.
+
+arguments: (&optional CATEGORY-TABLE)
+Fset-category-table
+Select CATEGORY-TABLE as the new category table for BUFFER.
+BUFFER defaults to the current buffer if omitted.
+
+arguments: (CATEGORY-TABLE &optional BUFFER)
+Fcategory-designator-p
+Return t if OBJECT is a category designator (a char in the range ' ' to '~').
+
+arguments: (OBJECT)
+Fcategory-table-value-p
+Return t if OBJECT is a category table value.
+Valid values are nil or a bit vector of size 95.
+
+arguments: (OBJECT)
+Vword-combining-categories
+List of pair (cons) of categories to determine word boundary.
+
+Emacs treats a sequence of word constituent characters as a single
+word (i.e. finds no word boundary between them) iff they belongs to
+the same charset.  But, exceptions are allowed in the following cases.
+
+(1) The case that characters are in different charsets is controlled
+by the variable `word-combining-categories'.
+
+Emacs finds no word boundary between characters of different charsets
+if they have categories matching some element of this list.
+
+More precisely, if an element of this list is a cons of category CAT1
+and CAT2, and a multibyte character C1 which has CAT1 is followed by
+C2 which has CAT2, there's no word boundary between C1 and C2.
+
+For instance, to tell that ASCII characters and Latin-1 characters can
+form a single word, the element `(?l . ?l)' should be in this list
+because both characters have the category `l' (Latin characters).
+
+(2) The case that character are in the same charset is controlled by
+the variable `word-separating-categories'.
+
+Emacs find a word boundary between characters of the same charset
+if they have categories matching some element of this list.
+
+More precisely, if an element of this list is a cons of category CAT1
+and CAT2, and a multibyte character C1 which has CAT1 is followed by
+C2 which has CAT2, there's a word boundary between C1 and C2.
+
+For instance, to tell that there's a word boundary between Japanese
+Hiragana and Japanese Kanji (both are in the same charset), the
+element `(?H . ?C) should be in this list.Vword-separating-categories
+List of pair (cons) of categories to determine word boundary.
+See the documentation of the variable `word-combining-categories'.Freally-early-error-handler
+You should almost certainly not be using this.
+
+arguments: (X)
+Frecursive-edit
+Invoke the editor command loop recursively.
+To get out of the recursive edit, a command can do `(throw 'exit nil)';
+that tells this function to return.
+Alternately, `(throw 'exit t)' makes this function signal an error.
+
+arguments: ()
+Fcommand-loop-1
+Invoke the internals of the canonical editor command loop.
+Don't call this unless you know what you're doing.
+
+arguments: ()
+Vcommand-loop-level
+Number of recursive edits in progress.Vdisabled-command-hook
+Value is called instead of any command that is disabled,
+i.e. has a non-nil `disabled' property.Vleave-window-hook
+Not yet implemented.Venter-window-hook
+Not yet implemented.Vtop-level
+Form to evaluate when Emacs starts up.
+Useful to set before you dump a modified Emacs.Vcommand-loop
+Function or one argument to call to read and process keyboard commands.
+The passed argument specifies whether or not to handle errors.Fforward-char
+Move point right COUNT characters (left if COUNT is negative).
+On attempt to pass end of buffer, stop and signal `end-of-buffer'.
+On attempt to pass beginning of buffer, stop and signal `beginning-of-buffer'.
+On reaching end of buffer, stop and signal error.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
+arguments: (&optional COUNT BUFFER)
+Fbackward-char
+Move point left COUNT characters (right if COUNT is negative).
+On attempt to pass end of buffer, stop and signal `end-of-buffer'.
+On attempt to pass beginning of buffer, stop and signal `beginning-of-buffer'.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
+arguments: (&optional COUNT BUFFER)
+Fforward-line
+Move COUNT lines forward (backward if COUNT is negative).
+Precisely, if point is on line I, move to the start of line I + COUNT.
+If there isn't room, go as far as possible (no error).
+Returns the count of lines left to move.  If moving forward,
+that is COUNT - number of lines moved; if backward, COUNT + number moved.
+With positive COUNT, a non-empty line at the end counts as one line
+  successfully moved (for the return value).
+If BUFFER is nil, the current buffer is assumed.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
+arguments: (&optional COUNT BUFFER)
+Fpoint-at-bol
+Return the character position of the first character on the current line.
+With argument COUNT not nil or 1, move forward COUNT - 1 lines first.
+If scan reaches end of buffer, return that position.
+This function does not move point.
+
+arguments: (&optional COUNT BUFFER)
+Fbeginning-of-line
+Move point to beginning of current line.
+With argument COUNT not nil or 1, move forward COUNT - 1 lines first.
+If scan reaches end of buffer, stop there without error.
+If BUFFER is nil, the current buffer is assumed.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
+arguments: (&optional COUNT BUFFER)
+Fpoint-at-eol
+Return the character position of the last character on the current line.
+With argument COUNT not nil or 1, move forward COUNT - 1 lines first.
+If scan reaches end of buffer, return that position.
+This function does not move point.
+
+arguments: (&optional COUNT BUFFER)
+Fend-of-line
+Move point to end of current line.
+With argument COUNT not nil or 1, move forward COUNT - 1 lines first.
+If scan reaches end of buffer, stop there without error.
+If BUFFER is nil, the current buffer is assumed.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
+arguments: (&optional COUNT BUFFER)
+Fdelete-char
+Delete the following COUNT characters (previous, with negative COUNT).
+Optional second arg KILLP non-nil means kill instead (save in kill ring).
+Interactively, COUNT is the prefix arg, and KILLP is set if
+COUNT was explicitly specified.
+
+arguments: (&optional COUNT KILLP)
+Fdelete-backward-char
+Delete the previous COUNT characters (following, with negative COUNT).
+Optional second arg KILLP non-nil means kill instead (save in kill ring).
+Interactively, COUNT is the prefix arg, and KILLP is set if
+COUNT was explicitly specified.
+
+arguments: (&optional COUNT KILLP)
+Fself-insert-command
+Insert the character you type.
+Whichever character you type to run this command is inserted.
+If a prefix arg COUNT is specified, the character is inserted COUNT times.
+
+arguments: (COUNT)
+Fself-insert-internal
+Invoke `self-insert-command' as if CHARACTER is entered from keyboard.
+
+arguments: (CHARACTER)
+Vself-insert-face
+If non-nil, set the face of the next self-inserting character to this.
+See also `self-insert-face-command'.Vself-insert-face-command
+This is the command that set up `self-insert-face'.
+If `last-command' does not equal this value, we ignore `self-insert-face'.Vblink-paren-function
+Function called, if non-nil, whenever a close parenthesis is inserted.
+More precisely, a char with closeparen syntax is self-inserted.Vauto-fill-chars
+A char-table for characters which invoke auto-filling.
+Such characters have value t in this table.Fvalid-console-type-p
+Return t if CONSOLE-TYPE is a valid console type.
+Valid types are 'x, 'tty, and 'stream.
+
+arguments: (CONSOLE-TYPE)
+Fconsole-type-list
+Return a list of valid console types.
+
+arguments: ()
+Fcdfw-console
+Given a console, device, frame, or window, return the associated console.
+Return nil otherwise.
+
+arguments: (OBJECT)
+Fselected-console
+Return the console which is currently active.
+
+arguments: ()
+Fselect-console
+Select the console CONSOLE.
+Subsequent editing commands apply to its selected device, selected frame,
+and selected window.  The selection of CONSOLE lasts until the next time
+the user does something to select a different console, or until the next
+time this function is called.
+
+arguments: (CONSOLE)
+Fconsolep
+Return non-nil if OBJECT is a console.
+
+arguments: (OBJECT)
+Fconsole-live-p
+Return non-nil if OBJECT is a console that has not been deleted.
+
+arguments: (OBJECT)
+Fconsole-type
+Return the console type (e.g. `x' or `tty') of CONSOLE.
+Value is `tty' for a tty console (a character-only terminal),
+`x' for a console that is an X display,
+`mswindows' for a console that is a Windows NT/95/97 connection,
+`pc' for a console that is a direct-write MS-DOS connection (not yet
+  implemented),
+`stream' for a stream console (which acts like a stdio stream), and
+`dead' for a deleted console.
+
+arguments: (&optional CONSOLE)
+Fconsole-name
+Return the name of CONSOLE.
+
+arguments: (&optional CONSOLE)
+Fconsole-connection
+Return the connection of the specified console.
+CONSOLE defaults to the selected console if omitted.
+
+arguments: (&optional CONSOLE)
+Ffind-console
+Look for an existing console attached to connection CONNECTION.
+Return the console if found; otherwise, return nil.
+
+If TYPE is specified, only return consoles of that type; otherwise,
+return consoles of any type. (It is possible, although unlikely,
+that two consoles of different types could have the same connection
+name; in such a case, the first console found is returned.)
+
+arguments: (CONNECTION &optional TYPE)
+Fget-console
+Look for an existing console attached to connection CONNECTION.
+Return the console if found; otherwise, signal an error.
+
+If TYPE is specified, only return consoles of that type; otherwise,
+return consoles of any type. (It is possible, although unlikely,
+that two consoles of different types could have the same connection
+name; in such a case, the first console found is returned.)
+
+arguments: (CONNECTION &optional TYPE)
+Fdelete-console
+Delete CONSOLE, permanently eliminating it from use.
+Normally, you cannot delete the last non-minibuffer-only frame (you must
+use `save-buffers-kill-emacs' or `kill-emacs').  However, if optional
+second argument FORCE is non-nil, you can delete the last frame. (This
+will automatically call `save-buffers-kill-emacs'.)
+
+arguments: (CONSOLE &optional FORCE)
+Fconsole-list
+Return a list of all consoles.
+
+arguments: ()
+Fconsole-device-list
+Return a list of all devices on CONSOLE.
+If CONSOLE is nil, the selected console is used.
+
+arguments: (&optional CONSOLE)
+Fconsole-enable-input
+Enable input on console CONSOLE.
+
+arguments: (CONSOLE)
+Fconsole-disable-input
+Disable input on console CONSOLE.
+
+arguments: (CONSOLE)
+Fconsole-on-window-system-p
+Return t if CONSOLE is on a window system.
+If CONSOLE is nil, the selected console is used.
+This generally means that there is support for the mouse, the menubar,
+the toolbar, glyphs, etc.
+
+arguments: (&optional CONSOLE)
+Fsuspend-emacs
+Stop Emacs and return to superior process.  You can resume later.
+On systems that don't have job control, run a subshell instead.
+
+If optional arg STUFFSTRING is non-nil, its characters are stuffed
+to be read as terminal input by Emacs's superior shell.
+
+Before suspending, run the normal hook `suspend-hook'.
+After resumption run the normal hook `suspend-resume-hook'.
+
+Some operating systems cannot stop the Emacs process and resume it later.
+On such systems, Emacs will start a subshell and wait for it to exit.
+
+arguments: (&optional STUFFSTRING)
+Fsuspend-console
+Suspend a console.  For tty consoles, it sends a signal to suspend
+the process in charge of the tty, and removes the devices and
+frames of that console from the display.
+
+If optional arg CONSOLE is non-nil, it is the console to be suspended.
+Otherwise it is assumed to be the selected console.
+
+Some operating systems cannot stop processes and resume them later.
+On such systems, who knows what will happen.
+
+arguments: (&optional CONSOLE)
+Fresume-console
+Re-initialize a previously suspended console.
+For tty consoles, do stuff to the tty to make it sane again.
+
+arguments: (CONSOLE)
+Fset-input-mode
+Set mode of reading keyboard input.
+First arg is ignored, for backward compatibility.
+Second arg FLOW non-nil means use ^S/^Q flow control for output to terminal
+ (no effect except in CBREAK mode).
+Third arg META t means accept 8-bit input (for a Meta key).
+ META nil means ignore the top bit, on the assumption it is parity.
+ Otherwise, accept 8-bit input and don't use the top bit for Meta.
+First three arguments only apply to TTY consoles.
+Optional fourth arg QUIT if non-nil specifies character to use for quitting.
+Optional fifth arg CONSOLE specifies console to make changes to; nil means
+ the selected console.
+See also `current-input-mode'.
+
+arguments: (IGNORED FLOW META &optional QUIT CONSOLE)
+Fcurrent-input-mode
+Return information about the way Emacs currently reads keyboard input.
+Optional arg CONSOLE specifies console to return information about; nil means
+ the selected console.
+The value is a list of the form (nil FLOW META QUIT), where
+  FLOW is non-nil if Emacs uses ^S/^Q flow control for output to the
+    terminal; this does not apply if Emacs uses interrupt-driven input.
+  META is t if accepting 8-bit input with 8th bit as Meta flag.
+    META nil means ignoring the top bit, on the assumption it is parity.
+    META is neither t nor nil if accepting 8-bit input and using
+    all 8 bits as the character code.
+  QUIT is the character Emacs currently uses to quit.
+FLOW, and META are only meaningful for TTY consoles.
+The elements of this list correspond to the arguments of
+`set-input-mode'.
+
+arguments: (&optional CONSOLE)
+Vcreate-console-hook
+Function or functions to call when a console is created.
+One argument, the newly-created console.
+This is called after the first frame has been created, but before
+  calling the `create-device-hook' or `create-frame-hook'.
+Note that in general the console will not be selected.Vdelete-console-hook
+Function or functions to call when a console is deleted.
+One argument, the to-be-deleted console.Vdefault-function-key-map
+Default value of `function-key-map' for consoles that don't override it.
+This is the same as (default-value 'function-key-map).Vfunction-key-map
+Keymap mapping ASCII function key sequences onto their preferred forms.
+This allows Emacs to recognize function keys sent from ASCII
+terminals at any point in a key sequence.
+
+The `read-key-sequence' function replaces any subsequence bound by
+`function-key-map' with its binding.  More precisely, when the active
+keymaps have no binding for the current key sequence but
+`function-key-map' binds a suffix of the sequence to a vector or string,
+`read-key-sequence' replaces the matching suffix with its binding, and
+continues with the new sequence.
+
+The events that come from bindings in `function-key-map' are not
+themselves looked up in `function-key-map'.
+
+For example, suppose `function-key-map' binds `ESC O P' to [f1].
+Typing `ESC O P' to `read-key-sequence' would return
+[#<keypress-event f1>].  Typing `C-x ESC O P' would return
+[#<keypress-event control-X> #<keypress-event f1>].  If [f1]
+were a prefix key, typing `ESC O P x' would return
+[#<keypress-event f1> #<keypress-event x>].Vtty-erase-char
+The ERASE character as set by the user with stty.
+When this value cannot be determined or would be meaningless (on non-TTY
+consoles, for example), it is set to nil.Vdefining-kbd-macro
+Non-nil while a keyboard macro is being defined.  Don't set this!Vlast-kbd-macro
+Last keyboard macro defined, as a vector of events; nil if none defined.Vprefix-arg
+The value of the prefix argument for the next editing command.
+It may be a number, or the symbol `-' for just a minus sign as arg,
+or a list whose car is a number for just one or more C-U's
+or nil if no argument has been specified.
+
+You cannot examine this variable to find the argument for this command
+since it has been set to nil by the time you can look.
+Instead, you should use the variable `current-prefix-arg', although
+normally commands can get this prefix argument with (interactive "P").Vdefault-minibuffer-frame
+Minibufferless frames use this frame's minibuffer.
+
+Emacs cannot create minibufferless frames unless this is set to an
+appropriate surrogate.
+
+XEmacs consults this variable only when creating minibufferless
+frames; once the frame is created, it sticks with its assigned
+minibuffer, no matter what this variable is set to.  This means that
+this variable doesn't necessarily say anything meaningful about the
+current set of frames, or where the minibuffer is currently being
+displayed.Voverriding-terminal-local-map
+Keymap that overrides all other local keymaps, for the selected console only.
+If this variable is non-nil, it is used as a keymap instead of the
+buffer's local map, and the minor mode keymaps and text property keymaps.Vterminal-console
+The initial console object, which represents XEmacs' stdout.Vterminal-device
+The initial device object, which represents XEmacs' stdout.Vterminal-frame
+The initial frame object, which represents XEmacs' stdout.Fwrong-type-argument
+Signal an error until the correct type value is given by the user.
+This function loops, signalling a continuable `wrong-type-argument' error
+with PREDICATE and VALUE as the data associated with the error and then
+calling PREDICATE on the returned value, until the value gotten satisfies
+PREDICATE.  At that point, the gotten value is returned.
+
+arguments: (PREDICATE VALUE)
+Feq
+Return t if the two args are the same Lisp object.
+
+arguments: (OBJECT1 OBJECT2)
+Fold-eq
+Return t if the two args are (in most cases) the same Lisp object.
+
+Special kludge: A character is considered `old-eq' to its equivalent integer
+even though they are not the same object and are in fact of different
+types.  This is ABSOLUTELY AND UTTERLY HORRENDOUS but is necessary to
+preserve byte-code compatibility with v19.  This kludge is known as the
+"char-int confoundance disease" and appears in a number of other
+functions with `old-foo' equivalents.
+
+Do not use this function!
+
+arguments: (OBJECT1 OBJECT2)
+Fnull
+Return t if OBJECT is nil.
+
+arguments: (OBJECT)
+Fconsp
+Return t if OBJECT is a cons cell.  `nil' is not a cons cell.
+
+arguments: (OBJECT)
+Fatom
+Return t if OBJECT is not a cons cell.  `nil' is not a cons cell.
+
+arguments: (OBJECT)
+Flistp
+Return t if OBJECT is a list.  `nil' is a list.
+
+arguments: (OBJECT)
+Fnlistp
+Return t if OBJECT is not a list.  `nil' is a list.
+
+arguments: (OBJECT)
+Ftrue-list-p
+Return t if OBJECT is a non-dotted, i.e. nil-terminated, list.
+
+arguments: (OBJECT)
+Fsymbolp
+Return t if OBJECT is a symbol.
+
+arguments: (OBJECT)
+Fkeywordp
+Return t if OBJECT is a keyword.
+
+arguments: (OBJECT)
+Fvectorp
+Return t if OBJECT is a vector.
+
+arguments: (OBJECT)
+Fbit-vector-p
+Return t if OBJECT is a bit vector.
+
+arguments: (OBJECT)
+Fstringp
+Return t if OBJECT is a string.
+
+arguments: (OBJECT)
+Farrayp
+Return t if OBJECT is an array (string, vector, or bit vector).
+
+arguments: (OBJECT)
+Fsequencep
+Return t if OBJECT is a sequence (list or array).
+
+arguments: (OBJECT)
+Fmarkerp
+Return t if OBJECT is a marker (editor pointer).
+
+arguments: (OBJECT)
+Fsubrp
+Return t if OBJECT is a built-in function.
+
+arguments: (OBJECT)
+Fsubr-min-args
+Return minimum number of args built-in function SUBR may be called with.
+
+arguments: (SUBR)
+Fsubr-max-args
+Return maximum number of args built-in function SUBR may be called with,
+or nil if it takes an arbitrary number of arguments or is a special form.
+
+arguments: (SUBR)
+Fsubr-interactive
+Return the interactive spec of the subr object SUBR, or nil.
+If non-nil, the return value will be a list whose first element is
+`interactive' and whose second element is the interactive spec.
+
+arguments: (SUBR)
+Fcharacterp
+Return t if OBJECT is a character.
+Unlike in XEmacs v19 and FSF Emacs, a character is its own primitive type.
+Any character can be converted into an equivalent integer using
+`char-int'.  To convert the other way, use `int-char'; however,
+only some integers can be converted into characters.  Such an integer
+is called a `char-int'; see `char-int-p'.
+
+Some functions that work on integers (e.g. the comparison functions
+<, <=, =, /=, etc. and the arithmetic functions +, -, *, etc.)
+accept characters and implicitly convert them into integers.  In
+general, functions that work on characters also accept char-ints and
+implicitly convert them into characters.  WARNING: Neither of these
+behaviors is very desirable, and they are maintained for backward
+compatibility with old E-Lisp programs that confounded characters and
+integers willy-nilly.  These behaviors may change in the future; therefore,
+do not rely on them.  Instead, use the character-specific functions such
+as `char='.
+
+arguments: (OBJECT)
+Fchar-to-int
+Convert CHARACTER into an equivalent integer.
+The resulting integer will always be non-negative.  The integers in
+the range 0 - 255 map to characters as follows:
+
+0 - 31		Control set 0
+32 - 127	ASCII
+128 - 159	Control set 1
+160 - 255	Right half of ISO-8859-1
+
+If support for Mule does not exist, these are the only valid character
+values.  When Mule support exists, the values assigned to other characters
+may vary depending on the particular version of XEmacs, the order in which
+character sets were loaded, etc., and you should not depend on them.
+
+arguments: (CHARACTER)
+Fint-to-char
+Convert integer INTEGER into the equivalent character.
+Not all integers correspond to valid characters; use `char-int-p' to
+determine whether this is the case.  If the integer cannot be converted,
+nil is returned.
+
+arguments: (INTEGER)
+Fchar-int-p
+Return t if OBJECT is an integer that can be converted into a character.
+See `char-int'.
+
+arguments: (OBJECT)
+Fchar-or-char-int-p
+Return t if OBJECT is a character or an integer that can be converted into one.
+
+arguments: (OBJECT)
+Fchar-or-string-p
+Return t if OBJECT is a character (or a char-int) or a string.
+It is semi-hateful that we allow a char-int here, as it goes against
+the name of this function, but it makes the most sense considering the
+other steps we take to maintain compatibility with the old character/integer
+confoundedness in older versions of E-Lisp.
+
+arguments: (OBJECT)
+Fintegerp
+Return t if OBJECT is an integer.
+
+arguments: (OBJECT)
+Finteger-or-marker-p
+Return t if OBJECT is an integer or a marker (editor pointer).
+
+arguments: (OBJECT)
+Finteger-or-char-p
+Return t if OBJECT is an integer or a character.
+
+arguments: (OBJECT)
+Finteger-char-or-marker-p
+Return t if OBJECT is an integer, character or a marker (editor pointer).
+
+arguments: (OBJECT)
+Fnatnump
+Return t if OBJECT is a nonnegative integer.
+
+arguments: (OBJECT)
+Fbitp
+Return t if OBJECT is a bit (0 or 1).
+
+arguments: (OBJECT)
+Fnumberp
+Return t if OBJECT is a number (floating point or integer).
+
+arguments: (OBJECT)
+Fnumber-or-marker-p
+Return t if OBJECT is a number or a marker.
+
+arguments: (OBJECT)
+Fnumber-char-or-marker-p
+Return t if OBJECT is a number, character or a marker.
+
+arguments: (OBJECT)
+Ffloatp
+Return t if OBJECT is a floating point number.
+
+arguments: (OBJECT)
+Ftype-of
+Return a symbol representing the type of OBJECT.
+
+arguments: (OBJECT)
+Fcar
+Return the car of LIST.  If arg is nil, return nil.
+Error if arg is not nil and not a cons cell.  See also `car-safe'.
+
+arguments: (LIST)
+Fcar-safe
+Return the car of OBJECT if it is a cons cell, or else nil.
+
+arguments: (OBJECT)
+Fcdr
+Return the cdr of LIST.  If arg is nil, return nil.
+Error if arg is not nil and not a cons cell.  See also `cdr-safe'.
+
+arguments: (LIST)
+Fcdr-safe
+Return the cdr of OBJECT if it is a cons cell, else nil.
+
+arguments: (OBJECT)
+Fsetcar
+Set the car of CONS-CELL to be NEWCAR.  Return NEWCAR.
+
+arguments: (CONS-CELL NEWCAR)
+Fsetcdr
+Set the cdr of CONS-CELL to be NEWCDR.  Return NEWCDR.
+
+arguments: (CONS-CELL NEWCDR)
+Findirect-function
+Return the function at the end of OBJECT's function chain.
+If OBJECT is a symbol, follow all function indirections and return
+the final function binding.
+If OBJECT is not a symbol, just return it.
+Signal a void-function error if the final symbol is unbound.
+Signal a cyclic-function-indirection error if there is a loop in the
+function chain of symbols.
+
+arguments: (OBJECT)
+Faref
+Return the element of ARRAY at index INDEX.
+ARRAY may be a vector, bit vector, or string.  INDEX starts at 0.
+
+arguments: (ARRAY INDEX)
+Faset
+Store into the element of ARRAY at index INDEX the value NEWVAL.
+ARRAY may be a vector, bit vector, or string.  INDEX starts at 0.
+
+arguments: (ARRAY INDEX NEWVAL)
+F=
+Return t if all the arguments are numerically equal.
+The arguments may be numbers, characters or markers.F<
+Return t if the sequence of arguments is monotonically increasing.
+The arguments may be numbers, characters or markers.F>
+Return t if the sequence of arguments is monotonically decreasing.
+The arguments may be numbers, characters or markers.F<=
+Return t if the sequence of arguments is monotonically nondecreasing.
+The arguments may be numbers, characters or markers.F>=
+Return t if the sequence of arguments is monotonically nonincreasing.
+The arguments may be numbers, characters or markers.F/=
+Return t if no two arguments are numerically equal.
+The arguments may be numbers, characters or markers.Fzerop
+Return t if NUMBER is zero.
+
+arguments: (NUMBER)
+Fnumber-to-string
+Convert NUMBER to a string by printing it in decimal.
+Uses a minus sign if negative.
+NUMBER may be an integer or a floating point number.
+
+arguments: (NUMBER)
+Fstring-to-number
+Convert STRING to a number by parsing it as a number in base BASE.
+This parses both integers and floating point numbers.
+It ignores leading spaces and tabs.
+
+If BASE is nil or omitted, base 10 is used.
+BASE must be an integer between 2 and 16 (inclusive).
+Floating point numbers always use base 10.
+
+arguments: (STRING &optional BASE)
+F+
+Return sum of any number of arguments.
+The arguments should all be numbers, characters or markers.F-
+Negate number or subtract numbers, characters or markers.
+With one arg, negates it.  With more than one arg,
+subtracts all but the first from the first.F*
+Return product of any number of arguments.
+The arguments should all be numbers, characters or markers.F/
+Return first argument divided by all the remaining arguments.
+The arguments must be numbers, characters or markers.
+With one argument, reciprocates the argument.Fmax
+Return largest of all the arguments.
+All arguments must be numbers, characters or markers.
+The value is always a number; markers and characters are converted
+to numbers.Fmin
+Return smallest of all the arguments.
+All arguments must be numbers, characters or markers.
+The value is always a number; markers and characters are converted
+to numbers.Flogand
+Return bitwise-and of all the arguments.
+Arguments may be integers, or markers or characters converted to integers.Flogior
+Return bitwise-or of all the arguments.
+Arguments may be integers, or markers or characters converted to integers.Flogxor
+Return bitwise-exclusive-or of all the arguments.
+Arguments may be integers, or markers or characters converted to integers.Flognot
+Return the bitwise complement of NUMBER.
+NUMBER may be an integer, marker or character converted to integer.
+
+arguments: (NUMBER)
+F%
+Return remainder of first arg divided by second.
+Both must be integers, characters or markers.
+
+arguments: (NUMBER1 NUMBER2)
+Fmod
+Return X modulo Y.
+The result falls between zero (inclusive) and Y (exclusive).
+Both X and Y must be numbers, characters or markers.
+If either argument is a float, a float will be returned.
+
+arguments: (X Y)
+Fash
+Return VALUE with its bits shifted left by COUNT.
+If COUNT is negative, shifting is actually to the right.
+In this case, the sign bit is duplicated.
+
+arguments: (VALUE COUNT)
+Flsh
+Return VALUE with its bits shifted left by COUNT.
+If COUNT is negative, shifting is actually to the right.
+In this case, zeros are shifted in on the left.
+
+arguments: (VALUE COUNT)
+F1+
+Return NUMBER plus one.  NUMBER may be a number, character or marker.
+Markers and characters are converted to integers.
+
+arguments: (NUMBER)
+F1-
+Return NUMBER minus one.  NUMBER may be a number, character or marker.
+Markers and characters are converted to integers.
+
+arguments: (NUMBER)
+Fweak-list-p
+Return non-nil if OBJECT is a weak list.
+
+arguments: (OBJECT)
+Fmake-weak-list
+Return a new weak list object of type TYPE.
+A weak list object is an object that contains a list.  This list behaves
+like any other list except that its elements do not count towards
+garbage collection -- if the only pointer to an object is inside a weak
+list (other than pointers in similar objects such as weak hash tables),
+the object is garbage collected and automatically removed from the list.
+This is used internally, for example, to manage the list holding the
+children of an extent -- an extent that is unused but has a parent will
+still be reclaimed, and will automatically be removed from its parent's
+list of children.
+
+Optional argument TYPE specifies the type of the weak list, and defaults
+to `simple'.  Recognized types are
+
+`simple'	Objects in the list disappear if not pointed to.
+`assoc'		Objects in the list disappear if they are conses
+		and either the car or the cdr of the cons is not
+		pointed to.
+`key-assoc'	Objects in the list disappear if they are conses
+		and the car is not pointed to.
+`value-assoc'	Objects in the list disappear if they are conses
+		and the cdr is not pointed to.
+`full-assoc'	Objects in the list disappear if they are conses
+		and neither the car nor the cdr is pointed to.
+
+arguments: (&optional TYPE)
+Fweak-list-type
+Return the type of the given weak-list object.
+
+arguments: (WEAK)
+Fweak-list-list
+Return the list contained in a weak-list object.
+
+arguments: (WEAK)
+Fset-weak-list-list
+Change the list contained in a weak-list object.
+
+arguments: (WEAK NEW-LIST)
+Vdebug-issue-ebola-notices
+If non-zero, note when your code may be suffering from char-int confoundance.
+That is to say, if XEmacs encounters a usage of `eq', `memq', `equal',
+etc. where an int and a char with the same value are being compared,
+it will issue a notice on stderr to this effect, along with a backtrace.
+In such situations, the result would be different in XEmacs 19 versus
+XEmacs 20, and you probably don't want this.
+
+Note that in order to see these notices, you have to byte compile your
+code under XEmacs 20 -- any code byte-compiled under XEmacs 19 will
+have its chars and ints all confounded in the byte code, making it
+impossible to accurately determine Ebola infection.Vdebug-ebola-backtrace-length
+Length (in stack frames) of short backtrace printed out in Ebola notices.
+See `debug-issue-ebola-notices'.Fvalid-device-class-p
+Given a DEVICE-CLASS, return t if it is valid.
+Valid classes are 'color, 'grayscale, and 'mono.
+
+arguments: (DEVICE-CLASS)
+Fdevice-class-list
+Return a list of valid device classes.
+
+arguments: ()
+Fdfw-device
+Given a device, frame, or window, return the associated device.
+Return nil otherwise.
+
+arguments: (OBJECT)
+Fselected-device
+Return the device which is currently active.
+If optional CONSOLE is non-nil, return the device that would be currently
+active if CONSOLE were the selected console.
+
+arguments: (&optional CONSOLE)
+Fselect-device
+Select the device DEVICE.
+Subsequent editing commands apply to its console, selected frame,
+and selected window.
+The selection of DEVICE lasts until the next time the user does
+something to select a different device, or until the next time this
+function is called.
+
+arguments: (DEVICE)
+Fset-device-selected-frame
+Set the selected frame of device object DEVICE to FRAME.
+If DEVICE is nil, the selected device is used.
+If DEVICE is the selected device, this makes FRAME the selected frame.
+
+arguments: (DEVICE FRAME)
+Fdevicep
+Return non-nil if OBJECT is a device.
+
+arguments: (OBJECT)
+Fdevice-live-p
+Return non-nil if OBJECT is a device that has not been deleted.
+
+arguments: (OBJECT)
+Fdevice-name
+Return the name of the specified device.
+DEVICE defaults to the selected device if omitted.
+
+arguments: (&optional DEVICE)
+Fdevice-connection
+Return the connection of the specified device.
+DEVICE defaults to the selected device if omitted.
+
+arguments: (&optional DEVICE)
+Fdevice-console
+Return the console of the specified device.
+DEVICE defaults to the selected device if omitted.
+
+arguments: (&optional DEVICE)
+Ffind-device
+Look for an existing device attached to connection CONNECTION.
+Return the device if found; otherwise, return nil.
+
+If TYPE is specified, only return devices of that type; otherwise,
+return devices of any type. (It is possible, although unlikely,
+that two devices of different types could have the same connection
+name; in such a case, the first device found is returned.)
+
+arguments: (CONNECTION &optional TYPE)
+Fget-device
+Look for an existing device attached to connection CONNECTION.
+Return the device if found; otherwise, signal an error.
+
+If TYPE is specified, only return devices of that type; otherwise,
+return devices of any type. (It is possible, although unlikely,
+that two devices of different types could have the same connection
+name; in such a case, the first device found is returned.)
+
+arguments: (CONNECTION &optional TYPE)
+Fmake-device
+Return a new device of type TYPE, attached to connection CONNECTION.
+
+The valid values for CONNECTION are device-specific; however,
+CONNECTION is generally a string. (Specifically, for X devices,
+CONNECTION should be a display specification such as "foo:0", and
+for TTY devices, CONNECTION should be the filename of a TTY device
+file, such as "/dev/ttyp4", or nil to refer to XEmacs' standard
+input/output.)
+
+PROPS, if specified, should be a plist of properties controlling
+device creation.
+
+If CONNECTION specifies an already-existing device connection, that
+device is simply returned; no new device is created, and PROPS
+have no effect.
+
+arguments: (TYPE CONNECTION &optional PROPS)
+Fdelete-device
+Delete DEVICE, permanently eliminating it from use.
+Normally, you cannot delete the last non-minibuffer-only frame (you must
+use `save-buffers-kill-emacs' or `kill-emacs').  However, if optional
+second argument FORCE is non-nil, you can delete the last frame. (This
+will automatically call `save-buffers-kill-emacs'.)
+
+arguments: (DEVICE &optional FORCE)
+Fdevice-frame-list
+Return a list of all frames on DEVICE.
+If DEVICE is nil, the selected device will be used.
+
+arguments: (&optional DEVICE)
+Fdevice-class
+Return the class (color behavior) of DEVICE.
+This will be one of 'color, 'grayscale, or 'mono.
+
+arguments: (&optional DEVICE)
+Fset-device-class
+Set the class (color behavior) of DEVICE.
+CLASS should be one of 'color, 'grayscale, or 'mono.
+This is only allowed on device such as TTY devices, where the color
+behavior cannot necessarily be determined automatically.
+
+arguments: (DEVICE CLASS)
+Fset-device-baud-rate
+Set the output baud rate of DEVICE to RATE.
+On most systems, changing this value will affect the amount of padding
+and other strategic decisions made during redisplay.
+
+arguments: (DEVICE RATE)
+Fdevice-baud-rate
+Return the output baud rate of DEVICE.
+
+arguments: (&optional DEVICE)
+Fdevice-printer-p
+Return t if DEVICE is a printer, nil if it is a display. DEVICE defaults
+to selected device if omitted, and must be live if specified.
+
+arguments: (&optional DEVICE)
+Fdevice-system-metric
+Get a metric for DEVICE as provided by the system.
+
+METRIC must be a symbol specifying requested metric.  Note that the metrics
+returned are these provided by the system internally, not read from resources,
+so obtained from the most internal level.
+
+If a metric is not provided by the system, then DEFAULT is returned.
+
+When DEVICE is nil, selected device is assumed
+
+Metrics, by group, are:
+
+COLORS.  Colors are returned as valid color instantiators.  No other assumption
+on the returned value should be made (i.e. it can be a string on one system but
+a color instance on another).  For colors, returned value is a cons of
+foreground and background colors.  Note that if the system provides only one
+color of the pair, the second one may be nil.
+
+color-default         Standard window text foreground and background.
+color-select          Selection highlight text and background colors.
+color-balloon         Balloon popup text and background colors.
+color-3d-face         3-D object (button, modeline) text and surface colors.
+color-3d-light        Fore and back colors for 3-D edges facing light source.
+color-3d-dark         Fore and back colors for 3-D edges facing away from
+                      light source.
+color-menu            Text and background for menus
+color-menu-highlight  Selected menu item colors
+color-menu-button     Menu button colors
+color-menu-disabled   Unselectable menu item colors
+color-toolbar         Toolbar foreground and background colors
+color-scrollbar       Scrollbar foreground and background colors
+color-desktop         Desktop window colors
+color-workspace       Workspace window colors
+
+FONTS. Fonts are returned as valid font instantiators.  No other assumption on
+the returned value should be made (i.e. it can be a string on one system but
+font instance on another).
+
+font-default          Default fixed width font.
+font-menubar          Menubar font
+font-dialog           Dialog boxes font
+
+GEOMETRY. These metrics are returned as conses of (X . Y).  As with colors,
+either car or cdr of the cons may be nil if the system does not provide one
+of the corresponding dimensions.
+
+size-cursor           Mouse cursor size.
+size-scrollbar        Scrollbars (WIDTH . HEIGHT)
+size-menu             Menubar height, as (nil . HEIGHT)
+size-toolbar          Toolbar width and height.
+size-toolbar-button   Toolbar button size.
+size-toolbar-border   Toolbar border width and height.
+size-icon             Icon dimensions.
+size-icon-small       Small icon dimensions.
+size-device           Device screen or paper size in pixels.
+size-workspace        Workspace size in pixels. This can be less than or
+                      equal to the above. For displays, this is the area
+                      available to applications less window manager
+                      decorations. For printers, this is the size of
+                      printable area.
+offset-workspace      Offset of workspace area from the top left corner
+                      of screen or paper, in pixels.
+size-device-mm        Device screen size in millimeters.
+device-dpi            Device resolution, in dots per inch.
+num-bit-planes        Integer, number of device bit planes.
+num-color-cells       Integer, number of device color cells.
+
+FEATURES.  This group reports various device features.  If a feature is
+present, integer 1 (one) is returned, if it is not present, then integer
+0 (zero) is returned.  If the system is unaware of the feature, then
+DEFAULT is returned.
+
+mouse-buttons         Integer, number of mouse buttons, or zero if no mouse.
+swap-buttons          Non-zero if left and right mouse buttons are swapped.
+show-sounds           User preference for visual over audible bell.
+slow-device           Device is slow, avoid animation.
+security              Non-zero if user environment is secure.
+
+arguments: (DEVICE &optional METRIC DEFAULT)
+Fdevice-system-metrics
+Get a property list of device metric for DEVICE.
+
+See `device-system-metric' for the description of available metrics.
+DEVICE defaults to selected device when omitted.
+
+arguments: (&optional DEVICE)
+Fdomain-device-type
+Return the device type symbol for a DOMAIN, e.g. 'x or 'tty.
+DOMAIN can be either a window, frame, device or console.
+
+arguments: (&optional DOMAIN)
+Vcreate-device-hook
+Function or functions to call when a device is created.
+One argument, the newly-created device.
+This is called after the first frame has been created, but before
+  calling the `create-frame-hook'.
+Note that in general the device will not be selected.Vdelete-device-hook
+Function or functions to call when a device is deleted.
+One argument, the to-be-deleted device.Fdirectory-files
+Return a list of names of files in DIRECTORY.
+There are four optional arguments:
+If FULL is non-nil, absolute pathnames of the files are returned.
+If MATCH is non-nil, only pathnames containing that regexp are returned.
+If NOSORT is non-nil, the list is not sorted--its order is unpredictable.
+ NOSORT is useful if you plan to sort the result yourself.
+If FILES-ONLY is the symbol t, then only the "files" in the directory
+ will be returned; subdirectories will be excluded.  If FILES-ONLY is not
+ nil and not t, then only the subdirectories will be returned.  Otherwise,
+ if FILES-ONLY is nil (the default) then both files and subdirectories will
+ be returned.
+
+arguments: (DIRECTORY &optional FULL MATCH NOSORT FILES-ONLY)
+Ffile-name-completion
+Complete file name PARTIAL-FILENAME in directory DIRECTORY.
+Return the longest prefix common to all file names in DIRECTORY
+that start with PARTIAL-FILENAME.
+If there is only one and PARTIAL-FILENAME matches it exactly, return t.
+Return nil if DIRECTORY contains no name starting with PARTIAL-FILENAME.
+
+File names which end with any member of `completion-ignored-extensions'
+are not considered as possible completions for PARTIAL-FILENAME unless
+there is no other possible completion. `completion-ignored-extensions'
+is not applied to the names of directories.
+
+arguments: (PARTIAL-FILENAME DIRECTORY)
+Ffile-name-all-completions
+Return a list of all completions of PARTIAL-FILENAME in DIRECTORY.
+These are all file names in DIRECTORY which begin with PARTIAL-FILENAME.
+
+File names which end with any member of `completion-ignored-extensions'
+are not considered as possible completions for PARTIAL-FILENAME unless
+there is no other possible completion. `completion-ignored-extensions'
+is not applied to the names of directories.
+
+arguments: (PARTIAL-FILENAME DIRECTORY)
+Fuser-name-completion
+Complete user name from PARTIAL-USERNAME.
+Return the longest prefix common to all user names starting with
+PARTIAL-USERNAME.  If there is only one and PARTIAL-USERNAME matches
+it exactly, returns t.  Return nil if there is no user name starting
+with PARTIAL-USERNAME.
+
+arguments: (PARTIAL-USERNAME)
+Fuser-name-completion-1
+Complete user name from PARTIAL-USERNAME.
+
+This function is identical to `user-name-completion', except that
+the cons of the completion and an indication of whether the
+completion was unique is returned.
+
+The car of the returned value is the longest prefix common to all user
+names that start with PARTIAL-USERNAME.  If there is only one and
+PARTIAL-USERNAME matches it exactly, the car is t.  The car is nil if
+there is no user name starting with PARTIAL-USERNAME.  The cdr of the
+result is non-nil if and only if the completion returned in the car
+was unique.
+
+arguments: (PARTIAL-USERNAME)
+Fuser-name-all-completions
+Return a list of all user name completions from PARTIAL-USERNAME.
+These are all the user names which begin with PARTIAL-USERNAME.
+
+arguments: (PARTIAL-USERNAME)
+Ffile-attributes
+Return a list of attributes of file FILENAME.
+Value is nil if specified file cannot be opened.
+Otherwise, list elements are:
+ 0. t for directory, string (name linked to) for symbolic link, or nil.
+ 1. Number of links to file.
+ 2. File uid.
+ 3. File gid.
+ 4. Last access time, as a list of two integers.
+  First integer has high-order 16 bits of time, second has low 16 bits.
+ 5. Last modification time, likewise.
+ 6. Last status change time, likewise.
+ 7. Size in bytes. (-1, if number is out of range).
+ 8. File modes, as a string of ten letters or dashes as in ls -l.
+ 9. t iff file's gid would change if file were deleted and recreated.
+10. inode number.
+11. Device number.
+
+If file does not exist, returns nil.
+
+arguments: (FILENAME)
+Vcompletion-ignored-extensions
+*Completion ignores filenames ending in any string in this list.
+This variable does not affect lists of possible completions,
+but does affect the commands that actually do completions.
+It is used by the functions `file-name-completion' and
+`file-name-all-completions'.Fdocumentation
+Return the documentation string of FUNCTION.
+Unless a non-nil second argument RAW is given, the
+string is passed through `substitute-command-keys'.
+
+arguments: (FUNCTION &optional RAW)
+Fdocumentation-property
+Return the documentation string that is SYMBOL's PROP property.
+This is like `get', but it can refer to strings stored in the
+`doc-directory/DOC' file; and if the value is a string, it is passed
+through `substitute-command-keys'.  A non-nil third argument avoids this
+translation.
+
+arguments: (SYMBOL PROP &optional RAW)
+FSnarf-documentation
+Used during Emacs initialization, before dumping runnable Emacs,
+to find pointers to doc strings stored in `.../lib-src/DOC' and
+record them in function definitions.
+One arg, FILENAME, a string which does not include a directory.
+The file is written to `../lib-src', and later found in `exec-directory'
+when doc strings are referred to in the dumped Emacs.
+
+arguments: (FILENAME)
+FVerify-documentation
+Used to make sure everything went well with Snarf-documentation.
+Writes to stderr if not.
+
+arguments: ()
+Fsubstitute-command-keys
+Substitute key descriptions for command names in STRING.
+Return a new string which is STRING with substrings of the form \=\[COMMAND]
+replaced by either:  a keystroke sequence that will invoke COMMAND,
+or "M-x COMMAND" if COMMAND is not on any keys.
+Substrings of the form \=\{MAPVAR} are replaced by summaries
+(made by `describe-bindings') of the value of MAPVAR, taken as a keymap.
+Substrings of the form \=\<MAPVAR> specify to use the value of MAPVAR
+as the keymap for future \=\[COMMAND] substrings.
+\=\= quotes the following character and is discarded;
+thus, \=\=\=\= puts \=\= into the output, and \=\=\=\[ puts \=\[ into the output.
+
+arguments: (STRING)
+Vinternal-doc-file-name
+Name of file containing documentation strings of built-in symbols.Fchar-to-string
+Convert CHARACTER to a one-character string containing that character.
+
+arguments: (CHARACTER)
+Fstring-to-char
+Convert arg STRING to a character, the first character of that string.
+An empty string will return the constant `nil'.
+
+arguments: (STRING)
+Fpoint
+Return value of point, as an integer.
+Beginning of buffer is position (point-min).
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional BUFFER)
+Fpoint-marker
+Return value of point, as a marker object.
+This marker is a copy; you may modify it with reckless abandon.
+If optional argument DONT-COPY-P is non-nil, then it returns the real
+point-marker; modifying the position of this marker will move point.
+It is illegal to change the buffer of it, or make it point nowhere.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional DONT-COPY-P BUFFER)
+Fgoto-char
+Set point to POSITION, a number or marker.
+Beginning of buffer is position (point-min), end is (point-max).
+If BUFFER is nil, the current buffer is assumed.
+Return value of POSITION, as an integer.
+
+arguments: (POSITION &optional BUFFER)
+Fregion-beginning
+Return position of beginning of region in BUFFER, as an integer.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional BUFFER)
+Fregion-end
+Return position of end of region in BUFFER, as an integer.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional BUFFER)
+Fmark-marker
+Return this buffer's mark, as a marker object.
+If `zmacs-regions' is true, then this returns nil unless the region is
+currently in the active (highlighted) state.  If optional argument FORCE
+is t, this returns the mark (if there is one) regardless of the zmacs-region
+state.  You should *generally* not use the mark unless the region is active,
+if the user has expressed a preference for the zmacs-region model.
+Watch out!  Moving this marker changes the mark position.
+If you set the marker not to point anywhere, the buffer will have no mark.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional FORCE BUFFER)
+Fsave-excursion
+Save point, mark, and current buffer; execute BODY; restore those things.
+Executes BODY just like `progn'.
+The values of point, mark and the current buffer are restored
+even in case of abnormal exit (throw or error).Fsave-current-buffer
+Save the current buffer; execute BODY; restore the current buffer.
+Executes BODY just like `progn'.Fbuffer-size
+Return the number of characters in BUFFER.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional BUFFER)
+Fpoint-min
+Return the minimum permissible value of point in BUFFER.
+This is 1, unless narrowing (a buffer restriction)
+is in effect, in which case it may be greater.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional BUFFER)
+Fpoint-min-marker
+Return a marker to the minimum permissible value of point in BUFFER.
+This is the beginning, unless narrowing (a buffer restriction)
+is in effect, in which case it may be greater.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional BUFFER)
+Fpoint-max
+Return the maximum permissible value of point in BUFFER.
+This is (1+ (buffer-size)), unless narrowing (a buffer restriction)
+is in effect, in which case it may be less.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional BUFFER)
+Fpoint-max-marker
+Return a marker to the maximum permissible value of point in BUFFER.
+This is (1+ (buffer-size)), unless narrowing (a buffer restriction)
+is in effect, in which case it may be less.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional BUFFER)
+Ffollowing-char
+Return the character following point.
+At the end of the buffer or accessible region, return 0.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional BUFFER)
+Fpreceding-char
+Return the character preceding point.
+At the beginning of the buffer or accessible region, return 0.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional BUFFER)
+Fbobp
+Return t if point is at the beginning of the buffer.
+If the buffer is narrowed, this means the beginning of the narrowed part.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional BUFFER)
+Feobp
+Return t if point is at the end of the buffer.
+If the buffer is narrowed, this means the end of the narrowed part.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional BUFFER)
+Fbolp
+Return t if point is at the beginning of a line.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional BUFFER)
+Feolp
+Return t if point is at the end of a line.
+`End of a line' includes point being at the end of the buffer.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional BUFFER)
+Fchar-after
+Return the character at position POS in BUFFER.
+POS is an integer or a marker.
+If POS is out of range, the value is nil.
+if POS is nil, the value of point is assumed.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional POS BUFFER)
+Fchar-before
+Return the character preceding position POS in BUFFER.
+POS is an integer or a marker.
+If POS is out of range, the value is nil.
+if POS is nil, the value of point is assumed.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional POS BUFFER)
+Ftemp-directory
+Return the pathname to the directory to use for temporary files.
+On MS Windows, this is obtained from the TEMP or TMP environment variables,
+defaulting to / if they are both undefined.
+On Unix it is obtained from TMPDIR, with /tmp as the default.
+
+arguments: ()
+Fuser-login-name
+Return the name under which the user logged in, as a string.
+This is based on the effective uid, not the real uid.
+Also, if the environment variable LOGNAME or USER is set,
+that determines the value of this function.
+If the optional argument UID is present, then environment variables are
+ignored and this function returns the login name for that UID, or nil.
+
+arguments: (&optional UID)
+Fuser-real-login-name
+Return the name of the user's real uid, as a string.
+This ignores the environment variables LOGNAME and USER, so it differs from
+`user-login-name' when running under `su'.
+
+arguments: ()
+Fuser-uid
+Return the effective uid of Emacs, as an integer.
+
+arguments: ()
+Fuser-real-uid
+Return the real uid of Emacs, as an integer.
+
+arguments: ()
+Fuser-full-name
+Return the full name of the user logged in, as a string.
+If the optional argument USER is given, then the full name for that
+user is returned, or nil.  USER may be either a login name or a uid.
+
+If USER is nil, and `user-full-name' contains a string, the
+value of `user-full-name' is returned.
+
+arguments: (&optional USER)
+Fuser-home-directory
+Return the user's home directory, as a string.
+
+arguments: ()
+Fsystem-name
+Return the name of the machine you are running on, as a string.
+
+arguments: ()
+Femacs-pid
+Return the process ID of Emacs, as an integer.
+
+arguments: ()
+Fcurrent-time
+Return the current time, as the number of seconds since 1970-01-01 00:00:00.
+The time is returned as a list of three integers.  The first has the
+most significant 16 bits of the seconds, while the second has the
+least significant 16 bits.  The third integer gives the microsecond
+count.
+
+The microsecond count is zero on systems that do not provide
+resolution finer than a second.
+
+arguments: ()
+Fcurrent-process-time
+Return the amount of time used by this XEmacs process so far.
+The return value is a list of three floating-point numbers, expressing
+the user, system, and real times used by the process.  The user time
+measures the time actually spent by the CPU executing the code in this
+process.  The system time measures time spent by the CPU executing kernel
+code on behalf of this process (e.g. I/O requests made by the process).
+
+Note that the user and system times measure processor time, as opposed
+to real time, and only accrue when the processor is actually doing
+something: Time spent in an idle wait (waiting for user events to come
+in or for I/O on a disk drive or other device to complete) does not
+count.  Thus, the user and system times will often be considerably
+less than the real time.
+
+Some systems do not allow the user and system times to be distinguished.
+In this case, the user time will be the total processor time used by
+the process, and the system time will be 0.
+
+Some systems do not allow the real and processor times to be distinguished.
+In this case, the user and real times will be the same and the system
+time will be 0.
+
+arguments: ()
+Fformat-time-string
+Use FORMAT-STRING to format the time TIME.
+TIME is specified as (HIGH LOW . IGNORED) or (HIGH . LOW), as from
+`current-time' and `file-attributes'.  If TIME is not specified it
+defaults to the current time.
+FORMAT-STRING may contain %-sequences to substitute parts of the time.
+%a is replaced by the abbreviated name of the day of week.
+%A is replaced by the full name of the day of week.
+%b is replaced by the abbreviated name of the month.
+%B is replaced by the full name of the month.
+%c is a synonym for "%x %X".
+%C is a locale-specific synonym, which defaults to "%A, %B %e, %Y" in the C locale.
+%d is replaced by the day of month, zero-padded.
+%D is a synonym for "%m/%d/%y".
+%e is replaced by the day of month, blank-padded.
+%h is a synonym for "%b".
+%H is replaced by the hour (00-23).
+%I is replaced by the hour (00-12).
+%j is replaced by the day of the year (001-366).
+%k is replaced by the hour (0-23), blank padded.
+%l is replaced by the hour (1-12), blank padded.
+%m is replaced by the month (01-12).
+%M is replaced by the minute (00-59).
+%n is a synonym for "\n".
+%p is replaced by AM or PM, as appropriate.
+%r is a synonym for "%I:%M:%S %p".
+%R is a synonym for "%H:%M".
+%s is replaced by the time in seconds since 00:00:00, Jan 1, 1970 (a
+      nonstandard extension)
+%S is replaced by the second (00-60).
+%t is a synonym for "\t".
+%T is a synonym for "%H:%M:%S".
+%U is replaced by the week of the year (00-53), first day of week is Sunday.
+%w is replaced by the day of week (0-6), Sunday is day 0.
+%W is replaced by the week of the year (00-53), first day of week is Monday.
+%x is a locale-specific synonym, which defaults to "%D" in the C locale.
+%X is a locale-specific synonym, which defaults to "%T" in the C locale.
+%y is replaced by the year without century (00-99).
+%Y is replaced by the year with century.
+%Z is replaced by the time zone abbreviation.
+
+The number of options reflects the `strftime' function.
+
+BUG: If the charset used by the current locale is not ISO 8859-1, the
+characters appearing in the day and month names may be incorrect.
+
+arguments: (FORMAT-STRING &optional TIME)
+Fdecode-time
+Decode a time value as (SEC MINUTE HOUR DAY MONTH YEAR DOW DST ZONE).
+The optional SPECIFIED-TIME should be a list of (HIGH LOW . IGNORED)
+or (HIGH . LOW), as from `current-time' and `file-attributes', or `nil'
+to use the current time.  The list has the following nine members:
+SEC is an integer between 0 and 60; SEC is 60 for a leap second, which
+only some operating systems support.  MINUTE is an integer between 0 and 59.
+HOUR is an integer between 0 and 23.  DAY is an integer between 1 and 31.
+MONTH is an integer between 1 and 12.  YEAR is an integer indicating the
+four-digit year.  DOW is the day of week, an integer between 0 and 6, where
+0 is Sunday.  DST is t if daylight savings time is effect, otherwise nil.
+ZONE is an integer indicating the number of seconds east of Greenwich.
+(Note that Common Lisp has different meanings for DOW and ZONE.)
+
+arguments: (&optional SPECIFIED-TIME)
+Fencode-time
+Convert SECOND, MINUTE, HOUR, DAY, MONTH, YEAR and ZONE to internal time.
+This is the reverse operation of `decode-time', which see.
+ZONE defaults to the current time zone rule.  This can
+be a string (as from `set-time-zone-rule'), or it can be a list
+(as from `current-time-zone') or an integer (as from `decode-time')
+applied without consideration for daylight savings time.
+
+You can pass more than 7 arguments; then the first six arguments
+are used as SECOND through YEAR, and the *last* argument is used as ZONE.
+The intervening arguments are ignored.
+This feature lets (apply 'encode-time (decode-time ...)) work.
+
+Out-of-range values for SEC, MINUTE, HOUR, DAY, or MONTH are allowed;
+for example, a DAY of 0 means the day preceding the given month.
+Year numbers less than 100 are treated just like other year numbers.
+If you want them to stand for years in this century, you must do that yourself.Fcurrent-time-string
+Return the current time, as a human-readable string.
+Programs can use this function to decode a time,
+since the number of columns in each field is fixed.
+The format is `Sun Sep 16 01:03:52 1973'.
+If an argument is given, it specifies a time to format
+instead of the current time.  The argument should have the form:
+  (HIGH . LOW)
+or the form:
+  (HIGH LOW . IGNORED).
+Thus, you can use times obtained from `current-time'
+and from `file-attributes'.
+
+arguments: (&optional SPECIFIED-TIME)
+Fcurrent-time-zone
+Return the offset and name for the local time zone.
+This returns a list of the form (OFFSET NAME).
+OFFSET is an integer number of seconds ahead of UTC (east of Greenwich).
+    A negative value means west of Greenwich.
+NAME is a string giving the name of the time zone.
+If an argument is given, it specifies when the time zone offset is determined
+instead of using the current time.  The argument should have the form:
+  (HIGH . LOW)
+or the form:
+  (HIGH LOW . IGNORED).
+Thus, you can use times obtained from `current-time'
+and from `file-attributes'.
+
+Some operating systems cannot provide all this information to Emacs;
+in this case, `current-time-zone' returns a list containing nil for
+the data it can't find.
+
+arguments: (&optional SPECIFIED-TIME)
+Fset-time-zone-rule
+Set the local time zone using TZ, a string specifying a time zone rule.
+If TZ is nil, use implementation-defined default time zone information.
+
+arguments: (TZ)
+Finsert
+Insert the arguments, either strings or characters, at point.
+Point moves forward so that it ends up after the inserted text.
+Any other markers at the point of insertion remain before the text.
+If a string has non-null string-extent-data, new extents will be created.Finsert-before-markers
+Insert strings or characters at point, relocating markers after the text.
+Point moves forward so that it ends up after the inserted text.
+Any other markers at the point of insertion also end up after the text.Finsert-string
+Insert STRING into BUFFER at BUFFER's point.
+Point moves forward so that it ends up after the inserted text.
+Any other markers at the point of insertion remain before the text.
+If a string has non-null string-extent-data, new extents will be created.
+BUFFER defaults to the current buffer.
+
+arguments: (STRING &optional BUFFER)
+Finsert-char
+Insert COUNT copies of CHARACTER into BUFFER.
+Point and all markers are affected as in the function `insert'.
+COUNT defaults to 1 if omitted.
+The optional third arg IGNORED is INHERIT under FSF Emacs.
+This is highly bogus, however, and XEmacs always behaves as if
+`t' were passed to INHERIT.
+The optional fourth arg BUFFER specifies the buffer to insert the
+text into.  If BUFFER is nil, the current buffer is assumed.
+
+arguments: (CHARACTER &optional COUNT IGNORED BUFFER)
+Fbuffer-substring
+Return the contents of part of BUFFER as a string.
+The two arguments START and END are character positions;
+they can be in either order.  If omitted, they default to the beginning
+and end of BUFFER, respectively.
+If there are duplicable extents in the region, the string remembers
+them in its extent data.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional START END BUFFER)
+Fbuffer-substring-no-properties
+Return the text from START to END as a string, without copying the extents.
+
+arguments: (&optional START END BUFFER)
+Finsert-buffer-substring
+Insert before point a substring of the contents of buffer BUFFER.
+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.
+
+arguments: (BUFFER &optional START END)
+Fcompare-buffer-substrings
+Compare two substrings of two buffers; return result as number.
+the value is -N if first string is less after N-1 chars,
++N if first string is greater after N-1 chars, or 0 if strings match.
+Each substring is represented as three arguments: BUFFER, START and END.
+That makes six args in all, three for each substring.
+
+The value of `case-fold-search' in the current buffer
+determines whether case is significant or ignored.
+
+arguments: (BUFFER1 START1 END1 BUFFER2 START2 END2)
+Fsubst-char-in-region
+From START to END, replace FROMCHAR with TOCHAR each time it occurs.
+If optional arg NOUNDO is non-nil, don't record this change for undo
+and don't mark the buffer as really changed.
+
+arguments: (START END FROMCHAR TOCHAR &optional NOUNDO)
+Ftranslate-region
+Translate characters from START to END according to TABLE.
+
+If TABLE is a string, the Nth character in it is the mapping for the
+character with code N.
+
+If TABLE is a vector, its Nth element is the mapping for character
+with code N.  The values of elements may be characters, strings, or
+nil (nil meaning don't replace.)
+
+If TABLE is a char-table, its elements describe the mapping between
+characters and their replacements.  The char-table should be of type
+`char' or `generic'.
+
+Returns the number of substitutions performed.
+
+arguments: (START END TABLE)
+Fdelete-region
+Delete the text between point and mark.
+When called from a program, expects two arguments START and END
+(integers or markers) specifying the stretch to be deleted.
+If optional third arg BUFFER is nil, the current buffer is assumed.
+
+arguments: (START END &optional BUFFER)
+Fwiden
+Remove restrictions (narrowing) from BUFFER.
+This allows the buffer's full text to be seen and edited.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional BUFFER)
+Fnarrow-to-region
+Restrict editing in BUFFER to the current region.
+The rest of the text becomes temporarily invisible and untouchable
+but is not deleted; if you save the buffer in a file, the invisible
+text is included in the file.  \[widen] makes all visible again.
+If BUFFER is nil, the current buffer is assumed.
+See also `save-restriction'.
+
+When calling from a program, pass two arguments; positions (integers
+or markers) bounding the text that should remain visible.
+
+arguments: (START END &optional BUFFER)
+Fsave-restriction
+Execute BODY, saving and restoring current buffer's restrictions.
+The buffer's restrictions make parts of the beginning and end invisible.
+(They are set up with `narrow-to-region' and eliminated with `widen'.)
+This special form, `save-restriction', saves the current buffer's restrictions
+when it is entered, and restores them when it is exited.
+So any `narrow-to-region' within BODY lasts only until the end of the form.
+The old restrictions settings are restored
+even in case of abnormal exit (throw or error).
+
+The value returned is the value of the last form in BODY.
+
+`save-restriction' can get confused if, within the BODY, you widen
+and then make changes outside the area within the saved restrictions.
+
+Note: if you are using both `save-excursion' and `save-restriction',
+use `save-excursion' outermost:
+    (save-excursion (save-restriction ...))Fformat
+Format a string out of a control-string and arguments.
+The first argument is a control string.
+The other arguments are substituted into it to make the result, a string.
+It may contain %-sequences meaning to substitute the next argument.
+%s means print all objects as-is, using `princ'.
+%S means print all objects as s-expressions, using `prin1'.
+%d or %i means print as an integer in decimal (%o octal, %x lowercase hex,
+  %X uppercase hex).
+%c means print as a single character.
+%f means print as a floating-point number in fixed notation (e.g. 785.200).
+%e or %E means print as a floating-point number in scientific notation
+  (e.g. 7.85200e+03).
+%g or %G means print as a floating-point number in "pretty format";
+  depending on the number, either %f or %e/%E format will be used, and
+  trailing zeroes are removed from the fractional part.
+The argument used for all but %s and %S must be a number.  It will be
+  converted to an integer or a floating-point number as necessary.
+
+%$ means reposition to read a specific numbered argument; for example,
+  %3$s would apply the `%s' to the third argument after the control string,
+  and the next format directive would use the fourth argument, the
+  following one the fifth argument, etc. (There must be a positive integer
+  between the % and the $).
+Zero or more of the flag characters `-', `+', ` ', `0', and `#' may be
+  specified between the optional repositioning spec and the conversion
+  character; see below.
+An optional minimum field width may be specified after any flag characters
+  and before the conversion character; it specifies the minimum number of
+  characters that the converted argument will take up.  Padding will be
+  added on the left (or on the right, if the `-' flag is specified), as
+  necessary.  Padding is done with spaces, or with zeroes if the `0' flag
+  is specified.
+If the field width is specified as `*', the field width is assumed to have
+  been specified as an argument.  Any repositioning specification that
+  would normally specify the argument to be converted will now specify
+  where to find this field width argument, not where to find the argument
+  to be converted.  If there is no repositioning specification, the normal
+  next argument is used.  The argument to be converted will be the next
+  argument after the field width argument unless the precision is also
+  specified as `*' (see below).
+
+An optional period character and precision may be specified after any
+  minimum field width.  It specifies the minimum number of digits to
+  appear in %d, %i, %o, %x, and %X conversions (the number is padded
+  on the left with zeroes as necessary); the number of digits printed
+  after the decimal point for %f, %e, and %E conversions; the number
+  of significant digits printed in %g and %G conversions; and the
+  maximum number of non-padding characters printed in %s and %S
+  conversions.  The default precision for floating-point conversions
+  is six.
+If the precision is specified as `*', the precision is assumed to have been
+  specified as an argument.  The argument used will be the next argument
+  after the field width argument, if any.  If the field width was not
+  specified as an argument, any repositioning specification that would
+  normally specify the argument to be converted will now specify where to
+  find the precision argument.  If there is no repositioning specification,
+  the normal next argument is used.
+
+The ` ' and `+' flags mean prefix non-negative numbers with a space or
+  plus sign, respectively.
+The `#' flag means print numbers in an alternate, more verbose format:
+  octal numbers begin with zero; hex numbers begin with a 0x or 0X;
+  a decimal point is printed in %f, %e, and %E conversions even if no
+  numbers are printed after it; and trailing zeroes are not omitted in
+   %g and %G conversions.
+
+Use %% to put a single % into the output.Fchar-equal
+Return t if two characters match, optionally ignoring case.
+Both arguments must be characters (i.e. NOT integers).
+Case is ignored if `case-fold-search' is non-nil in BUFFER.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (CHARACTER1 CHARACTER2 &optional BUFFER)
+Fchar=
+Return t if two characters match, case is significant.
+Both arguments must be characters (i.e. NOT integers).
+
+arguments: (CHARACTER1 CHARACTER2)
+Ftranspose-regions
+Transpose region START1 to END1 with START2 to END2.
+The regions may not be overlapping, because the size of the buffer is
+never changed in a transposition.
+
+Optional fifth arg LEAVE-MARKERS, if non-nil, means don't transpose
+any markers that happen to be located in the regions. (#### BUG: currently
+this function always acts as if LEAVE-MARKERS is non-nil.)
+
+Transposing beyond buffer boundaries is an error.
+
+arguments: (START1 END1 START2 END2 &optional LEAVE-MARKERS)
+Vzmacs-regions
+*Whether LISPM-style active regions should be used.
+This means that commands which operate on the region (the area between the
+point and the mark) will only work while the region is in the ``active''
+state, which is indicated by highlighting.  Executing most commands causes
+the region to not be in the active state, so (for example) \[kill-region] will only
+work immediately after activating the region.
+
+More specifically:
+
+ - Commands which operate on the region only work if the region is active.
+ - Only a very small set of commands cause the region to become active:
+   Those commands whose semantics are to mark an area, like `mark-defun'.
+ - The region is deactivated after each command that is executed, except that:
+ - "Motion" commands do not change whether the region is active or not.
+
+set-mark-command (C-SPC) pushes a mark and activates the region.  Moving the
+cursor with normal motion commands (C-n, C-p, etc) will cause the region
+between point and the recently-pushed mark to be highlighted.  It will
+remain highlighted until some non-motion command is executed.
+
+exchange-point-and-mark (\[exchange-point-and-mark]) activates the region.  So if you mark a
+region and execute a command that operates on it, you can reactivate the
+same region with \[exchange-point-and-mark] (or perhaps \[exchange-point-and-mark] \[exchange-point-and-mark]) to operate on it
+again.
+
+Generally, commands which push marks as a means of navigation (like
+beginning-of-buffer and end-of-buffer (M-< and M->)) do not activate the
+region.  But commands which push marks as a means of marking an area of
+text (like mark-defun (\[mark-defun]), mark-word (\[mark-word]) or mark-whole-buffer (\[mark-whole-buffer]))
+do activate the region.
+
+The way the command loop actually works with regard to deactivating the
+region is as follows:
+
+- If the variable `zmacs-region-stays' has been set to t during the command
+  just executed, the region is left alone (this is how the motion commands
+  make the region stay around; see the `_' flag in the `interactive'
+  specification).  `zmacs-region-stays' is reset to nil before each command
+  is executed.
+- If the function `zmacs-activate-region' has been called during the command
+  just executed, the region is left alone.  Very few functions should
+  actually call this function.
+- Otherwise, if the region is active, the region is deactivated and
+  the `zmacs-deactivate-region-hook' is called.Vzmacs-region-active-p
+Do not alter this.  It is for internal use only.Vzmacs-region-stays
+Whether the current command will deactivate the region.
+Commands which do not wish to affect whether the region is currently
+highlighted should set this to t.  Normally, the region is turned off after
+executing each command that did not explicitly turn it on with the function
+zmacs-activate-region. Setting this to true lets a command be non-intrusive.
+See the variable `zmacs-regions'.
+
+The same effect can be achieved using the `_' interactive specification.
+
+`zmacs-region-stays' is reset to nil before each command is executed.Vatomic-extent-goto-char-p
+Do not use this -- it will be going away soon.
+Indicates if `goto-char' has just been run.  This information is allegedly
+needed to get the desired behavior for atomic extents and unfortunately
+is not available by any other means.Vuser-full-name
+*The name of the user.
+The function `user-full-name', which will return the value of this
+ variable, when called without arguments.
+This is initialized to the value of the NAME environment variable.Fhash-table-p
+Return t if OBJECT is a hash table, else nil.
+
+arguments: (OBJECT)
+Fmake-hash-table
+Return a new empty hash table object.
+Use Common Lisp style keywords to specify hash table properties.
+ (make-hash-table &key test size rehash-size rehash-threshold weakness)
+
+Keyword :test can be `eq', `eql' (default) or `equal'.
+Comparison between keys is done using this function.
+If speed is important, consider using `eq'.
+When storing strings in the hash table, you will likely need to use `equal'.
+
+Keyword :size specifies the number of keys likely to be inserted.
+This number of entries can be inserted without enlarging the hash table.
+
+Keyword :rehash-size must be a float greater than 1.0, and specifies
+the factor by which to increase the size of the hash table when enlarging.
+
+Keyword :rehash-threshold must be a float between 0.0 and 1.0,
+and specifies the load factor of the hash table which triggers enlarging.
+
+Non-standard keyword :weakness can be `nil' (default), `t', `key-and-value',
+`key', `value' or `key-or-value'. `t' is an alias for `key-and-value'.
+
+A key-and-value-weak hash table, also known as a fully-weak or simply
+as a weak hash table, is one whose pointers do not count as GC
+referents: for any key-value pair in the hash table, if the only
+remaining pointer to either the key or the value is in a weak hash
+table, then the pair will be removed from the hash table, and the key
+and value collected.  A non-weak hash table (or any other pointer)
+would prevent the object from being collected.
+
+A key-weak hash table is similar to a fully-weak hash table except that
+a key-value pair will be removed only if the key remains unmarked
+outside of weak hash tables.  The pair will remain in the hash table if
+the key is pointed to by something other than a weak hash table, even
+if the value is not.
+
+A value-weak hash table is similar to a fully-weak hash table except
+that a key-value pair will be removed only if the value remains
+unmarked outside of weak hash tables.  The pair will remain in the
+hash table if the value is pointed to by something other than a weak
+hash table, even if the key is not.
+
+A key-or-value-weak hash table is similar to a fully-weak hash table except
+that a key-value pair will be removed only if the value and the key remain
+unmarked outside of weak hash tables.  The pair will remain in the
+hash table if the value or key are pointed to by something other than a weak
+hash table, even if the other is not.Fcopy-hash-table
+Return a new hash table containing the same keys and values as HASH-TABLE.
+The keys and values will not themselves be copied.
+
+arguments: (HASH-TABLE)
+Fgethash
+Find hash value for KEY in HASH-TABLE.
+If there is no corresponding value, return DEFAULT (which defaults to nil).
+
+arguments: (KEY HASH-TABLE &optional DEFAULT)
+Fputhash
+Hash KEY to VALUE in HASH-TABLE.
+
+arguments: (KEY VALUE HASH-TABLE)
+Fremhash
+Remove the entry for KEY from HASH-TABLE.
+Do nothing if there is no entry for KEY in HASH-TABLE.
+Return non-nil if an entry was removed.
+
+arguments: (KEY HASH-TABLE)
+Fclrhash
+Remove all entries from HASH-TABLE, leaving it empty.
+
+arguments: (HASH-TABLE)
+Fhash-table-count
+Return the number of entries in HASH-TABLE.
+
+arguments: (HASH-TABLE)
+Fhash-table-test
+Return the test function of HASH-TABLE.
+This can be one of `eq', `eql' or `equal'.
+
+arguments: (HASH-TABLE)
+Fhash-table-size
+Return the size of HASH-TABLE.
+This is the current number of slots in HASH-TABLE, whether occupied or not.
+
+arguments: (HASH-TABLE)
+Fhash-table-rehash-size
+Return the current rehash size of HASH-TABLE.
+This is a float greater than 1.0; the factor by which HASH-TABLE
+is enlarged when the rehash threshold is exceeded.
+
+arguments: (HASH-TABLE)
+Fhash-table-rehash-threshold
+Return the current rehash threshold of HASH-TABLE.
+This is a float between 0.0 and 1.0; the maximum `load factor' of HASH-TABLE,
+beyond which the HASH-TABLE is enlarged by rehashing.
+
+arguments: (HASH-TABLE)
+Fhash-table-weakness
+Return the weakness of HASH-TABLE.
+This can be one of `nil', `key-and-value', `key-or-value', `key' or `value'.
+
+arguments: (HASH-TABLE)
+Fhash-table-type
+Return the type of HASH-TABLE.
+This can be one of `non-weak', `weak', `key-weak' or `value-weak'.
+
+arguments: (HASH-TABLE)
+Fmaphash
+Map FUNCTION over entries in HASH-TABLE, calling it with two args,
+each key and value in HASH-TABLE.
+
+FUNCTION must not modify HASH-TABLE, with the one exception that FUNCTION
+may remhash or puthash the entry currently being processed by FUNCTION.
+
+arguments: (FUNCTION HASH-TABLE)
+Fsxhash
+Return a hash value for OBJECT.
+(equal obj1 obj2) implies (= (sxhash obj1) (sxhash obj2)).
+
+arguments: (OBJECT)
+Finvocation-name
+Return the program name that was used to run XEmacs.
+Any directory names are omitted.
+
+arguments: ()
+Finvocation-directory
+Return the directory name in which the Emacs executable was located.
+
+arguments: ()
+Frunning-temacs-p
+True if running temacs.  This means we are in the dumping stage.
+This is false during normal execution of the `xemacs' program, and
+becomes false once `run-emacs-from-temacs' is run.
+
+arguments: ()
+Frun-emacs-from-temacs
+Do not call this.  It will reinitialize your XEmacs.  You'll be sorry.Fkill-emacs
+Exit the XEmacs job and kill it.  Ask for confirmation, without argument.
+If ARG is an integer, return ARG as the exit program code.
+If ARG is a string, stuff it as keyboard input.
+
+The value of `kill-emacs-hook', if not void,
+is a list of functions (of no args),
+all of which are called before XEmacs is actually killed.
+
+arguments: (&optional ARG)
+Fdump-emacs
+Dump current state of XEmacs into executable file FILENAME.
+Take symbols from SYMFILE (presumably the file you executed to run XEmacs).
+This is used in the file `loadup.el' when building XEmacs.
+
+Remember to set `command-line-processed' to nil before dumping
+if you want the dumped XEmacs to process its command line
+and announce itself normally when it is run.
+
+arguments: (FILENAME SYMFILE)
+Fsplit-string-by-char
+Split STRING into a list of substrings originally separated by SEPCHAR.
+
+arguments: (STRING &optional SEPCHAR)
+Fsplit-path
+Explode a search path into a list of strings.
+The path components are separated with the characters specified
+with `path-separator'.
+
+arguments: (PATH)
+Fnoninteractive
+Non-nil return value means XEmacs is running without interactive terminal.
+
+arguments: ()
+Fforce-debugging-signal
+Cause XEmacs to enter the debugger.
+On some systems, there may be no way to do this gracefully; if so,
+nothing happens unless ABORT is non-nil, in which case XEmacs will
+abort() -- a sure-fire way to immediately get back to the debugger,
+but also a sure-fire way to kill XEmacs (and dump core on Unix
+systems)!
+
+arguments: (&optional ABORT)
+Fquantify-start-recording-data
+Start recording Quantify data.
+
+arguments: ()
+Fquantify-stop-recording-data
+Stop recording Quantify data.
+
+arguments: ()
+Fquantify-clear-data
+Clear all Quantify data.
+
+arguments: ()
+Vsuppress-early-error-handler-backtrace
+Non-nil means early error handler shouldn't print a backtrace.Vcommand-line-args
+Args passed by shell to XEmacs, as a list of strings.Vinvocation-name
+The program name that was used to run XEmacs.
+Any directory names are omitted.Vinvocation-directory
+The directory in which the XEmacs executable was found, to run it.
+The value is simply the program name if that directory's name is not known.Vinvocation-path
+The path in which the XEmacs executable was found, to run it.
+The value is simply the value of environment variable PATH on startup
+if XEmacs was found there.Vsystem-type
+Symbol indicating type of operating system you are using.Vsystem-configuration
+String naming the configuration XEmacs was built for.Vsystem-configuration-options
+String containing the configuration options XEmacs was built with.Vemacs-major-version
+Major version number of this version of Emacs, as an integer.
+Warning: this variable did not exist in Emacs versions earlier than:
+  FSF Emacs:   19.23
+  XEmacs:      19.10Vemacs-minor-version
+Minor version number of this version of Emacs, as an integer.
+Warning: this variable did not exist in Emacs versions earlier than:
+  FSF Emacs:   19.23
+  XEmacs:      19.10Vemacs-patch-level
+The patch level of this version of Emacs, as an integer.
+The value is non-nil if this version of XEmacs is part of a series of
+stable XEmacsen, but has bug fixes applied.
+Warning: this variable does not exist in FSF Emacs or in XEmacs versions
+earlier than 21.1.1Vemacs-beta-version
+Beta number of this version of Emacs, as an integer.
+The value is nil if this is an officially released version of XEmacs.
+Warning: this variable does not exist in FSF Emacs or in XEmacs versions
+earlier than 20.3.Vinfodock-major-version
+Major version number of this InfoDock release.Vinfodock-minor-version
+Minor version number of this InfoDock release.Vinfodock-build-version
+Build version of this InfoDock release.Vxemacs-codename
+Codename of this version of Emacs (a string).Vnoninteractive
+Non-nil means XEmacs is running without interactive terminal.Vinhibit-early-packages
+Set to non-nil when the early packages should not be respected at startup.Vinhibit-autoloads
+Set to non-nil when autoloads should not be loaded at startup.Vdebug-paths
+Set to non-nil when debug information about paths should be printed.Vinhibit-site-lisp
+Set to non-nil when the site-lisp should not be searched at startup.Vinhibit-site-modules
+Set to non-nil when site-modules should not be searched at startup.Vemacs-priority
+Priority for XEmacs to run at.
+This value is effective only if set before XEmacs is dumped,
+and only if the XEmacs executable is installed with setuid to permit
+it to change priority.  (XEmacs sets its uid back to the real uid.)
+Currently, you need to define SET_EMACS_PRIORITY in `config.h'
+before you compile XEmacs, to enable the code for this feature.Vinternal-error-checking
+Internal error checking built-in into this instance of XEmacs.
+This is a list of symbols, initialized at build-time.  Legal symbols
+are:
+
+extents		- check extents prior to each extent change;
+typecheck	- check types strictly, aborting in case of error;
+malloc		- check operation of malloc;
+gc		- check garbage collection;
+bufpos		- check buffer positions.
+
+quick-build     - user has requested the "quick-build" configure option.Vmail-lock-methods
+Mail spool locking methods supported by this instance of XEmacs.
+This is a list of symbols.  Each of the symbols is one of the
+following: dot, lockf, flock, locking, mmdf.Vconfigure-mail-lock-method
+Mail spool locking method suggested by configure.  This is one
+of the symbols in MAIL-LOCK-METHODS.Vpath-separator
+The directory separator in search paths, as a string.Vemacs-program-name
+*Name of the Emacs variant.
+For example, this may be "xemacs" or "infodock".
+This is mainly meant for use in path searching.Vemacs-program-version
+*Version of the Emacs variant.
+This typically has the form NN.NN-bNN.
+This is mainly meant for use in path searching.Vexec-path
+*List of directories to search programs to run in subprocesses.
+Each element is a string (directory name) or nil (try default directory).Vexec-directory
+*Directory of architecture-dependent files that come with XEmacs,
+especially executable programs intended for XEmacs to invoke.Vconfigure-exec-directory
+For internal use by the build procedure only.
+configure's idea of what `exec-directory' will be.Vlisp-directory
+*Directory of core Lisp files that come with XEmacs.Vconfigure-lisp-directory
+For internal use by the build procedure only.
+configure's idea of what `lisp-directory' will be.Vmule-lisp-directory
+*Directory of Mule Lisp files that come with XEmacs.Vconfigure-mule-lisp-directory
+For internal use by the build procedure only.
+configure's idea of what `mule-lisp-directory' will be.Vmodule-directory
+*Directory of core dynamic modules that come with XEmacs.Vconfigure-module-directory
+For internal use by the build procedure only.
+configure's idea of what `module-directory' will be.Vconfigure-package-path
+For internal use by the build procedure only.
+configure's idea of what the package path will be.Vdata-directory
+*Directory of architecture-independent files that come with XEmacs,
+intended for XEmacs to use.
+Use of this variable in new code is almost never correct.  See the
+functions `locate-data-file' and `locate-data-directory' and the variable
+`data-directory-list'.Vconfigure-data-directory
+For internal use by the build procedure only.
+configure's idea of what `data-directory' will be.Vdata-directory-list
+*List of directories of architecture-independent files that come with XEmacs
+or were installed as packages, and are intended for XEmacs to use.Vsite-directory
+*Directory of site-specific Lisp files that come with XEmacs.Vconfigure-site-directory
+For internal use by the build procedure only.
+configure's idea of what `site-directory' will be.Vsite-module-directory
+*Directory of site-specific loadable modules that come with XEmacs.Vconfigure-site-module-directory
+For internal use by the build procedure only.
+configure's idea of what `site-directory' will be.Vdoc-directory
+*Directory containing the DOC file that comes with XEmacs.
+This is usually the same as `exec-directory'.Vconfigure-doc-directory
+For internal use by the build procedure only.
+configure's idea of what `doc-directory' will be.Vconfigure-exec-prefix-directory
+For internal use by the build procedure only.
+configure's idea of what `exec-prefix-directory' will be.Vconfigure-prefix-directory
+For internal use by the build procedure only.
+configure's idea of what `prefix-directory' will be.Vconfigure-info-directory
+For internal use by the build procedure only.
+This is the name of the directory in which the build procedure installed
+Emacs's info files; the default value for Info-default-directory-list
+includes this.Vconfigure-info-path
+The configured initial path for info documentation.For
+Eval args until one of them yields non-nil, then return that value.
+The remaining args are not evalled at all.
+If all args return nil, return nil.Fand
+Eval args until one of them yields nil, then return nil.
+The remaining args are not evalled at all.
+If no arg yields nil, return the last arg's value.Fif
+(if COND THEN ELSE...): if COND yields non-nil, do THEN, else do ELSE...
+Returns the value of THEN or the value of the last of the ELSE's.
+THEN must be one expression, but ELSE... can be zero or more expressions.
+If COND yields nil, and there are no ELSE's, the value is nil.Fwhen
+(when COND BODY...): if COND yields non-nil, do BODY, else return nil.
+BODY can be zero or more expressions.  If BODY is nil, return nil.Funless
+(unless COND BODY...): if COND yields nil, do BODY, else return nil.
+BODY can be zero or more expressions.  If BODY is nil, return nil.Fcond
+(cond CLAUSES...): try each clause until one succeeds.
+Each clause looks like (CONDITION BODY...).  CONDITION is evaluated
+and, if the value is non-nil, this clause succeeds:
+then the expressions in BODY are evaluated and the last one's
+value is the value of the cond-form.
+If no clause succeeds, cond returns nil.
+If a clause has one element, as in (CONDITION),
+CONDITION's value if non-nil is returned from the cond-form.Fprogn
+(progn BODY...): eval BODY forms sequentially and return value of last one.Fprog1
+Similar to `progn', but the value of the first form is returned.
+(prog1 FIRST BODY...): All the arguments are evaluated sequentially.
+The value of FIRST is saved during evaluation of the remaining args,
+whose values are discarded.Fprog2
+Similar to `progn', but the value of the second form is returned.
+(prog2 FIRST SECOND BODY...): All the arguments are evaluated sequentially.
+The value of SECOND is saved during evaluation of the remaining args,
+whose values are discarded.Flet*
+(let* VARLIST BODY...): bind variables according to VARLIST then eval BODY.
+The value of the last form in BODY is returned.
+Each element of VARLIST is a symbol (which is bound to nil)
+or a list (SYMBOL VALUEFORM) (which binds SYMBOL to the value of VALUEFORM).
+Each VALUEFORM can refer to the symbols already bound by this VARLIST.Flet
+(let VARLIST BODY...): bind variables according to VARLIST then eval BODY.
+The value of the last form in BODY is returned.
+Each element of VARLIST is a symbol (which is bound to nil)
+or a list (SYMBOL VALUEFORM) (which binds SYMBOL to the value of VALUEFORM).
+All the VALUEFORMs are evalled before any symbols are bound.Fwhile
+(while TEST BODY...): if TEST yields non-nil, eval BODY... and repeat.
+The order of execution is thus TEST, BODY, TEST, BODY and so on
+until TEST returns nil.Fsetq
+(setq SYM VAL SYM VAL ...): set each SYM to the value of its VAL.
+The symbols SYM are variables; they are literal (not evaluated).
+The values VAL are expressions; they are evaluated.
+Thus, (setq x (1+ y)) sets `x' to the value of `(1+ y)'.
+The second VAL is not computed until after the first SYM is set, and so on;
+each VAL can use the new value of variables set earlier in the `setq'.
+The return value of the `setq' form is the value of the last VAL.Fquote
+Return the argument, without evaluating it.  `(quote x)' yields `x'.Ffunction
+Like `quote', but preferred for objects which are functions.
+In byte compilation, `function' causes its argument to be compiled.
+`quote' cannot do that.Fdefun
+(defun NAME ARGLIST [DOCSTRING] BODY...): define NAME as a function.
+The definition is (lambda ARGLIST [DOCSTRING] BODY...).
+See also the function `interactive'.Fdefmacro
+(defmacro NAME ARGLIST [DOCSTRING] BODY...): define NAME as a macro.
+The definition is (macro lambda ARGLIST [DOCSTRING] BODY...).
+When the macro is called, as in (NAME ARGS...),
+the function (lambda ARGLIST BODY...) is applied to
+the list ARGS... as it appears in the expression,
+and the result should be a form to be evaluated instead of the original.Fdefvar
+(defvar SYMBOL INITVALUE DOCSTRING): define SYMBOL as a variable.
+You are not required to define a variable in order to use it,
+ but the definition can supply documentation and an initial value
+ in a way that tags can recognize.
+
+INITVALUE is evaluated, and used to set SYMBOL, only if SYMBOL's value is
+ void. (However, when you evaluate a defvar interactively, it acts like a
+ defconst: SYMBOL's value is always set regardless of whether it's currently
+ void.)
+If SYMBOL is buffer-local, its default value is what is set;
+ buffer-local values are not affected.
+INITVALUE and DOCSTRING are optional.
+If DOCSTRING starts with *, this variable is identified as a user option.
+ This means that M-x set-variable recognizes it.
+If INITVALUE is missing, SYMBOL's value is not set.
+
+In lisp-interaction-mode defvar is treated as defconst.Fdefconst
+(defconst SYMBOL INITVALUE DOCSTRING): define SYMBOL as a constant
+variable.
+The intent is that programs do not change this value, but users may.
+Always sets the value of SYMBOL to the result of evalling INITVALUE.
+If SYMBOL is buffer-local, its default value is what is set;
+ buffer-local values are not affected.
+DOCSTRING is optional.
+If DOCSTRING starts with *, this variable is identified as a user option.
+ This means that M-x set-variable recognizes it.
+
+Note: do not use `defconst' for user options in libraries that are not
+ normally loaded, since it is useful for users to be able to specify
+ their own values for such variables before loading the library.
+Since `defconst' unconditionally assigns the variable,
+ it would override the user's choice.Fuser-variable-p
+Return t if VARIABLE is intended to be set and modified by users.
+(The alternative is a variable used internally in a Lisp program.)
+Determined by whether the first character of the documentation
+for the variable is `*'.
+
+arguments: (VARIABLE)
+Fmacroexpand-internal
+Return result of expanding macros at top level of FORM.
+If FORM is not a macro call, it is returned unchanged.
+Otherwise, the macro is expanded and the expansion is considered
+in place of FORM.  When a non-macro-call results, it is returned.
+
+The second optional arg ENVIRONMENT specifies an environment of macro
+definitions to shadow the loaded ones for use in file byte-compilation.
+
+arguments: (FORM &optional ENVIRONMENT)
+Fcatch
+(catch TAG BODY...): eval BODY allowing nonlocal exits using `throw'.
+TAG is evalled to get the tag to use.  Then the BODY is executed.
+Within BODY, (throw TAG) with same tag exits BODY and exits this `catch'.
+If no throw happens, `catch' returns the value of the last BODY form.
+If a throw happens, it specifies the value to return from `catch'.Fthrow
+Throw to the catch for TAG and return VALUE from it.
+Both TAG and VALUE are evalled.
+
+arguments: (TAG VALUE)
+Funwind-protect
+Do BODYFORM, protecting with UNWINDFORMS.
+Usage looks like (unwind-protect BODYFORM UNWINDFORMS...).
+If BODYFORM completes normally, its value is returned
+after executing the UNWINDFORMS.
+If BODYFORM exits nonlocally, the UNWINDFORMS are executed anyway.Fcondition-case
+Regain control when an error is signalled.
+Usage looks like (condition-case VAR BODYFORM HANDLERS...).
+Executes BODYFORM and returns its value if no error happens.
+Each element of HANDLERS looks like (CONDITION-NAME BODY...)
+where the BODY is made of Lisp expressions.
+
+A handler is applicable to an error if CONDITION-NAME is one of the
+error's condition names.  If an error happens, the first applicable
+handler is run.  As a special case, a CONDITION-NAME of t matches
+all errors, even those without the `error' condition name on them
+(e.g. `quit').
+
+The car of a handler may be a list of condition names
+instead of a single condition name.
+
+When a handler handles an error,
+control returns to the condition-case and the handler BODY... is executed
+with VAR bound to (SIGNALED-CONDITIONS . SIGNAL-DATA).
+VAR may be nil; then you do not get access to the signal information.
+
+The value of the last BODY form is returned from the condition-case.
+See also the function `signal' for more info.
+
+Note that at the time the condition handler is invoked, the Lisp stack
+and the current catches, condition-cases, and bindings have all been
+popped back to the state they were in just before the call to
+`condition-case'.  This means that resignalling the error from
+within the handler will not result in an infinite loop.
+
+If you want to establish an error handler that is called with the
+Lisp stack, bindings, etc. as they were when `signal' was called,
+rather than when the handler was set, use `call-with-condition-handler'.Fcall-with-condition-handler
+Regain control when an error is signalled, without popping the stack.
+Usage looks like (call-with-condition-handler HANDLER FUNCTION &rest ARGS).
+This function is similar to `condition-case', but the handler is invoked
+with the same environment (Lisp stack, bindings, catches, condition-cases)
+that was current when `signal' was called, rather than when the handler
+was established.
+
+HANDLER should be a function of one argument, which is a cons of the args
+(SIG . DATA) that were passed to `signal'.  It is invoked whenever
+`signal' is called (this differs from `condition-case', which allows
+you to specify which errors are trapped).  If the handler function
+returns, `signal' continues as if the handler were never invoked.
+(It continues to look for handlers established earlier than this one,
+and invokes the standard error-handler if none is found.)Fsignal
+Signal a continuable error.  Args are ERROR-SYMBOL, and associated DATA.
+An error symbol is a symbol defined using `define-error'.
+DATA should be a list.  Its elements are printed as part of the error message.
+If the signal is handled, DATA is made available to the handler.
+See also the function `signal-error', and the functions to handle errors:
+`condition-case' and `call-with-condition-handler'.
+
+Note that this function can return, if the debugger is invoked and the
+user invokes the "return from signal" option.
+
+arguments: (ERROR-SYMBOL DATA)
+Fcommandp
+Return t if FUNCTION makes provisions for interactive calling.
+This means it contains a description for how to read arguments to give it.
+The value is nil for an invalid function or a symbol with no function
+definition.
+
+Interactively callable functions include
+
+-- strings and vectors (treated as keyboard macros)
+-- lambda-expressions that contain a top-level call to `interactive'
+-- autoload definitions made by `autoload' with non-nil fourth argument
+   (i.e. the interactive flag)
+-- compiled-function objects with a non-nil `compiled-function-interactive'
+   value
+-- subrs (built-in functions) that are interactively callable
+
+Also, a symbol satisfies `commandp' if its function definition does so.
+
+arguments: (FUNCTION)
+Fcommand-execute
+Execute CMD as an editor command.
+CMD must be an object that satisfies the `commandp' predicate.
+Optional second arg RECORD-FLAG is as in `call-interactively'.
+The argument KEYS specifies the value to use instead of (this-command-keys)
+when reading the arguments.
+
+arguments: (CMD &optional RECORD-FLAG KEYS)
+Finteractive-p
+Return t if function in which this appears was called interactively.
+This means that the function was called with call-interactively (which
+includes being called as the binding of a key)
+and input is currently coming from the keyboard (not in keyboard macro).
+
+arguments: ()
+Fautoload
+Define FUNCTION to autoload from FILENAME.
+FUNCTION is a symbol; FILENAME is a file name string to pass to `load'.
+The remaining optional arguments provide additional info about the
+real definition.
+DOCSTRING is documentation for FUNCTION.
+INTERACTIVE, if non-nil, says FUNCTION can be called interactively.
+TYPE indicates the type of the object:
+   nil or omitted says FUNCTION is a function,
+   `keymap' says FUNCTION is really a keymap, and
+   `macro' or t says FUNCTION is really a macro.
+If FUNCTION already has a non-void function definition that is not an
+autoload object, this function does nothing and returns nil.
+
+arguments: (FUNCTION FILENAME &optional DOCSTRING INTERACTIVE TYPE)
+Feval
+Evaluate FORM and return its value.
+
+arguments: (FORM)
+Ffuncall
+Call first argument as a function, passing the remaining arguments to it.
+Thus, (funcall 'cons 'x 'y) returns (x . y).Ffunctionp
+Return t if OBJECT can be called as a function, else nil.
+A function is an object that can be applied to arguments,
+using for example `funcall' or `apply'.
+
+arguments: (OBJECT)
+Ffunction-min-args
+Return the minimum number of arguments a function may be called with.
+The function may be any form that can be passed to `funcall',
+any special form, or any macro.
+
+arguments: (FUNCTION)
+Ffunction-max-args
+Return the maximum number of arguments a function may be called with.
+The function may be any form that can be passed to `funcall',
+any special form, or any macro.
+If the function takes an arbitrary number of arguments or is
+a built-in special form, nil is returned.
+
+arguments: (FUNCTION)
+Fapply
+Call FUNCTION with the remaining args, using the last arg as a list of args.
+Thus, (apply '+ 1 2 '(3 4)) returns 10.Frun-hooks
+Run each hook in HOOKS.  Major mode functions use this.
+Each argument should be a symbol, a hook variable.
+These symbols are processed in the order specified.
+If a hook symbol has a non-nil value, that value may be a function
+or a list of functions to be called to run the hook.
+If the value is a function, it is called with no arguments.
+If it is a list, the elements are called, in order, with no arguments.
+
+To make a hook variable buffer-local, use `make-local-hook',
+not `make-local-variable'.Frun-hook-with-args
+Run HOOK with the specified arguments ARGS.
+HOOK should be a symbol, a hook variable.  If HOOK has a non-nil
+value, that value may be a function or a list of functions to be
+called to run the hook.  If the value is a function, it is called with
+the given arguments and its return value is returned.  If it is a list
+of functions, those functions are called, in order,
+with the given arguments ARGS.
+It is best not to depend on the value returned by `run-hook-with-args',
+as that may change.
+
+To make a hook variable buffer-local, use `make-local-hook',
+not `make-local-variable'.Frun-hook-with-args-until-success
+Run HOOK with the specified arguments ARGS.
+HOOK should be a symbol, a hook variable.  Its value should
+be a list of functions.  We call those functions, one by one,
+passing arguments ARGS to each of them, until one of them
+returns a non-nil value.  Then we return that value.
+If all the functions return nil, we return nil.
+
+To make a hook variable buffer-local, use `make-local-hook',
+not `make-local-variable'.Frun-hook-with-args-until-failure
+Run HOOK with the specified arguments ARGS.
+HOOK should be a symbol, a hook variable.  Its value should
+be a list of functions.  We call those functions, one by one,
+passing arguments ARGS to each of them, until one of them
+returns nil.  Then we return nil.
+If all the functions return non-nil, we return non-nil.
+
+To make a hook variable buffer-local, use `make-local-hook',
+not `make-local-variable'.Fbacktrace-debug
+Set the debug-on-exit flag of eval frame LEVEL levels down to FLAG.
+The debugger is entered when that frame exits, if the flag is non-nil.
+
+arguments: (LEVEL FLAG)
+Fbacktrace
+Print a trace of Lisp function calls currently active.
+Optional arg STREAM specifies the output stream to send the backtrace to,
+and defaults to the value of `standard-output'.
+Optional second arg DETAILED non-nil means show places where currently
+active variable bindings, catches, condition-cases, and
+unwind-protects, as well as function calls, were made.
+
+arguments: (&optional STREAM DETAILED)
+Fbacktrace-frame
+Return the function and arguments NFRAMES up from current execution point.
+If that frame has not evaluated the arguments yet (or is a special form),
+the value is (nil FUNCTION ARG-FORMS...).
+If that frame has evaluated its arguments and called its function already,
+the value is (t FUNCTION ARG-VALUES...).
+A &rest arg is represented as the tail of the list ARG-VALUES.
+FUNCTION is whatever was supplied as car of evaluated list,
+or a lambda expression for macro calls.
+If NFRAMES is more than the number of frames, the value is nil.
+
+arguments: (NFRAMES)
+Vmax-specpdl-size
+Limit on number of Lisp variable bindings & unwind-protects before error.Vmax-lisp-eval-depth
+Limit on depth in `eval', `apply' and `funcall' before error.
+This limit is to catch infinite recursions for you before they cause
+actual stack overflow in C, which would be fatal for Emacs.
+You can safely make it considerably larger than its default value,
+if that proves inconveniently small.Vquit-flag
+Non-nil causes `eval' to abort, unless `inhibit-quit' is non-nil.
+Typing C-G sets `quit-flag' non-nil, regardless of `inhibit-quit'.Vinhibit-quit
+Non-nil inhibits C-g quitting from happening immediately.
+Note that `quit-flag' will still be set by typing C-g,
+so a quit will be signalled as soon as `inhibit-quit' is nil.
+To prevent this happening, set `quit-flag' to nil
+before making `inhibit-quit' nil.  The value of `inhibit-quit' is
+ignored if a critical quit is requested by typing control-shift-G in
+an X frame.Vstack-trace-on-error
+*Non-nil means automatically display a backtrace buffer
+after any error that is not handled by a `condition-case'.
+If the value is a list, an error only means to display a backtrace
+if one of its condition symbols appears in the list.
+See also variable `stack-trace-on-signal'.Vstack-trace-on-signal
+*Non-nil means automatically display a backtrace buffer
+after any error that is signalled, whether or not it is handled by
+a `condition-case'.
+If the value is a list, an error only means to display a backtrace
+if one of its condition symbols appears in the list.
+See also variable `stack-trace-on-error'.Vdebug-ignored-errors
+*List of errors for which the debugger should not be called.
+Each element may be a condition-name or a regexp that matches error messages.
+If any element applies to a given error, that error skips the debugger
+and just returns to top level.
+This overrides the variable `debug-on-error'.
+It does not apply to errors handled by `condition-case'.Vdebug-on-error
+*Non-nil means enter debugger if an unhandled error is signalled.
+The debugger will not be entered if the error is handled by
+a `condition-case'.
+If the value is a list, an error only means to enter the debugger
+if one of its condition symbols appears in the list.
+This variable is overridden by `debug-ignored-errors'.
+See also variables `debug-on-quit' and `debug-on-signal'.Vdebug-on-signal
+*Non-nil means enter debugger if an error is signalled.
+The debugger will be entered whether or not the error is handled by
+a `condition-case'.
+If the value is a list, an error only means to enter the debugger
+if one of its condition symbols appears in the list.
+See also variable `debug-on-quit'.Vdebug-on-quit
+*Non-nil means enter debugger if quit is signalled (C-G, for example).
+Does not apply if quit is handled by a `condition-case'.  Entering the
+debugger can also be achieved at any time (for X11 console) by typing
+control-shift-G to signal a critical quit.Vdebug-on-next-call
+Non-nil means enter debugger before next `eval', `apply' or `funcall'.Vdebugger
+Function to call to invoke debugger.
+If due to frame exit, args are `exit' and the value being returned;
+ this function's value will be returned instead of that.
+If due to error, args are `error' and a list of the args to `signal'.
+If due to `apply' or `funcall' entry, one arg, `lambda'.
+If due to `eval' entry, one arg, t.Fmake-event
+Return a new event of type TYPE, with properties described by PLIST.
+
+TYPE is a symbol, either `empty', `key-press', `button-press',
+ `button-release', `misc-user' or `motion'.  If TYPE is nil, it
+ defaults to `empty'.
+
+PLIST is a property list, the properties being compatible to those
+ returned by `event-properties'.  The following properties are
+ allowed:
+
+ channel	-- The event channel, a frame or a console.  For
+		   button-press, button-release, misc-user and motion events,
+		   this must be a frame.  For key-press events, it must be
+                   a console.  If channel is unspecified, it will be set to
+                   the selected frame or selected console, as appropriate.
+ key		-- The event key, a symbol or character.  Allowed only for
+		   keypress events.
+ button		-- The event button, integer 1, 2 or 3.  Allowed for
+		   button-press, button-release and misc-user events.
+ modifiers	-- The event modifiers, a list of modifier symbols.  Allowed
+		   for key-press, button-press, button-release, motion and
+		   misc-user events.
+ function       -- Function. Allowed for misc-user events only.
+ object         -- An object, function's parameter. Allowed for misc-user
+                   events only.
+ x		-- The event X coordinate, an integer.  This is relative
+		   to the left of CHANNEL's root window.  Allowed for
+		   motion, button-press, button-release and misc-user events.
+ y		-- The event Y coordinate, an integer.  This is relative
+		   to the top of CHANNEL's root window.  Allowed for
+		   motion, button-press, button-release and misc-user events.
+ timestamp	-- The event timestamp, a non-negative integer.  Allowed for
+		   all types of events.  If unspecified, it will be set to 0
+		   by default.
+
+For event type `empty', PLIST must be nil.
+ `button-release', or `motion'.  If TYPE is left out, it defaults to
+ `empty'.
+PLIST is a list of properties, as returned by `event-properties'.  Not
+ all properties are allowed for all kinds of events, and some are
+ required.
+
+WARNING: the event object returned may be a reused one; see the function
+ `deallocate-event'.
+
+arguments: (&optional TYPE PLIST)
+Fdeallocate-event
+Allow the given event structure to be reused.
+You MUST NOT use this event object after calling this function with it.
+You will lose.  It is not necessary to call this function, as event
+objects are garbage-collected like all other objects; however, it may
+be more efficient to explicitly deallocate events when you are sure
+that it is safe to do so.
+
+arguments: (EVENT)
+Fcopy-event
+Make a copy of the event object EVENT1.
+If a second event argument EVENT2 is given, EVENT1 is copied into
+EVENT2 and EVENT2 is returned.  If EVENT2 is not supplied (or is nil)
+then a new event will be made as with `make-event'.  See also the
+function `deallocate-event'.
+
+arguments: (EVENT1 &optional EVENT2)
+Fevent-to-character
+Return the closest ASCII approximation to the given event object.
+If the event isn't a keypress, this returns nil.
+If the ALLOW-EXTRA-MODIFIERS argument is non-nil, then this is lenient in
+ its translation; it will ignore modifier keys other than control and meta,
+ and will ignore the shift modifier on those characters which have no
+ shifted ASCII equivalent (Control-Shift-A for example, will be mapped to
+ the same ASCII code as Control-A).
+If the ALLOW-META argument is non-nil, then the Meta modifier will be
+ represented by turning on the high bit of the byte returned; otherwise, nil
+ will be returned for events containing the Meta modifier.
+If the ALLOW-NON-ASCII argument is non-nil, then characters which are
+ present in the prevailing character set (see the `character-set-property'
+ variable) will be returned as their code in that character set, instead of
+ the return value being restricted to ASCII.
+Note that specifying both ALLOW-META and ALLOW-NON-ASCII is ambiguous, as
+ both use the high bit; `M-x' and `oslash' will be indistinguishable.
+
+arguments: (EVENT &optional ALLOW-EXTRA-MODIFIERS ALLOW-META ALLOW-NON-ASCII)
+Fcharacter-to-event
+Convert KEY-DESCRIPTION into an event structure, replete with bucky bits.
+
+KEY-DESCRIPTION is the first argument, and the event to fill in is the
+second.  This function contains knowledge about what various kinds of
+arguments ``mean'' -- for example, the number 9 is converted to the
+character ``Tab'', not the distinct character ``Control-I''.
+
+KEY-DESCRIPTION can be an integer, a character, a symbol such as 'clear,
+or a list such as '(control backspace).
+
+If the optional second argument EVENT is an event, it is modified and
+returned; otherwise, a new event object is created and returned.
+
+Optional third arg CONSOLE is the console to store in the event, and
+defaults to the selected console.
+
+If KEY-DESCRIPTION is an integer or character, the high bit may be
+interpreted as the meta key. (This is done for backward compatibility
+in lots of places.)  If USE-CONSOLE-META-FLAG is nil, this will always
+be the case.  If USE-CONSOLE-META-FLAG is non-nil, the `meta' flag for
+CONSOLE affects whether the high bit is interpreted as a meta
+key. (See `set-input-mode'.)  If you don't want this silly meta
+interpretation done, you should pass in a list containing the
+character.
+
+Beware that character-to-event and event-to-character are not strictly
+inverse functions, since events contain much more information than the
+Lisp character object type can encode.
+
+arguments: (KEYSTROKE &optional EVENT CONSOLE USE-CONSOLE-META-FLAG)
+Feventp
+True if OBJECT is an event object.
+
+arguments: (OBJECT)
+Fevent-live-p
+True if OBJECT is an event object that has not been deallocated.
+
+arguments: (OBJECT)
+Fevent-type
+Return the type of EVENT.
+This will be a symbol; one of
+
+key-press	A key was pressed.
+button-press	A mouse button was pressed.
+button-release	A mouse button was released.
+misc-user	Some other user action happened; typically, this is
+		a menu selection or scrollbar action.
+motion		The mouse moved.
+process		Input is available from a subprocess.
+timeout		A timeout has expired.
+eval		This causes a specified action to occur when dispatched.
+magic		Some window-system-specific event has occurred.
+empty		The event has been allocated but not assigned.
+
+
+arguments: (EVENT)
+Fevent-timestamp
+Return the timestamp of the event object EVENT.
+Timestamps are measured in milliseconds since the start of the window system.
+They are NOT related to any current time measurement.
+They should be compared with `event-timestamp<'.
+See also `current-event-timestamp'.
+
+arguments: (EVENT)
+Fevent-timestamp<
+Return true if timestamp TIME1 is earlier than timestamp TIME2.
+This correctly handles timestamp wrap.
+See also `event-timestamp' and `current-event-timestamp'.
+
+arguments: (TIME1 TIME2)
+Fevent-key
+Return the Keysym of the key-press event EVENT.
+This will be a character if the event is associated with one, else a symbol.
+
+arguments: (EVENT)
+Fevent-button
+Return the button-number of the button-press or button-release event EVENT.
+
+arguments: (EVENT)
+Fevent-modifier-bits
+Return a number representing the modifier keys and buttons which were down
+when the given mouse or keyboard event was produced.
+See also the function `event-modifiers'.
+
+arguments: (EVENT)
+Fevent-modifiers
+Return a list of symbols, the names of the modifier keys and buttons
+which were down when the given mouse or keyboard event was produced.
+See also the function `event-modifier-bits'.
+
+The possible symbols in the list are
+
+`shift':     The Shift key.  Will not appear, in general, on key events
+             where the keysym is an ASCII character, because using Shift
+             on such a character converts it into another character rather
+             than actually just adding a Shift modifier.
+
+`control':   The Control key.
+
+`meta':      The Meta key.  On PC's and PC-style keyboards, this is generally
+             labelled "Alt"; Meta is a holdover from early Lisp Machines and
+             such, propagated through the X Window System.  On Sun keyboards,
+             this key is labelled with a diamond.
+
+`alt':       The "Alt" key.  Alt is in quotes because this does not refer
+             to what it obviously should refer to, namely the Alt key on PC
+             keyboards.  Instead, it refers to the key labelled Alt on Sun
+             keyboards, and to no key at all on PC keyboards.
+
+`super':     The Super key.  Most keyboards don't have any such key, but
+             under X Windows using `xmodmap' you can assign any key (such as
+             an underused right-shift, right-control, or right-alt key) to
+             this key modifier.  No support currently exists under MS Windows
+             for generating these modifiers.
+
+`hyper':     The Hyper key.  Works just like the Super key.
+
+`button1':   The mouse buttons.  This means that the specified button was held
+`button2':   down at the time the event occurred.  NOTE: For button-press
+`button3':   events, the button that was just pressed down does NOT appear in
+`button4':   the modifiers.
+`button5':
+
+Button modifiers are currently ignored when defining and looking up key and
+mouse strokes in keymaps.  This could be changed, which would allow a user to
+create button-chord actions, use a button as a key modifier and do other
+clever things.
+
+arguments: (EVENT)
+Fevent-window-x-pixel
+Return the X position in pixels of mouse event EVENT.
+The value returned is relative to the window the event occurred in.
+This will signal an error if the event is not a mouse event.
+See also `mouse-event-p' and `event-x-pixel'.
+
+arguments: (EVENT)
+Fevent-window-y-pixel
+Return the Y position in pixels of mouse event EVENT.
+The value returned is relative to the window the event occurred in.
+This will signal an error if the event is not a mouse event.
+See also `mouse-event-p' and `event-y-pixel'.
+
+arguments: (EVENT)
+Fevent-x-pixel
+Return the X position in pixels of mouse event EVENT.
+The value returned is relative to the frame the event occurred in.
+This will signal an error if the event is not a mouse event.
+See also `mouse-event-p' and `event-window-x-pixel'.
+
+arguments: (EVENT)
+Fevent-y-pixel
+Return the Y position in pixels of mouse event EVENT.
+The value returned is relative to the frame the event occurred in.
+This will signal an error if the event is not a mouse event.
+See also `mouse-event-p' `event-window-y-pixel'.
+
+arguments: (EVENT)
+Fevent-over-text-area-p
+Return t if the mouse event EVENT occurred over the text area of a window.
+The modeline is not considered to be part of the text area.
+
+arguments: (EVENT)
+Fevent-over-modeline-p
+Return t if the mouse event EVENT occurred over the modeline of a window.
+
+arguments: (EVENT)
+Fevent-over-border-p
+Return t if the mouse event EVENT occurred over an internal border.
+
+arguments: (EVENT)
+Fevent-over-toolbar-p
+Return t if the mouse event EVENT occurred over a toolbar.
+
+arguments: (EVENT)
+Fevent-over-vertical-divider-p
+Return t if the mouse event EVENT occurred over a window divider.
+
+arguments: (EVENT)
+Fevent-channel
+Return the channel that the event EVENT occurred on.
+This will be a frame, device, console, or nil for some types
+of events (e.g. eval events).
+
+arguments: (EVENT)
+Fevent-window
+Return the window over which mouse event EVENT occurred.
+This may be nil if the event occurred in the border or over a toolbar.
+The modeline is considered to be within the window it describes.
+
+arguments: (EVENT)
+Fevent-point
+Return the character position of the mouse event EVENT.
+If the event did not occur over a window, or did not occur over text,
+then this returns nil.  Otherwise, it returns a position in the buffer
+visible in the event's window.
+
+arguments: (EVENT)
+Fevent-closest-point
+Return the character position closest to the mouse event EVENT.
+If the event did not occur over a window or over text, return the
+closest point to the location of the event.  If the Y pixel position
+overlaps a window and the X pixel position is to the left of that
+window, the closest point is the beginning of the line containing the
+Y position.  If the Y pixel position overlaps a window and the X pixel
+position is to the right of that window, the closest point is the end
+of the line containing the Y position.  If the Y pixel position is
+above a window, return 0.  If it is below the last character in a window,
+return the value of (window-end).
+
+arguments: (EVENT)
+Fevent-x
+Return the X position of the mouse event EVENT in characters.
+This is relative to the window the event occurred over.
+
+arguments: (EVENT)
+Fevent-y
+Return the Y position of the mouse event EVENT in characters.
+This is relative to the window the event occurred over.
+
+arguments: (EVENT)
+Fevent-modeline-position
+Return the character position in the modeline that EVENT occurred over.
+EVENT should be a mouse event.  If EVENT did not occur over a modeline,
+nil is returned.  You can determine the actual character that the
+event occurred over by looking in `generated-modeline-string' at the
+returned character position.  Note that `generated-modeline-string'
+is buffer-local, and you must use EVENT's buffer when retrieving
+`generated-modeline-string' in order to get accurate results.
+
+arguments: (EVENT)
+Fevent-glyph
+Return the glyph that the mouse event EVENT occurred over, or nil.
+
+arguments: (EVENT)
+Fevent-glyph-extent
+Return the extent of the glyph that the mouse event EVENT occurred over.
+If the event did not occur over a glyph, nil is returned.
+
+arguments: (EVENT)
+Fevent-glyph-x-pixel
+Return the X pixel position of EVENT relative to the glyph it occurred over.
+EVENT should be a mouse event.  If the event did not occur over a glyph,
+nil is returned.
+
+arguments: (EVENT)
+Fevent-glyph-y-pixel
+Return the Y pixel position of EVENT relative to the glyph it occurred over.
+EVENT should be a mouse event.  If the event did not occur over a glyph,
+nil is returned.
+
+arguments: (EVENT)
+Fevent-toolbar-button
+Return the toolbar button that the mouse event EVENT occurred over.
+If the event did not occur over a toolbar button, nil is returned.
+
+arguments: (EVENT)
+Fevent-process
+Return the process of the process-output event EVENT.
+
+arguments: (EVENT)
+Fevent-function
+Return the callback function of EVENT.
+EVENT should be a timeout, misc-user, or eval event.
+
+arguments: (EVENT)
+Fevent-object
+Return the callback function argument of EVENT.
+EVENT should be a timeout, misc-user, or eval event.
+
+arguments: (EVENT)
+Fevent-properties
+Return a list of all of the properties of EVENT.
+This is in the form of a property list (alternating keyword/value pairs).
+
+arguments: (EVENT)
+Vcharacter-set-property
+A symbol used to look up the 8-bit character of a keysym.
+To convert a keysym symbol to an 8-bit code, as when that key is
+bound to self-insert-command, we will look up the property that this
+variable names on the property list of the keysym-symbol.  The window-
+system-specific code will set up appropriate properties and set this
+variable.Fadd-debug-class-to-check
+Add a debug class to the list of active classes.
+
+arguments: (CLASS)
+Fdelete-debug-class-to-check
+Delete a debug class from the list of active classes.
+
+arguments: (CLASS)
+Fdebug-classes-being-checked
+Return a list of active debug classes.
+
+arguments: ()
+Fdebug-classes-list
+Return a list of all defined debug classes.
+
+arguments: ()
+Fset-debug-classes-to-check
+Set which classes of debug statements should be active.
+CLASSES should be a list of debug classes.
+
+arguments: (CLASSES)
+Fset-debug-class-types-to-check
+For the given debug CLASS, set which TYPES are actually interesting.
+TYPES should be an integer representing the or'd value of all desired types.
+Lists of defined types and their values are located in the source code.
+
+arguments: (CLASS TYPE)
+Fdebug-types-being-checked
+For the given CLASS, return the associated type value.
+
+arguments: (CLASS)
+Ftest-data-format-conversion
+Test TO_EXTERNAL_FORMAT() and TO_INTERNAL_FORMAT()
+
+arguments: ()
+Ftest-hash-tables
+Test C interface to hash tables.
+
+arguments: ()
+Vtest-function-list
+List of all test functions defined in tests.c.
+For use by the automated test suite.  See tests/automated/c-tests.Flock-buffer
+Lock FILE, if current buffer is modified.
+FILE defaults to current buffer's visited file,
+or else nothing is done if current buffer isn't visiting a file.
+
+arguments: (&optional FILE)
+Funlock-buffer
+Unlock the file visited in the current buffer,
+if it should normally be locked.
+
+arguments: ()
+Ffile-locked-p
+Return nil if the FILENAME is not locked,
+t if it is locked by you, else a string of the name of the locker.
+
+arguments: (&optional FILENAME)
+Vinhibit-clash-detection
+Non-nil inhibits creation of lock file to detect clash.Fshow-balloon-help
+Show balloon help.
+
+arguments: (STRING)
+Fhide-balloon-help
+Hide balloon help.
+
+arguments: ()
+Fballoon-help-move-to-pointer
+Move the balloon help to the place where the pointer currently resides.
+
+arguments: ()
+Fpq-conn-defaults
+Return a connection default structure.
+
+arguments: ()
+Fpq-connectdb
+Make a new connection to a PostgreSQL backend.
+
+arguments: (CONNINFO)
+Fpq-connect-start
+Make a new asynchronous connection to a PostgreSQL backend.
+
+arguments: (CONNINFO)
+Fpq-connect-poll
+Poll an asynchronous connection for completion
+
+arguments: (CONN)
+Fpq-client-encoding
+Return client coding system.
+
+arguments: (CONN)
+Fpq-set-client-encoding
+Set client coding system.
+
+arguments: (CONN ENCODING)
+Fpq-finish
+Close the connection to the backend.
+
+arguments: (CONN)
+Fpq-clear
+Forcibly erase a PGresult object.
+
+arguments: (RES)
+Fpq-is-busy
+Return t if PQgetResult would block waiting for input.
+
+arguments: (CONN)
+Fpq-consume-input
+Consume any available input from the backend.
+Returns nil if something bad happened.
+
+arguments: (CONN)
+Fpq-reset
+Reset the connection to the backend.
+This function will close the connection to the backend and attempt to
+reestablish a new connection to the same postmaster, using all the same
+parameters previously used.  This may be useful for error recovery if a
+working connection is lost.
+
+arguments: (CONN)
+Fpq-reset-start
+Reset connection to the backend asynchronously.
+
+arguments: (CONN)
+Fpq-reset-poll
+Poll an asynchronous reset for completion.
+
+arguments: (CONN)
+Fpq-request-cancel
+Attempt to request cancellation of the current operation.
+
+The return value is t if the cancel request was successfully
+dispatched, nil if not (in which case conn->errorMessage is set).
+Note: successful dispatch is no guarantee that there will be any effect at
+the backend.  The application must read the operation result as usual.
+
+arguments: (CONN)
+Fpq-pgconn
+Accessor function for the PGconn object.
+Currently recognized symbols for the field:
+pq::db            Database name
+pq::user          Database user name
+pq::pass          Database user's password
+pq::host          Hostname of PostgreSQL backend connected to
+pq::port          TCP port number of connection
+pq::tty           Debugging TTY (not used in Emacs)
+pq::options       Additional backend options
+pq::status        Connection status (either OK or BAD)
+pq::error-message Last error message from the backend
+pq::backend-pid   Process ID of backend process
+
+arguments: (CONN FIELD)
+Fpq-exec
+Submit a query to Postgres and wait for the result.
+
+arguments: (CONN QUERY)
+Fpq-send-query
+Submit a query to Postgres and don't wait for the result.
+Returns: t if successfully submitted
+         nil if error (conn->errorMessage is set)
+
+arguments: (CONN QUERY)
+Fpq-get-result
+Retrieve an asynchronous result from a query.
+NIL is returned when no more query work remains.
+
+arguments: (CONN)
+Fpq-result-status
+Return result status of the query.
+
+arguments: (RESULT)
+Fpq-res-status
+Return stringified result status of the query.
+
+arguments: (RESULT)
+Fpq-result-error-message
+Return last message associated with the query.
+
+arguments: (RESULT)
+Fpq-ntuples
+Return the number of tuples (instances) in the query result.
+
+arguments: (RESULT)
+Fpq-nfields
+Return the number of fields (attributes) in each tuple of the query result.
+
+arguments: (RESULT)
+Fpq-binary-tuples
+Return t if the query result contains binary data, nil otherwise.
+
+arguments: (RESULT)
+Fpq-fname
+Return the field (attribute) name associated with the given field index.
+Field indices start at 0.
+
+arguments: (RESULT FIELD-INDEX)
+Fpq-fnumber
+Return the number of fields (attributes) in each tuple of the query result.
+
+arguments: (RESULT FIELD-NAME)
+Fpq-ftype
+Return the field type associated with the given field index.
+The integer returned is the internal coding of the type.  Field indices
+start at 0.
+
+arguments: (RESULT FIELD-NUM)
+Fpq-fsize
+Return the field size in bytes associated with the given field index.
+Field indices start at 0.
+
+arguments: (RESULT FIELD-INDEX)
+Fpq-fmod
+Return the type modifier associated with a field.
+Field indices start at 0.
+
+arguments: (RESULT FIELD-INDEX)
+Fpq-get-value
+Return a single field (attribute) value of one tuple of a PGresult.
+Tuple and field indices start at 0.
+
+arguments: (RESULT TUP-NUM FIELD-NUM)
+Fpq-get-length
+Returns the length of a field value in bytes.
+If result is binary, i.e. a result of a binary portal, then the
+length returned does NOT include the size field of the varlena.  (The
+data returned by PQgetvalue doesn't either.)
+
+arguments: (RESULT TUP-NUM FIELD-NUM)
+Fpq-get-is-null
+Returns the null status of a field value.
+
+arguments: (RESULT TUP-NUM FIELD-NUM)
+Fpq-cmd-status
+Returns the command status string from the SQL command that generated the result.
+
+arguments: (RESULT)
+Fpq-cmd-tuples
+Returns the number of rows affected by the SQL command.
+
+arguments: (RESULT)
+Fpq-oid-value
+Returns the object id of the tuple inserted.
+
+arguments: (RESULT)
+Fpq-set-nonblocking
+Sets the PGconn's database connection non-blocking if the arg is TRUE
+or makes it non-blocking if the arg is FALSE, this will not protect
+you from PQexec(), you'll only be safe when using the non-blocking API.
+
+Needs to be called only on a connected database connection.
+
+arguments: (CONN ARG)
+Fpq-is-nonblocking
+Return the blocking status of the database connection.
+
+arguments: (CONN)
+Fpq-flush
+Force the write buffer to be written (or at least try).
+
+arguments: (CONN)
+Fpq-notifies
+Return the latest async notification that has not yet been handled.
+If there has been a notification, then a list of two elements will be returned.
+The first element contains the relation name being notified, the second
+element contains the backend process ID number.  nil is returned if there
+aren't any notifications to process.
+
+arguments: (CONN)
+Fpq-env-2-encoding
+Get encoding id from environment variable PGCLIENTENCODING.
+
+arguments: ()
+Fpq-lo-import
+
+
+
+arguments: (CONN FILENAME)
+Fpq-lo-export
+
+
+
+arguments: (CONN OID FILENAME)
+Fpq-make-empty-pgresult
+Make an empty PGresult object with the given status.
+
+arguments: (CONN STATUS)
+Fpq-get-line
+Retrieve a line from server in copy in operation.
+The return value is a dotted pair where the cons cell is an integer code:
+   -1: Copying is complete
+    0: A record is complete
+    1: A record is incomplete, it will be continued in the next `pq-get-line'
+       operation.
+and the cdr cell is returned string data.
+
+The copy operation is complete when the value `.' (backslash dot) is
+returned.
+
+arguments: (CONN)
+Fpq-put-line
+Send a line to the server in copy out operation.
+
+Returns t if the operation succeeded, nil otherwise.
+
+arguments: (CONN STRING)
+Fpq-get-line-async
+Get a line from the server in copy in operation asynchronously.
+
+This routine is for applications that want to do "COPY <rel> to stdout"
+asynchronously, that is without blocking.  Having issued the COPY command
+and gotten a PGRES_COPY_OUT response, the app should call PQconsumeInput
+and this routine until the end-of-data signal is detected.  Unlike
+PQgetline, this routine takes responsibility for detecting end-of-data.
+
+On each call, PQgetlineAsync will return data if a complete newline-
+terminated data line is available in libpq's input buffer, or if the
+incoming data line is too long to fit in the buffer offered by the caller.
+Otherwise, no data is returned until the rest of the line arrives.
+
+If -1 is returned, the end-of-data signal has been recognized (and removed
+from libpq's input buffer).  The caller *must* next call PQendcopy and
+then return to normal processing.
+
+RETURNS:
+      -1    if the end-of-copy-data marker has been recognized
+      0         if no data is available
+      >0    the number of bytes returned.
+The data returned will not extend beyond a newline character.  If possible
+a whole line will be returned at one time.  But if the buffer offered by
+the caller is too small to hold a line sent by the backend, then a partial
+data line will be returned.  This can be detected by testing whether the
+last returned byte is 'n' or not.
+The returned string is *not* null-terminated.
+
+arguments: (CONN)
+Fpq-put-nbytes
+Asynchronous copy out.
+
+arguments: (CONN DATA)
+Fpq-end-copy
+End a copying operation.
+
+arguments: (CONN)
+Vpg-coding-system
+Default Postgres client coding system.Vpg:host
+Default PostgreSQL server name.
+If not set, the server running on the local host is used.  The
+initial value is set from the PGHOST environment variable.Vpg:user
+Default PostgreSQL user name.
+This value is used when connecting to a database for authentication.
+The initial value is set from the PGUSER environment variable.Vpg:options
+Default PostgreSQL user name.
+This value is used when connecting to a database for authentication.
+The initial value is set from the PGUSER environment variable.Vpg:port
+Default port to connect to PostgreSQL backend.
+This value is used when connecting to a database.
+The initial value is set from the PGPORT environment variable.Vpg:tty
+Default debugging TTY.
+There is no useful setting of this variable in the XEmacs Lisp API.
+The initial value is set from the PGTTY environment variable.Vpg:database
+Default database to connect to.
+The initial value is set from the PGDATABASE environment variable.Vpg:realm
+Default kerberos realm to use for authentication.
+The initial value is set from the PGREALM environment variable.Vpg:client-encoding
+Default client encoding to use.
+The initial value is set from the PGCLIENTENCODING environment variable.Vpg:authtype
+Default authentication to use.
+The initial value is set from the PGAUTHTYPE environment variable.
+
+WARNING:  This variable has gone away in versions of PostgreSQL newer
+than 6.5.Vpg:geqo
+Genetic Query Optimizer options.
+The initial value is set from the PGGEQO environment variable.Vpg:cost-index
+Default cost index options.
+The initial value is set from the PGCOSTINDEX environment variable.Vpg:cost-heap
+Default cost heap options.
+The initial value is set from the PGCOSTHEAP environment variable.Vpg:tz
+Default timezone to use.
+The initial value is set from the PGTZ environment variable.Vpg:date-style
+Default date style to use.
+The initial value is set from the PGDATESTYLE environment variable.Fmenu-find-real-submenu
+Find a submenu descriptor within DESC by following PATH.
+This function finds a submenu descriptor, either from the description
+DESC or generated by a filter within DESC. The function regards :config
+and :included keywords in the DESC, and expands submenus along the
+PATH using :filter functions. Return value is a descriptor for the
+submenu, NOT expanded and NOT checked against :config and :included.
+Also, individual menu items are not looked for, only submenus.
+
+See also 'find-menu-item'.
+
+arguments: (DESC PATH)
+Fpopup-menu
+Pop up the menu described by MENU-DESCRIPTION.
+A menu description is a list of menu items, strings, and submenus.
+
+The first element of a menu must be a string, which is the name of the menu.
+This is the string that will be displayed in the parent menu, if any.  For
+toplevel menus, it is ignored.  This string is not displayed in the menu
+itself.
+
+If an element of a menu is a string, then that string will be presented in
+the menu as unselectable text.
+
+If an element of a menu is a string consisting solely of hyphens, then that
+item will be presented as a solid horizontal line.
+
+If an element of a menu is a list, it is treated as a submenu.  The name of
+that submenu (the first element in the list) will be used as the name of the
+item representing this menu on the parent.
+
+Otherwise, the element must be a vector, which describes a menu item.
+A menu item can have any of the following forms:
+
+ [ "name" callback <active-p> ]
+ [ "name" callback <active-p> <suffix> ]
+ [ "name" callback :<keyword> <value>  :<keyword> <value> ... ]
+
+The name is the string to display on the menu; it is filtered through the
+resource database, so it is possible for resources to override what string
+is actually displayed.
+
+If the `callback' of a menu item is a symbol, then it must name a command.
+It will be invoked with `call-interactively'.  If it is a list, then it is
+evaluated with `eval'.
+
+The possible keywords are this:
+
+ :active   <form>    Same as <active-p> in the first two forms: the
+                     expression is evaluated just before the menu is
+                     displayed, and the menu will be selectable only if
+                     the result is non-nil.
+
+ :suffix   <form>    Same as <suffix> in the second form: the expression
+                     is evaluated just before the menu is displayed and
+		     resulting string is appended to the displayed name,
+		     providing a convenient way of adding the name of a
+		     command's ``argument'' to the menu, like
+		     ``Kill Buffer NAME''.
+
+ :keys     "string"  Normally, the keyboard equivalents of commands in
+                     menus are displayed when the `callback' is a symbol.
+                     This can be used to specify keys for more complex menu
+                     items.  It is passed through `substitute-command-keys'
+                     first.
+
+ :style    <style>   Specifies what kind of object this menu item is:
+
+                        nil     A normal menu item.
+                        toggle  A toggle button.
+                        radio   A radio button.
+
+                     The only difference between toggle and radio buttons is
+                     how they are displayed.  But for consistency, a toggle
+                     button should be used when there is one option whose
+                     value can be turned on or off, and radio buttons should
+                     be used when there is a set of mutually exclusive
+                     options.  When using a group of radio buttons, you
+                     should arrange for no more than one to be marked as
+                     selected at a time.
+
+ :selected <form>    Meaningful only when STYLE is `toggle' or `radio'.
+                     This specifies whether the button will be in the
+                     selected or unselected state.
+
+For example:
+
+ [ "Save As..."    write-file  t ]
+ [ "Revert Buffer" revert-buffer (buffer-modified-p) ]
+ [ "Read Only"     toggle-read-only :style toggle :selected buffer-read-only ]
+
+See menubar.el for many more examples.
+
+arguments: (MENU-DESCRIPTION &optional EVENT)
+Fnormalize-menu-item-name
+Convert a menu item name string into normal form, and return the new string.
+Menu item names should be converted to normal form before being compared.
+This removes %_'s (accelerator indications) and converts %% to %.
+
+arguments: (NAME &optional BUFFER)
+Vpopup-menu-titles
+If true, popup menus will have title bars at the top.Vcurrent-menubar
+The current menubar.  This may be buffer-local.
+
+When the menubar is changed, the function `set-menubar-dirty-flag' has to
+be called for the menubar to be updated on the frame.  See `set-menubar'
+and `set-buffer-menubar'.
+
+A menubar is a list of menus and menu-items.
+A menu is a list of menu items, keyword-value pairs, strings, and submenus.
+
+The first element of a menu must be a string, which is the name of the menu.
+This is the string that will be displayed in the parent menu, if any.  For
+toplevel menus, it is ignored.  This string is not displayed in the menu
+itself.
+
+Menu accelerators can be indicated in the string by putting the
+sequence "%_" before the character corresponding to the key that will
+invoke the menu or menu item.  Uppercase and lowercase accelerators
+are equivalent.  The sequence "%%" is also special, and is translated
+into a single %.
+
+If no menu accelerator is present in the string, XEmacs will act as if
+the first character has been tagged as an accelerator.
+
+Immediately following the name string of the menu, various optional
+keyword-value pairs are permitted: currently, :filter, :active, :included,
+and :config. (See below.)
+
+If an element of a menu (or menubar) is a string, then that string will be
+presented as unselectable text.
+
+If an element of a menu is a string consisting solely of hyphens, then that
+item will be presented as a solid horizontal line.
+
+If an element of a menu is a string beginning with "--:", it will be
+presented as a line whose appearance is controlled by the rest of the
+text in the string.  The allowed line specs are system-dependent, and
+currently work only under X Windows (with Lucid and Motif menubars);
+otherwise, a solid horizontal line is presented, as if the string were
+all hyphens.
+
+The possibilities are:
+
+  "--:singleLine"
+  "--:doubleLine"
+  "--:singleDashedLine"
+  "--:doubleDashedLine"
+  "--:noLine"
+  "--:shadowEtchedIn"
+  "--:shadowEtchedOut"
+  "--:shadowEtchedInDash"
+  "--:shadowEtchedOutDash"
+  "--:shadowDoubleEtchedIn" (Lucid menubars only)
+  "--:shadowDoubleEtchedOut" (Lucid menubars only)
+  "--:shadowDoubleEtchedInDash" (Lucid menubars only)
+  "--:shadowDoubleEtchedOutDash" (Lucid menubars only)
+
+If an element of a menu is a list, it is treated as a submenu.  The name of
+that submenu (the first element in the list) will be used as the name of the
+item representing this menu on the parent.
+
+If an element of a menubar is `nil', then it is used to represent the
+division between the set of menubar-items which are flushleft and those
+which are flushright.
+
+Otherwise, the element must be a vector, which describes a menu item.
+A menu item is of the following form:
+
+ [ "name" callback :<keyword> <value> :<keyword> <value> ... ]
+
+The following forms are also accepted for compatibility, but deprecated:
+
+ [ "name" callback <active-p> ]
+ [ "name" callback <active-p> <suffix> ]
+
+The name is the string to display on the menu; it is filtered through the
+resource database, so it is possible for resources to override what string
+is actually displayed.  Menu accelerator indicators (the sequence `%_') are
+also processed; see above.  If the name is not a string, it will be
+evaluated with `eval', and the result should be a string.
+
+If the `callback' of a menu item is a symbol, then it must name a command.
+It will be invoked with `call-interactively'.  If it is a list, then it is
+evaluated with `eval'.
+
+In the deprecated forms, <active-p> is equivalent to using the :active
+keyword, and <suffix> is equivalent to using the :suffix keyword.
+
+The possible keywords are:
+
+ :active   <form>    The expression is evaluated just before the menu is
+                     displayed, and the menu will be selectable only if
+                     the result is non-nil.
+
+ :suffix   <form>    The expression is evaluated just before the menu is
+                     displayed and the resulting string is appended to
+                     the displayed name, providing a convenient way of
+                     adding the name of a command's ``argument'' to the
+                     menu, like ``Kill Buffer NAME''.
+
+ :keys     "string"  Normally, the keyboard equivalents of commands in
+                     menus are displayed when the `callback' is a symbol.
+                     This can be used to specify keys for more complex menu
+                     items.  It is passed through `substitute-command-keys'
+                     first.
+
+ :style    <style>   Specifies what kind of object this menu item is:
+
+                        nil     A normal menu item.
+                        toggle  A toggle button.
+                        radio   A radio button.
+                        button  A menubar button.
+
+                     The only difference between toggle and radio buttons is
+                     how they are displayed.  But for consistency, a toggle
+                     button should be used when there is one option whose
+                     value can be turned on or off, and radio buttons should
+                     be used when there is a set of mutually exclusive
+                     options.  When using a group of radio buttons, you
+                     should arrange for no more than one to be marked as
+                     selected at a time.
+
+ :selected <form>    Meaningful only when STYLE is `toggle', `radio' or
+                     `button'.  This specifies whether the button will be in
+		     the selected or unselected state.
+
+ :included <form>    This can be used to control the visibility of a menu or
+		     menu item.  The form is evaluated and the menu or menu
+		     item is only displayed if the result is non-nil.
+
+ :config  <symbol>   This is an efficient shorthand for
+		         :included (memq symbol menubar-configuration)
+	             See the variable `menubar-configuration'.
+
+ :filter <function>  A menu filter can only be used at the beginning of a
+                     submenu description (i.e. not in a menu item itself).
+		     (Remember that most of the keywords can take evaluated
+		     expressions as well as constants.)  The filter is used to
+		     incrementally create a submenu only when it is selected
+                     by the user and not every time the menubar is activated.
+                     The filter function is passed the list of menu items in
+                     the submenu and must return the modified list to be
+		     actually used.  The filter MUST NOT destructively modify
+                     the list of menu items passed to it.  It is called only
+		     when the menu is about to be displayed, so other menus
+		     may already be displayed.  Vile and terrible things will
+		     happen if a menu filter function changes the current
+		     buffer, window, or frame.  It also should not raise,
+		     lower, or iconify any frames.  Basically, the filter
+		     function should have no side-effects.
+
+ :key-sequence keys  Used in FSF Emacs as an hint to an equivalent keybinding.
+                     Ignored by XEmacs for easymenu.el compatibility.
+		     (XEmacs computes this information automatically.)
+
+For example:
+
+ ("%_File"
+  :filter file-menu-filter	; file-menu-filter is a function that takes
+				; one argument (a list of menu items) and
+				; returns a list of menu items
+  [ "Save %_As..."    write-file  t ]
+  [ "%_Revert Buffer" revert-buffer (buffer-modified-p) ]
+  [ "R%_ead Only"     toggle-read-only :style toggle
+		      :selected buffer-read-only ]
+  )
+
+See menubar-items.el for many more examples.
+
+After the menubar is clicked upon, but before any menus are popped up,
+the functions on the `activate-menubar-hook' are invoked to make top-level
+changes to the menus and menubar.  Note, however, that the use of menu
+filters (using the :filter keyword) is usually a more efficient way to
+dynamically alter or sensitize menus.  
+Vactivate-menubar-hook
+Function or functions called before a menubar menu is pulled down.
+These functions are called with no arguments, and should interrogate and
+modify the value of `current-menubar' as desired.
+
+The functions on this hook are invoked after the mouse goes down, but before
+the menu is mapped, and may be used to activate, deactivate, add, or delete
+items from the menus.  However, it is probably the case that using a :filter
+keyword in a submenu would be a more efficient way of updating menus.  See
+the documentation of `current-menubar'.
+
+These functions may return the symbol `t' to assert that they have made
+no changes to the menubar.  If any other value is returned, the menubar is
+recomputed.  If `t' is returned but the menubar has been changed, then the
+changes may not show up right away.  Returning `nil' when the menubar has
+not changed is not so bad; more computation will be done, but redisplay of
+the menubar will still be performed optimally.Vmenubar-show-keybindings
+If true, the menubar will display keyboard equivalents.
+If false, only the command names will be displayed.Vmenubar-configuration
+A list of symbols, against which the value of the :config tag for each
+menubar item will be compared.  If a menubar item has a :config tag, then
+it is omitted from the menubar if that tag is not a member of the
+`menubar-configuration' list.Vmenubar-pointer-glyph
+*The shape of the mouse-pointer when over the menubar.
+This is a glyph; use `set-glyph-image' to change it.
+If unspecified in a particular domain, the window-system-provided
+default pointer is used.Vmenu-accelerator-prefix
+Prefix key(s) that must be typed before menu accelerators will be activated.
+Set this to a value acceptable by define-key.
+
+NOTE: This currently only has any effect under X Windows.Vmenu-accelerator-modifiers
+Modifier keys which must be pressed to get to the top level menu accelerators.
+This is a list of modifier key symbols.  All modifier keys must be held down
+while a valid menu accelerator key is pressed in order for the top level
+menu to become active.
+
+NOTE: This currently only has any effect under X Windows.
+
+See also menu-accelerator-enabled and menu-accelerator-prefix.Vmenu-accelerator-enabled
+Whether menu accelerator keys can cause the menubar to become active.
+If 'menu-force or 'menu-fallback, then menu accelerator keys can
+be used to activate the top level menu.  Once the menubar becomes active, the
+accelerator keys can be used regardless of the value of this variable.
+
+menu-force is used to indicate that the menu accelerator key takes
+precedence over bindings in the current keymap(s).  menu-fallback means
+that bindings in the current keymap take precedence over menu accelerator keys.
+Thus a top level menu with an accelerator of "T" would be activated on a
+keypress of Meta-t if menu-accelerator-enabled is menu-force.
+However, if menu-accelerator-enabled is menu-fallback, then
+Meta-t will not activate the menubar and will instead run the function
+transpose-words, to which it is normally bound.
+
+See also menu-accelerator-modifiers and menu-accelerator-prefix.Vmenu-accelerator-map
+Keymap for use when the menubar is active.
+The actions menu-quit, menu-up, menu-down, menu-left, menu-right,
+menu-select and menu-escape can be mapped to keys in this map.
+NOTE: This currently only has any effect under X Windows.
+
+menu-quit    Immediately deactivate the menubar and any open submenus without
+             selecting an item.
+menu-up      Move the menu cursor up one row in the current menu.  If the
+             move extends past the top of the menu, wrap around to the bottom.
+menu-down    Move the menu cursor down one row in the current menu.  If the
+             move extends past the bottom of the menu, wrap around to the top.
+             If executed while the cursor is in the top level menu, move down
+             into the selected menu.
+menu-left    Move the cursor from a submenu into the parent menu.  If executed
+             while the cursor is in the top level menu, move the cursor to the
+             left.  If the move extends past the left edge of the menu, wrap
+             around to the right edge.
+menu-right   Move the cursor into a submenu.  If the cursor is located in the
+             top level menu or is not currently on a submenu heading, then move
+             the cursor to the next top level menu entry.  If the move extends
+             past the right edge of the menu, wrap around to the left edge.
+menu-select  Activate the item under the cursor.  If the cursor is located on
+             a submenu heading, then move the cursor into the submenu.
+menu-escape  Pop up to the next level of menus.  Moves from a submenu into its
+             parent menu.  From the top level menu, this deactivates the
+             menubar.
+
+This keymap can also contain normal key-command bindings, in which case the
+menubar is deactivated and the corresponding command is executed.
+
+The action bindings used by the menu accelerator code are designed to mimic
+the actions of menu traversal keys in a commonly used PC operating system.Vmenubar-visible-p
+*Whether the menubar is visible.
+This is a specifier; use `set-specifier' to change it.Fscrollbar-line-up
+Function called when the line-up arrow on the scrollbar is clicked.
+This is the little arrow at the top of the scrollbar.  One argument, the
+scrollbar's window.  You can advise this function to change the scrollbar
+behavior.
+
+arguments: (WINDOW)
+Fscrollbar-line-down
+Function called when the line-down arrow on the scrollbar is clicked.
+This is the little arrow at the bottom of the scrollbar.  One argument, the
+scrollbar's window.  You can advise this function to change the scrollbar
+behavior.
+
+arguments: (WINDOW)
+Fscrollbar-page-up
+Function called when the user gives the "page-up" scrollbar action.
+(The way this is done can vary from scrollbar to scrollbar.) One argument,
+a cons containing the scrollbar's window and a value (#### document me!
+This value is nil for Motif/Lucid scrollbars and a number for Athena
+scrollbars).  You can advise this function to change the scrollbar
+behavior.
+
+arguments: (OBJECT)
+Fscrollbar-page-down
+Function called when the user gives the "page-down" scrollbar action.
+(The way this is done can vary from scrollbar to scrollbar.) One argument,
+a cons containing the scrollbar's window and a value (#### document me!
+This value is nil for Motif/Lucid scrollbars and a number for Athena
+scrollbars).  You can advise this function to change the scrollbar
+behavior.
+
+arguments: (OBJECT)
+Fscrollbar-to-top
+Function called when the user invokes the "to-top" scrollbar action.
+The way this is done can vary from scrollbar to scrollbar, but
+C-button1 on the up-arrow is very common. One argument, the
+scrollbar's window.  You can advise this function to change the
+scrollbar behavior.
+
+arguments: (WINDOW)
+Fscrollbar-to-bottom
+Function called when the user invokes the "to-bottom" scrollbar action.
+The way this is done can vary from scrollbar to scrollbar, but
+C-button1 on the down-arrow is very common. One argument, the
+scrollbar's window.  You can advise this function to change the
+scrollbar behavior.
+
+arguments: (WINDOW)
+Fscrollbar-vertical-drag
+Function called when the user drags the vertical scrollbar slider.
+One argument, a cons containing the scrollbar's window and a value
+between point-min and point-max.  You can advise this function to
+change the scrollbar behavior.
+
+arguments: (OBJECT)
+Fscrollbar-set-hscroll
+Set WINDOW's hscroll position to VALUE.
+This ensures that VALUE is in the proper range for the horizontal scrollbar.
+
+arguments: (WINDOW VALUE)
+Vscrollbar-pointer-glyph
+*The shape of the mouse-pointer when over a scrollbar.
+This is a glyph; use `set-glyph-image' to change it.
+If unspecified in a particular domain, the window-system-provided
+default pointer is used.Vscrollbar-width
+*Width of vertical scrollbars.
+This is a specifier; use `set-specifier' to change it.Vscrollbar-height
+*Height of horizontal scrollbars.
+This is a specifier; use `set-specifier' to change it.Vhorizontal-scrollbar-visible-p
+*Whether the horizontal scrollbar is visible.
+This is a specifier; use `set-specifier' to change it.Vvertical-scrollbar-visible-p
+*Whether the vertical scrollbar is visible.
+This is a specifier; use `set-specifier' to change it.Vscrollbar-on-left-p
+*Whether the vertical scrollbar is on the left side of window or frame.
+This is a specifier; use `set-specifier' to change it.Vscrollbar-on-top-p
+*Whether the horizontal scrollbar is on the top side of window or frame.
+This is a specifier; use `set-specifier' to change it.Fmake-dialog-box-internal
+Internal helper function for `make-dialog-box'.
+This handles all dialog-box types except `general'.
+TYPE is the same as the first argument to `make-dialog-box', and KEYS
+a list of the remaining arguments.
+
+arguments: (TYPE KEYS)
+Vdelete-dialog-box-hook
+Function or functions to call when a dialog box is about to be deleted.
+One arg, the dialog box id.Ftoolbar-button-p
+Return non-nil if OBJECT is a toolbar button.
+
+arguments: (OBJECT)
+Ftoolbar-button-callback
+Return the callback function associated with the toolbar BUTTON.
+
+arguments: (BUTTON)
+Ftoolbar-button-help-string
+Return the help string function associated with the toolbar BUTTON.
+
+arguments: (BUTTON)
+Ftoolbar-button-enabled-p
+Return t if BUTTON is active.
+
+arguments: (BUTTON)
+Fset-toolbar-button-down-flag
+Don't touch.
+
+arguments: (BUTTON FLAG)
+Fset-default-toolbar-position
+Set the position that the `default-toolbar' will be displayed at.
+Valid positions are 'top, 'bottom, 'left and 'right.
+See `default-toolbar-position'.
+
+arguments: (POSITION)
+Fdefault-toolbar-position
+Return the position that the `default-toolbar' will be displayed at.
+The `default-toolbar' will only be displayed here if the corresponding
+position-specific toolbar specifier does not provide a value.
+
+arguments: ()
+Fcheck-toolbar-button-syntax
+Verify the syntax of entry BUTTON in a toolbar description list.
+If you want to verify the syntax of a toolbar description list as a
+whole, use `check-valid-instantiator' with a specifier type of 'toolbar.
+
+arguments: (BUTTON &optional NOERROR)
+Ftoolbar-specifier-p
+Return non-nil if OBJECT is a toolbar specifier.
+
+See `make-toolbar-specifier' for a description of possible toolbar
+instantiators.
+
+arguments: (OBJECT)
+Vdefault-toolbar
+Specifier for a fallback toolbar.
+Use `set-specifier' to change this.
+
+The position of this toolbar is specified in the function
+`default-toolbar-position'.  If the corresponding position-specific
+toolbar (e.g. `top-toolbar' if `default-toolbar-position' is 'top)
+does not specify a toolbar in a particular domain (usually a window),
+then the value of `default-toolbar' in that domain, if any, will be
+used instead.
+
+Note that the toolbar at any particular position will not be
+displayed unless its visibility flag is true and its thickness
+(width or height, depending on orientation) is non-zero.  The
+visibility is controlled by the specifiers `top-toolbar-visible-p',
+`bottom-toolbar-visible-p', `left-toolbar-visible-p', and
+`right-toolbar-visible-p', and the thickness is controlled by the
+specifiers `top-toolbar-height', `bottom-toolbar-height',
+`left-toolbar-width', and `right-toolbar-width'.
+
+Note that one of the four visibility specifiers inherits from
+`default-toolbar-visibility' and one of the four thickness
+specifiers inherits from either `default-toolbar-width' or
+`default-toolbar-height' (depending on orientation), just
+like for the toolbar description specifiers (e.g. `top-toolbar')
+mentioned above.
+
+Therefore, if you are setting `default-toolbar', you should control
+the visibility and thickness using `default-toolbar-visible-p',
+`default-toolbar-width', and `default-toolbar-height', rather than
+using position-specific specifiers.  That way, you will get sane
+behavior if the user changes the default toolbar position.
+
+The format of the instantiator for a toolbar is a list of
+toolbar-button-descriptors.  Each toolbar-button-descriptor
+is a vector in one of the following formats:
+
+  [GLYPH-LIST FUNCTION ENABLED-P HELP] or
+  [:style 2D-OR-3D] or
+  [:style 2D-OR-3D :size WIDTH-OR-HEIGHT] or
+  [:size WIDTH-OR-HEIGHT :style 2D-OR-3D]
+
+Optionally, one of the toolbar-button-descriptors may be nil
+instead of a vector; this signifies the division between
+the toolbar buttons that are to be displayed flush-left,
+and the buttons to be displayed flush-right.
+
+The first vector format above specifies a normal toolbar button;
+the others specify blank areas in the toolbar.
+
+For the first vector format:
+
+-- GLYPH-LIST should be a list of one to six glyphs (as created by
+   `make-glyph') or a symbol whose value is such a list.  The first
+   glyph, which must be provided, is the glyph used to display the
+   toolbar button when it is in the "up" (not pressed) state.  The
+   optional second glyph is for displaying the button when it is in
+   the "down" (pressed) state.  The optional third glyph is for when
+   the button is disabled.  The optional fourth, fifth and sixth glyphs
+   are used to specify captioned versions for the up, down and disabled
+   states respectively.  The function `toolbar-make-button-list' is
+   useful in creating these glyph lists.  The specifier variable
+   `toolbar-buttons-captioned-p' controls which glyphs are actually used.
+
+-- Even if you do not provide separate down-state and disabled-state
+   glyphs, the user will still get visual feedback to indicate which
+   state the button is in.  Buttons in the up-state are displayed
+   with a shadowed border that gives a raised appearance to the
+   button.  Buttons in the down-state are displayed with shadows that
+   give a recessed appearance.  Buttons in the disabled state are
+   displayed with no shadows, giving a 2-d effect.
+
+-- If some of the toolbar glyphs are not provided, they inherit as follows:
+
+     UP:                up
+     DOWN:              down -> up
+     DISABLED:          disabled -> up
+     CAP-UP:            cap-up -> up
+     CAP-DOWN:          cap-down -> cap-up -> down -> up
+     CAP-DISABLED:      cap-disabled -> cap-up -> disabled -> up
+
+-- The second element FUNCTION is a function to be called when the
+   toolbar button is activated (i.e. when the mouse is released over
+   the toolbar button, if the press occurred in the toolbar).  It
+   can be any form accepted by `call-interactively', since this is
+   how it is invoked.
+
+-- The third element ENABLED-P specifies whether the toolbar button
+   is enabled (disabled buttons do nothing when they are activated,
+   and are displayed differently; see above).  It should be either
+   a boolean or a form that evaluates to a boolean.
+
+-- The fourth element HELP, if non-nil, should be a string.  This
+   string is displayed in the echo area when the mouse passes over
+   the toolbar button.
+
+For the other vector formats (specifying blank areas of the toolbar):
+
+-- 2D-OR-3D should be one of the symbols '2d or '3d, indicating
+   whether the area is displayed with shadows (giving it a raised,
+   3-d appearance) or without shadows (giving it a flat appearance).
+
+-- WIDTH-OR-HEIGHT specifies the length, in pixels, of the blank
+   area.  If omitted, it defaults to a device-specific value
+   (8 pixels for X devices).Vtop-toolbar
+Specifier for the toolbar at the top of the frame.
+Use `set-specifier' to change this.
+See `default-toolbar' for a description of a valid toolbar instantiator.Vbottom-toolbar
+Specifier for the toolbar at the bottom of the frame.
+Use `set-specifier' to change this.
+See `default-toolbar' for a description of a valid toolbar instantiator.
+
+Note that, unless the `default-toolbar-position' is `bottom', by
+default the height of the bottom toolbar (controlled by
+`bottom-toolbar-height') is 0; thus, a bottom toolbar will not be
+displayed even if you provide a value for `bottom-toolbar'.Vleft-toolbar
+Specifier for the toolbar at the left edge of the frame.
+Use `set-specifier' to change this.
+See `default-toolbar' for a description of a valid toolbar instantiator.
+
+Note that, unless the `default-toolbar-position' is `left', by
+default the height of the left toolbar (controlled by
+`left-toolbar-width') is 0; thus, a left toolbar will not be
+displayed even if you provide a value for `left-toolbar'.Vright-toolbar
+Specifier for the toolbar at the right edge of the frame.
+Use `set-specifier' to change this.
+See `default-toolbar' for a description of a valid toolbar instantiator.
+
+Note that, unless the `default-toolbar-position' is `right', by
+default the height of the right toolbar (controlled by
+`right-toolbar-width') is 0; thus, a right toolbar will not be
+displayed even if you provide a value for `right-toolbar'.Vdefault-toolbar-height
+*Height of the default toolbar, if it's oriented horizontally.
+This is a specifier; use `set-specifier' to change it.
+
+The position of the default toolbar is specified by the function
+`set-default-toolbar-position'.  If the corresponding position-specific
+toolbar thickness specifier (e.g. `top-toolbar-height' if
+`default-toolbar-position' is 'top) does not specify a thickness in a
+particular domain (a window or a frame), then the value of
+`default-toolbar-height' or `default-toolbar-width' (depending on the
+toolbar orientation) in that domain, if any, will be used instead.
+
+Note that `default-toolbar-height' is only used when
+`default-toolbar-position' is 'top or 'bottom, and `default-toolbar-width'
+is only used when `default-toolbar-position' is 'left or 'right.
+
+Note that all of the position-specific toolbar thickness specifiers
+have a fallback value of zero when they do not correspond to the
+default toolbar.  Therefore, you will have to set a non-zero thickness
+value if you want a position-specific toolbar to be displayed.
+
+Internally, toolbar thickness specifiers are instantiated in both
+window and frame domains, for different purposes.  The value in the
+domain of a frame's selected window specifies the actual toolbar
+thickness that you will see in that frame.  The value in the domain of
+a frame itself specifies the toolbar thickness that is used in frame
+geometry calculations.
+
+Thus, for example, if you set the frame width to 80 characters and the
+left toolbar width for that frame to 68 pixels, then the frame will
+be sized to fit 80 characters plus a 68-pixel left toolbar.  If you
+then set the left toolbar width to 0 for a particular buffer (or if
+that buffer does not specify a left toolbar or has a nil value
+specified for `left-toolbar-visible-p'), you will find that, when
+that buffer is displayed in the selected window, the window will have
+a width of 86 or 87 characters -- the frame is sized for a 68-pixel
+left toolbar but the selected window specifies that the left toolbar
+is not visible, so it is expanded to take up the slack.Vdefault-toolbar-width
+*Width of the default toolbar, if it's oriented vertically.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-toolbar-height' for more information.Vtop-toolbar-height
+*Height of the top toolbar.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-toolbar-height' for more information.Vbottom-toolbar-height
+*Height of the bottom toolbar.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-toolbar-height' for more information.Vleft-toolbar-width
+*Width of left toolbar.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-toolbar-height' for more information.Vright-toolbar-width
+*Width of right toolbar.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-toolbar-height' for more information.Vdefault-toolbar-border-width
+*Width of the border around the default toolbar.
+This is a specifier; use `set-specifier' to change it.
+
+The position of the default toolbar is specified by the function
+`set-default-toolbar-position'.  If the corresponding position-specific
+toolbar border width specifier (e.g. `top-toolbar-border-width' if
+`default-toolbar-position' is 'top) does not specify a border width in a
+particular domain (a window or a frame), then the value of
+`default-toolbar-border-width' in that domain, if any, will be used
+instead.
+
+Internally, toolbar border width specifiers are instantiated in both
+window and frame domains, for different purposes.  The value in the
+domain of a frame's selected window specifies the actual toolbar border
+width that you will see in that frame.  The value in the domain of a
+frame itself specifies the toolbar border width that is used in frame
+geometry calculations.  Changing the border width value in the frame
+domain will result in a size change in the frame itself, while changing
+the value in a window domain will not.Vtop-toolbar-border-width
+*Border width of the top toolbar.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-toolbar-height' for more information.Vbottom-toolbar-border-width
+*Border width of the bottom toolbar.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-toolbar-height' for more information.Vleft-toolbar-border-width
+*Border width of left toolbar.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-toolbar-height' for more information.Vright-toolbar-border-width
+*Border width of right toolbar.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-toolbar-height' for more information.Vdefault-toolbar-visible-p
+*Whether the default toolbar is visible.
+This is a specifier; use `set-specifier' to change it.
+
+The position of the default toolbar is specified by the function
+`set-default-toolbar-position'.  If the corresponding position-specific
+toolbar visibility specifier (e.g. `top-toolbar-visible-p' if
+`default-toolbar-position' is 'top) does not specify a visible-p value
+in a particular domain (a window or a frame), then the value of
+`default-toolbar-visible-p' in that domain, if any, will be used
+instead.
+
+Both window domains and frame domains are used internally, for
+different purposes.  The distinction here is exactly the same as
+for thickness specifiers; see `default-toolbar-height' for more
+information.
+
+`default-toolbar-visible-p' and all of the position-specific toolbar
+visibility specifiers have a fallback value of true.Vtop-toolbar-visible-p
+*Whether the top toolbar is visible.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-toolbar-visible-p' for more information.Vbottom-toolbar-visible-p
+*Whether the bottom toolbar is visible.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-toolbar-visible-p' for more information.Vleft-toolbar-visible-p
+*Whether the left toolbar is visible.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-toolbar-visible-p' for more information.Vright-toolbar-visible-p
+*Whether the right toolbar is visible.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-toolbar-visible-p' for more information.Vtoolbar-buttons-captioned-p
+*Whether the toolbar buttons are captioned.
+This will only have a visible effect for those toolbar buttons which had
+captioned versions specified.
+This is a specifier; use `set-specifier' to change it.Faccelerate-menu
+Make the menubar active.  Menu items can be selected using menu accelerators
+or by actions defined in menu-accelerator-map.
+
+arguments: ()
+Fdefine-word-pattern
+Don't call this function directly, instead use 'define-word' which
+accept a pattern compiled by 'regexp-compile' with word-option t.
+
+arguments: (PATTERN)
+Vre-short-flag
+*T means regexp search success when the shortest match is found.Fccl-program-p
+Return t if OBJECT is a CCL program name or a compiled CCL program code.
+See the documentation of  `define-ccl-program' for the detail of CCL program.
+
+arguments: (OBJECT)
+Fccl-execute
+Execute CCL-PROGRAM with registers initialized by REGISTERS.
+
+CCL-PROGRAM is a CCL program name (symbol)
+or a compiled code generated by `ccl-compile' (for backward compatibility,
+in this case, the overhead of the execution is bigger than the former case).
+No I/O commands should appear in CCL-PROGRAM.
+
+REGISTERS is a vector of [R0 R1 ... R7] where RN is an initial value
+ of Nth register.
+
+As side effect, each element of REGISTERS holds the value of
+ corresponding register after the execution.
+
+See the documentation of `define-ccl-program' for the detail of CCL program.
+
+arguments: (CCL-PROG REG)
+Fccl-execute-on-string
+Execute CCL-PROGRAM with initial STATUS on STRING.
+
+CCL-PROGRAM is a symbol registered by register-ccl-program,
+or a compiled code generated by `ccl-compile' (for backward compatibility,
+in this case, the execution is slower).
+
+Read buffer is set to STRING, and write buffer is allocated automatically.
+
+STATUS is a vector of [R0 R1 ... R7 IC], where
+ R0..R7 are initial values of corresponding registers,
+ IC is the instruction counter specifying from where to start the program.
+If R0..R7 are nil, they are initialized to 0.
+If IC is nil, it is initialized to head of the CCL program.
+
+If optional 4th arg CONTINUE is non-nil, keep IC on read operation
+when read buffer is exhausted, else, IC is always set to the end of
+CCL-PROGRAM on exit.
+
+It returns the contents of write buffer as a string,
+ and as side effect, STATUS is updated.
+
+See the documentation of `define-ccl-program' for the detail of CCL program.
+
+arguments: (CCL-PROG STATUS STRING &optional CONTINUE)
+Fregister-ccl-program
+Register CCL program CCL-PROG as NAME in `ccl-program-table'.
+CCL-PROG should be a compiled CCL program (vector), or nil.
+If it is nil, just reserve NAME as a CCL program name.
+Return index number of the registered CCL program.
+
+arguments: (NAME CCL-PROG)
+Fregister-code-conversion-map
+Register SYMBOL as code conversion map MAP.
+Return index number of the registered map.
+
+arguments: (SYMBOL MAP)
+Vcode-conversion-map-vector
+Vector of code conversion maps.Vfont-ccl-encoder-alist
+Alist of fontname patterns vs corresponding CCL program.
+Each element looks like (REGEXP . CCL-CODE),
+ where CCL-CODE is a compiled CCL program.
+When a font whose name matches REGEXP is used for displaying a character,
+ CCL-CODE is executed to calculate the code point in the font
+ from the charset number and position code(s) of the character which are set
+ in CCL registers R0, R1, and R2 before the execution.
+The code point in the font is set in CCL registers R1 and R2
+ when the execution terminated.
+If the font is single-byte font, the register R2 is not used.Fcharsetp
+Return non-nil if OBJECT is a charset.
+
+arguments: (OBJECT)
+Ffind-charset
+Retrieve the charset of the given name.
+If CHARSET-OR-NAME is a charset object, it is simply returned.
+Otherwise, CHARSET-OR-NAME should be a symbol.  If there is no such charset,
+nil is returned.  Otherwise the associated charset object is returned.
+
+arguments: (CHARSET-OR-NAME)
+Fget-charset
+Retrieve the charset of the given name.
+Same as `find-charset' except an error is signalled if there is no such
+charset instead of returning nil.
+
+arguments: (NAME)
+Fcharset-list
+Return a list of the names of all defined charsets.
+
+arguments: ()
+Fcharset-name
+Return the name of charset CHARSET.
+
+arguments: (CHARSET)
+Fmake-charset
+Define a new character set.
+This function is for use with Mule support.
+NAME is a symbol, the name by which the character set is normally referred.
+DOC-STRING is a string describing the character set.
+PROPS is a property list, describing the specific nature of the
+character set.  Recognized properties are:
+
+'short-name	Short version of the charset name (ex: Latin-1)
+'long-name	Long version of the charset name (ex: ISO8859-1 (Latin-1))
+'registry	A regular expression matching the font registry field for
+		this character set.
+'dimension	Number of octets used to index a character in this charset.
+		Either 1 or 2.  Defaults to 1.
+'columns	Number of columns used to display a character in this charset.
+		Only used in TTY mode. (Under X, the actual width of a
+		character can be derived from the font used to display the
+		characters.) If unspecified, defaults to the dimension
+		(this is almost	always the correct value).
+'chars		Number of characters in each dimension (94 or 96).
+		Defaults to 94.  Note that if the dimension is 2, the
+		character set thus described is 94x94 or 96x96.
+'final		Final byte of ISO 2022 escape sequence.  Must be
+		supplied.  Each combination of (DIMENSION, CHARS) defines a
+		separate namespace for final bytes.  Note that ISO
+		2022 restricts the final byte to the range
+		0x30 - 0x7E if dimension == 1, and 0x30 - 0x5F if
+		dimension == 2.  Note also that final bytes in the range
+		0x30 - 0x3F are reserved for user-defined (not official)
+		character sets.
+'graphic	0 (use left half of font on output) or 1 (use right half
+		of font on output).  Defaults to 0.  For example, for
+		a font whose registry is ISO8859-1, the left half
+		(octets 0x20 - 0x7F) is the `ascii' character set, while
+		the right half (octets 0xA0 - 0xFF) is the `latin-1'
+		character set.  With 'graphic set to 0, the octets
+		will have their high bit cleared; with it set to 1,
+		the octets will have their high bit set.
+'direction	'l2r (left-to-right) or 'r2l (right-to-left).
+		Defaults to 'l2r.
+'ccl-program	A compiled CCL program used to convert a character in
+		this charset into an index into the font.  This is in
+		addition to the 'graphic property.  The CCL program
+		is passed the octets of the character, with the high
+		bit cleared and set depending upon whether the value
+		of the 'graphic property is 0 or 1.
+
+arguments: (NAME DOC-STRING PROPS)
+Fmake-reverse-direction-charset
+Make a charset equivalent to CHARSET but which goes in the opposite direction.
+NEW-NAME is the name of the new charset.  Return the new charset.
+
+arguments: (CHARSET NEW-NAME)
+Fcharset-reverse-direction-charset
+Return the reverse-direction charset parallel to CHARSET, if any.
+This is the charset with the same properties (in particular, the same
+dimension, number of characters per dimension, and final byte) as
+CHARSET but whose characters are displayed in the opposite direction.
+
+arguments: (CHARSET)
+Fcharset-from-attributes
+Return a charset with the given DIMENSION, CHARS, FINAL, and DIRECTION.
+If DIRECTION is omitted, both directions will be checked (left-to-right
+will be returned if character sets exist for both directions).
+
+arguments: (DIMENSION CHARS FINAL &optional DIRECTION)
+Fcharset-short-name
+Return short name of CHARSET.
+
+arguments: (CHARSET)
+Fcharset-long-name
+Return long name of CHARSET.
+
+arguments: (CHARSET)
+Fcharset-description
+Return description of CHARSET.
+
+arguments: (CHARSET)
+Fcharset-dimension
+Return dimension of CHARSET.
+
+arguments: (CHARSET)
+Fcharset-property
+Return property PROP of CHARSET, a charset object or symbol naming a charset.
+Recognized properties are those listed in `make-charset', as well as
+'name and 'doc-string.
+
+arguments: (CHARSET PROP)
+Fcharset-id
+Return charset identification number of CHARSET.
+
+arguments: (CHARSET)
+Fset-charset-ccl-program
+Set the 'ccl-program property of CHARSET to CCL-PROGRAM.
+
+arguments: (CHARSET CCL-PROGRAM)
+Fset-charset-registry
+Set the 'registry property of CHARSET to REGISTRY.
+
+arguments: (CHARSET REGISTRY)
+Fmake-char
+Make a character from CHARSET and octets ARG1 and ARG2.
+ARG2 is required only for characters from two-dimensional charsets.
+For example, (make-char 'latin-iso8859-2 185) will return the Latin 2
+character s with caron.
+
+arguments: (CHARSET ARG1 &optional ARG2)
+Fchar-charset
+Return the character set of CHARACTER.
+
+arguments: (CHARACTER)
+Fchar-octet
+Return the octet numbered N (should be 0 or 1) of CHARACTER.
+N defaults to 0 if omitted.
+
+arguments: (CHARACTER &optional N)
+Fsplit-char
+Return list of charset and one or two position-codes of CHARACTER.
+
+arguments: (CHARACTER)
+Fcoding-system-p
+Return t if OBJECT is a coding system.
+A coding system is an object that defines how text containing multiple
+character sets is encoded into a stream of (typically 8-bit) bytes.
+The coding system is used to decode the stream into a series of
+characters (which may be from multiple charsets) when the text is read
+from a file or process, and is used to encode the text back into the
+same format when it is written out to a file or process.
+
+For example, many ISO2022-compliant coding systems (such as Compound
+Text, which is used for inter-client data under the X Window System)
+use escape sequences to switch between different charsets -- Japanese
+Kanji, for example, is invoked with "ESC $ ( B"; ASCII is invoked
+with "ESC ( B"; and Cyrillic is invoked with "ESC - L".  See
+`make-coding-system' for more information.
+
+Coding systems are normally identified using a symbol, and the
+symbol is accepted in place of the actual coding system object whenever
+a coding system is called for. (This is similar to how faces work.)
+
+arguments: (OBJECT)
+Ffind-coding-system
+Retrieve the coding system of the given name.
+
+If CODING-SYSTEM-OR-NAME is a coding-system object, it is simply
+returned.  Otherwise, CODING-SYSTEM-OR-NAME should be a symbol.
+If there is no such coding system, nil is returned.  Otherwise the
+associated coding system object is returned.
+
+arguments: (CODING-SYSTEM-OR-NAME)
+Fget-coding-system
+Retrieve the coding system of the given name.
+Same as `find-coding-system' except that if there is no such
+coding system, an error is signaled instead of returning nil.
+
+arguments: (NAME)
+Fcoding-system-list
+Return a list of the names of all defined coding systems.
+
+arguments: ()
+Fcoding-system-name
+Return the name of the given coding system.
+
+arguments: (CODING-SYSTEM)
+Fmake-coding-system
+Register symbol NAME as a coding system.
+
+TYPE describes the conversion method used and should be one of
+
+nil or 'undecided
+     Automatic conversion.  XEmacs attempts to detect the coding system
+     used in the file.
+'no-conversion
+     No conversion.  Use this for binary files and such.  On output,
+     graphic characters that are not in ASCII or Latin-1 will be
+     replaced by a ?. (For a no-conversion-encoded buffer, these
+     characters will only be present if you explicitly insert them.)
+'shift-jis
+     Shift-JIS (a Japanese encoding commonly used in PC operating systems).
+'ucs-4
+     ISO 10646 UCS-4 encoding.
+'utf-8
+     ISO 10646 UTF-8 encoding.
+'iso2022
+     Any ISO2022-compliant encoding.  Among other things, this includes
+     JIS (the Japanese encoding commonly used for e-mail), EUC (the
+     standard Unix encoding for Japanese and other languages), and
+     Compound Text (the encoding used in X11).  You can specify more
+     specific information about the conversion with the PROPS argument.
+'big5
+     Big5 (the encoding commonly used for Taiwanese).
+'ccl
+     The conversion is performed using a user-written pseudo-code
+     program.  CCL (Code Conversion Language) is the name of this
+     pseudo-code.
+'internal
+     Write out or read in the raw contents of the memory representing
+     the buffer's text.  This is primarily useful for debugging
+     purposes, and is only enabled when XEmacs has been compiled with
+     DEBUG_XEMACS defined (via the --debug configure option).
+     WARNING: Reading in a file using 'internal conversion can result
+     in an internal inconsistency in the memory representing a
+     buffer's text, which will produce unpredictable results and may
+     cause XEmacs to crash.  Under normal circumstances you should
+     never use 'internal conversion.
+
+DOC-STRING is a string describing the coding system.
+
+PROPS is a property list, describing the specific nature of the
+character set.  Recognized properties are:
+
+'mnemonic
+     String to be displayed in the modeline when this coding system is
+     active.
+
+'eol-type
+     End-of-line conversion to be used.  It should be one of
+
+	nil
+		Automatically detect the end-of-line type (LF, CRLF,
+		or CR).  Also generate subsidiary coding systems named
+		`NAME-unix', `NAME-dos', and `NAME-mac', that are
+		identical to this coding system but have an EOL-TYPE
+		value of 'lf, 'crlf, and 'cr, respectively.
+	'lf
+		The end of a line is marked externally using ASCII LF.
+		Since this is also the way that XEmacs represents an
+		end-of-line internally, specifying this option results
+		in no end-of-line conversion.  This is the standard
+		format for Unix text files.
+	'crlf
+		The end of a line is marked externally using ASCII
+		CRLF.  This is the standard format for MS-DOS text
+		files.
+	'cr
+		The end of a line is marked externally using ASCII CR.
+		This is the standard format for Macintosh text files.
+	t
+		Automatically detect the end-of-line type but do not
+		generate subsidiary coding systems.  (This value is
+		converted to nil when stored internally, and
+		`coding-system-property' will return nil.)
+
+'post-read-conversion
+     Function called after a file has been read in, to perform the
+     decoding.  Called with two arguments, START and END, denoting
+     a region of the current buffer to be decoded.
+
+'pre-write-conversion
+     Function called before a file is written out, to perform the
+     encoding.  Called with two arguments, START and END, denoting
+     a region of the current buffer to be encoded.
+
+
+The following additional properties are recognized if TYPE is 'iso2022:
+
+'charset-g0
+'charset-g1
+'charset-g2
+'charset-g3
+     The character set initially designated to the G0 - G3 registers.
+     The value should be one of
+
+          -- A charset object (designate that character set)
+	  -- nil (do not ever use this register)
+	  -- t (no character set is initially designated to
+		the register, but may be later on; this automatically
+		sets the corresponding `force-g*-on-output' property)
+
+'force-g0-on-output
+'force-g1-on-output
+'force-g2-on-output
+'force-g2-on-output
+     If non-nil, send an explicit designation sequence on output before
+     using the specified register.
+
+'short
+     If non-nil, use the short forms "ESC $ @", "ESC $ A", and
+     "ESC $ B" on output in place of the full designation sequences
+     "ESC $ ( @", "ESC $ ( A", and "ESC $ ( B".
+
+'no-ascii-eol
+     If non-nil, don't designate ASCII to G0 at each end of line on output.
+     Setting this to non-nil also suppresses other state-resetting that
+     normally happens at the end of a line.
+
+'no-ascii-cntl
+     If non-nil, don't designate ASCII to G0 before control chars on output.
+
+'seven
+     If non-nil, use 7-bit environment on output.  Otherwise, use 8-bit
+     environment.
+
+'lock-shift
+     If non-nil, use locking-shift (SO/SI) instead of single-shift
+     or designation by escape sequence.
+
+'no-iso6429
+     If non-nil, don't use ISO6429's direction specification.
+
+'escape-quoted
+     If non-nil, literal control characters that are the same as
+     the beginning of a recognized ISO2022 or ISO6429 escape sequence
+     (in particular, ESC (0x1B), SO (0x0E), SI (0x0F), SS2 (0x8E),
+     SS3 (0x8F), and CSI (0x9B)) are "quoted" with an escape character
+     so that they can be properly distinguished from an escape sequence.
+     (Note that doing this results in a non-portable encoding.) This
+     encoding flag is used for byte-compiled files.  Note that ESC
+     is a good choice for a quoting character because there are no
+     escape sequences whose second byte is a character from the Control-0
+     or Control-1 character sets; this is explicitly disallowed by the
+     ISO2022 standard.
+
+'input-charset-conversion
+     A list of conversion specifications, specifying conversion of
+     characters in one charset to another when decoding is performed.
+     Each specification is a list of two elements: the source charset,
+     and the destination charset.
+
+'output-charset-conversion
+     A list of conversion specifications, specifying conversion of
+     characters in one charset to another when encoding is performed.
+     The form of each specification is the same as for
+     'input-charset-conversion.
+
+
+The following additional properties are recognized (and required)
+if TYPE is 'ccl:
+
+'decode
+     CCL program used for decoding (converting to internal format).
+
+'encode
+     CCL program used for encoding (converting to external format).
+
+arguments: (NAME TYPE &optional DOC-STRING PROPS)
+Fcopy-coding-system
+Copy OLD-CODING-SYSTEM to NEW-NAME.
+If NEW-NAME does not name an existing coding system, a new one will
+be created.
+
+arguments: (OLD-CODING-SYSTEM NEW-NAME)
+Fcoding-system-canonical-name-p
+Return t if OBJECT names a coding system, and is not a coding system alias.
+
+arguments: (OBJECT)
+Fcoding-system-alias-p
+Return t if OBJECT is a coding system alias.
+All coding system aliases are created by `define-coding-system-alias'.
+
+arguments: (OBJECT)
+Fcoding-system-aliasee
+Return the coding-system symbol for which symbol ALIAS is an alias.
+
+arguments: (ALIAS)
+Fdefine-coding-system-alias
+Define symbol ALIAS as an alias for coding system ALIASEE.
+
+You can use this function to redefine an alias that has already been defined,
+but you cannot redefine a name which is the canonical name for a coding system.
+(a canonical name of a coding system is what is returned when you call
+`coding-system-name' on a coding system).
+
+ALIASEE itself can be an alias, which allows you to define nested aliases.
+
+You are forbidden, however, from creating alias loops or `dangling' aliases.
+These will be detected, and an error will be signaled if you attempt to do so.
+
+If ALIASEE is nil, then ALIAS will simply be undefined.
+
+See also `coding-system-alias-p', `coding-system-aliasee',
+and `coding-system-canonical-name-p'.
+
+arguments: (ALIAS ALIASEE)
+Fsubsidiary-coding-system
+Return the subsidiary coding system of CODING-SYSTEM with eol type EOL-TYPE.
+
+arguments: (CODING-SYSTEM EOL-TYPE)
+Fcoding-system-doc-string
+Return the doc string for CODING-SYSTEM.
+
+arguments: (CODING-SYSTEM)
+Fcoding-system-type
+Return the type of CODING-SYSTEM.
+
+arguments: (CODING-SYSTEM)
+Fcoding-system-property
+Return the PROP property of CODING-SYSTEM.
+
+arguments: (CODING-SYSTEM PROP)
+Fcoding-category-list
+Return a list of all recognized coding categories.
+
+arguments: ()
+Fset-coding-priority-list
+Change the priority order of the coding categories.
+LIST should be list of coding categories, in descending order of
+priority.  Unspecified coding categories will be lower in priority
+than all specified ones, in the same relative order they were in
+previously.
+
+arguments: (LIST)
+Fcoding-priority-list
+Return a list of coding categories in descending order of priority.
+
+arguments: ()
+Fset-coding-category-system
+Change the coding system associated with a coding category.
+
+arguments: (CODING-CATEGORY CODING-SYSTEM)
+Fcoding-category-system
+Return the coding system associated with a coding category.
+
+arguments: (CODING-CATEGORY)
+Fdetect-coding-region
+Detect coding system of the text in the region between START and END.
+Return a list of possible coding systems ordered by priority.
+If only ASCII characters are found, return 'undecided or one of
+its subsidiary coding systems according to a detected end-of-line
+type.  Optional arg BUFFER defaults to the current buffer.
+
+arguments: (START END &optional BUFFER)
+Fdecode-coding-region
+Decode the text between START and END which is encoded in CODING-SYSTEM.
+This is useful if you've read in encoded text from a file without decoding
+it (e.g. you read in a JIS-formatted file but used the `binary' or
+`no-conversion' coding system, so that it shows up as "^[$B!<!+^[(B").
+Return length of decoded text.
+BUFFER defaults to the current buffer if unspecified.
+
+arguments: (START END CODING-SYSTEM &optional BUFFER)
+Fencode-coding-region
+Encode the text between START and END using CODING-SYSTEM.
+This will, for example, convert Japanese characters into stuff such as
+"^[$B!<!+^[(B" if you use the JIS encoding.  Return length of encoded
+text.  BUFFER defaults to the current buffer if unspecified.
+
+arguments: (START END CODING-SYSTEM &optional BUFFER)
+Fdecode-shift-jis-char
+Decode a JISX0208 character of Shift-JIS coding-system.
+CODE is the character code in Shift-JIS as a cons of type bytes.
+Return the corresponding character.
+
+arguments: (CODE)
+Fencode-shift-jis-char
+Encode a JISX0208 character CHARACTER to SHIFT-JIS coding-system.
+Return the corresponding character code in SHIFT-JIS as a cons of two bytes.
+
+arguments: (CHARACTER)
+Fdecode-big5-char
+Decode a Big5 character CODE of BIG5 coding-system.
+CODE is the character code in BIG5, a cons of two integers.
+Return the corresponding character.
+
+arguments: (CODE)
+Fencode-big5-char
+Encode the Big5 character CHARACTER in the BIG5 coding-system.
+Return the corresponding character code in Big5.
+
+arguments: (CHARACTER)
+Fset-ucs-char
+Map UCS-4 code CODE to Mule character CHARACTER.
+
+Return T on success, NIL on failure.
+
+arguments: (CODE CHARACTER)
+Fucs-char
+Return Mule character corresponding to UCS code CODE (a positive integer).
+
+arguments: (CODE)
+Fset-char-ucs
+Map Mule character CHARACTER to UCS code CODE (a positive integer).
+
+arguments: (CHARACTER CODE)
+Fchar-ucs
+Return the UCS code (a positive integer) corresponding to CHARACTER.
+
+arguments: (CHARACTER)
+Vkeyboard-coding-system
+Coding system used for TTY keyboard input.
+Not used under a windowing system.Vterminal-coding-system
+Coding system used for TTY display output.
+Not used under a windowing system.Vcoding-system-for-read
+Overriding coding system used when reading from a file or process.
+You should bind this variable with `let', but do not set it globally.
+If this is non-nil, it specifies the coding system that will be used
+to decode input on read operations, such as from a file or process.
+It overrides `buffer-file-coding-system-for-read',
+`insert-file-contents-pre-hook', etc.  Use those variables instead of
+this one for permanent changes to the environment.  
+Vcoding-system-for-write
+Overriding coding system used when writing to a file or process.
+You should bind this variable with `let', but do not set it globally.
+If this is non-nil, it specifies the coding system that will be used
+to encode output for write operations, such as to a file or process.
+It overrides `buffer-file-coding-system', `write-region-pre-hook', etc.
+Use those variables instead of this one for permanent changes to the
+environment.  
+Vfile-name-coding-system
+Coding system used to convert pathnames when accessing files.Venable-multibyte-characters
+Non-nil means the buffer contents are regarded as multi-byte form
+of characters, not a binary code.  This affects the display, file I/O,
+and behaviors of various editing commands.
+
+Setting this to nil does not do anything.Fx-open-xim
+Open the XIC on the frame if XIM is available.
+Commonly, use this as (x-open-xim (selected-frame)).
+If the frame is not on X device, return signal.
+If XIC is created successfully return t.  If not return nil.
+
+arguments: (FRAME)
+Fx-close-xim
+Close the XIC on the frame if it exists.
+Commonly, use this as (x-close-xim (selected-frame)).
+If the frame is not on X device, return signal.
+Otherwise, it destroys the XIC if it exists, then returns t anyway.
+
+arguments: (FRAME)
+Fwnn-server-open
+Connect to jserver of host HNAME, make an environment with
+login name LNAME in the server.
+Return nil if error occurs.
+
+arguments: (HNAME LNAME)
+Fwnn-server-close
+Close the connection to jserver, Dictionary and frequency files
+are not saved.
+
+arguments: ()
+Fwnn-server-dict-add
+Add dictionary specified by DICT-FILE-NAME, FREQ-FILE-NAME,
+PRIORITY, DICT-FILE-MODE, FREQ-FILE-MODE.
+Specify password files of dictionary and frequency, PW1 and PW2, if needed.Fwnn-server-dict-delete
+Remove dictionary specified by DIC-NUMBER from buffer.
+
+arguments: (DICNO)
+Fwnn-server-dict-list
+Return information of dictionaries.
+
+arguments: ()
+Fwnn-server-dict-comment
+Set comment to dictionary specified by DIC-NUMBER.
+Comment string COMMENT.
+
+arguments: (DICNO COMMENT)
+Fwnn-server-set-rev
+Switch the translation mode to normal if T, or reverse if NIL.
+
+arguments: (REV)
+Fwnn-server-henkan-begin
+Translate YOMI string to kanji. Retuen the number of bunsetsu.
+
+arguments: (HSTRING)
+Fwnn-server-zenkouho
+Get zenkouho at BUNSETSU-NUMBER. Second argument DAI is t.
+if dai-bunsetsu, NIL if sho-bunsetsu. Return the current offset of zenkouho.
+
+arguments: (BUNNO DAI)
+Fwnn-server-get-zenkouho
+Get kanji string of KOUHO-NUMBER.
+
+arguments: (KOUHONO)
+Fwnn-server-zenkouho-bun
+For Wnn.
+
+arguments: ()
+Fwnn-server-zenkouho-suu
+Return the number of zen kouho.
+
+arguments: ()
+Fwnn-server-dai-top
+Return t if bunsetsu BUN-NUMBER is dai-bunsetsu.
+
+arguments: (BUNNO)
+Fwnn-server-dai-end
+Return the bunsetu number of the next dai-bunsetsu after BUN-NUMBER.
+
+arguments: (BUNNO)
+Fwnn-server-henkan-kakutei
+Set candidate with OFFSET, DAI. DAI is T if dai-bunsetsu.
+
+arguments: (OFFSET DAI)
+Fwnn-server-bunsetu-henkou
+Change length of BUN-NUMBER bunsetu to LEN. DAI is T if dai-bunsetsu.
+
+arguments: (BUNNO LEN DAI)
+Fwnn-server-inspect
+Get bunsetsu information specified by BUN-NUMBER.
+
+arguments: (BUNNO)
+Fwnn-server-henkan-quit
+do nothing.
+
+arguments: ()
+Fwnn-server-bunsetu-kanji
+Get the pair of kanji and length of bunsetsu specified by BUN-NUMBER.
+
+arguments: (BUNNO)
+Fwnn-server-bunsetu-yomi
+Get the pair of yomi and length of bunsetsu specified by BUN-NUMBER.
+
+arguments: (BUNNO)
+Fwnn-server-bunsetu-suu
+Get the number of bunsetsu.
+
+arguments: ()
+Fwnn-server-hindo-update
+Update frequency of bunsetsu specified by NUM-NUMBER.
+
+arguments: (&optional BUNNO)
+Fwnn-server-word-add
+Add a word to dictionary. Arguments are
+DIC-NUMBER, KANJI, YOMI, COMMENT, HINSI-NUMBER.
+
+arguments: (DICNO KANJI YOMI COMMENT HINSI)
+Fwnn-server-word-delete
+Delete a word from dictionary, specified by DIC-NUMBER, SERIAL-NUMBER.
+
+arguments: (NO SERIAL)
+Fwnn-server-word-use
+Toggle on/off word, specified by DIC-NUMBER and SERIAL-NUMBER.
+
+arguments: (NO SERIAL)
+Fwnn-server-word-info
+Return list of yomi, kanji, comment, hindo, hinshi.
+
+arguments: (NO SERIAL)
+Fwnn-server-word-hindo-set
+Set frequency to arbitrary value. Specified by DIC-NUMBER,
+SERIAL-NUMBER, FREQUENCY.
+
+arguments: (NO SERIAL HINDO)
+Fwnn-server-word-search
+Search a word YOMI from buffer.
+Return list of (kanji hinshi freq dic_no serial).
+
+arguments: (YOMI)
+Fwnn-server-dict-save
+Save all dictionaries and frequency files.
+
+arguments: ()
+Fwnn-server-get-param
+Returns (n nsho hindo len jiri flag jisho sbn dbn_len sbn_cnt
+suuji kana eisuu kigou toji_kakko fuzokogo kaikakko)
+
+arguments: ()
+Fwnn-server-set-param
+Set parameters using an alist, where the CAR contains one of
+wnn_n, wnn_nsho, wnn_hindo, wnn_len, wnn_jiri, wnn_flag,
+wnn_jisho, wnn_sbn, wnn_dbn_len, wnn_sbn_cnt, wnn_suuji,
+wnn_kana, wnn_eisuu, wnn_kigou, wnn_toji_kakko, wnn_fuzokogo,
+or wnn_kaikakko and the CDR contains the value.
+
+arguments: (VSETVALUES-ALIST)
+Fwnn-server-get-msg
+Get message string from wnn_perror.
+
+arguments: ()
+Fwnn-server-fuzokugo-set
+For Wnn.
+
+arguments: (FILE)
+Fwnn-server-fuzokugo-get
+For Wnn.
+
+arguments: ()
+Fwnn-server-isconnect
+For Wnn.
+
+arguments: ()
+Fwnn-server-hinsi-dicts
+For Wnn.
+
+arguments: (HINSI)
+Fwnn-server-hinsi-list
+For Wnn.
+
+arguments: (DICNO NAME)
+Fwnn-server-hinsi-name
+For Wnn.
+
+arguments: (NO)
+Fwnn-server-fisys-dict-add
+Add dictionary specified by FISYS-DICT-FILE-NAME, FISYS-FREQ-FILE-NAME,
+FISYS-FREQ-FILE-MODE.
+Specify password files of dictionary and frequency, PW1 and PW2, if needed.Fwnn-server-fiusr-dict-add
+Add dictionary specified by FIUSR-DICT-FILE-NAME, FIUSR-FREQ-FILE-NAME,
+FIUSR-DICT-FILE-MODE, FIUSR-FREQ-FILE-MODE.
+Specify password files of dictionary and frequency, PW1 and PW2, if needed.Fwnn-server-notrans-dict-add
+Add dictionary specified by NOTRANS-DICT-FILE-NAME, PRIORITY, DICT-FILE-MODE.
+Specify password files of dictionary and frequency PW1 if needed.Fwnn-server-bmodify-dict-add
+Add dictionary specified by BMODIFY-DICT-FILE-NAME, PRIORITY, DICT-FILE-MODE.
+Specify password files of dictionary and frequency PW1 if needed.Fwnn-server-set-last-is-first
+For FI-Wnn.
+
+arguments: (MODE)
+Fwnn-server-set-complex-conv-mode
+For FI-Wnn.
+
+arguments: (MODE)
+Fwnn-server-set-okuri-learn-mode
+For FI-Wnn.
+
+arguments: (MODE)
+Fwnn-server-set-okuri-flag
+For FI-Wnn.
+
+arguments: (LMODE)
+Fwnn-server-set-prefix-learn-mode
+For FI-Wnn.
+
+arguments: (MODE)
+Fwnn-server-set-prefix-flag
+For FI-Wnn.
+
+arguments: (LMODE)
+Fwnn-server-set-suffix-learn-mode
+For FI-Wnn.
+
+arguments: (MODE)
+Fwnn-server-set-common-learn-mode
+For FI-Wnn.
+
+arguments: (MODE)
+Fwnn-server-set-freq-func-mode
+For FI-Wnn.
+
+arguments: (LMODE)
+Fwnn-server-set-numeric-mode
+For FI-Wnn.
+
+arguments: (LMODE)
+Fwnn-server-set-alphabet-mode
+For FI-Wnn.
+
+arguments: (LMODE)
+Fwnn-server-set-symbol-mode
+For FI-Wnn.
+
+arguments: (LMODE)
+Fwnn-server-set-yuragi-mode
+For FI-Wnn.
+
+arguments: (MODE)
+Fwnn-reset-previous-info
+For FI-Wnn.
+
+arguments: ()
+Fwnn-server-version
+Returns Wnn server version ID.
+
+arguments: ()
+Fwnn-server-hinsi-number
+For Wnn.
+
+arguments: (NAME)
+Vlb-sisheng
+Leading character for Sisheng.Vwnn-server-type
+*jserver, cserver ..Vcwnn-zhuyin
+*pinyin or zhuyinVwnnenv-sticky
+*If non-nil, make environment stickyVwnn-uniq-level
+*Uniq levelFcanna-key-proc
+Translate a key input to a set of strings.  The strings contain both
+well-formed string and intermediate result to show the translation
+information to a user.  Converted strings are stored in specific
+variables.
+
+arguments: (CH)
+Fcanna-set-bunsetsu-kugiri
+This function sets the clause separator.
+If non-nil value is specified, the white space separator will be used.
+No separator will be used otherwise.
+
+arguments: (&optional NUM)
+Fcanna-initialize
+Initialize ``canna'', which is a kana-to-kanji converter for XEmacs.
+The first arg specifies if inserting space character between BUNSETSU when
+candidates are displayed.
+The second arg specifies server.
+The third arg specifies a file which will be used as a customization
+description.
+If nil is specified for each arg, the default value will be used.
+
+arguments: (&optional NUM SERVER RCFILE)
+Fcanna-finalize
+finalize ``canna'', which is a kana-to-kanji converter for XEmacs.
+This cause to write miscellaneous informations to kana-to-kanji dictionary.
+
+arguments: ()
+Fcanna-touroku-string
+Register Kanji words into kana-to-kanji conversion dictionary.
+
+arguments: (STR)
+Fcanna-set-width
+Set status-line width information, which is used to display
+kanji candidates.
+
+arguments: (NUM)
+Fcanna-change-mode
+Change Japanese pre-edit mode.
+
+arguments: (NUM)
+Fcanna-store-yomi
+Store yomi characters as a YOMI of kana-to-kanji conversion.
+
+arguments: (YOMI &optional ROMA)
+Fcanna-do-function
+Do specified function at current mode.
+
+arguments: (NUM &optional CH)
+Fcanna-parse
+Parse customize string.
+
+arguments: (STR)
+Fcanna-query-mode
+Get current mode string.
+
+arguments: ()
+Fcanna-henkan-begin
+Return the result of kana-to-kanji conversion.
+Clause separator is set.
+
+arguments: (YOMI)
+Fcanna-henkan-next
+Return the list of candidates.
+
+arguments: (BUNSETSU)
+Fcanna-bunsetu-henkou
+Specify the length of a clause.
+
+arguments: (BUNSETSU BUNLEN)
+Fcanna-henkan-kakutei
+Select a candidate.
+
+arguments: (BUN KOUHO)
+Fcanna-henkan-end
+End conversion.
+
+arguments: ()
+Fcanna-henkan-quit
+Quit conversion.
+
+arguments: ()
+VCANNA
+hir@nec, 1992.5.21 
+Vcanna-kakutei-string
+
+Vcanna-kakutei-yomi
+
+Vcanna-kakutei-romaji
+
+Vcanna-henkan-string
+
+Vcanna-henkan-length
+
+Vcanna-henkan-revpos
+
+Vcanna-henkan-revlen
+
+Vcanna-ichiran-string
+
+Vcanna-ichiran-length
+
+Vcanna-ichiran-revpos
+
+Vcanna-ichiran-revlen
+
+Vcanna-mode-string
+
+Vcanna-empty-info
+For cannaVcanna-through-info
+For cannaVcanna-underline
+For cannaVcanna-inhibit-hankakukana
+For cannaVcanna-mode-alpha-mode
+
+Vcanna-mode-empty-mode
+
+Vcanna-mode-kigo-mode
+
+Vcanna-mode-yomi-mode
+
+Vcanna-mode-jishu-mode
+
+Vcanna-mode-tankouho-mode
+
+Vcanna-mode-ichiran-mode
+
+Vcanna-mode-yes-no-mode
+
+Vcanna-mode-on-off-mode
+
+Vcanna-mode-adjust-bunsetsu-mode
+
+Vcanna-mode-chikuji-yomi-mode
+
+Vcanna-mode-chikuji-bunsetsu-mode
+
+Vcanna-mode-henkan-mode
+
+Vcanna-mode-henkan-nyuuryoku-mode
+
+Vcanna-mode-zen-hira-henkan-mode
+
+Vcanna-mode-han-hira-henkan-mode
+
+Vcanna-mode-zen-kata-henkan-mode
+
+Vcanna-mode-han-kata-henkan-mode
+
+Vcanna-mode-zen-alpha-henkan-mode
+
+Vcanna-mode-han-alpha-henkan-mode
+
+Vcanna-mode-zen-hira-kakutei-mode
+
+Vcanna-mode-han-hira-kakutei-mode
+
+Vcanna-mode-zen-kata-kakutei-mode
+
+Vcanna-mode-han-kata-kakutei-mode
+
+Vcanna-mode-zen-alpha-kakutei-mode
+
+Vcanna-mode-han-alpha-kakutei-mode
+
+Vcanna-mode-hex-mode
+
+Vcanna-mode-bushu-mode
+
+Vcanna-mode-extend-mode
+
+Vcanna-mode-russian-mode
+
+Vcanna-mode-greek-mode
+
+Vcanna-mode-line-mode
+
+Vcanna-mode-changing-server-mode
+
+Vcanna-mode-henkan-method-mode
+
+Vcanna-mode-delete-dic-mode
+
+Vcanna-mode-touroku-mode
+
+Vcanna-mode-touroku-empty-mode
+
+Vcanna-mode-touroku-hinshi-mode
+
+Vcanna-mode-touroku-dic-mode
+
+Vcanna-mode-quoted-insert-mode
+
+Vcanna-mode-bubun-muhenkan-mode
+
+Vcanna-mode-mount-dic-mode
+
+Vcanna-func-self-insert
+
+Vcanna-func-functional-insert
+
+Vcanna-func-quoted-insert
+
+Vcanna-func-japanese-mode
+
+Vcanna-func-alpha-mode
+
+Vcanna-func-henkan-nyuryoku-mode
+
+Vcanna-func-forward
+
+Vcanna-func-backward
+
+Vcanna-func-next
+
+Vcanna-func-previous
+
+Vcanna-func-beginning-of-line
+
+Vcanna-func-end-of-line
+
+Vcanna-func-delete-next
+
+Vcanna-func-delete-previous
+
+Vcanna-func-kill-to-end-of-line
+
+Vcanna-func-henkan
+
+Vcanna-func-kakutei
+
+Vcanna-func-extend
+
+Vcanna-func-shrink
+
+Vcanna-func-adjust-bunsetsu
+
+Vcanna-func-quit
+
+Vcanna-func-convert-as-hex
+
+Vcanna-func-convert-as-bushu
+
+Vcanna-func-kouho-ichiran
+
+Vcanna-func-bubun-muhenkan
+
+Vcanna-func-zenkaku
+
+Vcanna-func-hankaku
+
+Vcanna-func-to-upper
+
+Vcanna-func-capitalize
+
+Vcanna-func-to-lower
+
+Vcanna-func-hiragana
+
+Vcanna-func-katakana
+
+Vcanna-func-romaji
+
+Vcanna-func-base-hiragana
+
+Vcanna-func-base-katakana
+
+Vcanna-func-base-eisu
+
+Vcanna-func-base-zenkaku
+
+Vcanna-func-base-hankaku
+
+Vcanna-func-base-kana
+
+Vcanna-func-base-kakutei
+
+Vcanna-func-base-henkan
+
+Vcanna-func-base-hiragana-katakana-toggle
+
+Vcanna-func-base-zenkaku-hankaku-toggle
+
+Vcanna-func-base-kana-eisu-toggle
+
+Vcanna-func-base-kakutei-henkan-toggle
+
+Vcanna-func-base-rotate-forward
+
+Vcanna-func-base-rotate-backward
+
+Vcanna-func-extend-mode
+
+Vcanna-func-touroku
+
+Vcanna-func-hex-mode
+
+Vcanna-func-bushu-mode
+
+Vcanna-func-kigo-mode
+
+Vcanna-func-mark
+
+Vcanna-func-temporal-mode
+
+Vcanna-key-nfer
+
+Vcanna-key-xfer
+
+Vcanna-key-up
+
+Vcanna-key-left
+
+Vcanna-key-right
+
+Vcanna-key-down
+
+Vcanna-key-insert
+
+Vcanna-key-rollup
+
+Vcanna-key-rolldown
+
+Vcanna-key-home
+
+Vcanna-key-help
+
+Vcanna-key-kp-key
+
+Vcanna-key-shift-nfer
+
+Vcanna-key-shift-xfer
+
+Vcanna-key-shift-up
+
+Vcanna-key-shift-left
+
+Vcanna-key-shift-right
+
+Vcanna-key-shift-down
+
+Vcanna-key-control-nfer
+
+Vcanna-key-control-xfer
+
+Vcanna-key-control-up
+
+Vcanna-key-control-left
+
+Vcanna-key-control-right
+
+Vcanna-key-control-down
+
+Fconsole-tty-terminal-type
+Return the terminal type of TTY console CONSOLE.
+
+arguments: (&optional CONSOLE)
+Fconsole-tty-controlling-process
+Return the controlling process of tty console CONSOLE.
+
+arguments: (&optional CONSOLE)
+Fconsole-tty-input-coding-system
+Return the input coding system of tty console CONSOLE.
+
+arguments: (&optional CONSOLE)
+Fset-console-tty-input-coding-system
+Set the input coding system of tty console CONSOLE to CODESYS.
+CONSOLE defaults to the selected console.
+CODESYS defaults to the value of `keyboard-coding-system'.
+
+arguments: (&optional CONSOLE CODESYS)
+Fconsole-tty-output-coding-system
+Return TTY CONSOLE's output coding system.
+
+arguments: (&optional CONSOLE)
+Fset-console-tty-output-coding-system
+Set the coding system of tty output of console CONSOLE to CODESYS.
+CONSOLE defaults to the selected console.
+CODESYS defaults to the value of `terminal-coding-system'.
+
+arguments: (&optional CONSOLE CODESYS)
+Fset-console-tty-coding-system
+Set the input and output coding systems of tty console CONSOLE to CODESYS.
+CONSOLE defaults to the selected console.
+If CODESYS is nil, the values of `keyboard-coding-system' and
+`terminal-coding-system' will be used for the input and
+output coding systems of CONSOLE.
+
+arguments: (&optional CONSOLE CODESYS)
+Vdefault-tty-frame-plist
+Plist of default frame-creation properties for tty frames.
+These are in addition to and override what is specified in
+`default-frame-plist', but are overridden by the arguments to the
+particular call to `make-frame'.Fregister-tty-color
+Register COLOR as a recognized TTY color.
+COLOR should be a string.
+Strings FG-STRING and BG-STRING should specify the escape sequences to
+ set the foreground and background to the given color, respectively.
+
+arguments: (COLOR FG-STRING BG-STRING)
+Funregister-tty-color
+Unregister COLOR as a recognized TTY color.
+
+arguments: (COLOR)
+Ffind-tty-color
+Look up COLOR in the list of registered TTY colors.
+If it is found, return a list (FG-STRING BG-STRING) of the escape
+sequences used to set the foreground and background to the color, respectively.
+If it is not found, return nil.
+
+arguments: (COLOR)
+Ftty-color-list
+Return a list of the registered TTY colors.
+
+arguments: ()
+Fset-tty-dynamic-color-specs
+Set the dynamic color specifications for TTY's.
+FG and BG should be either nil or vaguely printf-like strings,
+where each occurrence of %s is replaced with the color name and each
+occurrence of %% is replaced with a single % character.
+
+arguments: (FG BG)
+Ftty-dynamic-color-specs
+Return the dynamic color specifications for TTY's as a list of (FG BG).
+See `set-tty-dynamic-color-specs'.
+
+arguments: ()
+Freceive-gpm-event
+Run GPM_GetEvent().
+This function is the process handler for the GPM connection.
+
+arguments: (&optional PROCESS STRING)
+Fgpm-enabled-p
+Return non-nil if GPM mouse support is currently enabled on DEVICE.
+
+arguments: (&optional DEVICE)
+Fgpm-enable
+Toggle accepting of GPM mouse events.
+
+arguments: (&optional DEVICE ARG)
+Fclose-database
+Close database DATABASE.
+
+arguments: (DATABASE)
+Fdatabase-type
+Return the type of database DATABASE.
+
+arguments: (DATABASE)
+Fdatabase-subtype
+Return the subtype of database DATABASE, if any.
+
+arguments: (DATABASE)
+Fdatabase-live-p
+Return t if OBJECT is an active database.
+
+arguments: (OBJECT)
+Fdatabase-file-name
+Return the filename associated with the database DATABASE.
+
+arguments: (DATABASE)
+Fdatabasep
+Return t if OBJECT is a database.
+
+arguments: (OBJECT)
+Fdatabase-last-error
+Return the last error associated with DATABASE.
+
+arguments: (&optional DATABASE)
+Fopen-database
+Return a new database object opened on FILE.
+Optional arguments TYPE and SUBTYPE specify the database type.
+Optional argument ACCESS specifies the access rights, which may be any
+combination of 'r' 'w' and '+', for read, write, and creation flags.
+Optional argument MODE gives the permissions to use when opening FILE,
+and defaults to 0755.
+
+arguments: (FILE &optional TYPE SUBTYPE ACCESS MODE)
+Fput-database
+Store KEY and VALUE in DATABASE.
+If optional fourth arg REPLACE is non-nil,
+replace any existing entry in the database.
+
+arguments: (KEY VALUE DATABASE &optional REPLACE)
+Fremove-database
+Remove KEY from DATABASE.
+
+arguments: (KEY DATABASE)
+Fget-database
+Return value for KEY in DATABASE.
+If there is no corresponding value, return DEFAULT (defaults to nil).
+
+arguments: (KEY DATABASE &optional DEFAULT)
+Fmap-database
+Map FUNCTION over entries in DATABASE, calling it with two args,
+each key and value in the database.
+
+arguments: (FUNCTION DATABASE)
+Vdatabase-coding-system
+Coding system used to convert data in database files.Fload-module
+Load in a C Emacs Extension module named FILE.
+The optional NAME and VERSION are used to identify specific modules.
+
+This function is similar in intent to `load' except that it loads in
+pre-compiled C or C++ code, using dynamic shared objects.  If NAME is
+specified, then the module is only loaded if its internal name matches
+the NAME specified.  If VERSION is specified, then the module is only
+loaded if it matches that VERSION.  This function will check to make
+sure that the same module is not loaded twice.  Modules are searched
+for in the same way as Lisp files, except that the valid file
+extensions are `.so', `.dll' or `.ell'.
+
+All symbols in the shared module must be completely resolved in order
+for this function to be successful.  Any modules which the specified
+FILE depends on will be automatically loaded.  You can determine which
+modules have been loaded as dynamic shared objects by examining the
+return value of the function `list-modules'.
+
+It is possible, although unwise, to unload modules using `unload-module'.
+The preferred mechanism for unloading or reloading modules is to quit
+XEmacs, and then reload those new or changed modules that are required.
+
+Messages informing you of the progress of the load are displayed unless
+the variable `load-modules-quietly' is non-NIL.
+
+arguments: (FILE &optional NAME VERSION)
+Funload-module
+Unload a module previously loaded with load-module.
+
+As with load-module, this function requires at least the module FILE, and
+optionally the module NAME and VERSION to unload.  It may not be possible
+for the module to be unloaded from memory, as there may be Lisp objects
+referring to variables inside the module code.  However, once you have
+requested a module to be unloaded, it will be unloaded from memory as
+soon as the last reference to symbols within the module is destroyed.
+
+arguments: (FILE &optional NAME VERSION)
+Flist-modules
+Produce a list of loaded dynamic modules.
+
+This function will return a list of all the loaded dynamic modules.
+Each element in the list is a list in the form (SONAME NAME VER DESC),
+where SONAME is the name of the shared object that was loaded, NAME
+is the internal module name, VER is the version of the module, and DESC
+is how the module describes itself.
+
+This function returns a list, so you will need to assign the return value
+to a variable and then examine the variable with `describe-variable'.
+For example:
+
+  (setq mylist (list-modules))
+  (describe-variable 'mylist)
+
+
+NOTE: It is possible for the same module to be loaded more than once,
+at different versions.  However, you should never see the same module,
+with the same name and version, loaded more than once.  If you do, this
+is a bug, and you are encouraged to report it.
+
+arguments: ()
+Vmodule-version
+Emacs dynamic loading mechanism version, as a string.
+
+This string is in the form XX.YY.ppp, where XX is the major version
+number, YY is the minor version number, and ppp is the patch level.
+This variable can be used to distinguish between different versions of
+the dynamic loading technology used in Emacs, if required.  It is not
+a given that this value will be the same as the Emacs version number.Vload-modules-quietly
+*Set to t if module loading is to be silent.
+
+Normally, when loading dynamic modules, Emacs will inform you of its
+progress, and will display the module name and version if the module
+is loaded correctly.  Setting this variable to `t' will suppress these
+messages.  This would normally only be done if `load-module' was being
+called by a Lisp function.Vmodule-load-path
+*List of directories to search for dynamic modules to load.
+Each element is a string (directory name) or nil (try default directory).
+
+Note that elements of this list *may not* begin with "~", so you must
+call `expand-file-name' on them before adding them to this list.
+
+Initialized based on EMACSMODULEPATH environment variable, if any, otherwise
+to default specified the file `paths.h' when XEmacs was built.  If there
+were no paths specified in `paths.h', then XEmacs chooses a default
+value for this variable by looking around in the file-system near the
+directory in which the XEmacs executable resides.
+
+Due to the nature of dynamic modules, the path names should almost always
+refer to architecture-dependent directories.  It is unwise to attempt to
+store dynamic modules in a heterogenous environment.  Some environments
+are similar enough to each other that XEmacs will be unable to determine
+the correctness of a dynamic module, which can have unpredictable results
+when a dynamic module is loaded.Finput-pending-p
+Return t if command input is currently available with no waiting.
+Actually, the value is nil only if we can be sure that no input is available.
+
+arguments: ()
+Fadd-timeout
+Add a timeout, to be signaled after the timeout period has elapsed.
+SECS is a number of seconds, expressed as an integer or a float.
+FUNCTION will be called after that many seconds have elapsed, with one
+argument, the given OBJECT.  If the optional RESIGNAL argument is provided,
+then after this timeout expires, `add-timeout' will automatically be called
+again with RESIGNAL as the first argument.
+
+This function returns an object which is the id number of this particular
+timeout.  You can pass that object to `disable-timeout' to turn off the
+timeout before it has been signalled.
+
+NOTE: Id numbers as returned by this function are in a distinct namespace
+from those returned by `add-async-timeout'.  This means that the same id
+number could refer to a pending synchronous timeout and a different pending
+asynchronous timeout, and that you cannot pass an id from `add-timeout'
+to `disable-async-timeout', or vice-versa.
+
+The number of seconds may be expressed as a floating-point number, in which
+case some fractional part of a second will be used.  Caveat: the usable
+timeout granularity will vary from system to system.
+
+Adding a timeout causes a timeout event to be returned by `next-event', and
+the function will be invoked by `dispatch-event,' so if emacs is in a tight
+loop, the function will not be invoked until the next call to sit-for or
+until the return to top-level (the same is true of process filters).
+
+If you need to have a timeout executed even when XEmacs is in the midst of
+running Lisp code, use `add-async-timeout'.
+
+WARNING: if you are thinking of calling add-timeout from inside of a
+callback function as a way of resignalling a timeout, think again.  There
+is a race condition.  That's why the RESIGNAL argument exists.
+
+arguments: (SECS FUNCTION OBJECT &optional RESIGNAL)
+Fdisable-timeout
+Disable a timeout from signalling any more.
+ID should be a timeout id number as returned by `add-timeout'.  If ID
+corresponds to a one-shot timeout that has already signalled, nothing
+will happen.
+
+It will not work to call this function on an id number returned by
+`add-async-timeout'.  Use `disable-async-timeout' for that.
+
+arguments: (ID)
+Fadd-async-timeout
+Add an asynchronous timeout, to be signaled after an interval has elapsed.
+SECS is a number of seconds, expressed as an integer or a float.
+FUNCTION will be called after that many seconds have elapsed, with one
+argument, the given OBJECT.  If the optional RESIGNAL argument is provided,
+then after this timeout expires, `add-async-timeout' will automatically be
+called again with RESIGNAL as the first argument.
+
+This function returns an object which is the id number of this particular
+timeout.  You can pass that object to `disable-async-timeout' to turn off
+the timeout before it has been signalled.
+
+NOTE: Id numbers as returned by this function are in a distinct namespace
+from those returned by `add-timeout'.  This means that the same id number
+could refer to a pending synchronous timeout and a different pending
+asynchronous timeout, and that you cannot pass an id from
+`add-async-timeout' to `disable-timeout', or vice-versa.
+
+The number of seconds may be expressed as a floating-point number, in which
+case some fractional part of a second will be used.  Caveat: the usable
+timeout granularity will vary from system to system.
+
+Adding an asynchronous timeout causes the function to be invoked as soon
+as the timeout occurs, even if XEmacs is in the midst of executing some
+other code. (This is unlike the synchronous timeouts added with
+`add-timeout', where the timeout will only be signalled when XEmacs is
+waiting for events, i.e. the next return to top-level or invocation of
+`sit-for' or related functions.) This means that the function that is
+called *must* not signal an error or change any global state (e.g. switch
+buffers or windows) except when locking code is in place to make sure
+that race conditions don't occur in the interaction between the
+asynchronous timeout function and other code.
+
+Under most circumstances, you should use `add-timeout' instead, as it is
+much safer.  Asynchronous timeouts should only be used when such behavior
+is really necessary.
+
+Asynchronous timeouts are blocked and will not occur when `inhibit-quit'
+is non-nil.  As soon as `inhibit-quit' becomes nil again, any pending
+asynchronous timeouts will get called immediately. (Multiple occurrences
+of the same asynchronous timeout are not queued, however.) While the
+callback function of an asynchronous timeout is invoked, `inhibit-quit'
+is automatically bound to non-nil, and thus other asynchronous timeouts
+will be blocked unless the callback function explicitly sets `inhibit-quit'
+to nil.
+
+WARNING: if you are thinking of calling `add-async-timeout' from inside of a
+callback function as a way of resignalling a timeout, think again.  There
+is a race condition.  That's why the RESIGNAL argument exists.
+
+arguments: (SECS FUNCTION OBJECT &optional RESIGNAL)
+Fdisable-async-timeout
+Disable an asynchronous timeout from signalling any more.
+ID should be a timeout id number as returned by `add-async-timeout'.  If ID
+corresponds to a one-shot timeout that has already signalled, nothing
+will happen.
+
+It will not work to call this function on an id number returned by
+`add-timeout'.  Use `disable-timeout' for that.
+
+arguments: (ID)
+Fenqueue-eval-event
+Add an eval event to the back of the eval event queue.
+When this event is dispatched, FUNCTION (which should be a function
+of one argument) will be called with OBJECT as its argument.
+See `next-event' for a description of event types and how events
+are received.
+
+arguments: (FUNCTION OBJECT)
+Fnext-event
+Return the next available event.
+Pass this object to `dispatch-event' to handle it.
+In most cases, you will want to use `next-command-event', which returns
+the next available "user" event (i.e. keypress, button-press,
+button-release, or menu selection) instead of this function.
+
+If EVENT is non-nil, it should be an event object and will be filled in
+and returned; otherwise a new event object will be created and returned.
+If PROMPT is non-nil, it should be a string and will be displayed in the
+echo area while this function is waiting for an event.
+
+The next available event will be
+
+-- any events in `unread-command-events' or `unread-command-event'; else
+-- the next event in the currently executing keyboard macro, if any; else
+-- an event queued by `enqueue-eval-event', if any, or any similar event
+   queued internally, such as a misc-user event. (For example, when an item
+   is selected from a menu or from a `question'-type dialog box, the item's
+   callback is not immediately executed, but instead a misc-user event
+   is generated and placed onto this queue; when it is dispatched, the
+   callback is executed.) Else
+-- the next available event from the window system or terminal driver.
+
+In the last case, this function will block until an event is available.
+
+The returned event will be one of the following types:
+
+-- a key-press event.
+-- a button-press or button-release event.
+-- a misc-user-event, meaning the user selected an item on a menu or used
+   the scrollbar.
+-- a process event, meaning that output from a subprocess is available.
+-- a timeout event, meaning that a timeout has elapsed.
+-- an eval event, which simply causes a function to be executed when the
+   event is dispatched.  Eval events are generated by `enqueue-eval-event'
+   or by certain other conditions happening.
+-- a magic event, indicating that some window-system-specific event
+   happened (such as a focus-change notification) that must be handled
+   synchronously with other events.  `dispatch-event' knows what to do with
+   these events.
+
+arguments: (&optional EVENT PROMPT)
+Fnext-command-event
+Return the next available "user" event.
+Pass this object to `dispatch-event' to handle it.
+
+If EVENT is non-nil, it should be an event object and will be filled in
+and returned; otherwise a new event object will be created and returned.
+If PROMPT is non-nil, it should be a string and will be displayed in the
+echo area while this function is waiting for an event.
+
+The event returned will be a keyboard, mouse press, or mouse release event.
+If there are non-command events available (mouse motion, sub-process output,
+etc) then these will be executed (with `dispatch-event') and discarded.  This
+function is provided as a convenience; it is roughly equivalent to the lisp code
+
+	(while (progn
+		 (next-event event prompt)
+	         (not (or (key-press-event-p event)
+	                  (button-press-event-p event)
+	                  (button-release-event-p event)
+	                  (misc-user-event-p event))))
+	   (dispatch-event event))
+
+but it also makes a provision for displaying keystrokes in the echo area.
+
+arguments: (&optional EVENT PROMPT)
+Fdispatch-non-command-events
+Dispatch any pending "magic" events.
+
+This function is useful for forcing the redisplay of native
+widgets. Normally these are redisplayed through a native window-system
+event encoded as magic event, rather than by the redisplay code.  This
+function does not call redisplay or do any of the other things that
+`next-event' does.
+
+arguments: ()
+Fdiscard-input
+Discard any pending "user" events.
+Also cancel any kbd macro being defined.
+A user event is a key press, button press, button release, or
+"misc-user" event (menu selection or scrollbar action).
+
+arguments: ()
+Faccept-process-output
+Allow any pending output from subprocesses to be read by Emacs.
+It is read into the process' buffers or given to their filter functions.
+Non-nil arg PROCESS means do not return until some output has been received
+ from PROCESS. Nil arg PROCESS means do not return until some output has
+ been received from any process.
+If the second arg is non-nil, it is the maximum number of seconds to wait:
+ this function will return after that much time even if no input has arrived
+ from PROCESS.  This argument may be a float, meaning wait some fractional
+ part of a second.
+If the third arg is non-nil, it is a number of milliseconds that is added
+ to the second arg.  (This exists only for compatibility.)
+Return non-nil iff we received any output before the timeout expired.
+
+arguments: (&optional PROCESS TIMEOUT-SECS TIMEOUT-MSECS)
+Fsleep-for
+Pause, without updating display, for SECONDS seconds.
+SECONDS may be a float, allowing pauses for fractional parts of a second.
+
+It is recommended that you never call sleep-for from inside of a process
+filter function or timer event (either synchronous or asynchronous).
+
+arguments: (SECONDS)
+Fsit-for
+Perform redisplay, then wait SECONDS seconds or until user input is available.
+SECONDS may be a float, meaning a fractional part of a second.
+Optional second arg NODISPLAY non-nil means don't redisplay; just wait.
+Redisplay is preempted as always if user input arrives, and does not
+ happen if input is available before it starts.
+Value is t if waited the full time with no input arriving.
+
+If sit-for is called from within a process filter function or timer
+ event (either synchronous or asynchronous) it will return immediately.
+
+arguments: (SECONDS &optional NODISPLAY)
+Frecent-keys
+Return a vector of recent keyboard or mouse button events read.
+If NUMBER is non-nil, not more than NUMBER events will be returned.
+Change number of events stored using `set-recent-keys-ring-size'.
+
+This copies the event objects into a new vector; it is safe to keep and
+modify them.
+
+arguments: (&optional NUMBER)
+Frecent-keys-ring-size
+The maximum number of events `recent-keys' can return.
+
+arguments: ()
+Fset-recent-keys-ring-size
+Set the maximum number of events to be stored internally.
+
+arguments: (SIZE)
+Fdispatch-event
+Given an event object EVENT as returned by `next-event', execute it.
+
+Key-press, button-press, and button-release events get accumulated
+until a complete key sequence (see `read-key-sequence') is reached,
+at which point the sequence is looked up in the current keymaps and
+acted upon.
+
+Mouse motion events cause the low-level handling function stored in
+`mouse-motion-handler' to be called. (There are very few circumstances
+under which you should change this handler.  Use `mode-motion-hook'
+instead.)
+
+Menu, timeout, and eval events cause the associated function or handler
+to be called.
+
+Process events cause the subprocess's output to be read and acted upon
+appropriately (see `start-process').
+
+Magic events are handled as necessary.
+
+arguments: (EVENT)
+Fread-key-sequence
+Read a sequence of keystrokes or mouse clicks.
+Returns a vector of the event objects read.  The vector and the event
+objects it contains are freshly created (and so will not be side-effected
+by subsequent calls to this function).
+
+The sequence read is sufficient to specify a non-prefix command starting
+from the current local and global keymaps.  A C-g typed while in this
+function is treated like any other character, and `quit-flag' is not set.
+
+First arg PROMPT is a prompt string.  If nil, do not prompt specially.
+
+Second optional arg CONTINUE-ECHO non-nil means this key echoes as a
+continuation of the previous key.
+
+Third optional arg DONT-DOWNCASE-LAST non-nil means do not convert the
+last event to lower case.  (Normally any upper case event is converted
+to lower case if the original event is undefined and the lower case
+equivalent is defined.) This argument is provided mostly for FSF
+compatibility; the equivalent effect can be achieved more generally by
+binding `retry-undefined-key-binding-unshifted' to nil around the call
+to `read-key-sequence'.
+
+If the user selects a menu item while we are prompting for a key-sequence,
+the returned value will be a vector of a single menu-selection event.
+An error will be signalled if you pass this value to `lookup-key' or a
+related function.
+
+`read-key-sequence' checks `function-key-map' for function key
+sequences, where they wouldn't conflict with ordinary bindings.
+See `function-key-map' for more details.
+
+arguments: (PROMPT &optional CONTINUE-ECHO DONT-DOWNCASE-LAST)
+Fthis-command-keys
+Return a vector of the keyboard or mouse button events that were used
+to invoke this command.  This copies the vector and the events; it is safe
+to keep and modify them.
+
+arguments: ()
+Freset-this-command-lengths
+Used for complicated reasons in `universal-argument-other-key'.
+
+`universal-argument-other-key' rereads the event just typed.
+It then gets translated through `function-key-map'.
+The translated event gets included in the echo area and in
+the value of `this-command-keys' in addition to the raw original event.
+That is not right.
+
+Calling this function directs the translated event to replace
+the original event, so that only one version of the event actually
+appears in the echo area and in the value of `this-command-keys'.
+
+arguments: ()
+Fopen-dribble-file
+Start writing all keyboard characters to a dribble file called FILENAME.
+If FILENAME is nil, close any open dribble file.
+
+arguments: (FILENAME)
+Fcurrent-event-timestamp
+Return the current event timestamp of the window system associated with CONSOLE.
+CONSOLE defaults to the selected console if omitted.
+
+arguments: (&optional CONSOLE)
+Vecho-keystrokes
+*Nonzero means echo unfinished commands after this many seconds of pause.Vauto-save-interval
+*Number of keyboard input characters between auto-saves.
+Zero means disable autosaving due to number of characters typed.
+See also the variable `auto-save-timeout'.Vpre-command-hook
+Function or functions to run before every command.
+This may examine the `this-command' variable to find out what command
+is about to be run, or may change it to cause a different command to run.
+Function on this hook must be careful to avoid signalling errors!Vpost-command-hook
+Function or functions to run after every command.
+This may examine the `this-command' variable to find out what command
+was just executed.Vpre-idle-hook
+Normal hook run when XEmacs it about to be idle.
+This occurs whenever it is going to block, waiting for an event.
+This generally happens as a result of a call to `next-event',
+`next-command-event', `sit-for', `sleep-for', `accept-process-output',
+or `x-get-selection'.
+Errors running the hook are caught and ignored.Vfocus-follows-mouse
+*Variable to control XEmacs behavior with respect to focus changing.
+If this variable is set to t, then XEmacs will not gratuitously change
+the keyboard focus.  XEmacs cannot in general detect when this mode is
+used by the window manager, so it is up to the user to set it.Vlast-command-event
+Last keyboard or mouse button event that was part of a command.  This
+variable is off limits: you may not set its value or modify the event that
+is its value, as it is destructively modified by `read-key-sequence'.  If
+you want to keep a pointer to this value, you must use `copy-event'.Vlast-command-char
+If the value of `last-command-event' is a keyboard event, then
+this is the nearest ASCII equivalent to it.  This is the value that
+`self-insert-command' will put in the buffer.  Remember that there is
+NOT a 1:1 mapping between keyboard events and ASCII characters: the set
+of keyboard events is much larger, so writing code that examines this
+variable to determine what key has been typed is bad practice, unless
+you are certain that it will be one of a small set of characters.Vlast-input-event
+Last keyboard or mouse button event received.  This variable is off
+limits: you may not set its value or modify the event that is its value, as
+it is destructively modified by `next-event'.  If you want to keep a pointer
+to this value, you must use `copy-event'.Vcurrent-mouse-event
+The mouse-button event which invoked this command, or nil.
+This is usually what `(interactive "e")' returns.Vlast-input-char
+If the value of `last-input-event' is a keyboard event, then
+this is the nearest ASCII equivalent to it.  Remember that there is
+NOT a 1:1 mapping between keyboard events and ASCII characters: the set
+of keyboard events is much larger, so writing code that examines this
+variable to determine what key has been typed is bad practice, unless
+you are certain that it will be one of a small set of characters.Vlast-input-time
+The time (in seconds since Jan 1, 1970) of the last-command-event,
+represented as a cons of two 16-bit integers.  This is destructively
+modified, so copy it if you want to keep it.Vlast-command-event-time
+The time (in seconds since Jan 1, 1970) of the last-command-event,
+represented as a list of three integers.  The first integer contains
+the most significant 16 bits of the number of seconds, and the second
+integer contains the least significant 16 bits.  The third integer
+contains the remainder number of microseconds, if the current system
+supports microsecond clock resolution.  This list is destructively
+modified, so copy it if you want to keep it.Vunread-command-events
+List of event objects to be read as next command input events.
+This can be used to simulate the receipt of events from the user.
+Normally this is nil.
+Events are removed from the front of this list.Vunread-command-event
+Obsolete.  Use `unread-command-events' instead.Vlast-command
+The last command executed.  Normally a symbol with a function definition,
+but can be whatever was found in the keymap, or whatever the variable
+`this-command' was set to by that command.Vthis-command
+The command now being executed.
+The command can set this variable; whatever is put here
+will be in `last-command' during the following command.Vlast-command-properties
+Value of `this-command-properties' for the last command.
+Used by commands to help synchronize consecutive commands, in preference
+to looking at `last-command' directly.Vthis-command-properties
+Properties set by the current command.
+At the beginning of each command, the current value of this variable is
+copied to `last-command-properties', and then it is set to nil.  Use `putf'
+to add properties to this variable.  Commands should use this to communicate
+with pre/post-command hooks, subsequent commands, wrapping commands, etc.
+in preference to looking at and/or setting `this-command'.Vhelp-char
+Character to recognize as meaning Help.
+When it is read, do `(eval help-form)', and display result if it's a string.
+If the value of `help-form' is nil, this char can be read normally.
+This can be any form recognized as a single key specifier.
+The help-char cannot be a negative number in XEmacs.Vhelp-form
+Form to execute when character help-char is read.
+If the form returns a string, that string is displayed.
+If `help-form' is nil, the help char is not recognized.Vprefix-help-command
+Command to run when `help-char' character follows a prefix key.
+This command is used only when there is no actual binding
+for that character after that prefix key.Vkeyboard-translate-table
+Hash table used as translate table for keyboard input.
+Use `keyboard-translate' to portably add entries to this table.
+Each key-press event is looked up in this table as follows:
+
+-- If an entry maps a symbol to a symbol, then a key-press event whose
+   keysym is the former symbol (with any modifiers at all) gets its
+   keysym changed and its modifiers left alone.  This is useful for
+   dealing with non-standard X keyboards, such as the grievous damage
+   that Sun has inflicted upon the world.
+-- If an entry maps a symbol to a character, then a key-press event
+   whose keysym is the former symbol (with any modifiers at all) gets
+   changed into a key-press event matching the latter character, and the
+   resulting modifiers are the union of the original and new modifiers.
+-- If an entry maps a character to a character, then a key-press event
+   matching the former character gets converted to a key-press event
+   matching the latter character.  This is useful on ASCII terminals
+   for (e.g.) making C-\ look like C-s, to get around flow-control
+   problems.
+-- If an entry maps a character to a symbol, then a key-press event
+   matching the character gets converted to a key-press event whose
+   keysym is the given symbol and which has no modifiers.
+
+Here's an example: This makes typing parens and braces easier by rerouting
+their positions to eliminate the need to use the Shift key.
+
+  (keyboard-translate ?[ ?()
+  (keyboard-translate ?] ?))
+  (keyboard-translate ?{ ?[)
+  (keyboard-translate ?} ?])
+  (keyboard-translate 'f11 ?{)
+  (keyboard-translate 'f12 ?})Vretry-undefined-key-binding-unshifted
+If a key-sequence which ends with a shifted keystroke is undefined
+and this variable is non-nil then the command lookup is retried again
+with the last key unshifted.  (e.g. C-X C-F would be retried as C-X C-f.)
+If lookup still fails, a normal error is signalled.  In general,
+you should *bind* this, not set it.Vmodifier-keys-are-sticky
+*Non-nil makes modifier keys sticky.
+This means that you can release the modifier key before pressing down
+the key that you wish to be modified.  Although this is non-standard
+behavior, it is recommended because it reduces the strain on your hand,
+thus reducing the incidence of the dreaded Emacs-pinky syndrome.
+
+Modifier keys are sticky within the inverval specified by
+`modifier-keys-sticky-time'.Vmodifier-keys-sticky-time
+*Modifier keys are sticky within this many milliseconds.
+If you don't want modifier keys sticking to be bounded, set this to
+non-integer value.
+
+This variable has no effect when `modifier-keys-are-sticky' is nil.
+Currently only implemented under X Window System.Vcomposed-character-default-binding
+The default keybinding to use for key events from composed input.
+Window systems frequently have ways to allow the user to compose
+single characters in a language using multiple keystrokes.
+XEmacs sees these as single character keypress events.Vdebug-emacs-events
+If non-zero, display debug information about Emacs events that XEmacs sees.
+Information is displayed on stderr.
+
+Before the event, the source of the event is displayed in parentheses,
+and is one of the following:
+
+(real)				A real event from the window system or
+				terminal driver, as far as XEmacs can tell.
+
+(keyboard macro)		An event generated from a keyboard macro.
+
+(unread-command-events)	An event taken from `unread-command-events'.
+
+(unread-command-event)		An event taken from `unread-command-event'.
+
+(command event queue)		An event taken from an internal queue.
+				Events end up on this queue when
+				`enqueue-eval-event' is called or when
+				user or eval events are received while
+				XEmacs is blocking (e.g. in `sit-for',
+				`sleep-for', or `accept-process-output',
+				or while waiting for the reply to an
+				X selection).
+
+(->keyboard-translate-table)	The result of an event translated through
+				keyboard-translate-table.  Note that in
+				this case, two events are printed even
+				though only one is really generated.
+
+(SIGINT)			A faked C-g resulting when XEmacs receives
+				a SIGINT (e.g. C-c was pressed in XEmacs'
+				controlling terminal or the signal was
+				explicitly sent to the XEmacs process).Vinhibit-input-event-recording
+Non-nil inhibits recording of input-events to recent-keys ring.Fextentp
+Return t if OBJECT is an extent.
+
+arguments: (OBJECT)
+Fextent-live-p
+Return t if OBJECT is an extent that has not been destroyed.
+
+arguments: (OBJECT)
+Fextent-detached-p
+Return t if EXTENT is detached.
+
+arguments: (EXTENT)
+Fextent-object
+Return object (buffer or string) that EXTENT refers to.
+
+arguments: (EXTENT)
+Fextent-start-position
+Return start position of EXTENT, or nil if EXTENT is detached.
+
+arguments: (EXTENT)
+Fextent-end-position
+Return end position of EXTENT, or nil if EXTENT is detached.
+
+arguments: (EXTENT)
+Fextent-length
+Return length of EXTENT in characters.
+
+arguments: (EXTENT)
+Fnext-extent
+Find next extent after EXTENT.
+If EXTENT is a buffer return the first extent in the buffer; likewise
+ for strings.
+Extents in a buffer are ordered in what is called the "display"
+ order, which sorts by increasing start positions and then by *decreasing*
+ end positions.
+If you want to perform an operation on a series of extents, use
+ `map-extents' instead of this function; it is much more efficient.
+ The primary use of this function should be to enumerate all the
+ extents in a buffer.
+Note: The display order is not necessarily the order that `map-extents'
+ processes extents in!
+
+arguments: (EXTENT)
+Fprevious-extent
+Find last extent before EXTENT.
+If EXTENT is a buffer return the last extent in the buffer; likewise
+ for strings.
+This function is analogous to `next-extent'.
+
+arguments: (EXTENT)
+Fnext-e-extent
+Find next extent after EXTENT using the "e" order.
+If EXTENT is a buffer return the first extent in the buffer; likewise
+ for strings.
+
+arguments: (EXTENT)
+Fprevious-e-extent
+Find last extent before EXTENT using the "e" order.
+If EXTENT is a buffer return the last extent in the buffer; likewise
+ for strings.
+This function is analogous to `next-e-extent'.
+
+arguments: (EXTENT)
+Fnext-extent-change
+Return the next position after POS where an extent begins or ends.
+If POS is at the end of the buffer or string, POS will be returned;
+ otherwise a position greater than POS will always be returned.
+If OBJECT is nil, the current buffer is assumed.
+
+arguments: (POS &optional OBJECT)
+Fprevious-extent-change
+Return the last position before POS where an extent begins or ends.
+If POS is at the beginning of the buffer or string, POS will be returned;
+ otherwise a position less than POS will always be returned.
+If OBJECT is nil, the current buffer is assumed.
+
+arguments: (POS &optional OBJECT)
+Fextent-parent
+Return the parent (if any) of EXTENT.
+If an extent has a parent, it derives all its properties from that extent
+and has no properties of its own. (The only "properties" that the
+extent keeps are the buffer/string it refers to and the start and end
+points.) It is possible for an extent's parent to itself have a parent.
+
+arguments: (EXTENT)
+Fextent-children
+Return a list of the children (if any) of EXTENT.
+The children of an extent are all those extents whose parent is that extent.
+This function does not recursively trace children of children.
+(To do that, use `extent-descendants'.)
+
+arguments: (EXTENT)
+Fset-extent-parent
+Set the parent of EXTENT to PARENT (may be nil).
+See `extent-parent'.
+
+arguments: (EXTENT PARENT)
+Fmake-extent
+Make an extent for the range [FROM, TO) in BUFFER-OR-STRING.
+BUFFER-OR-STRING defaults to the current buffer.  Insertions at point
+TO will be outside of the extent; insertions at FROM will be inside the
+extent, causing the extent to grow. (This is the same way that markers
+behave.) You can change the behavior of insertions at the endpoints
+using `set-extent-property'.  The extent is initially detached if both
+FROM and TO are nil, and in this case BUFFER-OR-STRING defaults to nil,
+meaning the extent is in no buffer and no string.
+
+arguments: (FROM TO &optional BUFFER-OR-STRING)
+Fcopy-extent
+Make a copy of EXTENT.  It is initially detached.
+Optional argument BUFFER-OR-STRING defaults to EXTENT's buffer or string.
+
+arguments: (EXTENT &optional BUFFER-OR-STRING)
+Fdelete-extent
+Remove EXTENT from its buffer and destroy it.
+This does not modify the buffer's text, only its display properties.
+The extent cannot be used thereafter.
+
+arguments: (EXTENT)
+Fdetach-extent
+Remove EXTENT from its buffer in such a way that it can be re-inserted.
+An extent is also detached when all of its characters are all killed by a
+deletion, unless its `detachable' property has been unset.
+
+Extents which have the `duplicable' attribute are tracked by the undo
+mechanism.  Detachment via `detach-extent' and string deletion is recorded,
+as is attachment via `insert-extent' and string insertion.  Extent motion,
+face changes, and attachment via `make-extent' and `set-extent-endpoints'
+are not recorded.  This means that extent changes which are to be undo-able
+must be performed by character editing, or by insertion and detachment of
+duplicable extents.
+
+arguments: (EXTENT)
+Fset-extent-endpoints
+Set the endpoints of EXTENT to START, END.
+If START and END are null, call detach-extent on EXTENT.
+BUFFER-OR-STRING specifies the new buffer or string that the extent should
+be in, and defaults to EXTENT's buffer or string. (If nil, and EXTENT
+is in no buffer and no string, it defaults to the current buffer.)
+See documentation on `detach-extent' for a discussion of undo recording.
+
+arguments: (EXTENT START END &optional BUFFER-OR-STRING)
+Fextent-in-region-p
+Return whether EXTENT overlaps a specified region.
+This is equivalent to whether `map-extents' would visit EXTENT when called
+with these args.
+
+arguments: (EXTENT &optional FROM TO FLAGS)
+Fmap-extents
+Map FUNCTION over the extents which overlap a region in OBJECT.
+OBJECT is normally a buffer or string but could be an extent (see below).
+The region is normally bounded by [FROM, TO) (i.e. the beginning of the
+region is closed and the end of the region is open), but this can be
+changed with the FLAGS argument (see below for a complete discussion).
+
+FUNCTION is called with the arguments (extent, MAPARG).  The arguments
+OBJECT, FROM, TO, MAPARG, and FLAGS are all optional and default to
+the current buffer, the beginning of OBJECT, the end of OBJECT, nil,
+and nil, respectively.  `map-extents' returns the first non-nil result
+produced by FUNCTION, and no more calls to FUNCTION are made after it
+returns non-nil.
+
+If OBJECT is an extent, FROM and TO default to the extent's endpoints,
+and the mapping omits that extent and its predecessors.  This feature
+supports restarting a loop based on `map-extents'.  Note: OBJECT must
+be attached to a buffer or string, and the mapping is done over that
+buffer or string.
+
+An extent overlaps the region if there is any point in the extent that is
+also in the region. (For the purpose of overlap, zero-length extents and
+regions are treated as closed on both ends regardless of their endpoints'
+specified open/closedness.) Note that the endpoints of an extent or region
+are considered to be in that extent or region if and only if the
+corresponding end is closed.  For example, the extent [5,7] overlaps the
+region [2,5] because 5 is in both the extent and the region.  However, (5,7]
+does not overlap [2,5] because 5 is not in the extent, and neither [5,7] nor
+(5,7] overlaps the region [2,5) because 5 is not in the region.
+
+The optional FLAGS can be a symbol or a list of one or more symbols,
+modifying the behavior of `map-extents'.  Allowed symbols are:
+
+end-closed		The region's end is closed.
+
+start-open		The region's start is open.
+
+all-extents-closed	Treat all extents as closed on both ends for the
+			purpose of determining whether they overlap the
+			region, irrespective of their actual open- or
+			closedness.
+all-extents-open	Treat all extents as open on both ends.
+all-extents-closed-open	Treat all extents as start-closed, end-open.
+all-extents-open-closed	Treat all extents as start-open, end-closed.
+
+start-in-region		In addition to the above conditions for extent
+			overlap, the extent's start position must lie within
+			the specified region.  Note that, for this
+			condition, open start positions are treated as if
+			0.5 was added to the endpoint's value, and open
+			end positions are treated as if 0.5 was subtracted
+			from the endpoint's value.
+end-in-region		The extent's end position must lie within the
+			region.
+start-and-end-in-region	Both the extent's start and end positions must lie
+			within the region.
+start-or-end-in-region	Either the extent's start or end position must lie
+			within the region.
+
+negate-in-region	The condition specified by a `*-in-region' flag
+			must NOT hold for the extent to be considered.
+
+
+At most one of `all-extents-closed', `all-extents-open',
+`all-extents-closed-open', and `all-extents-open-closed' may be specified.
+
+At most one of `start-in-region', `end-in-region',
+`start-and-end-in-region', and `start-or-end-in-region' may be specified.
+
+If optional arg PROPERTY is non-nil, only extents with that property set
+on them will be visited.  If optional arg VALUE is non-nil, only extents
+whose value for that property is `eq' to VALUE will be visited.
+
+arguments: (FUNCTION &optional OBJECT FROM TO MAPARG FLAGS PROPERTY VALUE)
+Fmap-extent-children
+Map FUNCTION over the extents in the region from FROM to TO.
+FUNCTION is called with arguments (extent, MAPARG).  See `map-extents'
+for a full discussion of the arguments FROM, TO, and FLAGS.
+
+The arguments are the same as for `map-extents', but this function differs
+in that it only visits extents which start in the given region, and also
+in that, after visiting an extent E, it skips all other extents which start
+inside E but end before E's end.
+
+Thus, this function may be used to walk a tree of extents in a buffer:
+	(defun walk-extents (buffer &optional ignore)
+	 (map-extent-children 'walk-extents buffer))
+
+arguments: (FUNCTION &optional OBJECT FROM TO MAPARG FLAGS PROPERTY VALUE)
+Fextent-at
+Find "smallest" extent at POS in OBJECT having PROPERTY set.
+Normally, an extent is "at" POS if it overlaps the region (POS, POS+1);
+ i.e. if it covers the character after POS. (However, see the definition
+ of AT-FLAG.) "Smallest" means the extent that comes last in the display
+ order; this normally means the extent whose start position is closest to
+ POS.  See `next-extent' for more information.
+OBJECT specifies a buffer or string and defaults to the current buffer.
+PROPERTY defaults to nil, meaning that any extent will do.
+Properties are attached to extents with `set-extent-property', which see.
+Returns nil if POS is invalid or there is no matching extent at POS.
+If the fourth argument BEFORE is not nil, it must be an extent; any returned
+ extent will precede that extent.  This feature allows `extent-at' to be
+ used by a loop over extents.
+AT-FLAG controls how end cases are handled, and should be one of:
+
+nil or `after'		An extent is at POS if it covers the character
+			after POS.  This is consistent with the way
+			that text properties work.
+`before'		An extent is at POS if it covers the character
+			before POS.
+`at'			An extent is at POS if it overlaps or abuts POS.
+			This includes all zero-length extents at POS.
+
+Note that in all cases, the start-openness and end-openness of the extents
+considered is ignored.  If you want to pay attention to those properties,
+you should use `map-extents', which gives you more control.
+
+arguments: (POS &optional OBJECT PROPERTY BEFORE AT-FLAG)
+Fextents-at
+Find all extents at POS in OBJECT having PROPERTY set.
+Normally, an extent is "at" POS if it overlaps the region (POS, POS+1);
+ i.e. if it covers the character after POS. (However, see the definition
+ of AT-FLAG.)
+This provides similar functionality to `extent-list', but does so in a way
+ that is compatible with `extent-at'. (For example, errors due to POS out of
+ range are ignored; this makes it safer to use this function in response to
+ a mouse event, because in many cases previous events have changed the buffer
+ contents.)
+OBJECT specifies a buffer or string and defaults to the current buffer.
+PROPERTY defaults to nil, meaning that any extent will do.
+Properties are attached to extents with `set-extent-property', which see.
+Returns nil if POS is invalid or there is no matching extent at POS.
+If the fourth argument BEFORE is not nil, it must be an extent; any returned
+ extent will precede that extent.  This feature allows `extents-at' to be
+ used by a loop over extents.
+AT-FLAG controls how end cases are handled, and should be one of:
+
+nil or `after'		An extent is at POS if it covers the character
+			after POS.  This is consistent with the way
+			that text properties work.
+`before'		An extent is at POS if it covers the character
+			before POS.
+`at'			An extent is at POS if it overlaps or abuts POS.
+			This includes all zero-length extents at POS.
+
+Note that in all cases, the start-openness and end-openness of the extents
+considered is ignored.  If you want to pay attention to those properties,
+you should use `map-extents', which gives you more control.
+
+arguments: (POS &optional OBJECT PROPERTY BEFORE AT-FLAG)
+Fset-extent-initial-redisplay-function
+Note: This feature is experimental!
+
+Set initial-redisplay-function of EXTENT to the function
+FUNCTION.
+
+The first time the EXTENT is (re)displayed, an eval event will be
+dispatched calling FUNCTION with EXTENT as its only argument.
+
+arguments: (EXTENT FUNCTION)
+Fextent-face
+Return the name of the face in which EXTENT is displayed, or nil
+if the extent's face is unspecified.  This might also return a list
+of face names.
+
+arguments: (EXTENT)
+Fset-extent-face
+Make the given EXTENT have the graphic attributes specified by FACE.
+FACE can also be a list of faces, and all faces listed will apply,
+with faces earlier in the list taking priority over those later in the
+list.
+
+arguments: (EXTENT FACE)
+Fextent-mouse-face
+Return the face used to highlight EXTENT when the mouse passes over it.
+The return value will be a face name, a list of face names, or nil
+if the extent's mouse face is unspecified.
+
+arguments: (EXTENT)
+Fset-extent-mouse-face
+Set the face used to highlight EXTENT when the mouse passes over it.
+FACE can also be a list of faces, and all faces listed will apply,
+with faces earlier in the list taking priority over those later in the
+list.
+
+arguments: (EXTENT FACE)
+Fset-extent-begin-glyph
+Display a bitmap, subwindow or string at the beginning of EXTENT.
+BEGIN-GLYPH must be a glyph object.  The layout policy defaults to `text'.
+
+arguments: (EXTENT BEGIN-GLYPH &optional LAYOUT)
+Fset-extent-end-glyph
+Display a bitmap, subwindow or string at the end of EXTENT.
+END-GLYPH must be a glyph object.  The layout policy defaults to `text'.
+
+arguments: (EXTENT END-GLYPH &optional LAYOUT)
+Fextent-begin-glyph
+Return the glyph object displayed at the beginning of EXTENT.
+If there is none, nil is returned.
+
+arguments: (EXTENT)
+Fextent-end-glyph
+Return the glyph object displayed at the end of EXTENT.
+If there is none, nil is returned.
+
+arguments: (EXTENT)
+Fset-extent-begin-glyph-layout
+Set the layout policy of EXTENT's begin glyph.
+Access this using the `extent-begin-glyph-layout' function.
+
+arguments: (EXTENT LAYOUT)
+Fset-extent-end-glyph-layout
+Set the layout policy of EXTENT's end glyph.
+Access this using the `extent-end-glyph-layout' function.
+
+arguments: (EXTENT LAYOUT)
+Fextent-begin-glyph-layout
+Return the layout policy associated with EXTENT's begin glyph.
+Set this using the `set-extent-begin-glyph-layout' function.
+
+arguments: (EXTENT)
+Fextent-end-glyph-layout
+Return the layout policy associated with EXTENT's end glyph.
+Set this using the `set-extent-end-glyph-layout' function.
+
+arguments: (EXTENT)
+Fset-extent-priority
+Set the display priority of EXTENT to PRIORITY (an integer).
+When the extent attributes are being merged for display, the priority
+is used to determine which extent takes precedence in the event of a
+conflict (two extents whose faces both specify font, for example: the
+font of the extent with the higher priority will be used).
+Extents are created with priority 0; priorities may be negative.
+
+arguments: (EXTENT PRIORITY)
+Fextent-priority
+Return the display priority of EXTENT; see `set-extent-priority'.
+
+arguments: (EXTENT)
+Fset-extent-property
+Change a property of an extent.
+PROPERTY may be any symbol; the value stored may be accessed with
+ the `extent-property' function.
+The following symbols have predefined meanings:
+
+ detached           Removes the extent from its buffer; setting this is
+                    the same as calling `detach-extent'.
+
+ destroyed          Removes the extent from its buffer, and makes it
+                    unusable in the future; this is the same calling
+                    `delete-extent'.
+
+ priority           Change redisplay priority; same as `set-extent-priority'.
+
+ start-open         Whether the set of characters within the extent is
+                    treated being open on the left, that is, whether
+                    the start position is an exclusive, rather than
+                    inclusive, boundary.  If true, then characters
+                    inserted exactly at the beginning of the extent
+                    will remain outside of the extent; otherwise they
+                    will go into the extent, extending it.
+
+ end-open           Whether the set of characters within the extent is
+                    treated being open on the right, that is, whether
+                    the end position is an exclusive, rather than
+                    inclusive, boundary.  If true, then characters
+                    inserted exactly at the end of the extent will
+                    remain outside of the extent; otherwise they will
+                    go into the extent, extending it.
+
+                    By default, extents have the `end-open' but not the
+                    `start-open' property set.
+
+ read-only          Text within this extent will be unmodifiable.
+
+ initial-redisplay-function (EXPERIMENTAL)
+                    function to be called the first time (part of) the extent
+                    is redisplayed. It will be called with the extent as its
+                    first argument.
+		    Note: The function will not be called immediately
+		    during redisplay, an eval event will be dispatched.
+
+ detachable         Whether the extent gets detached (as with
+                    `detach-extent') when all the text within the
+                    extent is deleted.  This is true by default.  If
+                    this property is not set, the extent becomes a
+                    zero-length extent when its text is deleted. (In
+                    such a case, the `start-open' property is
+                    automatically removed if both the `start-open' and
+                    `end-open' properties are set, since zero-length
+                    extents open on both ends are not allowed.)
+
+ face               The face in which to display the text.  Setting
+                    this is the same as calling `set-extent-face'.
+
+ mouse-face	    If non-nil, the extent will be highlighted in this
+		    face when the mouse moves over it.
+
+ pointer            If non-nil, and a valid pointer glyph, this specifies
+                    the shape of the mouse pointer while over the extent.
+
+ highlight          Obsolete: Setting this property is equivalent to
+		    setting a `mouse-face' property of `highlight'.
+		    Reading this property returns non-nil if
+		    the extent has a non-nil `mouse-face' property.
+
+ duplicable         Whether this extent should be copied into strings,
+                    so that kill, yank, and undo commands will restore
+                    or copy it.  `duplicable' extents are copied from
+                    an extent into a string when `buffer-substring' or
+                    a similar function creates a string.  The extents
+                    in a string are copied into other strings created
+                    from the string using `concat' or `substring'.
+                    When `insert' or a similar function inserts the
+                    string into a buffer, the extents are copied back
+                    into the buffer.
+
+ unique             Meaningful only in conjunction with `duplicable'.
+                    When this is set, there may be only one instance
+                    of this extent attached at a time: if it is copied
+                    to the kill ring and then yanked, the extent is
+                    not copied.  If, however, it is killed (removed
+                    from the buffer) and then yanked, it will be
+                    re-attached at the new position.
+
+ invisible          If the value is non-nil, text under this extent
+                    may be treated as not present for the purpose of
+                    redisplay, or may be displayed using an ellipsis
+                    or other marker; see `buffer-invisibility-spec'
+                    and `invisible-text-glyph'.  In all cases,
+                    however, the text is still visible to other
+                    functions that examine a buffer's text.
+
+ keymap             This keymap is consulted for mouse clicks on this
+                    extent, or keypresses made while point is within the
+                    extent.
+
+ copy-function      This is a hook that is run when a duplicable extent
+                    is about to be copied from a buffer to a string (or
+                    the kill ring).  It is called with three arguments,
+                    the extent, and the buffer-positions within it
+                    which are being copied.  If this function returns
+                    nil, then the extent will not be copied; otherwise
+                    it will.
+
+ paste-function     This is a hook that is run when a duplicable extent is
+                    about to be copied from a string (or the kill ring)
+                    into a buffer.  It is called with three arguments,
+                    the original extent, and the buffer positions which
+                    the copied extent will occupy.  (This hook is run
+                    after the corresponding text has already been
+                    inserted into the buffer.)  Note that the extent
+                    argument may be detached when this function is run.
+                    If this function returns nil, no extent will be
+                    inserted.  Otherwise, there will be an extent
+                    covering the range in question.
+
+                    If the original extent is not attached to a buffer,
+                    then it will be re-attached at this range.
+                    Otherwise, a copy will be made, and that copy
+                    attached here.
+
+                    The copy-function and paste-function are meaningful
+                    only for extents with the `duplicable' flag set,
+                    and if they are not specified, behave as if `t' was
+                    the returned value.  When these hooks are invoked,
+                    the current buffer is the buffer which the extent
+                    is being copied from/to, respectively.
+
+ begin-glyph        A glyph to be displayed at the beginning of the extent,
+                    or nil.
+
+ end-glyph          A glyph to be displayed at the end of the extent,
+                    or nil.
+
+ begin-glyph-layout The layout policy (one of `text', `whitespace',
+                    `inside-margin', or `outside-margin') of the extent's
+                    begin glyph.
+
+ end-glyph-layout The layout policy of the extent's end glyph.
+
+arguments: (EXTENT PROPERTY VALUE)
+Fset-extent-properties
+Change some properties of EXTENT.
+PLIST is a property list.
+For a list of built-in properties, see `set-extent-property'.
+
+arguments: (EXTENT PLIST)
+Fextent-property
+Return EXTENT's value for property PROPERTY.
+If no such property exists, DEFAULT is returned.
+See `set-extent-property' for the built-in property names.
+
+arguments: (EXTENT PROPERTY &optional DEFAULT)
+Fextent-properties
+Return a property list of the attributes of EXTENT.
+Do not modify this list; use `set-extent-property' instead.
+
+arguments: (EXTENT)
+Fforce-highlight-extent
+Highlight or unhighlight the given extent.
+If the second arg is non-nil, it will be highlighted, else dehighlighted.
+This is the same as `highlight-extent', except that it will work even
+on extents without the `mouse-face' property.
+
+arguments: (EXTENT &optional HIGHLIGHT-P)
+Fhighlight-extent
+Highlight EXTENT, if it is highlightable.
+(that is, if it has the `mouse-face' property).
+If the second arg is non-nil, it will be highlighted, else dehighlighted.
+Highlighted extents are displayed as if they were merged with the face
+or faces specified by the `mouse-face' property.
+
+arguments: (EXTENT &optional HIGHLIGHT-P)
+Finsert-extent
+Insert EXTENT from START to END in BUFFER-OR-STRING.
+BUFFER-OR-STRING defaults to the current buffer if omitted.
+This operation does not insert any characters,
+but otherwise acts as if there were a replicating extent whose
+parent is EXTENT in some string that was just inserted.
+Returns the newly-inserted extent.
+The fourth arg, NO-HOOKS, can be used to inhibit the running of the
+ extent's `paste-function' property if it has one.
+See documentation on `detach-extent' for a discussion of undo recording.
+
+arguments: (EXTENT &optional START END NO-HOOKS BUFFER-OR-STRING)
+Fget-text-property
+Return the value of the PROP property at the given position.
+Optional arg OBJECT specifies the buffer or string to look in, and
+ defaults to the current buffer.
+Optional arg AT-FLAG controls what it means for a property to be "at"
+ a position, and has the same meaning as in `extent-at'.
+This examines only those properties added with `put-text-property'.
+See also `get-char-property'.
+
+arguments: (POS PROP &optional OBJECT AT-FLAG)
+Fget-char-property
+Return the value of the PROP property at the given position.
+Optional arg OBJECT specifies the buffer or string to look in, and
+ defaults to the current buffer.
+Optional arg AT-FLAG controls what it means for a property to be "at"
+ a position, and has the same meaning as in `extent-at'.
+This examines properties on all extents.
+See also `get-text-property'.
+
+arguments: (POS PROP &optional OBJECT AT-FLAG)
+Fput-text-property
+Adds the given property/value to all characters in the specified region.
+The property is conceptually attached to the characters rather than the
+region.  The properties are copied when the characters are copied/pasted.
+Fifth argument OBJECT is the buffer or string containing the text, and
+defaults to the current buffer.
+
+arguments: (START END PROP VALUE &optional OBJECT)
+Fput-nonduplicable-text-property
+Adds the given property/value to all characters in the specified region.
+The property is conceptually attached to the characters rather than the
+region, however the properties will not be copied when the characters
+are copied.
+Fifth argument OBJECT is the buffer or string containing the text, and
+defaults to the current buffer.
+
+arguments: (START END PROP VALUE &optional OBJECT)
+Fadd-text-properties
+Add properties to the characters from START to END.
+The third argument PROPS is a property list specifying the property values
+to add.  The optional fourth argument, OBJECT, is the buffer or string
+containing the text and defaults to the current buffer.  Returns t if
+any property was changed, nil otherwise.
+
+arguments: (START END PROPS &optional OBJECT)
+Fadd-nonduplicable-text-properties
+Add nonduplicable properties to the characters from START to END.
+(The properties will not be copied when the characters are copied.)
+The third argument PROPS is a property list specifying the property values
+to add.  The optional fourth argument, OBJECT, is the buffer or string
+containing the text and defaults to the current buffer.  Returns t if
+any property was changed, nil otherwise.
+
+arguments: (START END PROPS &optional OBJECT)
+Fremove-text-properties
+Remove the given properties from all characters in the specified region.
+PROPS should be a plist, but the values in that plist are ignored (treated
+as nil).  Returns t if any property was changed, nil otherwise.
+Fourth argument OBJECT is the buffer or string containing the text, and
+defaults to the current buffer.
+
+arguments: (START END PROPS &optional OBJECT)
+Ftext-prop-extent-paste-function
+Used as the `paste-function' property of `text-prop' extents.
+
+arguments: (EXTENT FROM TO)
+Fnext-single-property-change
+Return the position of next property change for a specific property.
+Scans characters forward from POS till it finds a change in the PROP
+ property, then returns the position of the change.  The optional third
+ argument OBJECT is the buffer or string to scan (defaults to the current
+ buffer).
+The property values are compared with `eq'.
+Return nil if the property is constant all the way to the end of OBJECT.
+If the value is non-nil, it is a position greater than POS, never equal.
+
+If the optional fourth argument LIMIT is non-nil, don't search
+ past position LIMIT; return LIMIT if nothing is found before LIMIT.
+If two or more extents with conflicting non-nil values for PROP overlap
+ a particular character, it is undefined which value is considered to be
+ the value of PROP. (Note that this situation will not happen if you always
+ use the text-property primitives.)
+
+arguments: (POS PROP &optional OBJECT LIMIT)
+Fprevious-single-property-change
+Return the position of next property change for a specific property.
+Scans characters backward from POS till it finds a change in the PROP
+ property, then returns the position of the change.  The optional third
+ argument OBJECT is the buffer or string to scan (defaults to the current
+ buffer).
+The property values are compared with `eq'.
+Return nil if the property is constant all the way to the start of OBJECT.
+If the value is non-nil, it is a position less than POS, never equal.
+
+If the optional fourth argument LIMIT is non-nil, don't search back
+ past position LIMIT; return LIMIT if nothing is found until LIMIT.
+If two or more extents with conflicting non-nil values for PROP overlap
+ a particular character, it is undefined which value is considered to be
+ the value of PROP. (Note that this situation will not happen if you always
+ use the text-property primitives.)
+
+arguments: (POS PROP &optional OBJECT LIMIT)
+Vmouse-highlight-priority
+The priority to use for the mouse-highlighting pseudo-extent
+that is used to highlight extents with the `mouse-face' attribute set.
+See `set-extent-priority'.Vdefault-text-properties
+Property list giving default values for text properties.
+Whenever a character does not specify a value for a property, the value
+stored in this list is used instead.  This only applies when the
+functions `get-text-property' or `get-char-property' are called.Ffacep
+Return t if OBJECT is a face.
+
+arguments: (OBJECT)
+Ffind-face
+Retrieve the face of the given name.
+If FACE-OR-NAME is a face object, it is simply returned.
+Otherwise, FACE-OR-NAME should be a symbol.  If there is no such face,
+nil is returned.  Otherwise the associated face object is returned.
+
+arguments: (FACE-OR-NAME)
+Fget-face
+Retrieve the face of the given name.
+Same as `find-face' except an error is signalled if there is no such
+face instead of returning nil.
+
+arguments: (NAME)
+Fface-name
+Return the name of the given face.
+
+arguments: (FACE)
+Fbuilt-in-face-specifiers
+Return a list of all built-in face specifier properties.
+Don't modify this list!
+
+arguments: ()
+Fface-list
+Return a list of the names of all defined faces.
+If TEMPORARY is nil, only the permanent faces are included.
+If it is t, only the temporary faces are included.  If it is any
+other non-nil value both permanent and temporary are included.
+
+arguments: (&optional TEMPORARY)
+Fmake-face
+Define a new face with name NAME (a symbol), described by DOC-STRING.
+You can modify the font, color, etc. of a face with the set-face-* functions.
+If the face already exists, it is unmodified.
+If TEMPORARY is non-nil, this face will cease to exist if not in use.
+
+arguments: (NAME &optional DOC-STRING TEMPORARY)
+Fcopy-face
+Define and return a new face which is a copy of an existing one,
+or makes an already-existing face be exactly like another.
+LOCALE, TAG-SET, EXACT-P, and HOW-TO-ADD are as in `copy-specifier'.
+
+arguments: (OLD-FACE NEW-NAME &optional LOCALE TAG-SET EXACT-P HOW-TO-ADD)
+Ffind-file-name-handler
+Return FILENAME's handler function for OPERATION, if it has one.
+Otherwise, return nil.
+A file name is handled if one of the regular expressions in
+`file-name-handler-alist' matches it.
+
+If OPERATION equals `inhibit-file-name-operation', then we ignore
+any handlers that are members of `inhibit-file-name-handlers',
+but we still do run any other handlers.  This lets handlers
+use the standard functions without calling themselves recursively.
+
+arguments: (FILENAME &optional OPERATION)
+Ffile-name-directory
+Return the directory component in file name FILENAME.
+Return nil if FILENAME does not include a directory.
+Otherwise return a directory spec.
+Given a Unix syntax file name, returns a string ending in slash.
+
+arguments: (FILENAME)
+Ffile-name-nondirectory
+Return file name FILENAME sans its directory.
+For example, in a Unix-syntax file name,
+this is everything after the last slash,
+or the entire name if it contains no slash.
+
+arguments: (FILENAME)
+Funhandled-file-name-directory
+Return a directly usable directory name somehow associated with FILENAME.
+A `directly usable' directory name is one that may be used without the
+intervention of any file handler.
+If FILENAME is a directly usable file itself, return
+(file-name-directory FILENAME).
+The `call-process' and `start-process' functions use this function to
+get a current directory to run processes in.
+
+arguments: (FILENAME)
+Ffile-name-as-directory
+Return a string representing file FILENAME interpreted as a directory.
+This operation exists because a directory is also a file, but its name as
+a directory is different from its name as a file.
+The result can be used as the value of `default-directory'
+or passed as second argument to `expand-file-name'.
+For a Unix-syntax file name, just appends a slash,
+except for (file-name-as-directory "") => "./".
+
+arguments: (FILENAME)
+Fdirectory-file-name
+Return the file name of the directory named DIRECTORY.
+This is the name of the file that holds the data for the directory.
+This operation exists because a directory is also a file, but its name as
+a directory is different from its name as a file.
+In Unix-syntax, this function just removes the final slash.
+
+arguments: (DIRECTORY)
+Fmake-temp-name
+Generate a temporary file name starting with PREFIX.
+The Emacs process number forms part of the result, so there is no
+danger of generating a name being used by another process.
+
+In addition, this function makes an attempt to choose a name that
+does not specify an existing file.  To make this work, PREFIX should
+be an absolute file name.
+
+arguments: (PREFIX)
+Fexpand-file-name
+Convert filename NAME to absolute, and canonicalize it.
+Second arg DEFAULT-DIRECTORY is directory to start with if NAME is relative
+ (does not start with slash); if DEFAULT-DIRECTORY is nil or missing,
+the current buffer's value of `default-directory' is used.
+File name components that are `.' are removed, and
+so are file name components followed by `..', along with the `..' itself;
+note that these simplifications are done without checking the resulting
+file names in the file system.
+An initial `~/' expands to your home directory.
+An initial `~USER/' expands to USER's home directory.
+See also the function `substitute-in-file-name'.
+
+arguments: (NAME &optional DEFAULT-DIRECTORY)
+Ffile-truename
+Return the canonical name of FILENAME.
+Second arg DEFAULT is directory to start with if FILENAME is relative
+ (does not start with slash); if DEFAULT is nil or missing,
+ the current buffer's value of `default-directory' is used.
+No component of the resulting pathname will be a symbolic link, as
+ in the realpath() function.
+
+arguments: (FILENAME &optional DEFAULT)
+Fsubstitute-in-file-name
+Substitute environment variables referred to in FILENAME.
+`$FOO' where FOO is an environment variable name means to substitute
+the value of that variable.  The variable name should be terminated
+with a character, not a letter, digit or underscore; otherwise, enclose
+the entire variable name in braces.
+If `/~' appears, all of FILENAME through that `/' is discarded.
+
+arguments: (FILENAME)
+Fcopy-file
+Copy FILENAME to NEWNAME.  Both args must be strings.
+Signals a `file-already-exists' error if file NEWNAME already exists,
+unless a third argument OK-IF-ALREADY-EXISTS is supplied and non-nil.
+A number as third arg means request confirmation if NEWNAME already exists.
+This is what happens in interactive use with M-x.
+Fourth arg KEEP-TIME non-nil means give the new file the same
+last-modified time as the old one.  (This works on only some systems.)
+A prefix arg makes KEEP-TIME non-nil.
+
+arguments: (FILENAME NEWNAME &optional OK-IF-ALREADY-EXISTS KEEP-TIME)
+Fmake-directory-internal
+Create a directory.  One argument, a file name string.
+
+arguments: (DIRNAME)
+Fdelete-directory
+Delete a directory.  One argument, a file name or directory name string.
+
+arguments: (DIRNAME)
+Fdelete-file
+Delete the file named FILENAME (a string).
+If FILENAME has multiple names, it continues to exist with the other names.
+
+arguments: (FILENAME)
+Frename-file
+Rename FILENAME as NEWNAME.  Both args must be strings.
+If file has names other than FILENAME, it continues to have those names.
+Signals a `file-already-exists' error if a file NEWNAME already exists
+unless optional third argument OK-IF-ALREADY-EXISTS is non-nil.
+A number as third arg means request confirmation if NEWNAME already exists.
+This is what happens in interactive use with M-x.
+
+arguments: (FILENAME NEWNAME &optional OK-IF-ALREADY-EXISTS)
+Fadd-name-to-file
+Give FILENAME additional name NEWNAME.  Both args must be strings.
+Signals a `file-already-exists' error if a file NEWNAME already exists
+unless optional third argument OK-IF-ALREADY-EXISTS is non-nil.
+A number as third arg means request confirmation if NEWNAME already exists.
+This is what happens in interactive use with M-x.
+
+arguments: (FILENAME NEWNAME &optional OK-IF-ALREADY-EXISTS)
+Fmake-symbolic-link
+Make a symbolic link to FILENAME, named LINKNAME.  Both args strings.
+Signals a `file-already-exists' error if a file LINKNAME already exists
+unless optional third argument OK-IF-ALREADY-EXISTS is non-nil.
+A number as third arg means request confirmation if LINKNAME already exists.
+This happens for interactive use with M-x.
+
+arguments: (FILENAME LINKNAME &optional OK-IF-ALREADY-EXISTS)
+Fsysnetunam
+Open a network connection to PATH using LOGIN as the login string.
+
+arguments: (PATH LOGIN)
+Ffile-name-absolute-p
+Return t if file FILENAME specifies an absolute path name.
+On Unix, this is a name starting with a `/' or a `~'.
+
+arguments: (FILENAME)
+Ffile-exists-p
+Return t if file FILENAME exists.  (This does not mean you can read it.)
+See also `file-readable-p' and `file-attributes'.
+
+arguments: (FILENAME)
+Ffile-executable-p
+Return t if FILENAME can be executed by you.
+For a directory, this means you can access files in that directory.
+
+arguments: (FILENAME)
+Ffile-readable-p
+Return t if file FILENAME exists and you can read it.
+See also `file-exists-p' and `file-attributes'.
+
+arguments: (FILENAME)
+Ffile-writable-p
+Return t if file FILENAME can be written or created by you.
+
+arguments: (FILENAME)
+Ffile-symlink-p
+Return non-nil if file FILENAME is the name of a symbolic link.
+The value is the name of the file to which it is linked.
+Otherwise returns nil.
+
+arguments: (FILENAME)
+Ffile-directory-p
+Return t if file FILENAME is the name of a directory as a file.
+A directory name spec may be given instead; then the value is t
+if the directory so specified exists and really is a directory.
+
+arguments: (FILENAME)
+Ffile-accessible-directory-p
+Return t if file FILENAME is the name of a directory as a file,
+and files in that directory can be opened by you.  In order to use a
+directory as a buffer's current directory, this predicate must return true.
+A directory name spec may be given instead; then the value is t
+if the directory so specified exists and really is a readable and
+searchable directory.
+
+arguments: (FILENAME)
+Ffile-regular-p
+Return t if file FILENAME is the name of a regular file.
+This is the sort of file that holds an ordinary stream of data bytes.
+
+arguments: (FILENAME)
+Ffile-modes
+Return mode bits of file named FILENAME, as an integer.
+
+arguments: (FILENAME)
+Fset-file-modes
+Set mode bits of file named FILENAME to MODE (an integer).
+Only the 12 low bits of MODE are used.
+
+arguments: (FILENAME MODE)
+Fset-default-file-modes
+Set the file permission bits for newly created files.
+The argument MODE should be an integer; if a bit in MODE is 1,
+subsequently created files will not have the permission corresponding
+to that bit enabled.  Only the low 9 bits are used.
+This setting is inherited by subprocesses.
+
+arguments: (MODE)
+Fdefault-file-modes
+Return the default file protection for created files.
+The umask value determines which permissions are enabled in newly
+created files.  If a permission's bit in the umask is 1, subsequently
+created files will not have that permission enabled.
+
+arguments: ()
+Funix-sync
+Tell Unix to finish all pending disk updates.
+
+arguments: ()
+Ffile-newer-than-file-p
+Return t if file FILE1 is newer than file FILE2.
+If FILE1 does not exist, the answer is nil;
+otherwise, if FILE2 does not exist, the answer is t.
+
+arguments: (FILE1 FILE2)
+Finsert-file-contents-internal
+Insert contents of file FILENAME after point; no coding-system frobbing.
+This function is identical to `insert-file-contents' except for the
+handling of the CODESYS and USED-CODESYS arguments under
+XEmacs/Mule. (When Mule support is not present, both functions are
+identical and ignore the CODESYS and USED-CODESYS arguments.)
+
+If support for Mule exists in this Emacs, the file is decoded according
+to CODESYS; if omitted, no conversion happens.  If USED-CODESYS is non-nil,
+it should be a symbol, and the actual coding system that was used for the
+decoding is stored into it.  It will in general be different from CODESYS
+if CODESYS specifies automatic encoding detection or end-of-line detection.
+
+Currently START and END refer to byte positions (as opposed to character
+positions), even in Mule. (Fixing this is very difficult.)
+
+arguments: (FILENAME &optional VISIT START END REPLACE CODESYS USED-CODESYS)
+Fwrite-region-internal
+Write current region into specified file; no coding-system frobbing.
+This function is identical to `write-region' except for the handling
+of the CODESYS argument under XEmacs/Mule. (When Mule support is not
+present, both functions are identical and ignore the CODESYS argument.)
+If support for Mule exists in this Emacs, the file is encoded according
+to the value of CODESYS.  If this is nil, no code conversion occurs.
+
+arguments: (START END FILENAME &optional APPEND VISIT LOCKNAME CODESYS)
+Fcar-less-than-car
+Return t if (car A) is numerically less than (car B).
+
+arguments: (A B)
+Fcdr-less-than-cdr
+Return t if (cdr A) is numerically less than (cdr B).
+
+arguments: (A B)
+Fencrypt-string
+Encrypt STRING using KEY.
+
+arguments: (STRING KEY)
+Fdecrypt-string
+Decrypt STRING using KEY.
+
+arguments: (STRING KEY)
+Fverify-visited-file-modtime
+Return t if last mod time of BUFFER's visited file matches what BUFFER records.
+This means that the file has not been changed since it was visited or saved.
+
+arguments: (BUFFER)
+Fclear-visited-file-modtime
+Clear out records of last mod time of visited file.
+Next attempt to save will certainly not complain of a discrepancy.
+
+arguments: ()
+Fvisited-file-modtime
+Return the current buffer's recorded visited file modification time.
+The value is a list of the form (HIGH . LOW), like the time values
+that `file-attributes' returns.
+
+arguments: ()
+Fset-visited-file-modtime
+Update buffer's recorded modification time from the visited file's time.
+Useful if the buffer was not read from the file normally
+or if the file itself has been changed for some known benign reason.
+An argument specifies the modification time value to use
+(instead of that of the visited file), in the form of a list
+(HIGH . LOW) or (HIGH LOW).
+
+arguments: (&optional TIME-LIST)
+Fdo-auto-save
+Auto-save all buffers that need it.
+This is all buffers that have auto-saving enabled
+and are changed since last auto-saved.
+Auto-saving writes the buffer into a file
+so that your editing is not lost if the system crashes.
+This file is not the file you visited; that changes only when you save.
+Normally we run the normal hook `auto-save-hook' before saving.
+
+Non-nil first argument means do not print any message if successful.
+Non-nil second argument means save only current buffer.
+
+arguments: (&optional NO-MESSAGE CURRENT-ONLY)
+Fset-buffer-auto-saved
+Mark current buffer as auto-saved with its current text.
+No auto-save file will be written until the buffer changes again.
+
+arguments: ()
+Fclear-buffer-auto-save-failure
+Clear any record of a recent auto-save failure in the current buffer.
+
+arguments: ()
+Frecent-auto-save-p
+Return t if buffer has been auto-saved since last read in or saved.
+
+arguments: ()
+Vauto-save-file-format
+*Format in which to write auto-save files.
+Should be a list of symbols naming formats that are defined in `format-alist'.
+If it is t, which is the default, auto-save files are written in the
+same format as a regular save would use.Vfile-name-handler-alist
+*Alist of elements (REGEXP . HANDLER) for file names handled specially.
+If a file name matches REGEXP, then all I/O on that file is done by calling
+HANDLER.
+
+The first argument given to HANDLER is the name of the I/O primitive
+to be handled; the remaining arguments are the arguments that were
+passed to that primitive.  For example, if you do
+    (file-exists-p FILENAME)
+and FILENAME is handled by HANDLER, then HANDLER is called like this:
+    (funcall HANDLER 'file-exists-p FILENAME)
+The function `find-file-name-handler' checks this list for a handler
+for its argument.Vafter-insert-file-functions
+A list of functions to be called at the end of `insert-file-contents'.
+Each is passed one argument, the number of bytes inserted.  It should return
+the new byte count, and leave point the same.  If `insert-file-contents' is
+intercepted by a handler from `file-name-handler-alist', that handler is
+responsible for calling the after-insert-file-functions if appropriate.Vwrite-region-annotate-functions
+A list of functions to be called at the start of `write-region'.
+Each is passed two arguments, START and END, as for `write-region'.
+It should return a list of pairs (POSITION . STRING) of strings to be
+effectively inserted at the specified positions of the file being written
+(1 means to insert before the first byte written).  The POSITIONs must be
+sorted into increasing order.  If there are several functions in the list,
+the several lists are merged destructively.Vwrite-region-annotations-so-far
+When an annotation function is called, this holds the previous annotations.
+These are the annotations made by other annotation functions
+that were already called.  See also `write-region-annotate-functions'.Vinhibit-file-name-handlers
+A list of file name handlers that temporarily should not be used.
+This applies only to the operation `inhibit-file-name-operation'.Vinhibit-file-name-operation
+The operation for which `inhibit-file-name-handlers' is applicable.Vauto-save-list-file-name
+File name in which we write a list of all auto save file names.Vauto-save-list-file-prefix
+Prefix for generating auto-save-list-file-name.
+Emacs's pid and the system name will be appended to
+this prefix to create a unique file name.Vinhibit-auto-save-session
+When non-nil, inhibit auto save list file creation.Vdisable-auto-save-when-buffer-shrinks
+If non-nil, auto-saving is disabled when a buffer shrinks too much.
+This is to prevent you from losing your edits if you accidentally
+delete a large chunk of the buffer and don't notice it until too late.
+Saving the buffer normally turns auto-save back on.Vdirectory-sep-char
+Directory separator character for built-in functions that return file names.
+The value should be either ?/ or ?\ (any other value is treated as ?\).
+This variable affects the built-in functions only on Windows,
+on other platforms, it is initialized so that Lisp code can find out
+what the normal separator is.Facos
+Return the inverse cosine of NUMBER.
+
+arguments: (NUMBER)
+Fasin
+Return the inverse sine of NUMBER.
+
+arguments: (NUMBER)
+Fatan
+Return the inverse tangent of NUMBER.
+If optional second argument NUMBER2 is provided,
+return atan2 (NUMBER, NUMBER2).
+
+arguments: (NUMBER &optional NUMBER2)
+Fcos
+Return the cosine of NUMBER.
+
+arguments: (NUMBER)
+Fsin
+Return the sine of NUMBER.
+
+arguments: (NUMBER)
+Ftan
+Return the tangent of NUMBER.
+
+arguments: (NUMBER)
+Fbessel-j0
+Return the bessel function j0 of NUMBER.
+
+arguments: (NUMBER)
+Fbessel-j1
+Return the bessel function j1 of NUMBER.
+
+arguments: (NUMBER)
+Fbessel-jn
+Return the order N bessel function output jn of NUMBER.
+The first number (the order) is truncated to an integer.
+
+arguments: (NUMBER1 NUMBER2)
+Fbessel-y0
+Return the bessel function y0 of NUMBER.
+
+arguments: (NUMBER)
+Fbessel-y1
+Return the bessel function y1 of NUMBER.
+
+arguments: (NUMBER)
+Fbessel-yn
+Return the order N bessel function output yn of NUMBER.
+The first number (the order) is truncated to an integer.
+
+arguments: (NUMBER1 NUMBER2)
+Ferf
+Return the mathematical error function of NUMBER.
+
+arguments: (NUMBER)
+Ferfc
+Return the complementary error function of NUMBER.
+
+arguments: (NUMBER)
+Flog-gamma
+Return the log gamma of NUMBER.
+
+arguments: (NUMBER)
+Fexp
+Return the exponential base e of NUMBER.
+
+arguments: (NUMBER)
+Fexpt
+Return the exponential NUMBER1 ** NUMBER2.
+
+arguments: (NUMBER1 NUMBER2)
+Flog
+Return the natural logarithm of NUMBER.
+If second optional argument BASE is given, return the logarithm of
+NUMBER using that base.
+
+arguments: (NUMBER &optional BASE)
+Flog10
+Return the logarithm base 10 of NUMBER.
+
+arguments: (NUMBER)
+Fsqrt
+Return the square root of NUMBER.
+
+arguments: (NUMBER)
+Fcube-root
+Return the cube root of NUMBER.
+
+arguments: (NUMBER)
+Facosh
+Return the inverse hyperbolic cosine of NUMBER.
+
+arguments: (NUMBER)
+Fasinh
+Return the inverse hyperbolic sine of NUMBER.
+
+arguments: (NUMBER)
+Fatanh
+Return the inverse hyperbolic tangent of NUMBER.
+
+arguments: (NUMBER)
+Fcosh
+Return the hyperbolic cosine of NUMBER.
+
+arguments: (NUMBER)
+Fsinh
+Return the hyperbolic sine of NUMBER.
+
+arguments: (NUMBER)
+Ftanh
+Return the hyperbolic tangent of NUMBER.
+
+arguments: (NUMBER)
+Fabs
+Return the absolute value of NUMBER.
+
+arguments: (NUMBER)
+Ffloat
+Return the floating point number numerically equal to NUMBER.
+
+arguments: (NUMBER)
+Flogb
+Return largest integer <= the base 2 log of the magnitude of NUMBER.
+This is the same as the exponent of a float.
+
+arguments: (NUMBER)
+Fceiling
+Return the smallest integer no less than NUMBER.  (Round toward +inf.)
+
+arguments: (NUMBER)
+Ffloor
+Return the largest integer no greater than NUMBER.  (Round towards -inf.)
+With optional second argument DIVISOR, return the largest integer no
+greater than NUMBER/DIVISOR.
+
+arguments: (NUMBER &optional DIVISOR)
+Fround
+Return the nearest integer to NUMBER.
+
+arguments: (NUMBER)
+Ftruncate
+Truncate a floating point number to an integer.
+Rounds the value toward zero.
+
+arguments: (NUMBER)
+Ffceiling
+Return the smallest integer no less than NUMBER, as a float.
+(Round toward +inf.)
+
+arguments: (NUMBER)
+Fffloor
+Return the largest integer no greater than NUMBER, as a float.
+(Round towards -inf.)
+
+arguments: (NUMBER)
+Ffround
+Return the nearest integer to NUMBER, as a float.
+
+arguments: (NUMBER)
+Fftruncate
+Truncate a floating point number to an integral float value.
+Rounds the value toward zero.
+
+arguments: (NUMBER)
+Fidentity
+Return the argument unchanged.
+
+arguments: (ARG)
+Frandom
+Return a pseudo-random number.
+All integers representable in Lisp are equally likely.
+  On most systems, this is 28 bits' worth.
+With positive integer argument N, return random number in interval [0,N).
+With argument t, set the random number seed from the current time and pid.
+
+arguments: (&optional LIMIT)
+Flength
+Return the length of vector, bit vector, list or string SEQUENCE.
+
+arguments: (SEQUENCE)
+Fsafe-length
+Return the length of a list, but avoid error or infinite loop.
+This function never gets an error.  If LIST is not really a list,
+it returns 0.  If LIST is circular, it returns a finite value
+which is at least the number of distinct elements.
+
+arguments: (LIST)
+Fstring-equal
+Return t if two strings have identical contents.
+Case is significant.  Text properties are ignored.
+(Under XEmacs, `equal' also ignores text properties and extents in
+strings, but this is not the case under FSF Emacs 19.  In FSF Emacs 20
+`equal' is the same as in XEmacs, in that respect.)
+Symbols are also allowed; their print names are used instead.
+
+arguments: (STRING1 STRING2)
+Fstring-lessp
+Return t if first arg string is less than second in lexicographic order.
+If I18N2 support (but not Mule support) was compiled in, ordering is
+determined by the locale. (Case is significant for the default C locale.)
+In all other cases, comparison is simply done on a character-by-
+character basis using the numeric value of a character. (Note that
+this may not produce particularly meaningful results under Mule if
+characters from different charsets are being compared.)
+
+Symbols are also allowed; their print names are used instead.
+
+The reason that the I18N2 locale-specific collation is not used under
+Mule is that the locale model of internationalization does not handle
+multiple charsets and thus has no hope of working properly under Mule.
+What we really should do is create a collation table over all built-in
+charsets.  This is extremely difficult to do from scratch, however.
+
+Unicode is a good first step towards solving this problem.  In fact,
+it is quite likely that a collation table exists (or will exist) for
+Unicode.  When Unicode support is added to XEmacs/Mule, this problem
+may be solved.
+
+arguments: (STRING1 STRING2)
+Fstring-modified-tick
+Return STRING's tick counter, incremented for each change to the string.
+Each string has a tick counter which is incremented each time the contents
+of the string are changed (e.g. with `aset').  It wraps around occasionally.
+
+arguments: (STRING)
+Fappend
+Concatenate all the arguments and make the result a list.
+The result is a list whose elements are the elements of all the arguments.
+Each argument may be a list, vector, bit vector, or string.
+The last argument is not copied, just used as the tail of the new list.
+Also see: `nconc'.Fconcat
+Concatenate all the arguments and make the result a string.
+The result is a string whose elements are the elements of all the arguments.
+Each argument may be a string or a list or vector of characters.
+
+As of XEmacs 21.0, this function does NOT accept individual integers
+as arguments.  Old code that relies on, for example, (concat "foo" 50)
+returning "foo50" will fail.  To fix such code, either apply
+`int-to-string' to the integer argument, or use `format'.Fvconcat
+Concatenate all the arguments and make the result a vector.
+The result is a vector whose elements are the elements of all the arguments.
+Each argument may be a list, vector, bit vector, or string.Fbvconcat
+Concatenate all the arguments and make the result a bit vector.
+The result is a bit vector whose elements are the elements of all the
+arguments.  Each argument may be a list, vector, bit vector, or string.Fcopy-list
+Return a copy of list LIST, which may be a dotted list.
+The elements of LIST are not copied; they are shared
+with the original.
+
+arguments: (LIST)
+Fcopy-sequence
+Return a copy of list, vector, bit vector or string SEQUENCE.
+The elements of a list or vector are not copied; they are shared
+with the original. SEQUENCE may be a dotted list.
+
+arguments: (SEQUENCE)
+Fcopy-alist
+Return a copy of ALIST.
+This is an alist which represents the same mapping from objects to objects,
+but does not share the alist structure with ALIST.
+The objects mapped (cars and cdrs of elements of the alist)
+are shared, however.
+Elements of ALIST that are not conses are also shared.
+
+arguments: (ALIST)
+Fcopy-tree
+Return a copy of a list and substructures.
+The argument is copied, and any lists contained within it are copied
+recursively.  Circularities and shared substructures are not preserved.
+Second arg VECP causes vectors to be copied, too.  Strings and bit vectors
+are not copied.
+
+arguments: (ARG &optional VECP)
+Fsubstring
+Return the substring of STRING starting at START and ending before END.
+END may be nil or omitted; then the substring runs to the end of STRING.
+If START or END is negative, it counts from the end.
+Relevant parts of the string-extent-data are copied to the new string.
+
+arguments: (STRING START &optional END)
+Fsubseq
+Return the subsequence of SEQUENCE starting at START and ending before END.
+END may be omitted; then the subsequence runs to the end of SEQUENCE.
+If START or END is negative, it counts from the end.
+The returned subsequence is always of the same type as SEQUENCE.
+If SEQUENCE is a string, relevant parts of the string-extent-data
+are copied to the new string.
+
+arguments: (SEQUENCE START &optional END)
+Fnthcdr
+Take cdr N times on LIST, and return the result.
+
+arguments: (N LIST)
+Fnth
+Return the Nth element of LIST.
+N counts from zero.  If LIST is not that long, nil is returned.
+
+arguments: (N LIST)
+Felt
+Return element of SEQUENCE at index N.
+
+arguments: (SEQUENCE N)
+Flast
+Return the tail of list LIST, of length N (default 1).
+LIST may be a dotted list, but not a circular list.
+Optional argument N must be a non-negative integer.
+If N is zero, then the atom that terminates the list is returned.
+If N is greater than the length of LIST, then LIST itself is returned.
+
+arguments: (LIST &optional N)
+Fnbutlast
+Modify LIST to remove the last N (default 1) elements.
+If LIST has N or fewer elements, nil is returned and LIST is unmodified.
+
+arguments: (LIST &optional N)
+Fbutlast
+Return a copy of LIST with the last N (default 1) elements removed.
+If LIST has N or fewer elements, nil is returned.
+
+arguments: (LIST &optional N)
+Fmember
+Return non-nil if ELT is an element of LIST.  Comparison done with `equal'.
+The value is actually the tail of LIST whose car is ELT.
+
+arguments: (ELT LIST)
+Fold-member
+Return non-nil if ELT is an element of LIST.  Comparison done with `old-equal'.
+The value is actually the tail of LIST whose car is ELT.
+This function is provided only for byte-code compatibility with v19.
+Do not use it.
+
+arguments: (ELT LIST)
+Fmemq
+Return non-nil if ELT is an element of LIST.  Comparison done with `eq'.
+The value is actually the tail of LIST whose car is ELT.
+
+arguments: (ELT LIST)
+Fold-memq
+Return non-nil if ELT is an element of LIST.  Comparison done with `old-eq'.
+The value is actually the tail of LIST whose car is ELT.
+This function is provided only for byte-code compatibility with v19.
+Do not use it.
+
+arguments: (ELT LIST)
+Fassoc
+Return non-nil if KEY is `equal' to the car of an element of ALIST.
+The value is actually the element of ALIST whose car equals KEY.
+
+arguments: (KEY ALIST)
+Fold-assoc
+Return non-nil if KEY is `old-equal' to the car of an element of ALIST.
+The value is actually the element of ALIST whose car equals KEY.
+
+arguments: (KEY ALIST)
+Fassq
+Return non-nil if KEY is `eq' to the car of an element of ALIST.
+The value is actually the element of ALIST whose car is KEY.
+Elements of ALIST that are not conses are ignored.
+
+arguments: (KEY ALIST)
+Fold-assq
+Return non-nil if KEY is `old-eq' to the car of an element of ALIST.
+The value is actually the element of ALIST whose car is KEY.
+Elements of ALIST that are not conses are ignored.
+This function is provided only for byte-code compatibility with v19.
+Do not use it.
+
+arguments: (KEY ALIST)
+Frassoc
+Return non-nil if VALUE is `equal' to the cdr of an element of ALIST.
+The value is actually the element of ALIST whose cdr equals VALUE.
+
+arguments: (VALUE ALIST)
+Fold-rassoc
+Return non-nil if VALUE is `old-equal' to the cdr of an element of ALIST.
+The value is actually the element of ALIST whose cdr equals VALUE.
+
+arguments: (VALUE ALIST)
+Frassq
+Return non-nil if VALUE is `eq' to the cdr of an element of ALIST.
+The value is actually the element of ALIST whose cdr is VALUE.
+
+arguments: (VALUE ALIST)
+Fold-rassq
+Return non-nil if VALUE is `old-eq' to the cdr of an element of ALIST.
+The value is actually the element of ALIST whose cdr is VALUE.
+
+arguments: (VALUE ALIST)
+Fdelete
+Delete by side effect any occurrences of ELT as a member of LIST.
+The modified LIST is returned.  Comparison is done with `equal'.
+If the first member of LIST is ELT, there is no way to remove it by side
+effect; therefore, write `(setq foo (delete element foo))' to be sure
+of changing the value of `foo'.
+Also see: `remove'.
+
+arguments: (ELT LIST)
+Fold-delete
+Delete by side effect any occurrences of ELT as a member of LIST.
+The modified LIST is returned.  Comparison is done with `old-equal'.
+If the first member of LIST is ELT, there is no way to remove it by side
+effect; therefore, write `(setq foo (old-delete element foo))' to be sure
+of changing the value of `foo'.
+
+arguments: (ELT LIST)
+Fdelq
+Delete by side effect any occurrences of ELT as a member of LIST.
+The modified LIST is returned.  Comparison is done with `eq'.
+If the first member of LIST is ELT, there is no way to remove it by side
+effect; therefore, write `(setq foo (delq element foo))' to be sure of
+changing the value of `foo'.
+
+arguments: (ELT LIST)
+Fold-delq
+Delete by side effect any occurrences of ELT as a member of LIST.
+The modified LIST is returned.  Comparison is done with `old-eq'.
+If the first member of LIST is ELT, there is no way to remove it by side
+effect; therefore, write `(setq foo (old-delq element foo))' to be sure of
+changing the value of `foo'.
+
+arguments: (ELT LIST)
+Fremassoc
+Delete by side effect any elements of ALIST whose car is `equal' to KEY.
+The modified ALIST is returned.  If the first member of ALIST has a car
+that is `equal' to KEY, there is no way to remove it by side effect;
+therefore, write `(setq foo (remassoc key foo))' to be sure of changing
+the value of `foo'.
+
+arguments: (KEY ALIST)
+Fremassq
+Delete by side effect any elements of ALIST whose car is `eq' to KEY.
+The modified ALIST is returned.  If the first member of ALIST has a car
+that is `eq' to KEY, there is no way to remove it by side effect;
+therefore, write `(setq foo (remassq key foo))' to be sure of changing
+the value of `foo'.
+
+arguments: (KEY ALIST)
+Fremrassoc
+Delete by side effect any elements of ALIST whose cdr is `equal' to VALUE.
+The modified ALIST is returned.  If the first member of ALIST has a car
+that is `equal' to VALUE, there is no way to remove it by side effect;
+therefore, write `(setq foo (remrassoc value foo))' to be sure of changing
+the value of `foo'.
+
+arguments: (VALUE ALIST)
+Fremrassq
+Delete by side effect any elements of ALIST whose cdr is `eq' to VALUE.
+The modified ALIST is returned.  If the first member of ALIST has a car
+that is `eq' to VALUE, there is no way to remove it by side effect;
+therefore, write `(setq foo (remrassq value foo))' to be sure of changing
+the value of `foo'.
+
+arguments: (VALUE ALIST)
+Fnreverse
+Reverse LIST by destructively modifying cdr pointers.
+Return the beginning of the reversed list.
+Also see: `reverse'.
+
+arguments: (LIST)
+Freverse
+Reverse LIST, copying.  Return the beginning of the reversed list.
+See also the function `nreverse', which is used more often.
+
+arguments: (LIST)
+Fsort
+Sort LIST, stably, comparing elements using PREDICATE.
+Returns the sorted list.  LIST is modified by side effects.
+PREDICATE is called with two elements of LIST, and should return T
+if the first element is "less" than the second.
+
+arguments: (LIST PREDICATE)
+Fplists-eq
+Return non-nil if property lists A and B are `eq'.
+A property list is an alternating list of keywords and values.
+ This function does order-insensitive comparisons of the property lists:
+ For example, the property lists '(a 1 b 2) and '(b 2 a 1) are equal.
+ Comparison between values is done using `eq'.  See also `plists-equal'.
+If optional arg NIL-MEANS-NOT-PRESENT is non-nil, then a property with
+ a nil value is ignored.  This feature is a virus that has infected
+ old Lisp implementations, but should not be used except for backward
+ compatibility.
+
+arguments: (A B &optional NIL-MEANS-NOT-PRESENT)
+Fplists-equal
+Return non-nil if property lists A and B are `equal'.
+A property list is an alternating list of keywords and values.  This
+ function does order-insensitive comparisons of the property lists: For
+ example, the property lists '(a 1 b 2) and '(b 2 a 1) are equal.
+ Comparison between values is done using `equal'.  See also `plists-eq'.
+If optional arg NIL-MEANS-NOT-PRESENT is non-nil, then a property with
+ a nil value is ignored.  This feature is a virus that has infected
+ old Lisp implementations, but should not be used except for backward
+ compatibility.
+
+arguments: (A B &optional NIL-MEANS-NOT-PRESENT)
+Flax-plists-eq
+Return non-nil if lax property lists A and B are `eq'.
+A property list is an alternating list of keywords and values.
+ This function does order-insensitive comparisons of the property lists:
+ For example, the property lists '(a 1 b 2) and '(b 2 a 1) are equal.
+ Comparison between values is done using `eq'.  See also `plists-equal'.
+A lax property list is like a regular one except that comparisons between
+ keywords is done using `equal' instead of `eq'.
+If optional arg NIL-MEANS-NOT-PRESENT is non-nil, then a property with
+ a nil value is ignored.  This feature is a virus that has infected
+ old Lisp implementations, but should not be used except for backward
+ compatibility.
+
+arguments: (A B &optional NIL-MEANS-NOT-PRESENT)
+Flax-plists-equal
+Return non-nil if lax property lists A and B are `equal'.
+A property list is an alternating list of keywords and values.  This
+ function does order-insensitive comparisons of the property lists: For
+ example, the property lists '(a 1 b 2) and '(b 2 a 1) are equal.
+ Comparison between values is done using `equal'.  See also `plists-eq'.
+A lax property list is like a regular one except that comparisons between
+ keywords is done using `equal' instead of `eq'.
+If optional arg NIL-MEANS-NOT-PRESENT is non-nil, then a property with
+ a nil value is ignored.  This feature is a virus that has infected
+ old Lisp implementations, but should not be used except for backward
+ compatibility.
+
+arguments: (A B &optional NIL-MEANS-NOT-PRESENT)
+Fplist-get
+Extract a value from a property list.
+PLIST is a property list, which is a list of the form
+(PROPERTY1 VALUE1 PROPERTY2 VALUE2...).
+PROPERTY is usually a symbol.
+This function returns the value corresponding to the PROPERTY,
+or DEFAULT if PROPERTY is not one of the properties on the list.
+
+arguments: (PLIST PROPERTY &optional DEFAULT)
+Fplist-put
+Change value in PLIST of PROPERTY to VALUE.
+PLIST is a property list, which is a list of the form
+(PROPERTY1 VALUE1 PROPERTY2 VALUE2 ...).
+PROPERTY is usually a symbol and VALUE is any object.
+If PROPERTY is already a property on the list, its value is set to VALUE,
+otherwise the new PROPERTY VALUE pair is added.
+The new plist is returned; use `(setq x (plist-put x property value))'
+to be sure to use the new value.  PLIST is modified by side effect.
+
+arguments: (PLIST PROPERTY VALUE)
+Fplist-remprop
+Remove from PLIST the property PROPERTY and its value.
+PLIST is a property list, which is a list of the form
+(PROPERTY1 VALUE1 PROPERTY2 VALUE2 ...).
+PROPERTY is usually a symbol.
+The new plist is returned; use `(setq x (plist-remprop x property))'
+to be sure to use the new value.  PLIST is modified by side effect.
+
+arguments: (PLIST PROPERTY)
+Fplist-member
+Return t if PROPERTY has a value specified in PLIST.
+
+arguments: (PLIST PROPERTY)
+Fcheck-valid-plist
+Given a plist, signal an error if there is anything wrong with it.
+This means that it's a malformed or circular plist.
+
+arguments: (PLIST)
+Fvalid-plist-p
+Given a plist, return non-nil if its format is correct.
+If it returns nil, `check-valid-plist' will signal an error when given
+the plist; that means it's a malformed or circular plist.
+
+arguments: (PLIST)
+Fcanonicalize-plist
+Destructively remove any duplicate entries from a plist.
+In such cases, the first entry applies.
+
+If optional arg NIL-MEANS-NOT-PRESENT is non-nil, then a property with
+ a nil value is removed.  This feature is a virus that has infected
+ old Lisp implementations, but should not be used except for backward
+ compatibility.
+
+The new plist is returned.  If NIL-MEANS-NOT-PRESENT is given, the
+ return value may not be EQ to the passed-in value, so make sure to
+ `setq' the value back into where it came from.
+
+arguments: (PLIST &optional NIL-MEANS-NOT-PRESENT)
+Flax-plist-get
+Extract a value from a lax property list.
+LAX-PLIST is a lax property list, which is a list of the form
+(PROPERTY1 VALUE1 PROPERTY2 VALUE2...), where comparisons between
+properties is done using `equal' instead of `eq'.
+PROPERTY is usually a symbol.
+This function returns the value corresponding to PROPERTY,
+or DEFAULT if PROPERTY is not one of the properties on the list.
+
+arguments: (LAX-PLIST PROPERTY &optional DEFAULT)
+Flax-plist-put
+Change value in LAX-PLIST of PROPERTY to VALUE.
+LAX-PLIST is a lax property list, which is a list of the form
+(PROPERTY1 VALUE1 PROPERTY2 VALUE2...), where comparisons between
+properties is done using `equal' instead of `eq'.
+PROPERTY is usually a symbol and VALUE is any object.
+If PROPERTY is already a property on the list, its value is set to
+VALUE, otherwise the new PROPERTY VALUE pair is added.
+The new plist is returned; use `(setq x (lax-plist-put x property value))'
+to be sure to use the new value.  LAX-PLIST is modified by side effect.
+
+arguments: (LAX-PLIST PROPERTY VALUE)
+Flax-plist-remprop
+Remove from LAX-PLIST the property PROPERTY and its value.
+LAX-PLIST is a lax property list, which is a list of the form
+(PROPERTY1 VALUE1 PROPERTY2 VALUE2...), where comparisons between
+properties is done using `equal' instead of `eq'.
+PROPERTY is usually a symbol.
+The new plist is returned; use `(setq x (lax-plist-remprop x property))'
+to be sure to use the new value.  LAX-PLIST is modified by side effect.
+
+arguments: (LAX-PLIST PROPERTY)
+Flax-plist-member
+Return t if PROPERTY has a value specified in LAX-PLIST.
+LAX-PLIST is a lax property list, which is a list of the form
+(PROPERTY1 VALUE1 PROPERTY2 VALUE2...), where comparisons between
+properties is done using `equal' instead of `eq'.
+
+arguments: (LAX-PLIST PROPERTY)
+Fcanonicalize-lax-plist
+Destructively remove any duplicate entries from a lax plist.
+In such cases, the first entry applies.
+
+If optional arg NIL-MEANS-NOT-PRESENT is non-nil, then a property with
+ a nil value is removed.  This feature is a virus that has infected
+ old Lisp implementations, but should not be used except for backward
+ compatibility.
+
+The new plist is returned.  If NIL-MEANS-NOT-PRESENT is given, the
+ return value may not be EQ to the passed-in value, so make sure to
+ `setq' the value back into where it came from.
+
+arguments: (LAX-PLIST &optional NIL-MEANS-NOT-PRESENT)
+Fdestructive-alist-to-plist
+Convert association list ALIST into the equivalent property-list form.
+The plist is returned.  This converts from
+
+((a . 1) (b . 2) (c . 3))
+
+into
+
+(a 1 b 2 c 3)
+
+The original alist is destroyed in the process of constructing the plist.
+See also `alist-to-plist'.
+
+arguments: (ALIST)
+Fget
+Return the value of OBJECT's PROPERTY property.
+This is the last VALUE stored with `(put OBJECT PROPERTY VALUE)'.
+If there is no such property, return optional third arg DEFAULT
+(which defaults to `nil').  OBJECT can be a symbol, string, extent,
+face, or glyph.  See also `put', `remprop', and `object-plist'.
+
+arguments: (OBJECT PROPERTY &optional DEFAULT)
+Fput
+Set OBJECT's PROPERTY to VALUE.
+It can be subsequently retrieved with `(get OBJECT PROPERTY)'.
+OBJECT can be a symbol, face, extent, or string.
+For a string, no properties currently have predefined meanings.
+For the predefined properties for extents, see `set-extent-property'.
+For the predefined properties for faces, see `set-face-property'.
+See also `get', `remprop', and `object-plist'.
+
+arguments: (OBJECT PROPERTY VALUE)
+Fremprop
+Remove, from OBJECT's property list, PROPERTY and its corresponding value.
+OBJECT can be a symbol, string, extent, face, or glyph.  Return non-nil
+if the property list was actually modified (i.e. if PROPERTY was present
+in the property list).  See also `get', `put', and `object-plist'.
+
+arguments: (OBJECT PROPERTY)
+Fobject-plist
+Return a property list of OBJECT's properties.
+For a symbol, this is equivalent to `symbol-plist'.
+OBJECT can be a symbol, string, extent, face, or glyph.
+Do not modify the returned property list directly;
+this may or may not have the desired effects.  Use `put' instead.
+
+arguments: (OBJECT)
+Fequal
+Return t if two Lisp objects have similar structure and contents.
+They must have the same data type.
+Conses are compared by comparing the cars and the cdrs.
+Vectors and strings are compared element by element.
+Numbers are compared by value.  Symbols must match exactly.
+
+arguments: (OBJECT1 OBJECT2)
+Fold-equal
+Return t if two Lisp objects have similar structure and contents.
+They must have the same data type.
+(Note, however, that an exception is made for characters and integers;
+this is known as the "char-int confoundance disease." See `eq' and
+`old-eq'.)
+This function is provided only for byte-code compatibility with v19.
+Do not use it.
+
+arguments: (OBJECT1 OBJECT2)
+Ffillarray
+Destructively modify ARRAY by replacing each element with ITEM.
+ARRAY is a vector, bit vector, or string.
+
+arguments: (ARRAY ITEM)
+Fnconc
+Concatenate any number of lists by altering them.
+Only the last argument is not altered, and need not be a list.
+Also see: `append'.
+If the first argument is nil, there is no way to modify it by side
+effect; therefore, write `(setq foo (nconc foo list))' to be sure of
+changing the value of `foo'.Fmapconcat
+Apply FUNCTION to each element of SEQUENCE, and concat the results as strings.
+In between each pair of results, insert SEPARATOR.  Thus, using " " as
+SEPARATOR results in spaces between the values returned by FUNCTION.
+SEQUENCE may be a list, a vector, a bit vector, or a string.
+
+arguments: (FUNCTION SEQUENCE SEPARATOR)
+Fmapcar
+Apply FUNCTION to each element of SEQUENCE; return a list of the results.
+The result is a list of the same length as SEQUENCE.
+SEQUENCE may be a list, a vector, a bit vector, or a string.
+
+arguments: (FUNCTION SEQUENCE)
+Fmapvector
+Apply FUNCTION to each element of SEQUENCE; return a vector of the results.
+The result is a vector of the same length as SEQUENCE.
+SEQUENCE may be a list, a vector, a bit vector, or a string.
+
+arguments: (FUNCTION SEQUENCE)
+Fmapc-internal
+Apply FUNCTION to each element of SEQUENCE.
+SEQUENCE may be a list, a vector, a bit vector, or a string.
+This function is like `mapcar' but does not accumulate the results,
+which is more efficient if you do not use the results.
+
+The difference between this and `mapc' is that `mapc' supports all
+the spiffy Common Lisp arguments.  You should normally use `mapc'.
+
+arguments: (FUNCTION SEQUENCE)
+Freplace-list
+Destructively replace the list OLD with NEW.
+This is like (copy-sequence NEW) except that it reuses the
+conses in OLD as much as possible.  If OLD and NEW are the same
+length, no consing will take place.
+
+arguments: (OLD NEW)
+Fload-average
+Return list of 1 minute, 5 minute and 15 minute load averages.
+Each of the three load averages is multiplied by 100,
+then converted to integer.
+
+When USE-FLOATS is non-nil, floats will be used instead of integers.
+These floats are not multiplied by 100.
+
+If the 5-minute or 15-minute load averages are not available, return a
+shortened list, containing only those averages which are available.
+
+On some systems, this won't work due to permissions on /dev/kmem,
+in which case you can't use this.
+
+arguments: (&optional USE-FLOATS)
+Ffeaturep
+Return non-nil if feature FEXP is present in this Emacs.
+Use this to conditionalize execution of lisp code based on the
+ presence or absence of emacs or environment extensions.
+FEXP can be a symbol, a number, or a list.
+If it is a symbol, that symbol is looked up in the `features' variable,
+ and non-nil will be returned if found.
+If it is a number, the function will return non-nil if this Emacs
+ has an equal or greater version number than FEXP.
+If it is a list whose car is the symbol `and', it will return
+ non-nil if all the features in its cdr are non-nil.
+If it is a list whose car is the symbol `or', it will return non-nil
+ if any of the features in its cdr are non-nil.
+If it is a list whose car is the symbol `not', it will return
+ non-nil if the feature is not present.
+
+Examples:
+
+  (featurep 'xemacs)
+    => ; Non-nil on XEmacs.
+
+  (featurep '(and xemacs gnus))
+    => ; Non-nil on XEmacs with Gnus loaded.
+
+  (featurep '(or tty-frames (and emacs 19.30)))
+    => ; Non-nil if this Emacs supports TTY frames.
+
+  (featurep '(or (and xemacs 19.15) (and emacs 19.34)))
+    => ; Non-nil on XEmacs 19.15 and later, or FSF Emacs 19.34 and later.
+
+  (featurep '(and xemacs 21.02))
+    => ; Non-nil on XEmacs 21.2 and later.
+
+NOTE: The advanced arguments of this function (anything other than a
+symbol) are not yet supported by FSF Emacs.  If you feel they are useful
+for supporting multiple Emacs variants, lobby Richard Stallman at
+<bug-gnu-emacs@gnu.org>.
+
+arguments: (FEXP)
+Fprovide
+Announce that FEATURE is a feature of the current Emacs.
+This function updates the value of the variable `features'.
+
+arguments: (FEATURE)
+Frequire
+If feature FEATURE is not loaded, load it from FILENAME.
+If FEATURE is not a member of the list `features', then the feature
+is not loaded; so load the file FILENAME.
+If FILENAME is omitted, the printname of FEATURE is used as the file name.
+
+arguments: (FEATURE &optional FILENAME)
+Fbase64-encode-region
+Base64-encode the region between START and END.
+Return the length of the encoded text.
+Optional third argument NO-LINE-BREAK means do not break long lines
+into shorter lines.
+
+arguments: (START END &optional NO-LINE-BREAK)
+Fbase64-encode-string
+Base64 encode STRING and return the result.
+Optional argument NO-LINE-BREAK means do not break long lines
+into shorter lines.
+
+arguments: (STRING &optional NO-LINE-BREAK)
+Fbase64-decode-region
+Base64-decode the region between START and END.
+Return the length of the decoded text.
+If the region can't be decoded, return nil and don't modify the buffer.
+Characters out of the base64 alphabet are ignored.
+
+arguments: (START END)
+Fbase64-decode-string
+Base64-decode STRING and return the result.
+Characters out of the base64 alphabet are ignored.
+
+arguments: (STRING)
+Vfeatures
+A list of symbols which are the features of the executing emacs.
+Used by `featurep' and `require', and altered by `provide'.Fbuffer-syntactic-context
+Return the syntactic context of BUFFER at point.
+If BUFFER is nil or omitted, the current buffer is assumed.
+The returned value is one of the following symbols:
+
+	nil		; meaning no special interpretation
+	string		; meaning point is within a string
+	comment		; meaning point is within a line comment
+	block-comment	; meaning point is within a block comment
+
+See also the function `buffer-syntactic-context-depth', which returns
+the current nesting-depth within all parenthesis-syntax delimiters
+and the function `syntactically-sectionize', which will map a function
+over each syntactic context in a region.
+
+WARNING: this may alter match-data.
+
+arguments: (&optional BUFFER)
+Fbuffer-syntactic-context-depth
+Return the depth within all parenthesis-syntax delimiters at point.
+If BUFFER is nil or omitted, the current buffer is assumed.
+WARNING: this may alter match-data.
+
+arguments: (&optional BUFFER)
+Fsyntactically-sectionize
+Call FUNCTION for each contiguous syntactic context in the region.
+Call the given function with four arguments: the start and end of the
+region, a symbol representing the syntactic context, and the current
+depth (as returned by the functions `buffer-syntactic-context' and
+`buffer-syntactic-context-depth').  When this function is called, the
+current buffer will be set to BUFFER.
+
+WARNING: this may alter match-data.
+
+arguments: (FUNCTION START END &optional BUFFER)
+Fmake-frame
+Create and return a new frame, displaying the current buffer.
+Runs the functions listed in `create-frame-hook' after frame creation.
+
+Optional argument PROPS is a property list (a list of alternating
+keyword-value specifications) of properties for the new frame.
+(An alist is accepted for backward compatibility but should not
+be passed in.)
+
+See `set-frame-properties', `default-x-frame-plist', and
+`default-tty-frame-plist' for the specially-recognized properties.
+
+arguments: (&optional PROPS DEVICE)
+Fframep
+Return non-nil if OBJECT is a frame.
+Also see `frame-live-p'.
+Note that FSF Emacs kludgily returns a value indicating what type of
+frame this is.  Use the cleaner function `frame-type' for that.
+
+arguments: (OBJECT)
+Fframe-live-p
+Return non-nil if OBJECT is a frame which has not been deleted.
+
+arguments: (OBJECT)
+Ffocus-frame
+Select FRAME and give it the window system focus.
+This function is not affected by the value of `focus-follows-mouse'.
+
+arguments: (FRAME)
+Fselect-frame
+Select the frame FRAME.
+Subsequent editing commands apply to its selected window.
+The selection of FRAME lasts until the next time the user does
+something to select a different frame, or until the next time this
+function is called.
+
+Note that this does not actually cause the window-system focus to be
+set to this frame, or the `select-frame-hook' or `deselect-frame-hook'
+to be run, until the next time that XEmacs is waiting for an event.
+
+Also note that when focus-follows-mouse is non-nil, the frame
+selection is temporary and is reverted when the current command
+terminates, much like the buffer selected by `set-buffer'.  In order
+to effect a permanent focus change, use `focus-frame'.
+
+arguments: (FRAME)
+Fselected-frame
+Return the frame that is now selected on device DEVICE.
+If DEVICE is not specified, the selected device will be used.
+If no frames exist on the device, nil is returned.
+
+arguments: (&optional DEVICE)
+Factive-minibuffer-window
+Return the currently active minibuffer window, or nil if none.
+
+arguments: ()
+Flast-nonminibuf-frame
+Return the most-recently-selected non-minibuffer-only frame on CONSOLE.
+This will always be the same as (selected-frame device) unless the
+selected frame is a minibuffer-only frame.
+CONSOLE defaults to the selected console if omitted.
+
+arguments: (&optional CONSOLE)
+Fframe-root-window
+Return the root-window of FRAME.
+If omitted, FRAME defaults to the currently selected frame.
+
+arguments: (&optional FRAME)
+Fframe-selected-window
+Return the selected window of frame object FRAME.
+If omitted, FRAME defaults to the currently selected frame.
+
+arguments: (&optional FRAME)
+Fset-frame-selected-window
+Set the selected window of FRAME to WINDOW.
+If FRAME is nil, the selected frame is used.
+If FRAME is the selected frame, this makes WINDOW the selected window.
+
+arguments: (FRAME WINDOW)
+Fframe-device
+Return the device that FRAME is on.
+If omitted, FRAME defaults to the currently selected frame.
+
+arguments: (&optional FRAME)
+Fnext-frame
+Return the next frame of the right type in the frame list after FRAME.
+WHICH-FRAMES controls which frames are eligible to be returned; all
+others will be skipped.  Note that if there is only one eligible
+frame, then `next-frame' called repeatedly will always return
+the same frame, and if there is no eligible frame, then FRAME is
+returned.
+
+Possible values for WHICH-FRAMES are
+
+'visible		 Consider only frames that are visible.
+'iconic			 Consider only frames that are iconic.
+'invisible		 Consider only frames that are invisible
+			 (this is different from iconic).
+'visible-iconic		 Consider frames that are visible or iconic.
+'invisible-iconic	 Consider frames that are invisible or iconic.
+'nomini			 Consider all frames except minibuffer-only ones.
+'visible-nomini		 Like `visible' but omits minibuffer-only frames.
+'iconic-nomini		 Like `iconic' but omits minibuffer-only frames.
+'invisible-nomini	 Like `invisible' but omits minibuffer-only frames.
+'visible-iconic-nomini	 Like `visible-iconic' but omits minibuffer-only
+			 frames.
+'invisible-iconic-nomini Like `invisible-iconic' but omits minibuffer-only
+			 frames.
+any other value		 Consider all frames.
+
+If WHICH-FRAMES is omitted, 'nomini is used.  A value for WHICH-FRAMES
+of 0 (a number) is treated like 'iconic, for backwards compatibility.
+
+If WHICH-FRAMES is a window, include only its own frame and any frame
+now using that window as the minibuffer.
+
+The optional third argument WHICH-DEVICES further clarifies on which
+devices to search for frames as specified by WHICH-FRAMES.
+If nil or omitted, search all devices on FRAME's console.
+If a device, only search that device.
+If a console, search all devices on that console.
+If a device type, search all devices of that type.
+If `window-system', search all window-system devices.
+Any other non-nil value means search all devices.
+
+arguments: (&optional FRAME WHICH-FRAMES WHICH-DEVICES)
+Fprevious-frame
+Return the next frame of the right type in the frame list after FRAME.
+WHICH-FRAMES controls which frames are eligible to be returned; all
+others will be skipped.  Note that if there is only one eligible
+frame, then `previous-frame' called repeatedly will always return
+the same frame, and if there is no eligible frame, then FRAME is
+returned.
+
+See `next-frame' for an explanation of the WHICH-FRAMES and WHICH-DEVICES
+arguments.
+
+arguments: (&optional FRAME WHICH-FRAMES WHICH-DEVICES)
+Fdelete-frame
+Delete FRAME, permanently eliminating it from use.
+If omitted, FRAME defaults to the selected frame.
+A frame may not be deleted if its minibuffer is used by other frames.
+Normally, you cannot delete the last non-minibuffer-only frame (you must
+use `save-buffers-kill-emacs' or `kill-emacs').  However, if optional
+second argument FORCE is non-nil, you can delete the last frame. (This
+will automatically call `save-buffers-kill-emacs'.)
+
+arguments: (&optional FRAME FORCE)
+Fmouse-pixel-position
+Return a list (WINDOW X . Y) giving the current mouse window and position.
+The position is given in pixel units, where (0, 0) is the upper-left corner
+of the window.
+
+When the cursor is not over a window, the return value is a list (nil nil).
+
+DEVICE specifies the device on which to read the mouse position, and
+defaults to the selected device.  If the device is a mouseless terminal
+or XEmacs hasn't been programmed to read its mouse position, it returns
+the device's selected window for WINDOW and nil for X and Y.
+
+arguments: (&optional DEVICE)
+Fmouse-position
+Return a list (WINDOW X . Y) giving the current mouse window and position.
+The position is of a character under cursor, where (0, 0) is the upper-left
+corner of the window.
+
+When the cursor is not over a character, or not over a window, the return
+value is a list (nil nil).
+
+DEVICE specifies the device on which to read the mouse position, and
+defaults to the selected device.  If the device is a mouseless terminal
+or Emacs hasn't been programmed to read its mouse position, it returns
+the device's selected window for WINDOW and nil for X and Y.
+
+arguments: (&optional DEVICE)
+Fmouse-position-as-motion-event
+Return the current mouse position as a motion event.
+This allows you to call the standard event functions such as
+`event-over-toolbar-p' to determine where the mouse is.
+
+DEVICE specifies the device on which to read the mouse position, and
+defaults to the selected device.  If the mouse position can't be determined
+(e.g. DEVICE is a TTY device), nil is returned instead of an event.
+
+arguments: (&optional DEVICE)
+Fset-mouse-position
+Move the mouse pointer to the center of character cell (X,Y) in WINDOW.
+Note, this is a no-op for an X frame that is not visible.
+If you have just created a frame, you must wait for it to become visible
+before calling this function on it, like this.
+  (while (not (frame-visible-p frame)) (sleep-for .5))
+Note also: Warping the mouse is contrary to the ICCCM, so be very sure
+ that the behavior won't end up being obnoxious!
+
+arguments: (WINDOW X Y)
+Fset-mouse-pixel-position
+Move the mouse pointer to pixel position (X,Y) in WINDOW.
+Note, this is a no-op for an X frame that is not visible.
+If you have just created a frame, you must wait for it to become visible
+before calling this function on it, like this.
+  (while (not (frame-visible-p frame)) (sleep-for .5))
+
+arguments: (WINDOW X Y)
+Fmake-frame-visible
+Make the frame FRAME visible (assuming it is an X-window).
+If omitted, FRAME defaults to the currently selected frame.
+Also raises the frame so that nothing obscures it.
+
+arguments: (&optional FRAME)
+Fmake-frame-invisible
+Unconditionally removes frame from the display (assuming it is an X-window).
+If omitted, FRAME defaults to the currently selected frame.
+If what you want to do is iconify the frame (if the window manager uses
+icons) then you should call `iconify-frame' instead.
+Normally you may not make FRAME invisible if all other frames are invisible
+and uniconified, but if the second optional argument FORCE is non-nil,
+you may do so.
+
+arguments: (&optional FRAME FORCE)
+Ficonify-frame
+Make the frame FRAME into an icon, if the window manager supports icons.
+If omitted, FRAME defaults to the currently selected frame.
+
+arguments: (&optional FRAME)
+Fdeiconify-frame
+Open (de-iconify) the iconified frame FRAME.
+Under X, this is currently the same as `make-frame-visible'.
+If omitted, FRAME defaults to the currently selected frame.
+Also raises the frame so that nothing obscures it.
+
+arguments: (&optional FRAME)
+Fframe-visible-p
+Return non NIL if FRAME is now "visible" (actually in use for display).
+A frame that is not visible is not updated, and, if it works through a
+window system, may not show at all.
+N.B. Under X "visible" means Mapped. It the window is mapped but not
+actually visible on screen then `frame-visible-p' returns 'hidden.
+
+arguments: (&optional FRAME)
+Fframe-totally-visible-p
+Return t if frame is not obscured by any other window system windows.
+Always returns t for tty frames.
+
+arguments: (&optional FRAME)
+Fframe-iconified-p
+Return t if FRAME is iconified.
+Not all window managers use icons; some merely unmap the window, so this
+function is not the inverse of `frame-visible-p'.  It is possible for a
+frame to not be visible and not be iconified either.  However, if the
+frame is iconified, it will not be visible.
+
+arguments: (&optional FRAME)
+Fvisible-frame-list
+Return a list of all frames now "visible" (being updated).
+If DEVICE is specified only frames on that device will be returned.
+Note that under virtual window managers not all these frames are
+necessarily really updated.
+
+arguments: (&optional DEVICE)
+Fraise-frame
+Bring FRAME to the front, so it occludes any frames it overlaps.
+If omitted, FRAME defaults to the currently selected frame.
+If FRAME is invisible, make it visible.
+If Emacs is displaying on an ordinary terminal or some other device which
+doesn't support multiple overlapping frames, this function does nothing.
+
+arguments: (&optional FRAME)
+Flower-frame
+Send FRAME to the back, so it is occluded by any frames that overlap it.
+If omitted, FRAME defaults to the currently selected frame.
+If Emacs is displaying on an ordinary terminal or some other device which
+doesn't support multiple overlapping frames, this function does nothing.
+
+arguments: (&optional FRAME)
+Fdisable-frame
+Disable frame FRAME, so that it cannot have the focus or receive user input.
+This is normally used during modal dialog boxes.
+WARNING: Be very careful not to wedge XEmacs!
+Use an `unwind-protect' that re-enables the frame to avoid this.
+
+arguments: (FRAME)
+Fenable-frame
+Enable frame FRAME, so that it can have the focus and receive user input.
+Frames are normally enabled, unless explicitly disabled using `disable-frame'.
+
+arguments: (FRAME)
+Fprint-job-page-number
+Return current page number for the print job FRAME.
+
+arguments: (FRAME)
+Fprint-job-eject-page
+Eject page in the print job FRAME.
+
+arguments: (FRAME)
+Fset-frame-properties
+Change some properties of a frame.
+PLIST is a property list.
+You can also change frame properties individually using `set-frame-property',
+but it may be more efficient to change many properties at once.
+
+Frame properties can be retrieved using `frame-property' or `frame-properties'.
+
+The following symbols etc. have predefined meanings:
+
+ name		Name of the frame.  Used with X resources.
+		Unchangeable after creation.
+
+ height		Height of the frame, in lines.
+
+ width		Width of the frame, in characters.
+
+ minibuffer	Gives the minibuffer behavior for this frame.  Either
+		t (frame has its own minibuffer), `only' (frame is
+		a minibuffer-only frame), `none' (frame has no minibuffer)
+		or a window (frame uses that window, which is on another
+		frame, as the minibuffer).
+
+ unsplittable	If non-nil, frame cannot be split by `display-buffer'.
+
+ current-display-table, menubar-visible-p, left-margin-width,
+ right-margin-width, minimum-line-ascent, minimum-line-descent,
+ use-left-overflow, use-right-overflow, scrollbar-width, scrollbar-height,
+ default-toolbar, top-toolbar, bottom-toolbar, left-toolbar, right-toolbar,
+ default-toolbar-height, default-toolbar-width, top-toolbar-height,
+ bottom-toolbar-height, left-toolbar-width, right-toolbar-width,
+ default-toolbar-visible-p, top-toolbar-visible-p, bottom-toolbar-visible-p,
+ left-toolbar-visible-p, right-toolbar-visible-p, toolbar-buttons-captioned-p,
+ top-toolbar-border-width, bottom-toolbar-border-width,
+ left-toolbar-border-width, right-toolbar-border-width,
+ modeline-shadow-thickness, has-modeline-p,
+ default-gutter, top-gutter, bottom-gutter, left-gutter, right-gutter,
+ default-gutter-height, default-gutter-width, top-gutter-height,
+ bottom-gutter-height, left-gutter-width, right-gutter-width,
+ default-gutter-visible-p, top-gutter-visible-p, bottom-gutter-visible-p,
+ left-gutter-visible-p, right-gutter-visible-p, top-gutter-border-width,
+ bottom-gutter-border-width, left-gutter-border-width, right-gutter-border-width,
+		[Giving the name of any built-in specifier variable is
+		equivalent to calling `set-specifier' on the specifier,
+		with a locale of FRAME.  Giving the name to `frame-property'
+		calls `specifier-instance' on the specifier.]
+
+ text-pointer-glyph, nontext-pointer-glyph, modeline-pointer-glyph,
+ selection-pointer-glyph, busy-pointer-glyph, toolbar-pointer-glyph,
+ menubar-pointer-glyph, scrollbar-pointer-glyph, gc-pointer-glyph,
+ octal-escape-glyph, control-arrow-glyph, invisible-text-glyph,
+ hscroll-glyph, truncation-glyph, continuation-glyph
+		[Giving the name of any glyph variable is equivalent to
+		calling `set-glyph-image' on the glyph, with a locale
+		of FRAME.  Giving the name to `frame-property' calls
+		`glyph-image-instance' on the glyph.]
+
+ [default foreground], [default background], [default font],
+ [modeline foreground], [modeline background], [modeline font],
+ etc.
+		[Giving a vector of a face and a property is equivalent
+		to calling `set-face-property' on the face and property,
+		with a locale of FRAME.  Giving the vector to
+		`frame-property' calls `face-property-instance' on the
+		face and property.]
+
+Finally, if a frame property symbol has the property `frame-property-alias'
+on it, then the value will be used in place of that symbol when looking
+up and setting frame property values.  This allows you to alias one
+frame property name to another.
+
+See the variables `default-x-frame-plist', `default-tty-frame-plist'
+and `default-mswindows-frame-plist' for a description of the properties
+recognized for particular types of frames.
+
+arguments: (FRAME PLIST)
+Fframe-property
+Return FRAME's value for property PROPERTY.
+Return DEFAULT if there is no such property.
+See `set-frame-properties' for the built-in property names.
+
+arguments: (FRAME PROPERTY &optional DEFAULT)
+Fframe-properties
+Return a property list of the properties of FRAME.
+Do not modify this list; use `set-frame-property' instead.
+
+arguments: (&optional FRAME)
+Fframe-pixel-height
+Return the height in pixels of FRAME.
+
+arguments: (&optional FRAME)
+Fframe-pixel-width
+Return the width in pixels of FRAME.
+
+arguments: (&optional FRAME)
+Fframe-name
+Return the name of FRAME (defaulting to the selected frame).
+This is not the same as the `title' of the frame.
+
+arguments: (&optional FRAME)
+Fframe-modified-tick
+Return FRAME's tick counter, incremented for each change to the frame.
+Each frame has a tick counter which is incremented each time the frame
+is resized, a window is resized, added, or deleted, a face is changed,
+`set-window-buffer' or `select-window' is called on a window in the
+frame, the window-start of a window in the frame has changed, or
+anything else interesting has happened.  It wraps around occasionally.
+No argument or nil as argument means use selected frame as FRAME.
+
+arguments: (&optional FRAME)
+Fset-frame-height
+Specify that the frame FRAME has LINES lines.
+Optional third arg non-nil means that redisplay should use LINES lines
+but that the idea of the actual height of the frame should not be changed.
+
+arguments: (FRAME LINES &optional PRETEND)
+Fset-frame-width
+Specify that the frame FRAME has COLS columns.
+Optional third arg non-nil means that redisplay should use COLS columns
+but that the idea of the actual width of the frame should not be changed.
+
+arguments: (FRAME COLS &optional PRETEND)
+Fset-frame-size
+Set the size of FRAME to COLS by ROWS, measured in characters.
+Optional fourth arg non-nil means that redisplay should use COLS by ROWS
+but that the idea of the actual size of the frame should not be changed.
+
+arguments: (FRAME COLS ROWS &optional PRETEND)
+Fset-frame-position
+Set position of FRAME in pixels to XOFFSET by YOFFSET.
+This is actually the position of the upper left corner of the frame.
+Negative values for XOFFSET or YOFFSET are interpreted relative to
+the rightmost or bottommost possible position (that stays within the screen).
+
+arguments: (FRAME XOFFSET YOFFSET)
+Fset-frame-pointer
+Set the mouse pointer of FRAME to the given pointer image instance.
+You should not call this function directly.  Instead, set one of
+the variables `text-pointer-glyph', `nontext-pointer-glyph',
+`modeline-pointer-glyph', `selection-pointer-glyph',
+`busy-pointer-glyph', or `toolbar-pointer-glyph'.
+
+arguments: (FRAME IMAGE-INSTANCE)
+Vselect-frame-hook
+Function or functions to run just after a new frame is given the focus.
+Note that calling `select-frame' does not necessarily set the focus:
+The actual window-system focus will not be changed until the next time
+that XEmacs is waiting for an event, and even then, the window manager
+may refuse the focus-change request.Vdeselect-frame-hook
+Function or functions to run just before a frame loses the focus.
+See `select-frame-hook'.Vdelete-frame-hook
+Function or functions to call when a frame is deleted.
+One argument, the about-to-be-deleted frame.Vcreate-frame-hook
+Function or functions to call when a frame is created.
+One argument, the newly-created frame.Vmouse-enter-frame-hook
+Function or functions to call when the mouse enters a frame.
+One argument, the frame.
+Be careful not to make assumptions about the window manager's focus model.
+In most cases, the `deselect-frame-hook' is more appropriate.Vmouse-leave-frame-hook
+Function or functions to call when the mouse leaves a frame.
+One argument, the frame.
+Be careful not to make assumptions about the window manager's focus model.
+In most cases, the `select-frame-hook' is more appropriate.Vmap-frame-hook
+Function or functions to call when a frame is mapped.
+One argument, the frame.Vunmap-frame-hook
+Function or functions to call when a frame is unmapped.
+One argument, the frame.Vallow-deletion-of-last-visible-frame
+*Non-nil means to assume the force option to delete-frame.Vadjust-frame-function
+Function or constant controlling adjustment of frame.
+When scrollbars, toolbars, default font etc. change in frame, the frame
+needs to be adjusted. The adjustment is controlled by this variable.
+Legal values are:
+  nil to keep character frame size unchanged when possible (resize)
+  t   to keep pixel size unchanged (never resize)
+  function symbol or lambda form. This function must return boolean
+      value which is treated as above. Function is passed one parameter,
+      the frame being adjusted. It function should not modify or delete
+      the frame.Vmouse-motion-handler
+Handler for motion events.  One arg, the event.
+For most applications, you should use `mode-motion-hook' instead of this.Vsynchronize-minibuffers
+Set to t if all minibuffer windows are to be synchronized.
+This will cause echo area messages to appear in the minibuffers of all
+visible frames.Vframe-title-format
+Controls the title of the window-system window of the selected frame.
+This is the same format as `modeline-format' with the exception that
+%- is ignored.Vframe-icon-title-format
+Controls the title of the icon corresponding to the selected frame.
+See also the variable `frame-title-format'.Vdefault-frame-name
+The default name to assign to newly-created frames.
+This can be overridden by arguments to `make-frame'.  This must be a string.
+This is used primarily for picking up X resources, and is *not* the title
+of the frame. (See `frame-title-format'.)Vdefault-frame-plist
+Plist of default values for frame creation, other than the first one.
+These may be set in your init file, like this:
+
+  (setq default-frame-plist '(width 80 height 55))
+
+The properties may be in alist format for backward compatibility
+but you should not rely on this behavior.
+
+These override values given in window system configuration data,
+ including X Windows' defaults database.
+
+Since the first X frame is created before loading your .emacs file,
+you must use the X resource database for that.
+
+For values specific to the first Emacs frame, see `initial-frame-plist'.
+For values specific to the separate minibuffer frame, see
+ `minibuffer-frame-plist'.
+
+See also the variables `default-x-frame-plist' and
+`default-tty-frame-plist', which are like `default-frame-plist'
+except that they apply only to X or tty frames, respectively
+(whereas `default-frame-plist' applies to all types of frames).Vframe-icon-glyph
+Icon glyph used to iconify a frame.Fvalid-image-instantiator-format-p
+Given an IMAGE-INSTANTIATOR-FORMAT, return non-nil if it is valid.
+If LOCALE is non-nil then the format is checked in that locale.
+If LOCALE is nil the current console is used.
+
+Valid formats are some subset of 'nothing, 'string, 'formatted-string,
+'xpm, 'xbm, 'xface, 'gif, 'jpeg, 'png, 'tiff, 'cursor-font, 'font,
+'autodetect, 'subwindow, 'inherit, 'mswindows-resource, 'bmp,
+'native-layout, 'layout, 'label, 'tab-control, 'tree-view,
+'progress-gauge, 'scrollbar, 'combo-box, 'edit-field, 'button,
+'widget, 'pointer, and 'text, depending on how XEmacs was compiled.
+
+arguments: (IMAGE-INSTANTIATOR-FORMAT &optional LOCALE)
+Fimage-instantiator-format-list
+Return a list of valid image-instantiator formats.
+
+arguments: ()
+Fset-console-type-image-conversion-list
+Set the image-conversion-list for consoles of the given CONSOLE-TYPE.
+The image-conversion-list specifies how image instantiators that
+are strings should be interpreted.  Each element of the list should be
+a list of two elements (a regular expression string and a vector) or
+a list of three elements (the preceding two plus an integer index into
+the vector).  The string is converted to the vector associated with the
+first matching regular expression.  If a vector index is specified, the
+string itself is substituted into that position in the vector.
+
+Note: The conversion above is applied when the image instantiator is
+added to an image specifier, not when the specifier is actually
+instantiated.  Therefore, changing the image-conversion-list only affects
+newly-added instantiators.  Existing instantiators in glyphs and image
+specifiers will not be affected.
+
+arguments: (CONSOLE-TYPE LIST)
+Fconsole-type-image-conversion-list
+Return the image-conversion-list for devices of the given CONSOLE-TYPE.
+The image-conversion-list specifies how to interpret image string
+instantiators for the specified console type.  See
+`set-console-type-image-conversion-list' for a description of its syntax.
+
+arguments: (CONSOLE-TYPE)
+Fset-instantiator-property
+Destructively set the property KEYWORD of INSTANTIATOR to VALUE.
+If the property is not set then it is added to a copy of the
+instantiator and the new instantiator returned.
+Use `set-glyph-image' on glyphs to register instantiator changes.  
+
+
+arguments: (INSTANTIATOR KEYWORD VALUE)
+Fvalid-image-instance-type-p
+Given an IMAGE-INSTANCE-TYPE, return non-nil if it is valid.
+Valid types are some subset of 'nothing, 'text, 'mono-pixmap, 'color-pixmap,
+'pointer, 'subwindow, and 'widget, depending on how XEmacs was compiled.
+
+arguments: (IMAGE-INSTANCE-TYPE)
+Fimage-instance-type-list
+Return a list of valid image-instance types.
+
+arguments: ()
+Fmake-image-instance
+Return a new `image-instance' object.
+
+Image-instance objects encapsulate the way a particular image (pixmap,
+etc.) is displayed on a particular device.  In most circumstances, you
+do not need to directly create image instances; use a glyph instead.
+However, it may occasionally be useful to explicitly create image
+instances, if you want more control over the instantiation process.
+
+DATA is an image instantiator, which describes the image; see
+`make-image-specifier' for a description of the allowed values.
+
+DEST-TYPES should be a list of allowed image instance types that can
+be generated.  The recognized image instance types are
+
+'nothing
+  Nothing is displayed.
+'text
+  Displayed as text.  The foreground and background colors and the
+  font of the text are specified independent of the pixmap.  Typically
+  these attributes will come from the face of the surrounding text,
+  unless a face is specified for the glyph in which the image appears.
+'mono-pixmap
+  Displayed as a mono pixmap (a pixmap with only two colors where the
+  foreground and background can be specified independent of the pixmap;
+  typically the pixmap assumes the foreground and background colors of
+  the text around it, unless a face is specified for the glyph in which
+  the image appears).
+'color-pixmap
+  Displayed as a color pixmap.
+'pointer
+  Used as the mouse pointer for a window.
+'subwindow
+  A child window that is treated as an image.  This allows (e.g.)
+  another program to be responsible for drawing into the window.
+'widget
+  A child window that contains a window-system widget, e.g. a push
+  button, text field, or slider.
+
+The DEST-TYPES list is unordered.  If multiple destination types are
+possible for a given instantiator, the "most natural" type for the
+instantiator's format is chosen. (For XBM, the most natural types are
+`mono-pixmap', followed by `color-pixmap', followed by `pointer'.  For
+the other normal image formats, the most natural types are
+`color-pixmap', followed by `mono-pixmap', followed by `pointer'.  For
+the string and formatted-string formats, the most natural types are
+`text', followed by `mono-pixmap' (not currently implemented),
+followed by `color-pixmap' (not currently implemented).  For MS
+Windows resources, the most natural type for pointer resources is
+`pointer', and for the others it's `color-pixmap'.  The other formats
+can only be instantiated as one type. (If you want to control more
+specifically the order of the types into which an image is
+instantiated, just call `make-image-instance' repeatedly until it
+succeeds, passing less and less preferred destination types each
+time.)
+
+See `make-image-specifier' for a description of the different image
+instantiator formats.
+
+If DEST-TYPES is omitted, all possible types are allowed.
+
+DOMAIN specifies the domain to which the image instance will be attached.
+This domain is termed the "governing domain".  The type of the governing
+domain depends on the image instantiator format. (Although, more correctly,
+it should probably depend on the image instance type.) For example, pixmap
+image instances are specific to a device, but widget image instances are
+specific to a particular XEmacs window because in order to display such a
+widget when two windows onto the same buffer want to display the widget,
+two separate underlying widgets must be created. (That's because a widget
+is actually a child window-system window, and all window-system windows have
+a unique existence on the screen.) This means that the governing domain for
+a pixmap image instance will be some device (most likely, the only existing
+device), whereas the governing domain for a widget image instance will be
+some XEmacs window.
+
+If you specify an overly general DOMAIN (e.g. a frame when a window was
+wanted), an error is signaled.  If you specify an overly specific DOMAIN
+(e.g. a window when a device was wanted), the corresponding general domain
+is fetched and used instead.  For `make-image-instance', it makes no
+difference whether you specify an overly specific domain or the properly
+general domain derived from it.  However, it does matter when creating an
+image instance by instantiating a specifier or glyph (e.g. with
+`glyph-image-instance'), because the more specific domain causes spec lookup
+to start there and proceed to more general domains. (It would also matter
+when creating an image instance with an instantiator format of `inherit',
+but we currently disallow this. #### We should fix this.)
+
+If omitted, DOMAIN defaults to the selected window.
+
+NOERROR controls what happens when the image cannot be generated.
+If nil, an error message is generated.  If t, no messages are
+generated and this function returns nil.  If anything else, a warning
+message is generated and this function returns nil.
+
+arguments: (DATA &optional DOMAIN DEST-TYPES NOERROR)
+Fimage-instance-p
+Return non-nil if OBJECT is an image instance.
+
+arguments: (OBJECT)
+Fimage-instance-type
+Return the type of the given image instance.
+The return value will be one of 'nothing, 'text, 'mono-pixmap,
+'color-pixmap, 'pointer, or 'subwindow.
+
+arguments: (IMAGE-INSTANCE)
+Fimage-instance-name
+Return the name of the given image instance.
+
+arguments: (IMAGE-INSTANCE)
+Fimage-instance-domain
+Return the governing domain of the given image instance.
+The governing domain of an image instance is the domain that the image
+instance is specific to.  It is NOT necessarily the domain that was
+given to the call to `specifier-instance' that resulted in the creation
+of this image instance.  See `make-image-instance' for more information
+on governing domains.
+
+arguments: (IMAGE-INSTANCE)
+Fimage-instance-string
+Return the string of the given image instance.
+This will only be non-nil for text image instances and widgets.
+
+arguments: (IMAGE-INSTANCE)
+Fimage-instance-property
+Return the given property of the given image instance.
+Returns nil if the property or the property method do not exist for
+the image instance in the domain.
+
+arguments: (IMAGE-INSTANCE PROP)
+Fimage-instance-file-name
+Return the file name from which IMAGE-INSTANCE was read, if known.
+
+arguments: (IMAGE-INSTANCE)
+Fimage-instance-mask-file-name
+Return the file name from which IMAGE-INSTANCE's mask was read, if known.
+
+arguments: (IMAGE-INSTANCE)
+Fimage-instance-depth
+Return the depth of the image instance.
+This is 0 for a bitmap, or a positive integer for a pixmap.
+
+arguments: (IMAGE-INSTANCE)
+Fimage-instance-height
+Return the height of the image instance, in pixels.
+
+arguments: (IMAGE-INSTANCE)
+Fimage-instance-width
+Return the width of the image instance, in pixels.
+
+arguments: (IMAGE-INSTANCE)
+Fimage-instance-hotspot-x
+Return the X coordinate of the image instance's hotspot, if known.
+This is a point relative to the origin of the pixmap.  When an image is
+ used as a mouse pointer, the hotspot is the point on the image that sits
+ over the location that the pointer points to.  This is, for example, the
+ tip of the arrow or the center of the crosshairs.
+This will always be nil for a non-pointer image instance.
+
+arguments: (IMAGE-INSTANCE)
+Fimage-instance-hotspot-y
+Return the Y coordinate of the image instance's hotspot, if known.
+This is a point relative to the origin of the pixmap.  When an image is
+ used as a mouse pointer, the hotspot is the point on the image that sits
+ over the location that the pointer points to.  This is, for example, the
+ tip of the arrow or the center of the crosshairs.
+This will always be nil for a non-pointer image instance.
+
+arguments: (IMAGE-INSTANCE)
+Fimage-instance-foreground
+Return the foreground color of IMAGE-INSTANCE, if applicable.
+This will be a color instance or nil. (It will only be non-nil for
+colorized mono pixmaps and for pointers.)
+
+arguments: (IMAGE-INSTANCE)
+Fimage-instance-background
+Return the background color of IMAGE-INSTANCE, if applicable.
+This will be a color instance or nil. (It will only be non-nil for
+colorized mono pixmaps and for pointers.)
+
+arguments: (IMAGE-INSTANCE)
+Fcolorize-image-instance
+Make the image instance be displayed in the given colors.
+This function returns a new image instance that is exactly like the
+specified one except that (if possible) the foreground and background
+colors and as specified.  Currently, this only does anything if the image
+instance is a mono pixmap; otherwise, the same image instance is returned.
+
+arguments: (IMAGE-INSTANCE FOREGROUND BACKGROUND)
+Fimage-specifier-p
+Return non-nil if OBJECT is an image specifier.
+See `make-image-specifier' for a description of image instantiators.
+
+arguments: (OBJECT)
+Fvalid-glyph-type-p
+Given a GLYPH-TYPE, return non-nil if it is valid.
+Valid types are `buffer', `pointer', and `icon'.
+
+arguments: (GLYPH-TYPE)
+Fglyph-type-list
+Return a list of valid glyph types.
+
+arguments: ()
+Fmake-glyph-internal
+Create and return a new uninitialized glyph of type TYPE.
+
+TYPE specifies the type of the glyph; this should be one of `buffer',
+`pointer', or `icon', and defaults to `buffer'.  The type of the glyph
+specifies in which contexts the glyph can be used, and controls the
+allowable image types into which the glyph's image can be
+instantiated.
+
+`buffer' glyphs can be used as the begin-glyph or end-glyph of an
+extent, in the modeline, and in the toolbar.  Their image can be
+instantiated as `nothing', `mono-pixmap', `color-pixmap', `text',
+and `subwindow'.
+
+`pointer' glyphs can be used to specify the mouse pointer.  Their
+image can be instantiated as `pointer'.
+
+`icon' glyphs can be used to specify the icon used when a frame is
+iconified.  Their image can be instantiated as `mono-pixmap' and
+`color-pixmap'.
+
+arguments: (&optional TYPE)
+Fglyphp
+Return non-nil if OBJECT is a glyph.
+
+A glyph is an object used for pixmaps, widgets and the like.  It is used
+in begin-glyphs and end-glyphs attached to extents, in marginal and textual
+annotations, in overlay arrows (overlay-arrow-* variables), in toolbar
+buttons, and the like.  Much more detailed information can be found at
+`make-glyph'.  Its image is described using an image specifier --
+see `make-image-specifier'.  See also `make-image-instance' for further
+information.
+
+arguments: (OBJECT)
+Fglyph-type
+Return the type of the given glyph.
+The return value will be one of 'buffer, 'pointer, or 'icon.
+
+arguments: (GLYPH)
+Fglyph-width
+Return the width of GLYPH on WINDOW.
+This may not be exact as it does not take into account all of the context
+that redisplay will.
+
+arguments: (GLYPH &optional WINDOW)
+Fglyph-ascent
+Return the ascent value of GLYPH on WINDOW.
+This may not be exact as it does not take into account all of the context
+that redisplay will.
+
+arguments: (GLYPH &optional WINDOW)
+Fglyph-descent
+Return the descent value of GLYPH on WINDOW.
+This may not be exact as it does not take into account all of the context
+that redisplay will.
+
+arguments: (GLYPH &optional WINDOW)
+Fglyph-height
+Return the height of GLYPH on WINDOW.
+This may not be exact as it does not take into account all of the context
+that redisplay will.
+
+arguments: (GLYPH &optional WINDOW)
+Fsubwindowp
+Return non-nil if OBJECT is a subwindow.
+
+arguments: (OBJECT)
+Fimage-instance-subwindow-id
+Return the window id of SUBWINDOW as a number.
+
+arguments: (SUBWINDOW)
+Fresize-subwindow
+Resize SUBWINDOW to WIDTH x HEIGHT.
+If a value is nil that parameter is not changed.
+
+arguments: (SUBWINDOW &optional WIDTH HEIGHT)
+Fforce-subwindow-map
+Generate a Map event for SUBWINDOW.
+
+arguments: (SUBWINDOW)
+Fglyph-animated-timeout-handler
+Callback function for updating animated images.
+Don't use this.
+
+arguments: (ARG)
+Voctal-escape-glyph
+What to prefix character codes displayed in octal with.Vcontrol-arrow-glyph
+What to use as an arrow for control characters.Vinvisible-text-glyph
+What to use to indicate the presence of invisible text.
+This is the glyph that is displayed when an ellipsis is called for
+(see `selective-display-ellipses' and `buffer-invisibility-spec').
+Normally this is three dots ("...").Vhscroll-glyph
+What to display at the beginning of horizontally scrolled lines.Vxpm-color-symbols
+Definitions of logical color-names used when reading XPM files.
+Elements of this list should be of the form (COLOR-NAME FORM-TO-EVALUATE).
+The COLOR-NAME should be a string, which is the name of the color to define;
+the FORM should evaluate to a `color' specifier object, or a string to be
+passed to `make-color-instance'.  If a loaded XPM file references a symbolic
+color called COLOR-NAME, it will display as the computed color instead.
+
+The default value of this variable defines the logical color names
+"foreground" and "background" to be the colors of the `default' face.Vdisable-animated-pixmaps
+Whether animated pixmaps should be animated.
+Default is t.Vcurrent-display-table
+*The display table currently in use.
+This is a specifier; use `set-specifier' to change it.
+
+Display tables are used to control how characters are displayed.  Each
+time that redisplay processes a character, it is looked up in all the
+display tables that apply (obtained by calling `specifier-instance' on
+`current-display-table' and any overriding display tables specified in
+currently active faces).  The first entry found that matches the
+character determines how the character is displayed.  If there is no
+matching entry, the default display method is used. (Non-control
+characters are displayed as themselves and control characters are
+displayed according to the buffer-local variable `ctl-arrow'.  Control
+characters are further affected by `control-arrow-glyph' and
+`octal-escape-glyph'.)
+
+Each instantiator in this specifier and the display-table specifiers
+in faces is a display table or a list of such tables.  If a list, each
+table will be searched in turn for an entry matching a particular
+character.  Each display table is one of
+
+-- a vector, specifying values for characters starting at 0
+-- a char table, either of type `char' or `generic'
+-- a range table
+
+Each entry in a display table should be one of
+
+-- nil (this entry is ignored and the search continues)
+-- a character (use this character; if it happens to be the same as
+   the original character, default processing happens, otherwise
+   redisplay attempts to display this character directly;
+   #### At some point recursive display-table lookup will be
+   implemented.)
+-- a string (display each character in the string directly;
+   #### At some point recursive display-table lookup will be
+   implemented.)
+-- a glyph (display the glyph;
+   #### At some point recursive display-table lookup will be
+   implemented when a string glyph is being processed.)
+-- a cons of the form (format "STRING") where STRING is a printf-like
+   spec used to process the character. #### Unfortunately no
+   formatting directives other than %% are implemented.
+-- a vector (each element of the vector is processed recursively;
+   in such a case, nil elements in the vector are simply ignored)
+
+#### At some point in the near future, display tables are likely to
+be expanded to include other features, such as referencing characters
+in particular fonts and allowing the character search to continue
+all the way up the chain of specifier instantiators.  These features
+are necessary to properly display Unicode characters.Vtruncation-glyph
+What to display at the end of truncated lines.Vcontinuation-glyph
+What to display at the end of wrapped lines.Vxemacs-logo
+The glyph used to display the XEmacs logo at startup.Fpopup-up-p
+Return t if a popup menu or dialog box is up, nil otherwise.
+See `popup-menu' and `popup-dialog-box'.
+
+arguments: ()
+Vmenu-no-selection-hook
+Function or functions to call when a menu or dialog box is dismissed
+without a selection having been made.Fset-default-gutter-position
+Set the position that the `default-gutter' will be displayed at.
+Valid positions are 'top, 'bottom, 'left and 'right.
+See `default-gutter-position'.
+
+arguments: (POSITION)
+Fdefault-gutter-position
+Return the position that the `default-gutter' will be displayed at.
+The `default-gutter' will only be displayed here if the corresponding
+position-specific gutter specifier does not provide a value.
+
+arguments: ()
+Fgutter-pixel-width
+Return the pixel width of the gutter at POS in LOCALE.
+POS defaults to the default gutter position. LOCALE defaults to
+the current window.
+
+arguments: (&optional POS LOCALE)
+Fgutter-pixel-height
+Return the pixel height of the gutter at POS in LOCALE.
+POS defaults to the default gutter position. LOCALE defaults to
+the current window.
+
+arguments: (&optional POS LOCALE)
+Fgutter-specifier-p
+Return non-nil if OBJECT is a gutter specifier.
+
+See `make-gutter-specifier' for a description of possible gutter
+instantiators.
+
+arguments: (OBJECT)
+Fgutter-size-specifier-p
+Return non-nil if OBJECT is a gutter-size specifier.
+
+See `make-gutter-size-specifier' for a description of possible gutter-size
+instantiators.
+
+arguments: (OBJECT)
+Fgutter-visible-specifier-p
+Return non-nil if OBJECT is a gutter-visible specifier.
+
+See `make-gutter-visible-specifier' for a description of possible
+gutter-visible instantiators.
+
+arguments: (OBJECT)
+Fredisplay-gutter-area
+Ensure that all gutters are correctly showing their gutter specifier.
+
+arguments: ()
+Vdefault-gutter
+Specifier for a fallback gutter.
+Use `set-specifier' to change this.
+
+The position of this gutter is specified in the function
+`default-gutter-position'.  If the corresponding position-specific
+gutter (e.g. `top-gutter' if `default-gutter-position' is 'top)
+does not specify a gutter in a particular domain (usually a window),
+then the value of `default-gutter' in that domain, if any, will be
+used instead.
+
+Note that the gutter at any particular position will not be
+displayed unless its visibility flag is true and its thickness
+(width or height, depending on orientation) is non-zero.  The
+visibility is controlled by the specifiers `top-gutter-visible-p',
+`bottom-gutter-visible-p', `left-gutter-visible-p', and
+`right-gutter-visible-p', and the thickness is controlled by the
+specifiers `top-gutter-height', `bottom-gutter-height',
+`left-gutter-width', and `right-gutter-width'.
+
+Note that one of the four visibility specifiers inherits from
+`default-gutter-visibility' and one of the four thickness
+specifiers inherits from either `default-gutter-width' or
+`default-gutter-height' (depending on orientation), just
+like for the gutter description specifiers (e.g. `top-gutter')
+mentioned above.
+
+Therefore, if you are setting `default-gutter', you should control
+the visibility and thickness using `default-gutter-visible-p',
+`default-gutter-width', and `default-gutter-height', rather than
+using position-specific specifiers.  That way, you will get sane
+behavior if the user changes the default gutter position.
+
+The gutter value should be a string, a property list of strings or
+nil. You can attach extents and glyphs to the string and hence display
+glyphs and text in other fonts in the gutter area. If the gutter value
+is a property list then the strings will be concatenated together
+before being displayed.  
+Vtop-gutter
+Specifier for the gutter at the top of the frame.
+Use `set-specifier' to change this.
+See `default-gutter' for a description of a valid gutter instantiator.Vbottom-gutter
+Specifier for the gutter at the bottom of the frame.
+Use `set-specifier' to change this.
+See `default-gutter' for a description of a valid gutter instantiator.
+
+Note that, unless the `default-gutter-position' is `bottom', by
+default the height of the bottom gutter (controlled by
+`bottom-gutter-height') is 0; thus, a bottom gutter will not be
+displayed even if you provide a value for `bottom-gutter'.Vleft-gutter
+Specifier for the gutter at the left edge of the frame.
+Use `set-specifier' to change this.
+See `default-gutter' for a description of a valid gutter instantiator.
+
+Note that, unless the `default-gutter-position' is `left', by
+default the height of the left gutter (controlled by
+`left-gutter-width') is 0; thus, a left gutter will not be
+displayed even if you provide a value for `left-gutter'.Vright-gutter
+Specifier for the gutter at the right edge of the frame.
+Use `set-specifier' to change this.
+See `default-gutter' for a description of a valid gutter instantiator.
+
+Note that, unless the `default-gutter-position' is `right', by
+default the height of the right gutter (controlled by
+`right-gutter-width') is 0; thus, a right gutter will not be
+displayed even if you provide a value for `right-gutter'.Vdefault-gutter-height
+*Height of the default gutter, if it's oriented horizontally.
+This is a specifier; use `set-specifier' to change it.
+
+The position of the default gutter is specified by the function
+`set-default-gutter-position'.  If the corresponding position-specific
+gutter thickness specifier (e.g. `top-gutter-height' if
+`default-gutter-position' is 'top) does not specify a thickness in a
+particular domain (a window or a frame), then the value of
+`default-gutter-height' or `default-gutter-width' (depending on the
+gutter orientation) in that domain, if any, will be used instead.
+
+Note that `default-gutter-height' is only used when
+`default-gutter-position' is 'top or 'bottom, and `default-gutter-width'
+is only used when `default-gutter-position' is 'left or 'right.
+
+Note that all of the position-specific gutter thickness specifiers
+have a fallback value of zero when they do not correspond to the
+default gutter.  Therefore, you will have to set a non-zero thickness
+value if you want a position-specific gutter to be displayed.
+
+If you set the height to 'autodetect the size of the gutter will be
+calculated to be large enough to hold the contents of the gutter. This
+is the default.Vdefault-gutter-width
+*Width of the default gutter, if it's oriented vertically.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-gutter-height' for more information.Vtop-gutter-height
+*Height of the top gutter.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-gutter-height' for more information.Vbottom-gutter-height
+*Height of the bottom gutter.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-gutter-height' for more information.Vleft-gutter-width
+*Width of left gutter.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-gutter-height' for more information.Vright-gutter-width
+*Width of right gutter.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-gutter-height' for more information.Vdefault-gutter-border-width
+*Width of the border around the default gutter.
+This is a specifier; use `set-specifier' to change it.
+
+The position of the default gutter is specified by the function
+`set-default-gutter-position'.  If the corresponding position-specific
+gutter border width specifier (e.g. `top-gutter-border-width' if
+`default-gutter-position' is 'top) does not specify a border width in a
+particular domain (a window or a frame), then the value of
+`default-gutter-border-width' in that domain, if any, will be used
+instead.
+Vtop-gutter-border-width
+*Border width of the top gutter.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-gutter-height' for more information.Vbottom-gutter-border-width
+*Border width of the bottom gutter.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-gutter-height' for more information.Vleft-gutter-border-width
+*Border width of left gutter.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-gutter-height' for more information.Vright-gutter-border-width
+*Border width of right gutter.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-gutter-height' for more information.Vdefault-gutter-visible-p
+*Whether the default gutter is visible.
+This is a specifier; use `set-specifier' to change it.
+
+The position of the default gutter is specified by the function
+`set-default-gutter-position'.  If the corresponding position-specific
+gutter visibility specifier (e.g. `top-gutter-visible-p' if
+`default-gutter-position' is 'top) does not specify a visible-p value
+in a particular domain (a window or a frame), then the value of
+`default-gutter-visible-p' in that domain, if any, will be used
+instead.
+
+`default-gutter-visible-p' and all of the position-specific gutter
+visibility specifiers have a fallback value of true.Vtop-gutter-visible-p
+*Whether the top gutter is visible.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-gutter-visible-p' for more information.Vbottom-gutter-visible-p
+*Whether the bottom gutter is visible.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-gutter-visible-p' for more information.Vleft-gutter-visible-p
+*Whether the left gutter is visible.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-gutter-visible-p' for more information.Vright-gutter-visible-p
+*Whether the right gutter is visible.
+This is a specifier; use `set-specifier' to change it.
+
+See `default-gutter-visible-p' for more information.Fcurrent-column
+Return the horizontal position of point.  Beginning of line is column 0.
+This is calculated by adding together the widths of all the displayed
+ representations of the character between the start of the previous line
+ and point. (e.g. control characters will have a width of 2 or 4, tabs
+ will have a variable width.)
+Ignores finite width of frame, which means that this function may return
+ values greater than (frame-width).
+Whether the line is visible (if `selective-display' is t) has no effect;
+ however, ^M is treated as end of line when `selective-display' is t.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional BUFFER)
+Findent-to
+Indent from point with tabs and spaces until COLUMN is reached.
+Optional second argument MINIMUM says always do at least MINIMUM spaces
+ even if that goes past COLUMN; by default, MINIMUM is zero.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (COLUMN &optional MINIMUM BUFFER)
+Fcurrent-indentation
+Return the indentation of the current line.
+This is the horizontal position of the character
+following any initial whitespace.
+
+arguments: (&optional BUFFER)
+Fmove-to-column
+Move point to column COLUMN in the current line.
+The column of a character is calculated by adding together the widths
+as displayed of the previous characters in the line.
+This function ignores line-continuation;
+there is no upper limit on the column number a character can have
+and horizontal scrolling has no effect.
+
+If specified column is within a character, point goes after that character.
+If it's past end of line, point goes to end of line.
+
+A value of 'coerce for the second (optional) argument FORCE means if
+COLUMN is in the middle of a tab character, change it to spaces.
+Any other non-nil value means the same, plus if the line is too short to
+reach column COLUMN, then add spaces/tabs to get there.
+
+Returns the actual column that it moved to.
+
+arguments: (COLUMN &optional FORCE BUFFER)
+Fvertical-motion
+Move to start of frame line LINES lines down.
+If LINES is negative, this is moving up.
+Optional second argument is WINDOW to move in,
+the default is the selected window.
+
+Sets point to position found; this may be start of line
+or just the start of a continuation line.
+If optional third argument PIXELS is nil, returns number
+of lines moved; may be closer to zero than LINES if beginning
+or end of buffer was reached.  If PIXELS is non-nil, the
+vertical pixel height of the motion which took place is
+returned instead of the actual number of lines moved.  A
+motion of zero lines returns the height of the current line.
+
+Note that `vertical-motion' sets WINDOW's buffer's point, not
+WINDOW's point. (This differs from FSF Emacs, which buggily always
+sets current buffer's point, regardless of WINDOW.)
+
+arguments: (LINES &optional WINDOW PIXELS)
+Fvertical-motion-pixels
+Move to start of frame line PIXELS vertical pixels down.
+If PIXELS is negative, this is moving up.
+The actual vertical motion in pixels is returned.
+
+Optional second argument is WINDOW to move in,
+the default is the selected window.
+
+Optional third argument HOW specifies when to stop.  A value
+less than zero indicates that the motion should be no more
+than PIXELS.  A value greater than zero indicates that the
+motion should be at least PIXELS.  Any other value indicates
+that the motion should be as close as possible to PIXELS.
+
+arguments: (PIXELS &optional WINDOW HOW)
+Vindent-tabs-mode
+*Indentation can insert tabs if this is non-nil.
+Setting this variable automatically makes it local to the current buffer.Fignore-defer-gettext
+If OBJECT is of the form (defer-gettext "string"), return the string.
+The purpose of the defer-gettext symbol is to identify strings which
+are translated when they are referenced instead of when they are defined.
+
+arguments: (OBJECT)
+Fgettext
+Look up STRING in the default message domain and return its translation.
+This function does nothing if I18N3 was not enabled when Emacs was compiled.
+
+arguments: (STRING)
+Fdgettext
+Look up STRING in the specified message domain and return its translation.
+This function does nothing if I18N3 was not enabled when Emacs was compiled.
+
+arguments: (DOMAIN STRING)
+Fbind-text-domain
+Associate a pathname with a message domain.
+Here's how the path to message files is constructed under SunOS 5.0:
+  {pathname}/{LANG}/LC_MESSAGES/{domain}.mo
+This function does nothing if I18N3 was not enabled when Emacs was compiled.
+
+arguments: (DOMAIN PATHNAME)
+Fset-domain
+Specify the domain used for translating messages in this source file.
+The domain declaration may only appear at top-level, and should precede
+all function and variable definitions.
+
+The presence of this declaration in a compiled file effectively sets the
+domain of all functions and variables which are defined in that file.
+Bug: it has no effect on source (.el) files, only compiled (.elc) files.
+
+arguments: (DOMAIN-NAME)
+Fmake-keymap
+Construct and return a new keymap object.
+All entries in it are nil, meaning "command undefined".
+
+Optional argument NAME specifies a name to assign to the keymap,
+as in `set-keymap-name'.  This name is only a debugging convenience;
+it is not used except when printing the keymap.
+
+arguments: (&optional NAME)
+Fmake-sparse-keymap
+Construct and return a new keymap object.
+All entries in it are nil, meaning "command undefined".  The only
+difference between this function and `make-keymap' is that this function
+returns a "smaller" keymap (one that is expected to contain fewer
+entries).  As keymaps dynamically resize, this distinction is not great.
+
+Optional argument NAME specifies a name to assign to the keymap,
+as in `set-keymap-name'.  This name is only a debugging convenience;
+it is not used except when printing the keymap.
+
+arguments: (&optional NAME)
+Fkeymap-parents
+Return the `parent' keymaps of KEYMAP, or nil.
+The parents of a keymap are searched for keybindings when a key sequence
+isn't bound in this one.  `(current-global-map)' is the default parent
+of all keymaps.
+
+arguments: (KEYMAP)
+Fset-keymap-parents
+Set the `parent' keymaps of KEYMAP to PARENTS.
+The parents of a keymap are searched for keybindings when a key sequence
+isn't bound in this one.  `(current-global-map)' is the default parent
+of all keymaps.
+
+arguments: (KEYMAP PARENTS)
+Fset-keymap-name
+Set the `name' of the KEYMAP to NEW-NAME.
+The name is only a debugging convenience; it is not used except
+when printing the keymap.
+
+arguments: (KEYMAP NEW-NAME)
+Fkeymap-name
+Return the `name' of KEYMAP.
+The name is only a debugging convenience; it is not used except
+when printing the keymap.
+
+arguments: (KEYMAP)
+Fset-keymap-prompt
+Set the `prompt' of KEYMAP to string NEW-PROMPT, or `nil'
+if no prompt is desired.  The prompt is shown in the echo-area
+when reading a key-sequence to be looked-up in this keymap.
+
+arguments: (KEYMAP NEW-PROMPT)
+Fkeymap-prompt
+Return the `prompt' of KEYMAP.
+If non-nil, the prompt is shown in the echo-area
+when reading a key-sequence to be looked-up in this keymap.
+
+arguments: (KEYMAP &optional USE-INHERITED)
+Fset-keymap-default-binding
+Sets the default binding of KEYMAP to COMMAND, or `nil'
+if no default is desired.  The default-binding is returned when
+no other binding for a key-sequence is found in the keymap.
+If a keymap has a non-nil default-binding, neither the keymap's
+parents nor the current global map are searched for key bindings.
+
+arguments: (KEYMAP COMMAND)
+Fkeymap-default-binding
+Return the default binding of KEYMAP, or `nil' if it has none.
+The default-binding is returned when no other binding for a key-sequence
+is found in the keymap.
+If a keymap has a non-nil default-binding, neither the keymap's
+parents nor the current global map are searched for key bindings.
+
+arguments: (KEYMAP)
+Fkeymapp
+Return t if OBJECT is a keymap object.
+The keymap may be autoloaded first if necessary.
+
+arguments: (OBJECT)
+Fcopy-keymap
+Return a copy of the keymap KEYMAP.
+The copy starts out with the same definitions of KEYMAP,
+but changing either the copy or KEYMAP does not affect the other.
+Any key definitions that are subkeymaps are recursively copied.
+
+arguments: (KEYMAP)
+Fkeymap-fullness
+Return the number of bindings in the keymap.
+
+arguments: (KEYMAP)
+Fevent-matches-key-specifier-p
+Return non-nil if EVENT matches KEY-SPECIFIER.
+This can be useful, e.g., to determine if the user pressed `help-char' or
+`quit-char'.
+
+arguments: (EVENT KEY-SPECIFIER)
+Fdefine-key
+Define key sequence KEYS, in KEYMAP, as DEF.
+KEYMAP is a keymap object.
+KEYS is the sequence of keystrokes to bind, described below.
+DEF is anything that can be a key's definition:
+ nil (means key is undefined in this keymap);
+ a command (a Lisp function suitable for interactive calling);
+ a string or key sequence vector (treated as a keyboard macro);
+ a keymap (to define a prefix key);
+ a symbol; when the key is looked up, the symbol will stand for its
+    function definition, that should at that time be one of the above,
+    or another symbol whose function definition is used, and so on.
+ a cons (STRING . DEFN), meaning that DEFN is the definition
+    (DEFN should be a valid definition in its own right);
+ or a cons (KEYMAP . CHAR), meaning use definition of CHAR in map KEYMAP.
+
+Contrary to popular belief, the world is not ASCII.  When running under a
+window manager, XEmacs can tell the difference between, for example, the
+keystrokes control-h, control-shift-h, and backspace.  You can, in fact,
+bind different commands to each of these.
+
+A `key sequence' is a set of keystrokes.  A `keystroke' is a keysym and some
+set of modifiers (such as control and meta).  A `keysym' is what is printed
+on the keys on your keyboard.
+
+A keysym may be represented by a symbol, or (if and only if it is equivalent
+to an ASCII character in the range 32 - 255) by a character or its equivalent
+ASCII code.  The `A' key may be represented by the symbol `A', the character
+`?A', or by the number 65.  The `break' key may be represented only by the
+symbol `break'.
+
+A keystroke may be represented by a list: the last element of the list
+is the key (a symbol, character, or number, as above) and the
+preceding elements are the symbolic names of modifier keys (control,
+meta, super, hyper, alt, and shift).  Thus, the sequence control-b is
+represented by the forms `(control b)', `(control ?b)', and `(control
+98)'.  A keystroke may also be represented by an event object, as
+returned by the `next-command-event' and `read-key-sequence'
+functions.
+
+Note that in this context, the keystroke `control-b' is *not* represented
+by the number 2 (the ASCII code for ^B) or the character `?^B'.  See below.
+
+The `shift' modifier is somewhat of a special case.  You should not (and
+cannot) use `(meta shift a)' to mean `(meta A)', since for characters that
+have ASCII equivalents, the state of the shift key is implicit in the
+keysym (a vs. A).  You also cannot say `(shift =)' to mean `+', as that
+sort of thing varies from keyboard to keyboard.  The shift modifier is for
+use only with characters that do not have a second keysym on the same key,
+such as `backspace' and `tab'.
+
+A key sequence is a vector of keystrokes.  As a degenerate case, elements
+of this vector may also be keysyms if they have no modifiers.  That is,
+the `A' keystroke is represented by all of these forms:
+	A	?A	65	(A)	(?A)	(65)
+	[A]	[?A]	[65]	[(A)]	[(?A)]	[(65)]
+
+the `control-a' keystroke is represented by these forms:
+	(control A)	(control ?A)	(control 65)
+	[(control A)]	[(control ?A)]	[(control 65)]
+the key sequence `control-c control-a' is represented by these forms:
+	[(control c) (control a)]	[(control ?c) (control ?a)]
+	[(control 99) (control 65)]	etc.
+
+Mouse button clicks work just like keypresses: (control button1) means
+pressing the left mouse button while holding down the control key.
+[(control c) (shift button3)] means control-c, hold shift, click right.
+
+Commands may be bound to the mouse-button up-stroke rather than the down-
+stroke as well.  `button1' means the down-stroke, and `button1up' means the
+up-stroke.  Different commands may be bound to the up and down strokes,
+though that is probably not what you want, so be careful.
+
+For backward compatibility, a key sequence may also be represented by a
+string.  In this case, it represents the key sequence(s) that would
+produce that sequence of ASCII characters in a purely ASCII world.  For
+example, a string containing the ASCII backspace character, "\^H", would
+represent two key sequences: `(control h)' and `backspace'.  Binding a
+command to this will actually bind both of those key sequences.  Likewise
+for the following pairs:
+
+		control h	backspace
+		control i   	tab
+		control m   	return
+		control j   	linefeed
+		control [   	escape
+		control @	control space
+
+After binding a command to two key sequences with a form like
+
+	(define-key global-map "\^X\^I" 'command-1)
+
+it is possible to redefine only one of those sequences like so:
+
+	(define-key global-map [(control x) (control i)] 'command-2)
+	(define-key global-map [(control x) tab] 'command-3)
+
+Of course, all of this applies only when running under a window system.  If
+you're talking to XEmacs through a TTY connection, you don't get any of
+these features.
+
+arguments: (KEYMAP KEYS DEF)
+Flookup-key
+In keymap KEYMAP, look up key-sequence KEYS.  Return the definition.
+Nil is returned if KEYS is unbound.  See documentation of `define-key'
+for valid key definitions and key-sequence specifications.
+A number is returned if KEYS is "too long"; that is, the leading
+characters fail to be a valid sequence of prefix characters in KEYMAP.
+The number is how many key strokes at the front of KEYS it takes to
+reach a non-prefix command.
+
+arguments: (KEYMAP KEYS &optional ACCEPT-DEFAULT)
+Fcurrent-keymaps
+Return a list of the current keymaps that will be searched for bindings.
+This lists keymaps such as the current local map and the minor-mode maps,
+ but does not list the parents of those keymaps.
+EVENT-OR-KEYS controls which keymaps will be listed.
+If EVENT-OR-KEYS is a mouse event (or a vector whose last element is a
+ mouse event), the keymaps for that mouse event will be listed (see
+ `key-binding').  Otherwise, the keymaps for key presses will be listed.
+
+arguments: (&optional EVENT-OR-KEYS)
+Fkey-binding
+Return the binding for command KEYS in current keymaps.
+KEYS is a string, a vector of events, or a vector of key-description lists
+as described in the documentation for the `define-key' function.
+The binding is probably a symbol with a function definition; see
+the documentation for `lookup-key' for more information.
+
+For key-presses, the order of keymaps searched is:
+  - the `keymap' property of any extent(s) at point;
+  - any applicable minor-mode maps;
+  - the current local map of the current-buffer;
+  - the current global map.
+
+For mouse-clicks, the order of keymaps searched is:
+  - the current-local-map of the `mouse-grabbed-buffer' if any;
+  - vertical-divider-map, if the event happened over a vertical divider
+  - the `keymap' property of any extent(s) at the position of the click
+    (this includes modeline extents);
+  - the modeline-map of the buffer corresponding to the modeline under
+    the mouse (if the click happened over a modeline);
+  - the value of `toolbar-map' in the current-buffer (if the click
+    happened over a toolbar);
+  - the current local map of the buffer under the mouse (does not
+    apply to toolbar clicks);
+  - any applicable minor-mode maps;
+  - the current global map.
+
+Note that if `overriding-local-map' or `overriding-terminal-local-map'
+is non-nil, *only* those two maps and the current global map are searched.
+
+arguments: (KEYS &optional ACCEPT-DEFAULT)
+Fuse-global-map
+Select KEYMAP as the global keymap.
+
+arguments: (KEYMAP)
+Fuse-local-map
+Select KEYMAP as the local keymap in BUFFER.
+If KEYMAP is nil, that means no local keymap.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (KEYMAP &optional BUFFER)
+Fcurrent-local-map
+Return BUFFER's local keymap, or nil if it has none.
+If BUFFER is nil, the current buffer is assumed.
+
+arguments: (&optional BUFFER)
+Fcurrent-global-map
+Return the current global keymap.
+
+arguments: ()
+Fmap-keymap
+Apply FUNCTION to each element of KEYMAP.
+FUNCTION will be called with two arguments: a key-description list, and
+the binding.  The order in which the elements of the keymap are passed to
+the function is unspecified.  If the function inserts new elements into
+the keymap, it may or may not be called with them later.  No element of
+the keymap will ever be passed to the function more than once.
+
+The function will not be called on elements of this keymap's parents
+(see the function `keymap-parents') or upon keymaps which are contained
+within this keymap (multi-character definitions).
+It will be called on "meta" characters since they are not really
+two-character sequences.
+
+If the optional third argument SORT-FIRST is non-nil, then the elements of
+the keymap will be passed to the mapper function in a canonical order.
+Otherwise, they will be passed in hash (that is, random) order, which is
+faster.
+
+arguments: (FUNCTION KEYMAP &optional SORT-FIRST)
+Faccessible-keymaps
+Find all keymaps accessible via prefix characters from KEYMAP.
+Returns a list of elements of the form (KEYS . MAP), where the sequence
+KEYS starting from KEYMAP gets you to MAP.  These elements are ordered
+so that the KEYS increase in length.  The first element is ([] . KEYMAP).
+An optional argument PREFIX, if non-nil, should be a key sequence;
+then the value includes only maps for prefixes that start with PREFIX.
+
+arguments: (KEYMAP &optional PREFIX)
+Fkey-description
+Return a pretty description of key-sequence KEYS.
+Control characters turn into "C-foo" sequences, meta into "M-foo",
+spaces are put between sequence elements, etc...
+
+arguments: (KEYS)
+Fsingle-key-description
+Return a pretty description of command character KEY.
+Control characters turn into C-whatever, etc.
+This differs from `text-char-description' in that it returns a description
+of a key read from the user rather than a character from a buffer.
+
+arguments: (KEY)
+Ftext-char-description
+Return a pretty description of file-character CHR.
+Unprintable characters turn into "^char" or \NNN, depending on the value
+of the `ctl-arrow' variable.
+This differs from `single-key-description' in that it returns a description
+of a character from a buffer rather than a key read from the user.
+
+arguments: (CHR)
+Fwhere-is-internal
+Return list of keys that invoke DEFINITION in KEYMAPS.
+KEYMAPS can be either a keymap (meaning search in that keymap and the
+current global keymap) or a list of keymaps (meaning search in exactly
+those keymaps and no others).  If KEYMAPS is nil, search in the currently
+applicable maps for EVENT-OR-KEYS (this is equivalent to specifying
+`(current-keymaps EVENT-OR-KEYS)' as the argument to KEYMAPS).
+
+If optional 3rd arg FIRSTONLY is non-nil, return a vector representing
+ the first key sequence found, rather than a list of all possible key
+ sequences.
+
+If optional 4th arg NOINDIRECT is non-nil, don't follow indirections
+ to other keymaps or slots.  This makes it possible to search for an
+ indirect definition itself.
+
+arguments: (DEFINITION &optional KEYMAPS FIRSTONLY NOINDIRECT EVENT-OR-KEYS)
+Fdescribe-bindings-internal
+Insert a list of all defined keys and their definitions in MAP.
+Optional second argument ALL says whether to include even "uninteresting"
+definitions (ie symbols with a non-nil `suppress-keymap' property.
+Third argument SHADOW is a list of keymaps whose bindings shadow those
+of map; if a binding is present in any shadowing map, it is not printed.
+Fourth argument PREFIX, if non-nil, should be a key sequence;
+only bindings which start with that key sequence will be printed.
+Fifth argument MOUSE-ONLY-P says to only print bindings for mouse clicks.
+
+arguments: (MAP &optional ALL SHADOW PREFIX MOUSE-ONLY-P)
+Vmeta-prefix-char
+Meta-prefix character.
+This character followed by some character `foo' turns into `Meta-foo'.
+This can be any form recognized as a single key specifier.
+To disable the meta-prefix-char, set it to a negative number.Vmouse-grabbed-buffer
+A buffer which should be consulted first for all mouse activity.
+When a mouse-click is processed, it will first be looked up in the
+local-map of this buffer, and then through the normal mechanism if there
+is no binding for that click.  This buffer's value of `mode-motion-hook'
+will be consulted instead of the `mode-motion-hook' of the buffer of the
+window under the mouse.  You should *bind* this, not set it.Voverriding-local-map
+Keymap that overrides all other local keymaps.
+If this variable is non-nil, it is used as a keymap instead of the
+buffer's local map, and the minor mode keymaps and extent-local keymaps.
+You should *bind* this, not set it.Vkey-translation-map
+Keymap of key translations that can override keymaps.
+This keymap works like `function-key-map', but comes after that,
+and applies even for keys that have ordinary bindings.Vvertical-divider-map
+Keymap which handles mouse clicks over vertical dividers.Vkeymap-tick
+Incremented for each change to any keymap.Fload-internal
+Execute a file of Lisp code named FILE; no coding-system frobbing.
+This function is identical to `load' except for the handling of the
+CODESYS and USED-CODESYS arguments under XEmacs/Mule. (When Mule
+support is not present, both functions are identical and ignore the
+CODESYS and USED-CODESYS arguments.)
+
+If support for Mule exists in this Emacs, the file is decoded
+according to CODESYS; if omitted, no conversion happens.  If
+USED-CODESYS is non-nil, it should be a symbol, and the actual coding
+system that was used for the decoding is stored into it.  It will in
+general be different from CODESYS if CODESYS specifies automatic
+encoding detection or end-of-line detection.
+
+arguments: (FILE &optional NOERROR NOMESSAGE NOSUFFIX CODESYS USED-CODESYS)
+Flocate-file
+Search for FILENAME through PATH-LIST.
+
+If SUFFIXES is non-nil, it should be a list of suffixes to append to
+file name when searching.
+
+If MODE is non-nil, it should be a symbol or a list of symbol representing
+requirements.  Allowed symbols are `exists', `executable', `writable', and
+`readable'.  If MODE is nil, it defaults to `readable'.
+
+`locate-file' keeps hash tables of the directories it searches through,
+in order to speed things up.  It tries valiantly to not get confused in
+the face of a changing and unpredictable environment, but can occasionally
+get tripped up.  In this case, you will have to call
+`locate-file-clear-hashing' to get it back on track.  See that function
+for details.
+
+arguments: (FILENAME PATH-LIST &optional SUFFIXES MODE)
+Flocate-file-clear-hashing
+Clear the hash records for the specified list of directories.
+`locate-file' uses a hashing scheme to speed lookup, and will correctly
+track the following environmental changes:
+
+-- changes of any sort to the list of directories to be searched.
+-- addition and deletion of non-shadowing files (see below) from the
+   directories in the list.
+-- byte-compilation of a .el file into a .elc file.
+
+`locate-file' will primarily get confused if you add a file that shadows
+(i.e. has the same name as) another file further down in the directory list.
+In this case, you must call `locate-file-clear-hashing'.
+
+If PATH is t, it means to fully clear all the accumulated hashes.  This
+can be used if the internal tables grow too large, or when dumping.
+
+arguments: (PATH)
+Feval-buffer
+Execute BUFFER as Lisp code.
+Programs can pass two arguments, BUFFER and PRINTFLAG.
+BUFFER is the buffer to evaluate (nil means use current buffer).
+PRINTFLAG controls printing of output:
+nil means discard it; anything else is a stream for printing.
+
+If there is no error, point does not move.  If there is an error,
+point remains at the end of the last character read from the buffer.
+
+arguments: (&optional BUFFER PRINTFLAG)
+Feval-region
+Execute the region as Lisp code.
+When called from programs, expects two arguments START and END
+giving starting and ending indices in the current buffer
+of the text to be executed.
+Programs can pass third optional argument STREAM which controls output:
+nil means discard it; anything else is stream for printing it.
+
+If there is no error, point does not move.  If there is an error,
+point remains at the end of the last character read from the buffer.
+
+Note:  Before evaling the region, this function narrows the buffer to it.
+If the code being eval'd should happen to trigger a redisplay you may
+see some text temporarily disappear because of this.
+
+arguments: (START END &optional STREAM)
+Fread
+Read one Lisp expression as text from STREAM, return as Lisp object.
+If STREAM is nil, use the value of `standard-input' (which see).
+STREAM or the value of `standard-input' may be:
+ a buffer (read from point and advance it)
+ a marker (read from where it points and advance it)
+ a function (call it with no arguments for each character,
+     call it with a char as argument to push a char back)
+ a string (takes text from string, starting at the beginning)
+ t (read text line using minibuffer and use it).
+
+arguments: (&optional STREAM)
+Fread-from-string
+Read one Lisp expression which is represented as text by STRING.
+Returns a cons: (OBJECT-READ . FINAL-STRING-INDEX).
+START and END optionally delimit a substring of STRING from which to read;
+ they default to 0 and (length STRING) respectively.
+
+arguments: (STRING &optional START END)
+Vvalues
+List of values of all expressions which were read, evaluated and printed.
+Order is reverse chronological.Vstandard-input
+Stream for read to get input from.
+See documentation of `read' for possible values.Vload-path
+*List of directories to search for files to load.
+Each element is a string (directory name) or nil (try default directory).
+
+Note that the elements of this list *may not* begin with "~", so you must
+call `expand-file-name' on them before adding them to this list.
+
+Initialized based on EMACSLOADPATH environment variable, if any,
+otherwise to default specified in by file `paths.h' when XEmacs was built.
+If there were no paths specified in `paths.h', then XEmacs chooses a default
+value for this variable by looking around in the file-system near the
+directory in which the XEmacs executable resides.Vload-in-progress
+Non-nil iff inside of `load'.Vafter-load-alist
+An alist of expressions to be evalled when particular files are loaded.
+Each element looks like (FILENAME FORMS...).
+When `load' is run and the file-name argument is FILENAME,
+the FORMS in the corresponding element are executed at the end of loading.
+
+FILENAME must match exactly!  Normally FILENAME is the name of a library,
+with no directory specified, since that is how `load' is normally called.
+An error in FORMS does not undo the load,
+but does prevent execution of the rest of the FORMS.Vload-warn-when-source-newer
+*Whether `load' should check whether the source is newer than the binary.
+If this variable is true, then when a `.elc' file is being loaded and the
+corresponding `.el' is newer, a warning message will be printed.Vload-warn-when-source-only
+*Whether `load' should warn when loading a `.el' file instead of an `.elc'.
+If this variable is true, then when `load' is called with a filename without
+an extension, and the `.elc' version doesn't exist but the `.el' version does,
+then a message will be printed.  If an explicit extension is passed to `load',
+no warning will be printed.Vload-ignore-elc-files
+*Whether `load' should ignore `.elc' files when a suffix is not given.
+This is normally used only to bootstrap the `.elc' files when building XEmacs.Vload-history
+Alist mapping source file names to symbols and features.
+Each alist element is a list that starts with a file name,
+except for one element (optional) that starts with nil and describes
+definitions evaluated from buffers not visiting files.
+The remaining elements of each list are symbols defined as functions
+or variables, and cons cells `(provide . FEATURE)' and `(require . FEATURE)'.Vcurrent-load-list
+Used for internal purposes by `load'.Vload-file-name
+Full name of file being loaded by `load'.Vload-read-function
+Function used by `load' and `eval-region' for reading expressions.
+The default is nil, which means use the function `read'.Vload-force-doc-strings
+Non-nil means `load' should force-load all dynamic doc strings.
+This is useful when the file being loaded is a temporary copy.Vfail-on-bucky-bit-character-escapes
+Whether `read' should signal an error when it encounters unsupported
+character escape syntaxes or just read them incorrectly.Fstart-kbd-macro
+Record subsequent keyboard and menu input, defining a keyboard macro.
+The commands are recorded even as they are executed.
+Use \[end-kbd-macro] to finish recording and make the macro available.
+Use \[name-last-kbd-macro] to give it a permanent name.
+Non-nil arg (prefix arg) means append to last macro defined;
+ This begins by re-executing that macro as if you typed it again.
+
+arguments: (APPEND)
+Fend-kbd-macro
+Finish defining a keyboard macro.
+The definition was started by \[start-kbd-macro].
+The macro is now available for use via \[call-last-kbd-macro],
+or it can be given a name with \[name-last-kbd-macro] and then invoked
+under that name.
+
+With numeric arg, repeat macro now that many times,
+counting the definition just completed as the first repetition.
+An argument of zero means repeat until error.
+
+arguments: (&optional ARG)
+Fzap-last-kbd-macro-event
+Don't look at this lest you vomit or spontaneously combust.
+
+arguments: ()
+Fcancel-kbd-macro-events
+Cancel the events added to a keyboard macro for this command.
+
+arguments: ()
+Fcall-last-kbd-macro
+Call the last keyboard macro that you defined with \[start-kbd-macro].
+
+A prefix argument serves as a repeat count.  Zero means repeat until error.
+
+To make a macro permanent so you can call it even after
+defining others, use \[name-last-kbd-macro].
+
+arguments: (&optional PREFIX)
+Fexecute-kbd-macro
+Execute MACRO as string of editor command characters.
+If MACRO is a symbol, its function definition is used.
+COUNT is a repeat count, or nil for once, or 0 for infinite loop.
+
+arguments: (MACRO &optional COUNT)
+Vexecuting-macro
+Currently executing keyboard macro (a vector of events or string);
+nil if none executing.Vexecuting-kbd-macro
+Currently executing keyboard macro (a vector of events or string);
+nil if none executing.Fmarker-buffer
+Return the buffer that MARKER points into, or nil if none.
+Return nil if MARKER points into a dead buffer or doesn't point anywhere.
+
+arguments: (MARKER)
+Fmarker-position
+Return the position MARKER points at, as a character number.
+Return `nil' if marker doesn't point anywhere.
+
+arguments: (MARKER)
+Fset-marker
+Move MARKER to position POSITION in BUFFER.
+POSITION can be a marker, an integer or nil.  If POSITION is an
+integer, make MARKER point before the POSITIONth character in BUFFER.
+If POSITION is nil, makes MARKER point nowhere.  Then it no longer
+slows down editing in any buffer.  If POSITION is less than 1, move
+MARKER to the beginning of BUFFER.  If POSITION is greater than the
+size of BUFFER, move MARKER to the end of BUFFER.
+BUFFER defaults to the current buffer.
+If this marker was returned by (point-marker t), then changing its
+position moves point.  You cannot change its buffer or make it point
+nowhere.
+The return value is MARKER.
+
+arguments: (MARKER POSITION &optional BUFFER)
+Fcopy-marker
+Return a new marker pointing at the same place as MARKER-OR-INTEGER.
+If MARKER-OR-INTEGER is an integer, return a new marker pointing
+at that position in the current buffer.
+Optional argument MARKER-TYPE specifies the insertion type of the new
+marker; see `marker-insertion-type'.
+
+arguments: (MARKER-OR-INTEGER &optional MARKER-TYPE)
+Fmarker-insertion-type
+Return insertion type of MARKER: t if it stays after inserted text.
+nil means the marker stays before text inserted there.
+
+arguments: (MARKER)
+Fset-marker-insertion-type
+Set the insertion-type of MARKER to TYPE.
+If TYPE is t, it means the marker advances when you insert text at it.
+If TYPE is nil, it means the marker stays behind when you insert text at it.
+
+arguments: (MARKER TYPE)
+Fmd5
+Return the MD5 message digest of OBJECT, a buffer or string.
+
+Optional arguments START and END denote positions for computing the
+digest of a portion of OBJECT.
+
+The optional CODING argument specifies the coding system the text is to be
+represented in while computing the digest.  If unspecified, it defaults
+to the current format of the data, or is guessed.
+
+If NOERROR is non-nil, silently assume binary coding if the guesswork
+fails.  Normally, an error is signaled in such case.
+
+CODING and NOERROR arguments are meaningful only in XEmacsen with
+file-coding or Mule support.  Otherwise, they are ignored.
+
+arguments: (OBJECT &optional START END CODING NOERROR)
+Fminibuffer-depth
+Return current depth of activations of minibuffer, a nonnegative integer.
+
+arguments: ()
+Fset-minibuffer-preprompt
+Set the minibuffer preprompt string to PREPROMPT. This is used by language
+input methods to relay state information to the user.
+
+arguments: (PREPROMPT)
+Fread-minibuffer-internal
+Lowest-level interface to minibuffers.  Don't call this.
+
+arguments: (PROMPT)
+Ftry-completion
+Return common substring of all completions of STRING in COLLECTION.
+COLLECTION must be an alist, an obarray, or a function.
+Each string in COLLECTION is tested to see if it begins with STRING.
+All that match are compared together; the longest initial sequence
+common to all matches is returned as a string.  If there is no match
+at all, nil is returned.  For an exact match, t is returned.
+
+If COLLECTION is an alist, the cars of the elements of the alist
+(which must be strings) form the set of possible completions.
+
+If COLLECTION is an obarray, the names of all symbols in the obarray
+are the possible completions.
+
+If COLLECTION is a function, it is called with three arguments: the
+values STRING, PREDICATE and nil.  Whatever it returns becomes the
+value of `try-completion'.
+
+If optional third argument PREDICATE is non-nil, it is used to test
+each possible match.  The match is a candidate only if PREDICATE
+returns non-nil.  The argument given to PREDICATE is the alist element
+or the symbol from the obarray.
+
+arguments: (STRING COLLECTION &optional PREDICATE)
+Fall-completions
+Search for partial matches to STRING in COLLECTION.
+COLLECTION must be an alist, an obarray, or a function.
+Each string in COLLECTION is tested to see if it begins with STRING.
+The value is a list of all the strings from COLLECTION that match.
+
+If COLLECTION is an alist, the cars of the elements of the alist
+(which must be strings) form the set of possible completions.
+
+If COLLECTION is an obarray, the names of all symbols in the obarray
+are the possible completions.
+
+If COLLECTION is a function, it is called with three arguments: the
+values STRING, PREDICATE and t.  Whatever it returns becomes the
+value of `all-completions'.
+
+If optional third argument PREDICATE is non-nil, it is used to test
+each possible match.  The match is a candidate only if PREDICATE
+returns non-nil.  The argument given to PREDICATE is the alist element
+or the symbol from the obarray.
+
+arguments: (STRING COLLECTION &optional PREDICATE)
+Vminibuffer-setup-hook
+Normal hook run just after entry to minibuffer.Vcompletion-ignore-case
+Non-nil means don't consider case significant in completion.Vcompletion-regexp-list
+List of regexps that should restrict possible completions.
+Each completion has to match all regexps in this list.Fmake-color-instance
+Return a new `color-instance' object named NAME (a string).
+
+Optional argument DEVICE specifies the device this object applies to
+and defaults to the selected device.
+
+An error is signaled if the color is unknown or cannot be allocated;
+however, if optional argument NOERROR is non-nil, nil is simply
+returned in this case. (And if NOERROR is other than t, a warning may
+be issued.)
+
+The returned object is a normal, first-class lisp object.  The way you
+`deallocate' the color is the way you deallocate any other lisp object:
+you drop all pointers to it and allow it to be garbage collected.  When
+these objects are GCed, the underlying window-system data (e.g. X object)
+is deallocated as well.
+
+arguments: (NAME &optional DEVICE NOERROR)
+Fcolor-instance-p
+Return non-nil if OBJECT is a color instance.
+
+arguments: (OBJECT)
+Fcolor-instance-name
+Return the name used to allocate COLOR-INSTANCE.
+
+arguments: (COLOR-INSTANCE)
+Fcolor-instance-rgb-components
+Return a three element list containing the red, green, and blue
+color components of COLOR-INSTANCE, or nil if unknown.
+Component values range from 0 to 65535.
+
+arguments: (COLOR-INSTANCE)
+Fvalid-color-name-p
+Return true if COLOR names a valid color for the current device.
+
+Valid color names for X are listed in the file /usr/lib/X11/rgb.txt, or
+whatever the equivalent is on your system.
+
+Valid color names for TTY are those which have an ISO 6429 (ANSI) sequence.
+In addition to being a color this may be one of a number of attributes
+such as `blink'.
+
+arguments: (COLOR &optional DEVICE)
+Fmake-font-instance
+Return a new `font-instance' object named NAME.
+DEVICE specifies the device this object applies to and defaults to the
+selected device.  An error is signalled if the font is unknown or cannot
+be allocated; however, if NOERROR is non-nil, nil is simply returned in
+this case.
+
+The returned object is a normal, first-class lisp object.  The way you
+`deallocate' the font is the way you deallocate any other lisp object:
+you drop all pointers to it and allow it to be garbage collected.  When
+these objects are GCed, the underlying X data is deallocated as well.
+
+arguments: (NAME &optional DEVICE NOERROR)
+Ffont-instance-p
+Return non-nil if OBJECT is a font instance.
+
+arguments: (OBJECT)
+Ffont-instance-name
+Return the name used to allocate FONT-INSTANCE.
+
+arguments: (FONT-INSTANCE)
+Ffont-instance-ascent
+Return the ascent in pixels of FONT-INSTANCE.
+The returned value is the maximum ascent for all characters in the font,
+where a character's ascent is the number of pixels above (and including)
+the baseline.
+
+arguments: (FONT-INSTANCE)
+Ffont-instance-descent
+Return the descent in pixels of FONT-INSTANCE.
+The returned value is the maximum descent for all characters in the font,
+where a character's descent is the number of pixels below the baseline.
+(Many characters to do not have any descent.  Typical characters with a
+descent are lowercase p and lowercase g.)
+
+arguments: (FONT-INSTANCE)
+Ffont-instance-width
+Return the width in pixels of FONT-INSTANCE.
+The returned value is the average width for all characters in the font.
+
+arguments: (FONT-INSTANCE)
+Ffont-instance-proportional-p
+Return whether FONT-INSTANCE is proportional.
+This means that different characters in the font have different widths.
+
+arguments: (FONT-INSTANCE)
+Ffont-instance-truename
+Return the canonical name of FONT-INSTANCE.
+Font names are patterns which may match any number of fonts, of which
+the first found is used.  This returns an unambiguous name for that font
+(but not necessarily its only unambiguous name).
+
+arguments: (FONT-INSTANCE)
+Ffont-instance-properties
+Return the properties (an alist or nil) of FONT-INSTANCE.
+
+arguments: (FONT-INSTANCE)
+Flist-fonts
+Return a list of font names matching the given pattern.
+DEVICE specifies which device to search for names, and defaults to the
+currently selected device.
+
+arguments: (PATTERN &optional DEVICE)
+Fcolor-specifier-p
+Return t if OBJECT is a color specifier.
+
+See `make-color-specifier' for a description of possible color instantiators.
+
+arguments: (OBJECT)
+Ffont-specifier-p
+Return non-nil if OBJECT is a font specifier.
+
+See `make-font-specifier' for a description of possible font instantiators.
+
+arguments: (OBJECT)
+Fface-boolean-specifier-p
+Return non-nil if OBJECT is a face-boolean specifier.
+
+See `make-face-boolean-specifier' for a description of possible
+face-boolean instantiators.
+
+arguments: (OBJECT)
+Fwrite-char
+Output character CHARACTER to stream STREAM.
+STREAM defaults to the value of `standard-output' (which see).
+
+arguments: (CHARACTER &optional STREAM)
+Fwith-output-to-temp-buffer
+Bind `standard-output' to buffer BUFNAME, eval BODY, then show that buffer.
+The buffer is cleared out initially, and marked as unmodified when done.
+All output done by BODY is inserted in that buffer by default.
+The buffer is displayed in another window, but not selected.
+The value of the last form in BODY is returned.
+If BODY does not finish normally, the buffer BUFNAME is not displayed.
+
+If variable `temp-buffer-show-function' is non-nil, call it at the end
+to get the buffer displayed.  It gets one argument, the buffer to display.Fterpri
+Output a newline to STREAM.
+If STREAM is omitted or nil, the value of `standard-output' is used.
+
+arguments: (&optional STREAM)
+Fprin1
+Output the printed representation of OBJECT, any Lisp object.
+Quoting characters are printed when needed to make output that `read'
+can handle, whenever this is possible.
+Output stream is STREAM, or value of `standard-output' (which see).
+
+arguments: (OBJECT &optional STREAM)
+Fprin1-to-string
+Return a string containing the printed representation of OBJECT,
+any Lisp object.  Quoting characters are used when needed to make output
+that `read' can handle, whenever this is possible, unless the optional
+second argument NOESCAPE is non-nil.
+
+arguments: (OBJECT &optional NOESCAPE)
+Fprinc
+Output the printed representation of OBJECT, any Lisp object.
+No quoting characters are used; no delimiters are printed around
+the contents of strings.
+Output stream is STREAM, or value of `standard-output' (which see).
+
+arguments: (OBJECT &optional STREAM)
+Fprint
+Output the printed representation of OBJECT, with newlines around it.
+Quoting characters are printed when needed to make output that `read'
+can handle, whenever this is possible.
+Output stream is STREAM, or value of `standard-output' (which see).
+
+arguments: (OBJECT &optional STREAM)
+Ferror-message-string
+Convert ERROR-OBJECT to an error message, and return it.
+
+The format of ERROR-OBJECT should be (ERROR-SYMBOL . DATA).  The
+message is equivalent to the one that would be issued by
+`display-error' with the same argument.
+
+arguments: (ERROR-OBJECT)
+Fdisplay-error
+Display ERROR-OBJECT on STREAM in a user-friendly way.
+
+arguments: (ERROR-OBJECT STREAM)
+Falternate-debugging-output
+Append CHARACTER to the array `alternate_do_string'.
+This can be used in place of `external-debugging-output' as a function
+to be passed to `print'.  Before calling `print', set `alternate_do_pointer'
+to 0.
+
+arguments: (CHARACTER)
+Fexternal-debugging-output
+Write CHAR-OR-STRING to stderr or stdout.
+If optional arg STDOUT-P is non-nil, write to stdout; otherwise, write
+to stderr.  You can use this function to write directly to the terminal.
+This function can be used as the STREAM argument of Fprint() or the like.
+
+Under MS Windows, this writes output to the console window (which is
+created, if necessary), unless XEmacs is being run noninteractively
+(i.e. using the `-batch' argument).
+
+If you have opened a termscript file (using `open-termscript'), then
+the output also will be logged to this file.
+
+arguments: (CHAR-OR-STRING &optional STDOUT-P DEVICE)
+Fopen-termscript
+Start writing all terminal output to FILENAME as well as the terminal.
+FILENAME = nil means just close any termscript file currently open.
+
+arguments: (FILENAME)
+Vstandard-output
+Output stream `print' uses by default for outputting a character.
+This may be any function of one argument.
+It may also be a buffer (output is inserted before point)
+or a marker (output is inserted and the marker is advanced)
+or the symbol t (output appears in the minibuffer line).Vfloat-output-format
+The format descriptor string that lisp uses to print floats.
+This is a %-spec like those accepted by `printf' in C,
+but with some restrictions.  It must start with the two characters `%.'.
+After that comes an integer precision specification,
+and then a letter which controls the format.
+The letters allowed are `e', `f' and `g'.
+Use `e' for exponential notation "DIG.DIGITSeEXPT"
+Use `f' for decimal point notation "DIGITS.DIGITS".
+Use `g' to choose the shorter of those two formats for the number at hand.
+The precision in any of these cases is the number of digits following
+the decimal point.  With `f', a precision of 0 means to omit the
+decimal point.  0 is not allowed with `f' or `g'.
+
+A value of nil means to use `%.16g'.
+
+Regardless of the value of `float-output-format', a floating point number
+will never be printed in such a way that it is ambiguous with an integer;
+that is, a floating-point number will always be printed with a decimal
+point and/or an exponent, even if the digits following the decimal point
+are all zero.  This is to preserve read-equivalence.Vprint-length
+Maximum length of list or vector to print before abbreviating.
+A value of nil means no limit.Vprint-string-length
+Maximum length of string to print before abbreviating.
+A value of nil means no limit.Vprint-level
+Maximum depth of list nesting to print before abbreviating.
+A value of nil means no limit.Vprint-escape-newlines
+Non-nil means print newlines in strings as backslash-n.Vprint-readably
+If non-nil, then all objects will be printed in a readable form.
+If an object has no readable representation, then an error is signalled.
+When print-readably is true, compiled-function objects will be written in
+ #[...] form instead of in #<compiled-function [...]> form, and two-element
+ lists of the form (quote object) will be written as the equivalent 'object.
+Do not SET this variable; bind it instead.Vprint-gensym
+If non-nil, then uninterned symbols will be printed specially.
+Uninterned symbols are those which are not present in `obarray', that is,
+those which were made with `make-symbol' or by calling `intern' with a
+second argument.
+
+When print-gensym is true, such symbols will be preceded by "#:",
+which causes the reader to create a new symbol instead of interning
+and returning an existing one.  Beware: the #: syntax creates a new
+symbol each time it is seen, so if you print an object which contains
+two pointers to the same uninterned symbol, `read' will not duplicate
+that structure.
+
+If the value of `print-gensym' is a cons cell, then in addition
+refrain from clearing `print-gensym-alist' on entry to and exit from
+printing functions, so that the use of #...# and #...= can carry over
+for several separately printed objects.Vprint-gensym-alist
+Association list of elements (GENSYM . N) to guide use of #N# and #N=.
+In each element, GENSYM is an uninterned symbol that has been associated
+with #N= for the specified value of N.Vprint-message-label
+Label for minibuffer messages created with `print'.  This should
+generally be bound with `let' rather than set.  (See `display-message'.)Fprocessp
+Return t if OBJECT is a process.
+
+arguments: (OBJECT)
+Fprocess-live-p
+Return t if OBJECT is a process that is alive.
+
+arguments: (OBJECT)
+Fprocess-list
+Return a list of all processes.
+
+arguments: ()
+Fget-process
+Return the process named PROCESS-NAME (a string), or nil if there is none.
+PROCESS-NAME may also be a process; if so, the value is that process.
+
+arguments: (PROCESS-NAME)
+Fget-buffer-process
+Return the (or, a) process associated with BUFFER.
+BUFFER may be a buffer or the name of one.
+
+arguments: (BUFFER)
+Fprocess-id
+Return the process id of PROCESS.
+This is the pid of the Unix process which PROCESS uses or talks to.
+For a network connection, this value is a cons of
+ (foreign-network-port . foreign-host-name).
+
+arguments: (PROCESS)
+Fprocess-name
+Return the name of PROCESS, as a string.
+This is the name of the program invoked in PROCESS,
+possibly modified to make it unique among process names.
+
+arguments: (PROCESS)
+Fprocess-command
+Return the command that was executed to start PROCESS.
+This is a list of strings, the first string being the program executed
+and the rest of the strings being the arguments given to it.
+
+arguments: (PROCESS)
+Fstart-process-internal
+Start a program in a subprocess.  Return the process object for it.
+Args are NAME BUFFER PROGRAM &rest PROGRAM-ARGS
+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.
+ Process output goes at end of that buffer, unless you specify
+ an output stream or filter function to handle the output.
+ BUFFER may be also nil, meaning that this process is not associated
+ with any buffer
+Third arg is program file name.  It is searched for as in the shell.
+Remaining arguments are strings to give program as arguments.
+INCODE and OUTCODE specify the coding-system objects used in input/output
+ from/to the process.Fopen-network-stream-internal
+Open a TCP connection for a service to a host.
+Return a process object to represent the connection.
+Input and output work as for subprocesses; `delete-process' closes it.
+
+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.
+ Process output goes at end of that buffer, unless you specify
+ an output stream or filter function to handle the output.
+ BUFFER may also be nil, meaning that this process is not associated
+ with any buffer.
+Third arg HOST (a string) is  the name of the host to connect to,
+ or its IP address.
+Fourth arg SERVICE is the name of the service desired (a string),
+ or an integer specifying a port number to connect to.
+Optional fifth arg PROTOCOL is a network protocol.  Currently only 'tcp
+ (Transmission Control Protocol) and 'udp (User Datagram Protocol) are
+ supported.  When omitted, 'tcp is assumed.
+
+Output via `process-send-string' and input via buffer or filter (see
+`set-process-filter') are stream-oriented.  That means UDP datagrams are
+not guaranteed to be sent and received in discrete packets. (But small
+datagrams around 500 bytes that are not truncated by `process-send-string'
+are usually fine.)  Note further that the UDP protocol does not guard
+against lost packets.
+
+arguments: (NAME BUFFER HOST SERVICE &optional PROTOCOL)
+Fopen-multicast-group-internal
+Open a multicast connection on the specified dest/port/ttl.
+Return a process object to represent the connection.
+Input and output work as for subprocesses; `delete-process' closes it.
+
+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.
+ Process output goes at end of that buffer, unless you specify
+ an output stream or filter function to handle the output.
+ BUFFER may also be nil, meaning that this process is not associated
+ with any buffer.
+Third, fourth and fifth args are the multicast destination group, port and ttl.
+ dest must be an internet address between 224.0.0.0 and 239.255.255.255
+ port is a communication port like in traditional unicast
+ ttl is the time-to-live (15 for site, 63 for region and 127 for world)
+
+arguments: (NAME BUFFER DEST PORT TTL)
+Fset-process-window-size
+Tell PROCESS that it has logical window size HEIGHT and WIDTH.
+
+arguments: (PROCESS HEIGHT WIDTH)
+Fprocess-tty-name
+Return the name of the terminal PROCESS uses, or nil if none.
+This is the terminal that the process itself reads and writes on,
+not the name of the pty that Emacs uses to talk with that terminal.
+
+arguments: (PROCESS)
+Fset-process-buffer
+Set buffer associated with PROCESS to BUFFER (a buffer, or nil).
+
+arguments: (PROCESS BUFFER)
+Fprocess-buffer
+Return the buffer PROCESS is associated with.
+Output from PROCESS is inserted in this buffer
+unless PROCESS has a filter.
+
+arguments: (PROCESS)
+Fprocess-mark
+Return the marker for the end of the last output from PROCESS.
+
+arguments: (PROCESS)
+Fset-process-filter
+Give PROCESS the filter function FILTER; nil means no filter.
+t means stop accepting output from the process.
+When a process has a filter, each time it does output
+the entire string of output is passed to the filter.
+The filter gets two arguments: the process and the string of output.
+If the process has a filter, its buffer is not used for output.
+
+arguments: (PROCESS FILTER)
+Fprocess-filter
+Return the filter function of PROCESS; nil if none.
+See `set-process-filter' for more info on filter functions.
+
+arguments: (PROCESS)
+Fprocess-send-region
+Send current contents of the region between START and END as input to PROCESS.
+PROCESS may be a process or the name of a process, or a buffer or the
+name of a buffer, in which case the buffer's process is used.  If it
+is nil, the current buffer's process is used.
+BUFFER specifies the buffer to look in; if nil, the current buffer is used.
+If STRING is more than 100 or so characters long, it may be sent in
+several chunks.  This may happen even for shorter strings.  Output
+from processes can arrive in between chunks.
+
+arguments: (PROCESS START END &optional BUFFER)
+Fprocess-send-string
+Send PROCESS the contents of STRING as input.
+PROCESS may be a process or the name of a process, or a buffer or the
+name of a buffer, in which case the buffer's process is used.  If it
+is nil, the current buffer's process is used.
+Optional arguments START and END specify part of STRING; see `substring'.
+If STRING is more than 100 or so characters long, it may be sent in
+several chunks.  This may happen even for shorter strings.  Output
+from processes can arrive in between chunks.
+
+arguments: (PROCESS STRING &optional START END)
+Fprocess-input-coding-system
+Return PROCESS's input coding system.
+
+arguments: (PROCESS)
+Fprocess-output-coding-system
+Return PROCESS's output coding system.
+
+arguments: (PROCESS)
+Fprocess-coding-system
+Return a pair of coding-system for decoding and encoding of PROCESS.
+
+arguments: (PROCESS)
+Fset-process-input-coding-system
+Set PROCESS's input coding system to CODESYS.
+
+arguments: (PROCESS CODESYS)
+Fset-process-output-coding-system
+Set PROCESS's output coding system to CODESYS.
+
+arguments: (PROCESS CODESYS)
+Fset-process-coding-system
+Set coding-systems of PROCESS to DECODING and ENCODING.
+DECODING will be used to decode subprocess output and ENCODING to
+encode subprocess input.
+
+arguments: (PROCESS &optional DECODING ENCODING)
+Fset-process-sentinel
+Give PROCESS the sentinel SENTINEL; nil for none.
+The sentinel is called as a function when the process changes state.
+It gets two arguments: the process, and a string describing the change.
+
+arguments: (PROCESS SENTINEL)
+Fprocess-sentinel
+Return the sentinel of PROCESS; nil if none.
+See `set-process-sentinel' for more info on sentinels.
+
+arguments: (PROCESS)
+Fprocess-status
+Return the status of PROCESS.
+This is a symbol, one of these:
+
+run    -- for a process that is running.
+stop   -- for a process stopped but continuable.
+exit   -- for a process that has exited.
+signal -- for a process that has got a fatal signal.
+open   -- for a network stream connection that is open.
+closed -- for a network stream connection that is closed.
+nil    -- if arg is a process name and no such process exists.
+
+PROCESS may be a process, a buffer, the name of a process or buffer, or
+nil, indicating the current buffer's process.
+
+arguments: (PROCESS)
+Fprocess-exit-status
+Return the exit status of PROCESS or the signal number that killed it.
+If PROCESS has not yet exited or died, return 0.
+
+arguments: (PROCESS)
+Fprocess-send-signal
+Send signal SIGNAL to process PROCESS.
+SIGNAL may be an integer, or a symbol naming a signal, like `SIGSEGV'.
+PROCESS may be a process, a buffer, the name of a process or buffer, or
+nil, indicating the current buffer's process.
+Third arg CURRENT-GROUP non-nil means send signal to the current
+foreground process group of the process's controlling terminal rather
+than to the process's own process group.
+If the process is a shell that supports job control, this means
+send the signal to the current subjob rather than the shell.
+
+arguments: (SIGNAL &optional PROCESS CURRENT-GROUP)
+Finterrupt-process
+Interrupt process PROCESS.
+See function `process-send-signal' for more details on usage.
+
+arguments: (&optional PROCESS CURRENT-GROUP)
+Fkill-process
+Kill process PROCESS.
+See function `process-send-signal' for more details on usage.
+
+arguments: (&optional PROCESS CURRENT-GROUP)
+Fquit-process
+Send QUIT signal to process PROCESS.
+See function `process-send-signal' for more details on usage.
+
+arguments: (&optional PROCESS CURRENT-GROUP)
+Fstop-process
+Stop process PROCESS.
+See function `process-send-signal' for more details on usage.
+
+arguments: (&optional PROCESS CURRENT-GROUP)
+Fcontinue-process
+Continue process PROCESS.
+See function `process-send-signal' for more details on usage.
+
+arguments: (&optional PROCESS CURRENT-GROUP)
+Fsignal-process
+Send the process with process id PID the signal with code SIGNAL.
+PID must be an integer.  The process need not be a child of this Emacs.
+SIGNAL may be an integer, or a symbol naming a signal, like `SIGSEGV'.
+
+arguments: (PID SIGNAL)
+Fprocess-send-eof
+Make PROCESS see end-of-file in its input.
+PROCESS may be a process, a buffer, the name of a process or buffer, or
+nil, indicating the current buffer's process.
+If PROCESS is a network connection, or is a process communicating
+through a pipe (as opposed to a pty), then you cannot send any more
+text to PROCESS after you call this function.
+
+arguments: (&optional PROCESS)
+Fdelete-process
+Delete PROCESS: kill it and forget about it immediately.
+PROCESS may be a process or the name of one, or a buffer name.
+
+arguments: (PROCESS)
+Fprocess-kill-without-query
+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.
+
+arguments: (PROCESS &optional REQUIRE-QUERY-P)
+Fprocess-kill-without-query-p
+Return t if PROCESS will be killed without query when emacs is exited.
+
+arguments: (PROCESS)
+Vdelete-exited-processes
+*Non-nil means delete processes immediately when they exit.
+nil means don't delete them until `list-processes' is run.Vnull-device
+Name of the null device, which differs from system to system.
+The null device is a filename that acts as a sink for arbitrary amounts of
+data, which is discarded, or as a source for a zero-length file.
+It is available on all the systems that we currently support, but with
+different names (typically either `/dev/null' or `nul').
+
+Note that there is also a /dev/zero on most modern Unix versions (including
+Cygwin), which acts like /dev/null when used as a sink, but as a source
+it sends a non-ending stream of zero bytes.  It's used most often along
+with memory-mapping.  We don't provide a Lisp variable for this because
+the operations needing this are lower level than what ELisp programs
+typically do, and in any case no equivalent exists under native MS Windows.Vprocess-connection-type
+Control type of device used to communicate with subprocesses.
+Values are nil to use a pipe, or t or `pty' to use a pty.
+The value has no effect if the system has no ptys or if all ptys are busy:
+then a pipe is used in any case.
+The value takes effect when `start-process' is called.Vwindowed-process-io
+Enables input/output on standard handles of a windowed process.
+When this variable is nil (the default), XEmacs does not attempt to read
+standard output handle of a windowed process. Instead, the process is
+immediately marked as exited immediately upon successful launching. This is
+done because normal windowed processes do not use standard I/O, as they are
+not connected to any console.
+
+When launching a specially crafted windowed process, which expects to be
+launched by XEmacs, or by other program which pipes its standard input and
+output, this variable must be set to non-nil, in which case XEmacs will
+treat this process just like a console process.
+
+NOTE: You should never set this variable, only bind it.
+
+Only Windows processes can be "windowed" or "console". This variable has no
+effect on UNIX processes, because all UNIX processes are "console".Vnetwork-stream-blocking-port-list
+List of port numbers or port names to set a blocking I/O mode with connection.
+Nil value means to set a default(non-blocking) I/O mode.
+The value takes effect when `open-network-stream-internal' is called.Fstart-profiling
+Start profiling, with profile queries every MICROSECS.
+If MICROSECS is nil or omitted, the value of `default-profiling-interval'
+is used.
+
+You can retrieve the recorded profiling info using `get-profiling-info'.
+
+Starting and stopping profiling does not clear the currently recorded
+info.  Thus you can start and stop as many times as you want and everything
+will be properly accumulated.
+
+arguments: (&optional MICROSECS)
+Fstop-profiling
+Stop profiling.
+
+arguments: ()
+Fget-profiling-info
+Return the profiling info as an alist.
+
+arguments: ()
+Fclear-profiling-info
+Clear out the recorded profiling info.
+
+arguments: ()
+Fprofiling-active-p
+Return non-nil if profiling information is currently being recorded.
+
+arguments: ()
+Vdefault-profiling-interval
+Default CPU time in microseconds between profiling sampling.
+Used when the argument to `start-profiling' is nil or omitted.
+Note that the time in question is CPU time (when the program is executing
+or the kernel is executing on behalf of the program) and not real time.Vcall-count-profile-table
+The table where call-count information is stored by the profiling primitives.
+This is a hash table whose keys are funcallable objects, and whose
+values are their call counts (integers).Frange-table-p
+Return non-nil if OBJECT is a range table.
+
+arguments: (OBJECT)
+Fmake-range-table
+Return a new, empty range table.
+You can manipulate it using `put-range-table', `get-range-table',
+`remove-range-table', and `clear-range-table'.
+
+arguments: ()
+Fcopy-range-table
+Return a new range table which is a copy of RANGE-TABLE.
+It will contain the same values for the same ranges as RANGE-TABLE.
+The values will not themselves be copied.
+
+arguments: (RANGE-TABLE)
+Fget-range-table
+Find value for position POS in RANGE-TABLE.
+If there is no corresponding value, return DEFAULT (defaults to nil).
+
+arguments: (POS RANGE-TABLE &optional DEFAULT)
+Fput-range-table
+Set the value for range (START, END) to be VALUE in RANGE-TABLE.
+
+arguments: (START END VALUE RANGE-TABLE)
+Fremove-range-table
+Remove the value for range (START, END) in RANGE-TABLE.
+
+arguments: (START END RANGE-TABLE)
+Fclear-range-table
+Flush RANGE-TABLE.
+
+arguments: (RANGE-TABLE)
+Fmap-range-table
+Map FUNCTION over entries in RANGE-TABLE, calling it with three args,
+the beginning and end of the range and the corresponding value.
+
+Results are guaranteed to be correct (i.e. each entry processed
+exactly once) if FUNCTION modifies or deletes the current entry
+(i.e. passes the current range to `put-range-table' or
+`remove-range-table'), but not otherwise.
+
+arguments: (FUNCTION RANGE-TABLE)
+Fredisplay-echo-area
+Ensure that all minibuffers are correctly showing the echo area.
+
+arguments: ()
+Fredraw-frame
+Clear frame FRAME and output again what is supposed to appear on it.
+FRAME defaults to the selected frame if omitted.
+Normally, redisplay is preempted as normal if input arrives.  However,
+if optional second arg NO-PREEMPT is non-nil, redisplay will not stop for
+input and is guaranteed to proceed to completion.
+
+arguments: (&optional FRAME NO-PREEMPT)
+Fredisplay-frame
+Ensure that FRAME's contents are correctly displayed.
+This differs from `redraw-frame' in that it only redraws what needs to
+be updated, as opposed to unconditionally clearing and redrawing
+the frame.
+FRAME defaults to the selected frame if omitted.
+Normally, redisplay is preempted as normal if input arrives.  However,
+if optional second arg NO-PREEMPT is non-nil, redisplay will not stop for
+input and is guaranteed to proceed to completion.
+
+arguments: (&optional FRAME NO-PREEMPT)
+Fredraw-device
+Clear device DEVICE and output again what is supposed to appear on it.
+DEVICE defaults to the selected device if omitted.
+Normally, redisplay is preempted as normal if input arrives.  However,
+if optional second arg NO-PREEMPT is non-nil, redisplay will not stop for
+input and is guaranteed to proceed to completion.
+
+arguments: (&optional DEVICE NO-PREEMPT)
+Fredisplay-device
+Ensure that DEVICE's contents are correctly displayed.
+This differs from `redraw-device' in that it only redraws what needs to
+be updated, as opposed to unconditionally clearing and redrawing
+the device.
+DEVICE defaults to the selected device if omitted.
+Normally, redisplay is preempted as normal if input arrives.  However,
+if optional second arg NO-PREEMPT is non-nil, redisplay will not stop for
+input and is guaranteed to proceed to completion.
+
+arguments: (&optional DEVICE NO-PREEMPT)
+Fredraw-modeline
+Force the modeline of the current buffer to be redisplayed.
+With optional non-nil ALL, force redisplay of all modelines.
+
+arguments: (&optional ALL)
+Fforce-cursor-redisplay
+Force an immediate update of the cursor on FRAME.
+FRAME defaults to the selected frame if omitted.
+
+arguments: (&optional FRAME)
+Vredisplay-cache-adjustment
+(Temporary) Setting this will impact the performance of the internal
+line start cache.Vpixel-vertical-clip-threshold
+Minimum pixel height for clipped bottom display line.
+A clipped line shorter than this won't be displayed.Vpixel-horizontal-clip-threshold
+Minimum visible area for clipped glyphs at right boundary.
+Clipped glyphs shorter than this won't be displayed.
+Only pixmap glyph instances are currently allowed to be clipped.Vglobal-mode-string
+String displayed by modeline-format's "%m" specification.Voverlay-arrow-position
+Marker for where to display an arrow on top of the buffer text.
+This must be the beginning of a line in order to work.
+See also `overlay-arrow-string'.Voverlay-arrow-string
+String or glyph to display as an arrow.  See also `overlay-arrow-position'.
+(Note that despite the name of this variable, it can be set to a glyph as
+well as a string.)Vscroll-step
+*The number of lines to try scrolling a window by when point moves out.
+If that fails to bring point back on frame, point is centered instead.
+If this is zero, point is always centered after it moves off screen.Vscroll-conservatively
+*Scroll up to this many lines, to bring point back on screen.Vtruncate-partial-width-windows
+*Non-nil means truncate lines in all windows less than full frame wide.Vvisible-bell
+*Non-nil substitutes a visual signal for the audible bell.
+
+Default behavior is to flash the whole screen.  On some platforms,
+special effects are available using the following values:
+
+'display       Flash the whole screen (ie, the default behavior).
+'top-bottom    Flash only the top and bottom lines of the selected frame.
+
+When effects are unavailable on a platform, the visual bell is the
+default, whole screen.  (Currently only X supports any special effects.)Vno-redraw-on-reenter
+*Non-nil means no need to redraw entire frame after suspending.
+A non-nil value is useful if the terminal can automatically preserve
+Emacs's frame display when you reenter Emacs.
+It is up to you to set this variable if your terminal can do that.Vwindow-system
+A symbol naming the window-system under which Emacs is running,
+such as `x', or nil if emacs is running on an ordinary terminal.
+
+Do not use this variable, except for GNU Emacs compatibility, as it
+gives wrong values in a multi-device environment.  Use `console-type'
+instead.Vinitial-window-system
+DON'T TOUCHVcursor-in-echo-area
+Non-nil means put cursor in minibuffer, at end of any message there.Vbar-cursor
+*Use vertical bar cursor if non-nil.  If t width is 1 pixel, otherwise 2.Vbuffer-list-changed-hook
+Function or functions to call when a frame's buffer list has changed.
+This is called during redisplay, before redisplaying each frame.
+Functions on this hook are called with one argument, the frame.Vdisplay-warning-tick
+Bump this to tell the C code to call `display-warning-buffer'
+at next redisplay.  You should not normally change this; the function
+`display-warning' automatically does this at appropriate times.Vinhibit-warning-display
+Non-nil means inhibit display of warning messages.
+You should *bind* this, not set it.  Any pending warning messages
+will be displayed when the binding no longer applies.Vwindow-size-change-functions
+Not currently implemented.
+Functions called before redisplay, if window sizes have changed.
+The value should be a list of functions that take one argument.
+Just before redisplay, for each frame, if any of its windows have changed
+size since the last redisplay, or have been split or deleted,
+all the functions in the list are called, with the frame as argument.Vwindow-scroll-functions
+Not currently implemented.
+Functions to call before redisplaying a window with scrolling.
+Each function is called with two arguments, the window
+and its new display-start position.  Note that the value of `window-end'
+is not valid when these functions are called.Vredisplay-end-trigger-functions
+See `set-window-redisplay-end-trigger'.Vcolumn-number-start-at-one
+*Non-nil means column display number starts at 1.Vleft-margin-width
+*Width of left margin.
+This is a specifier; use `set-specifier' to change it.Vright-margin-width
+*Width of right margin.
+This is a specifier; use `set-specifier' to change it.Vminimum-line-ascent
+*Minimum ascent height of lines.
+This is a specifier; use `set-specifier' to change it.Vminimum-line-descent
+*Minimum descent height of lines.
+This is a specifier; use `set-specifier' to change it.Vuse-left-overflow
+*Non-nil means use the left outside margin as extra whitespace when
+displaying 'whitespace or 'inside-margin glyphs.
+This is a specifier; use `set-specifier' to change it.Vuse-right-overflow
+*Non-nil means use the right outside margin as extra whitespace when
+displaying 'whitespace or 'inside-margin glyphs.
+This is a specifier; use `set-specifier' to change it.Vtext-cursor-visible-p
+*Non-nil means the text cursor is visible (this is usually the case).
+This is a specifier; use `set-specifier' to change it.Flooking-at
+Return t if text after point matches regular expression REGEXP.
+This function modifies the match data that `match-beginning',
+`match-end' and `match-data' access; save and restore the match
+data if you want to preserve them.
+
+Optional argument BUFFER defaults to the current buffer.
+
+arguments: (REGEXP &optional BUFFER)
+Fposix-looking-at
+Return t if text after point matches regular expression REGEXP.
+Find the longest match, in accord with Posix regular expression rules.
+This function modifies the match data that `match-beginning',
+`match-end' and `match-data' access; save and restore the match
+data if you want to preserve them.
+
+Optional argument BUFFER defaults to the current buffer.
+
+arguments: (REGEXP &optional BUFFER)
+Fstring-match
+Return index of start of first match for REGEXP in STRING, or nil.
+If third arg START is non-nil, start search at that index in STRING.
+For index of first char beyond the match, do (match-end 0).
+`match-end' and `match-beginning' also give indices of substrings
+matched by parenthesis constructs in the pattern.
+
+Optional arg BUFFER controls how case folding is done (according to
+the value of `case-fold-search' in that buffer and that buffer's case
+tables) and defaults to the current buffer.
+
+arguments: (REGEXP STRING &optional START BUFFER)
+Fposix-string-match
+Return index of start of first match for REGEXP in STRING, or nil.
+Find the longest match, in accord with Posix regular expression rules.
+If third arg START is non-nil, start search at that index in STRING.
+For index of first char beyond the match, do (match-end 0).
+`match-end' and `match-beginning' also give indices of substrings
+matched by parenthesis constructs in the pattern.
+
+Optional arg BUFFER controls how case folding is done (according to
+the value of `case-fold-search' in that buffer and that buffer's case
+tables) and defaults to the current buffer.
+
+arguments: (REGEXP STRING &optional START BUFFER)
+Fskip-chars-forward
+Move point forward, stopping before a char not in STRING, or at pos LIMIT.
+STRING is like the inside of a `[...]' in a regular expression
+except that `]' is never special and `\' quotes `^', `-' or `\'.
+Thus, with arg "a-zA-Z", this skips letters stopping before first nonletter.
+With arg "^a-zA-Z", skips nonletters stopping before first letter.
+Returns the distance traveled, either zero or positive.
+
+Optional argument BUFFER defaults to the current buffer.
+
+arguments: (STRING &optional LIMIT BUFFER)
+Fskip-chars-backward
+Move point backward, stopping after a char not in STRING, or at pos LIMIT.
+See `skip-chars-forward' for details.
+Returns the distance traveled, either zero or negative.
+
+Optional argument BUFFER defaults to the current buffer.
+
+arguments: (STRING &optional LIMIT BUFFER)
+Fskip-syntax-forward
+Move point forward across chars in specified syntax classes.
+SYNTAX is a string of syntax code characters.
+Stop before a char whose syntax is not in SYNTAX, or at position LIMIT.
+If SYNTAX starts with ^, skip characters whose syntax is NOT in SYNTAX.
+This function returns the distance traveled, either zero or positive.
+
+Optional argument BUFFER defaults to the current buffer.
+
+arguments: (SYNTAX &optional LIMIT BUFFER)
+Fskip-syntax-backward
+Move point backward across chars in specified syntax classes.
+SYNTAX is a string of syntax code characters.
+Stop on reaching a char whose syntax is not in SYNTAX, or at position LIMIT.
+If SYNTAX starts with ^, skip characters whose syntax is NOT in SYNTAX.
+This function returns the distance traveled, either zero or negative.
+
+Optional argument BUFFER defaults to the current buffer.
+
+arguments: (SYNTAX &optional LIMIT BUFFER)
+Fsearch-backward
+Search backward from point for STRING.
+Set point to the beginning of the occurrence found, and return point.
+
+Optional second argument LIMIT bounds the search; it is a buffer
+position.  The match found must not extend before that position.
+The value nil is equivalent to (point-min).
+
+Optional third argument NOERROR, if t, means just return nil (no
+error) if the search fails.  If neither nil nor t, set point to LIMIT
+and return nil.
+
+Optional fourth argument COUNT is a repeat count--search for
+successive occurrences.
+
+Optional fifth argument BUFFER specifies the buffer to search in and
+defaults to the current buffer.
+
+See also the functions `match-beginning', `match-end' and `replace-match'.
+
+arguments: (STRING &optional LIMIT NOERROR COUNT BUFFER)
+Fsearch-forward
+Search forward from point for STRING.
+Set point to the end of the occurrence found, and return point.
+
+Optional second argument LIMIT bounds the search; it is a buffer
+position.  The match found must not extend after that position.  The
+value nil is equivalent to (point-max).
+
+Optional third argument NOERROR, if t, means just return nil (no
+error) if the search fails.  If neither nil nor t, set point to LIMIT
+and return nil.
+
+Optional fourth argument COUNT is a repeat count--search for
+successive occurrences.
+
+Optional fifth argument BUFFER specifies the buffer to search in and
+defaults to the current buffer.
+
+See also the functions `match-beginning', `match-end' and `replace-match'.
+
+arguments: (STRING &optional LIMIT NOERROR COUNT BUFFER)
+Fword-search-backward
+Search backward from point for STRING, ignoring differences in punctuation.
+Set point to the beginning of the occurrence found, and return point.
+
+Optional second argument LIMIT bounds the search; it is a buffer
+position.  The match found must not extend before that position.
+The value nil is equivalent to (point-min).
+
+Optional third argument NOERROR, if t, means just return nil (no
+error) if the search fails.  If neither nil nor t, set point to LIMIT
+and return nil.
+
+Optional fourth argument COUNT is a repeat count--search for
+successive occurrences.
+
+Optional fifth argument BUFFER specifies the buffer to search in and
+defaults to the current buffer.
+
+See also the functions `match-beginning', `match-end' and `replace-match'.
+
+arguments: (STRING &optional LIMIT NOERROR COUNT BUFFER)
+Fword-search-forward
+Search forward from point for STRING, ignoring differences in punctuation.
+Set point to the end of the occurrence found, and return point.
+
+Optional second argument LIMIT bounds the search; it is a buffer
+position.  The match found must not extend after that position.  The
+value nil is equivalent to (point-max).
+
+Optional third argument NOERROR, if t, means just return nil (no
+error) if the search fails.  If neither nil nor t, set point to LIMIT
+and return nil.
+
+Optional fourth argument COUNT is a repeat count--search for
+successive occurrences.
+
+Optional fifth argument BUFFER specifies the buffer to search in and
+defaults to the current buffer.
+
+See also the functions `match-beginning', `match-end' and `replace-match'.
+
+arguments: (STRING &optional LIMIT NOERROR COUNT BUFFER)
+Fre-search-backward
+Search backward from point for match for regular expression REGEXP.
+Set point to the beginning of the match, and return point.
+The match found is the one starting last in the buffer
+and yet ending before the origin of the search.
+
+Optional second argument LIMIT bounds the search; it is a buffer
+position.  The match found must not extend before that position.
+The value nil is equivalent to (point-min).
+
+Optional third argument NOERROR, if t, means just return nil (no
+error) if the search fails.  If neither nil nor t, set point to LIMIT
+and return nil.
+
+Optional fourth argument COUNT is a repeat count--search for
+successive occurrences.
+
+Optional fifth argument BUFFER specifies the buffer to search in and
+defaults to the current buffer.
+
+See also the functions `match-beginning', `match-end' and `replace-match'.
+
+arguments: (REGEXP &optional LIMIT NOERROR COUNT BUFFER)
+Fre-search-forward
+Search forward from point for regular expression REGEXP.
+Set point to the end of the occurrence found, and return point.
+
+Optional second argument LIMIT bounds the search; it is a buffer
+position.  The match found must not extend after that position.  The
+value nil is equivalent to (point-max).
+
+Optional third argument NOERROR, if t, means just return nil (no
+error) if the search fails.  If neither nil nor t, set point to LIMIT
+and return nil.
+
+Optional fourth argument COUNT is a repeat count--search for
+successive occurrences.
+
+Optional fifth argument BUFFER specifies the buffer to search in and
+defaults to the current buffer.
+
+See also the functions `match-beginning', `match-end' and `replace-match'.
+
+arguments: (REGEXP &optional LIMIT NOERROR COUNT BUFFER)
+Fposix-search-backward
+Search backward from point for match for regular expression REGEXP.
+Find the longest match in accord with Posix regular expression rules.
+Set point to the beginning of the match, and return point.
+The match found is the one starting last in the buffer
+and yet ending before the origin of the search.
+
+Optional second argument LIMIT bounds the search; it is a buffer
+position.  The match found must not extend before that position.
+The value nil is equivalent to (point-min).
+
+Optional third argument NOERROR, if t, means just return nil (no
+error) if the search fails.  If neither nil nor t, set point to LIMIT
+and return nil.
+
+Optional fourth argument COUNT is a repeat count--search for
+successive occurrences.
+
+Optional fifth argument BUFFER specifies the buffer to search in and
+defaults to the current buffer.
+
+See also the functions `match-beginning', `match-end' and `replace-match'.
+
+arguments: (REGEXP &optional LIMIT NOERROR COUNT BUFFER)
+Fposix-search-forward
+Search forward from point for regular expression REGEXP.
+Find the longest match in accord with Posix regular expression rules.
+Set point to the end of the occurrence found, and return point.
+
+Optional second argument LIMIT bounds the search; it is a buffer
+position.  The match found must not extend after that position.  The
+value nil is equivalent to (point-max).
+
+Optional third argument NOERROR, if t, means just return nil (no
+error) if the search fails.  If neither nil nor t, set point to LIMIT
+and return nil.
+
+Optional fourth argument COUNT is a repeat count--search for
+successive occurrences.
+
+Optional fifth argument BUFFER specifies the buffer to search in and
+defaults to the current buffer.
+
+See also the functions `match-beginning', `match-end' and `replace-match'.
+
+arguments: (REGEXP &optional LIMIT NOERROR COUNT BUFFER)
+Freplace-match
+Replace text matched by last search with REPLACEMENT.
+If second arg FIXEDCASE is non-nil, do not alter case of replacement text.
+Otherwise maybe capitalize the whole text, or maybe just word initials,
+based on the replaced text.
+If the replaced text has only capital letters
+and has at least one multiletter word, convert REPLACEMENT to all caps.
+If the replaced text has at least one word starting with a capital letter,
+then capitalize each word in REPLACEMENT.
+
+If third arg LITERAL is non-nil, insert REPLACEMENT literally.
+Otherwise treat `\' as special:
+  `\&' in REPLACEMENT means substitute original matched text.
+  `\N' means substitute what matched the Nth `\(...\)'.
+       If Nth parens didn't match, substitute nothing.
+  `\\' means insert one `\'.
+  `\u' means upcase the next character.
+  `\l' means downcase the next character.
+  `\U' means begin upcasing all following characters.
+  `\L' means begin downcasing all following characters.
+  `\E' means terminate the effect of any `\U' or `\L'.
+  Case changes made with `\u', `\l', `\U', and `\L' override
+  all other case changes that may be made in the replaced text.
+FIXEDCASE and LITERAL are optional arguments.
+Leaves point at end of replacement text.
+
+The optional fourth argument STRING can be a string to modify.
+In that case, this function creates and returns a new string
+which is made by replacing the part of STRING that was matched.
+When fourth argument is a string, fifth argument STRBUFFER specifies
+the buffer to be used for syntax-table and case-table lookup and
+defaults to the current buffer.  When fourth argument is not a string,
+the buffer that the match occurred in has automatically been remembered
+and you do not need to specify it.
+
+When fourth argument is nil, STRBUFFER specifies a subexpression of
+the match.  It says to replace just that subexpression instead of the
+whole match.  This is useful only after a regular expression search or
+match since only regular expressions have distinguished subexpressions.
+
+arguments: (REPLACEMENT &optional FIXEDCASE LITERAL STRING STRBUFFER)
+Fmatch-beginning
+Return position of start of text matched by last regexp search.
+NUM, specifies which parenthesized expression in the last regexp.
+ Value is nil if NUMth pair didn't match, or there were less than NUM pairs.
+Zero means the entire text matched by the whole regexp or whole string.
+
+arguments: (NUM)
+Fmatch-end
+Return position of end of text matched by last regexp search.
+NUM specifies which parenthesized expression in the last regexp.
+ Value is nil if NUMth pair didn't match, or there were less than NUM pairs.
+Zero means the entire text matched by the whole regexp or whole string.
+
+arguments: (NUM)
+Fmatch-data
+Return a list containing all info on what the last regexp search matched.
+Element 2N is `(match-beginning N)'; element 2N + 1 is `(match-end N)'.
+All the elements are markers or nil (nil if the Nth pair didn't match)
+if the last match was on a buffer; integers or nil if a string was matched.
+Use `store-match-data' to reinstate the data in this list.
+
+If INTEGERS (the optional first argument) is non-nil, always use integers
+(rather than markers) to represent buffer positions.
+If REUSE is a list, reuse it as part of the value.  If REUSE is long enough
+to hold all the values, and if INTEGERS is non-nil, no consing is done.
+
+arguments: (&optional INTEGERS REUSE)
+Fstore-match-data
+Set internal data on last search match from elements of LIST.
+LIST should have been created by calling `match-data' previously.
+
+arguments: (LIST)
+Fregexp-quote
+Return a regexp string which matches exactly STRING and nothing else.
+
+arguments: (STRING)
+Fset-word-regexp
+Set the regexp to be used to match a word in regular-expression searching.
+#### Not yet implemented.  Currently does nothing.
+#### Do not use this yet.  Its calling interface is likely to change.
+
+arguments: (REGEXP)
+Vforward-word-regexp
+*Regular expression to be used in `forward-word'.
+#### Not yet implemented.Vbackward-word-regexp
+*Regular expression to be used in `backward-word'.
+#### Not yet implemented.Vwarn-about-possibly-incompatible-back-references
+If true, issue warnings when new-semantics back references occur.
+This is to catch places where old code might inadvertently have changed
+semantics.  This will occur in old code only where more than nine groups
+occur and a back reference to one of them is directly followed by a digit.Fown-selection-internal
+Give the selection SELECTION-NAME the value SELECTION-VALUE.
+SELECTION-NAME is a symbol, typically PRIMARY, SECONDARY, or CLIPBOARD.
+SELECTION-VALUE is typically a string, or a cons of two markers, but may be
+anything that the functions on selection-converter-out-alist know about.
+Optional arg HOW-TO-ADD specifies how the selection will be combined
+with any existing selection(s) - see `own-selection' for more
+information.
+Optional arg DATA-TYPE is a window-system-specific type.
+Optional arg DEVICE specifies the device on which to assert the selection.
+It defaults to the selected device.
+
+arguments: (SELECTION-NAME SELECTION-VALUE &optional HOW-TO-ADD DATA-TYPE DEVICE)
+Fregister-selection-data-type
+Register a new selection data type DATA-TYPE, optionally on the specified
+DEVICE. Returns the device-specific data type identifier, or nil if the
+device does not support this feature or the registration fails. 
+
+
+arguments: (DATA-TYPE &optional DEVICE)
+Fselection-data-type-name
+Retrieve the name of the specified selection data type DATA-TYPE, optionally
+on the specified DEVICE. Returns either a string or a symbol on success, and
+nil if the device does not support this feature or the type is not known. 
+
+
+arguments: (DATA-TYPE &optional DEVICE)
+Favailable-selection-types
+Retrieve a list of currently available types of selection associated with
+the given SELECTION-NAME, optionally on the specified DEVICE. This list
+does not take into account any possible conversions that might take place,
+so it should be taken as a minimal estimate of what is available.
+
+arguments: (SELECTION-NAME &optional DEVICE)
+Fdisown-selection-internal
+If we own the named selection, then disown it (make there be no selection).
+
+arguments: (SELECTION-NAME &optional SELECTION-TIME DEVICE)
+Fselection-owner-p
+Return t if the current emacs process owns SELECTION.
+SELECTION should be the name of the selection in question, typically one of
+the symbols PRIMARY, SECONDARY, or CLIPBOARD.  (For convenience, the symbol
+nil is the same as PRIMARY, and t is the same as SECONDARY.)
+
+arguments: (&optional SELECTION)
+Fselection-exists-p
+Whether there is currently an owner for SELECTION.
+SELECTION should be the name of the selection in question, typically one of
+the symbols PRIMARY, SECONDARY, or CLIPBOARD.  (For convenience, the symbol
+nil is the same as PRIMARY, and t is the same as SECONDARY.)
+Optionally, the window-system DATA-TYPE and the DEVICE may be specified.
+
+arguments: (&optional SELECTION DATA-TYPE DEVICE)
+Fget-selection-timestamp
+Return the timestamp associated with the specified SELECTION, if it exists.
+Note that the timestamp is a device-specific object, and may not actually be
+visible from Lisp.
+
+arguments: (SELECTION)
+Fget-selection-internal
+Return text selected from some window-system window.
+SELECTION is a symbol, typically PRIMARY, SECONDARY, or CLIPBOARD.
+TARGET-TYPE is the type of data desired, typically STRING or COMPOUND_TEXT.
+Under Mule, if the resultant data comes back as 8-bit data in type
+TEXT or COMPOUND_TEXT, it will be decoded as Compound Text.
+
+arguments: (SELECTION TARGET-TYPE &optional DEVICE)
+Vselection-converter-alist
+An alist associating selection-types (such as STRING and TIMESTAMP) with
+functions.  This is an alias for `selection-converter-out-alist', and should
+be considered obsolete.  Use the new name instead. 
+Vselection-converter-out-alist
+An alist associating selection-types (such as STRING and TIMESTAMP) with
+functions.  These functions will be called with three args: the name
+of the selection (typically PRIMARY, SECONDARY, or CLIPBOARD); a
+desired type to which the selection should be converted; and the local
+selection value (whatever had been passed to `own-selection').
+
+The return type of these functions depends upon the device in question;
+for mswindows, a string should be returned containing data in the requested
+format, or nil to indicate that the conversion could not be done.  Additionally,
+it is permissible to return a cons of the form (DATA-TYPE . STRING) suggesting
+a new data type to use instead.
+
+For X, the return value should be one of:
+
+-- nil (the conversion could not be done)
+-- a cons of a symbol and any of the following values; the symbol
+   explicitly specifies the type that will be sent.
+-- a string (If the type is not specified, then if Mule support exists,
+             the string will be converted to Compound Text and sent in
+             the 'COMPOUND_TEXT format; otherwise (no Mule support),
+             the string will be left as-is and sent in the 'STRING
+             format.  If the type is specified, the string will be
+             left as-is (or converted to binary format under Mule).
+             In all cases, 8-bit data it sent.)
+-- a character (With Mule support, will be converted to Compound Text
+                whether or not a type is specified.  If a type is not
+                specified, a type of 'STRING or 'COMPOUND_TEXT will be
+		sent, as for strings.)
+-- the symbol 'NULL (Indicates that there is no meaningful return value.
+                     Empty 32-bit data with a type of 'NULL will be sent.)
+-- a symbol (Will be converted into an atom.  If the type is not specified,
+             a type of 'ATOM will be sent.)
+-- an integer (Will be converted into a 16-bit or 32-bit integer depending
+               on the value.  If the type is not specified, a type of
+	       'INTEGER will be sent.)
+-- a cons (HIGH . LOW) of integers (Will be converted into a 32-bit integer.
+                                    If the type is not specified, a type of
+				    'INTEGER will be sent.)
+-- a vector of symbols (Will be converted into a list of atoms.  If the type
+                        is not specified, a type of 'ATOM will be sent.)
+-- a vector of integers (Will be converted into a list of 16-bit integers.
+                         If the type is not specified, a type of 'INTEGER
+			 will be sent.)
+-- a vector of integers and/or conses (HIGH . LOW) of integers
+                        (Will be converted into a list of 16-bit integers.
+                         If the type is not specified, a type of 'INTEGER
+			 will be sent.)Vselection-converter-in-alist
+An alist associating selection-types (such as STRING and TIMESTAMP) with
+functions.  These functions will be called with three args: the name
+of the selection (typically PRIMARY, SECONDARY or CLIPBOARD); the
+type from which the selection should be converted; and the selection
+value.  These functions should return a suitable representation of the
+value, or nil to indicate that the conversion was not possible.
+
+See also `selection-converter-out-alist'. 
+Vselection-coercion-alist
+An alist associating selection-types (such as STRING and TIMESTAMP) with
+functions.  These functions will be called with three args; the name
+of the selection (typically PRIMARY, SECONDARY or CLIPBOARD); the type
+from which the selection should be converted, and the selection value.
+The value passed will be *exactly the same value* that was given to
+`own-selection'; it should be converted into something suitable for
+return to a program calling `get-selection' with the appropriate
+parameters.
+
+See also `selection-converter-in-alist' and
+`selection-converter-out-alist'. 
+Vselection-appender-alist
+An alist associating selection-types (such as STRING and TIMESTAMP) with
+functions.  These functions will be called with four args; the name
+of the selection (typically PRIMARY, SECONDARY or CLIPBOARD); the type
+of the selection; and two selection values.  The functions are expected to
+return a value representing the catenation of the two values, or nil to
+indicate that this was not possible. 
+Vselection-buffer-killed-alist
+An alist associating selection-types (such as STRING and TIMESTAMP) with
+functions.  These functions will be called whenever a buffer is killed,
+with four args: the name of the selection (typically PRIMARY, SECONDARY
+or CLIPBOARD); the type of the selection; the value of the selection; and
+the buffer that has just been killed.  These functions should return a new
+selection value, or nil to indicate that the selection value should be
+deleted. 
+Vselection-coercible-types
+A list of selection types that are coercible---that is, types that may be
+automatically converted to another type. Selection values with types in this
+list may be subject to conversion attempts to other types. 
+Vlost-selection-hooks
+A function or functions to be called after we have been notified
+that we have lost the selection.  The function(s) will be called with one
+argument, a symbol naming the selection (typically PRIMARY, SECONDARY, or
+CLIPBOARD).Fwaiting-for-user-input-p
+Return non-nil if XEmacs is waiting for input from the user.
+This is intended for use by asynchronous timeout callbacks and by
+asynchronous process output filters and sentinels (not yet implemented
+in XEmacs).  It will always be nil if XEmacs is not inside of
+an asynchronous timeout or process callback.
+
+arguments: ()
+Fplay-sound-file
+Play the named sound file on DEVICE's speaker at the specified volume
+(0-100, default specified by the `bell-volume' variable).
+On Unix machines the sound file must be in the Sun/NeXT U-LAW format
+except under Linux where WAV files are also supported.  On Microsoft
+Windows the sound file must be in WAV format.
+  DEVICE defaults to the selected device.
+
+arguments: (FILE &optional VOLUME DEVICE)
+Fplay-sound
+Play a sound of the provided type.
+See the variable `sound-alist'.
+
+If the sound cannot be played in any other way, the standard "bell" will sound.
+
+arguments: (SOUND &optional VOLUME DEVICE)
+Fdevice-sound-enabled-p
+Return t if DEVICE is able to play sound.  Defaults to selected device.
+
+arguments: (&optional DEVICE)
+Fding
+Beep, or flash the frame.
+Also, unless an argument is given,
+terminate any keyboard macro currently executing.
+When called from lisp, the second argument is what sound to make, and
+the third argument is the device to make it in (defaults to the selected
+device).
+
+arguments: (&optional ARG SOUND DEVICE)
+Fwait-for-sounds
+Wait for all sounds to finish playing on DEVICE.
+
+arguments: (&optional DEVICE)
+Fconnected-to-nas-p
+Return t if connected to NAS server for sounds on DEVICE.
+
+arguments: (&optional DEVICE)
+Vbell-volume
+*How loud to be, from 0 to 100.Vbell-inhibit-time
+*Don't ring the bell on the same device more than once within this many seconds.Vsound-alist
+An alist associating names with sounds.
+When `beep' or `ding' is called with one of the name symbols, the associated
+sound will be generated instead of the standard beep.
+
+Each element of `sound-alist' is a list describing a sound.
+The first element of the list is the name of the sound being defined.
+Subsequent elements of the list are alternating keyword/value pairs:
+
+   Keyword:	Value:
+   -------	-----
+   sound	A string of raw sound data, or the name of another sound to
+		play.   The symbol `t' here means use the default X beep.
+   volume	An integer from 0-100, defaulting to `bell-volume'
+   pitch	If using the default X beep, the pitch (Hz) to generate.
+   duration	If using the default X beep, the duration (milliseconds).
+
+For compatibility, elements of `sound-alist' may also be:
+
+   ( sound-name . <sound> )
+   ( sound-name <volume> <sound> )
+
+You should probably add things to this list by calling the function
+load-sound-file.
+
+Caveats:
+ - XEmacs must be built with sound support for your system.  Not all
+   systems support sound. 
+
+ - The pitch, duration, and volume options are available everywhere, but
+   many X servers ignore the `pitch' option.
+
+The following beep-types are used by emacs itself:
+
+    auto-save-error	when an auto-save does not succeed
+    command-error	when the emacs command loop catches an error
+    undefined-key	when you type a key that is undefined
+    undefined-click	when you use an undefined mouse-click combination
+    no-completion	during completing-read
+    y-or-n-p		when you type something other than 'y' or 'n'
+    yes-or-no-p  	when you type something other than 'yes' or 'no'
+    default		used when nothing else is appropriate.
+
+Other lisp packages may use other beep types, but these are the ones that
+the C kernel of Emacs uses.Vsynchronous-sounds
+Play sounds synchronously, if non-nil.
+Only applies if NAS is used and supports asynchronous playing
+of sounds.  Otherwise, sounds are always played synchronously.Vnative-sound-only-on-console
+Non-nil value means play sounds only if XEmacs is running
+on the system console.
+Nil means always play sounds, even if running on a non-console tty
+or a secondary X display.
+
+This variable only applies to native sound support.Fvalid-specifier-type-p
+Given a SPECIFIER-TYPE, return non-nil if it is valid.
+Valid types are 'generic, 'integer, boolean, 'color, 'font, 'image,
+'face-boolean, and 'toolbar.
+
+arguments: (SPECIFIER-TYPE)
+Fspecifier-type-list
+Return a list of valid specifier types.
+
+arguments: ()
+Fmake-specifier
+Return a new specifier object of type TYPE.
+
+A specifier is an object that can be used to keep track of a property
+whose value can be per-buffer, per-window, per-frame, or per-device,
+and can further be restricted to a particular console-type or
+device-class.  Specifiers are used, for example, for the various
+built-in properties of a face; this allows a face to have different
+values in different frames, buffers, etc.
+
+When speaking of the value of a specifier, it is important to
+distinguish between the *setting* of a specifier, called an
+"instantiator", and the *actual value*, called an "instance".  You
+put various possible instantiators (i.e. settings) into a specifier
+and associate them with particular locales (buffer, window, frame,
+device, global), and then the instance (i.e. actual value) is
+retrieved in a specific domain (window, frame, device) by looking
+through the possible instantiators (i.e. settings).  This process is
+called "instantiation".
+
+To put settings into a specifier, use `set-specifier', or the
+lower-level functions `add-spec-to-specifier' and
+`add-spec-list-to-specifier'.  You can also temporarily bind a setting
+to a specifier using `let-specifier'.  To retrieve settings, use
+`specifier-specs', or its lower-level counterpart
+`specifier-spec-list'.  To determine the actual value, use
+`specifier-instance'.
+
+For more information, see `set-specifier', `specifier-instance',
+`specifier-specs', and `add-spec-to-specifier'; or, for a detailed
+description of specifiers, including how exactly the instantiation
+process works, see the chapter on specifiers in the XEmacs Lisp
+Reference Manual.
+
+TYPE specifies the particular type of specifier, and should be one of
+the symbols 'generic, 'integer, 'natnum, 'boolean, 'color, 'font,
+'image, 'face-boolean, 'display-table, 'gutter, 'gutter-size,
+'gutter-visible or 'toolbar.
+
+For more information on particular types of specifiers, see the
+functions `make-generic-specifier', `make-integer-specifier',
+`make-natnum-specifier', `make-boolean-specifier',
+`make-color-specifier', `make-font-specifier', `make-image-specifier',
+`make-face-boolean-specifier', `make-gutter-size-specifier',
+`make-gutter-visible-specifier', `default-toolbar', `default-gutter',
+and `current-display-table'.
+
+arguments: (TYPE)
+Fspecifierp
+Return t if OBJECT is a specifier.
+
+A specifier is an object that can be used to keep track of a property
+whose value can be per-buffer, per-window, per-frame, or per-device,
+and can further be restricted to a particular console-type or device-class.
+See `make-specifier'.
+
+arguments: (OBJECT)
+Fspecifier-type
+Return the type of SPECIFIER.
+
+arguments: (SPECIFIER)
+Fvalid-specifier-locale-p
+Return t if LOCALE is a valid specifier locale.
+Valid locales are devices, frames, windows, buffers, and 'global.
+(nil is not valid.)
+
+arguments: (LOCALE)
+Fvalid-specifier-domain-p
+Return t if DOMAIN is a valid specifier domain.
+A domain is used to instance a specifier (i.e. determine the specifier's
+value in that domain).  Valid domains are image instances, windows, frames,
+and devices. (nil is not valid.) image instances are pseudo-domains since
+instantiation will actually occur in the window the image instance itself is
+instantiated in.
+
+arguments: (DOMAIN)
+Fvalid-specifier-locale-type-p
+Given a specifier LOCALE-TYPE, return non-nil if it is valid.
+Valid locale types are 'global, 'device, 'frame, 'window, and 'buffer.
+(Note, however, that in functions that accept either a locale or a locale
+type, 'global is considered an individual locale.)
+
+arguments: (LOCALE-TYPE)
+Fspecifier-locale-type-from-locale
+Given a specifier LOCALE, return its type.
+
+arguments: (LOCALE)
+Fvalid-specifier-tag-p
+Return non-nil if TAG is a valid specifier tag.
+See also `valid-specifier-tag-set-p'.
+
+arguments: (TAG)
+Fvalid-specifier-tag-set-p
+Return non-nil if TAG-SET is a valid specifier tag set.
+
+A specifier tag set is an entity that is attached to an instantiator
+and can be used to restrict the scope of that instantiator to a
+particular device class or device type and/or to mark instantiators
+added by a particular package so that they can be later removed.
+
+A specifier tag set consists of a list of zero of more specifier tags,
+each of which is a symbol that is recognized by XEmacs as a tag.
+(The valid device types and device classes are always tags, as are
+any tags defined by `define-specifier-tag'.) It is called a "tag set"
+(as opposed to a list) because the order of the tags or the number of
+times a particular tag occurs does not matter.
+
+Each tag has a predicate associated with it, which specifies whether
+that tag applies to a particular device.  The tags which are device types
+and classes match devices of that type or class.  User-defined tags can
+have any predicate, or none (meaning that all devices match).  When
+attempting to instance a specifier, a particular instantiator is only
+considered if the device of the domain being instanced over matches
+all tags in the tag set attached to that instantiator.
+
+Most of the time, a tag set is not specified, and the instantiator
+gets a null tag set, which matches all devices.
+
+arguments: (TAG-SET)
+Fcanonicalize-tag-set
+Canonicalize the given tag set.
+Two canonicalized tag sets can be compared with `equal' to see if they
+represent the same tag set. (Specifically, canonicalizing involves
+sorting by symbol name and removing duplicates.)
+
+arguments: (TAG-SET)
+Fdevice-matches-specifier-tag-set-p
+Return non-nil if DEVICE matches specifier tag set TAG-SET.
+This means that DEVICE matches each tag in the tag set. (Every
+tag recognized by XEmacs has a predicate associated with it that
+specifies which devices match it.)
+
+arguments: (DEVICE TAG-SET)
+Fdefine-specifier-tag
+Define a new specifier tag.
+If PREDICATE is specified, it should be a function of one argument
+(a device) that specifies whether the tag matches that particular
+device.  If PREDICATE is omitted, the tag matches all devices.
+
+You can redefine an existing user-defined specifier tag.  However,
+you cannot redefine the built-in specifier tags (the device types
+and classes) or the symbols nil, t, 'all, or 'global.
+
+arguments: (TAG &optional PREDICATE)
+Fdevice-matching-specifier-tag-list
+Return a list of all specifier tags matching DEVICE.
+DEVICE defaults to the selected device if omitted.
+
+arguments: (&optional DEVICE)
+Fspecifier-tag-list
+Return a list of all currently-defined specifier tags.
+This includes the built-in ones (the device types and classes).
+
+arguments: ()
+Fspecifier-tag-predicate
+Return the predicate for the given specifier tag.
+
+arguments: (TAG)
+Fcheck-valid-instantiator
+Signal an error if INSTANTIATOR is invalid for SPECIFIER-TYPE.
+
+arguments: (INSTANTIATOR SPECIFIER-TYPE)
+Fvalid-instantiator-p
+Return non-nil if INSTANTIATOR is valid for SPECIFIER-TYPE.
+
+arguments: (INSTANTIATOR SPECIFIER-TYPE)
+Fcheck-valid-inst-list
+Signal an error if INST-LIST is invalid for specifier type TYPE.
+
+arguments: (INST-LIST TYPE)
+Fvalid-inst-list-p
+Return non-nil if INST-LIST is valid for specifier type TYPE.
+
+arguments: (INST-LIST TYPE)
+Fcheck-valid-spec-list
+Signal an error if SPEC-LIST is invalid for specifier type TYPE.
+
+arguments: (SPEC-LIST TYPE)
+Fvalid-spec-list-p
+Return non-nil if SPEC-LIST is valid for specifier type TYPE.
+
+arguments: (SPEC-LIST TYPE)
+Fadd-spec-to-specifier
+Add a specification to SPECIFIER.
+The specification maps from LOCALE (which should be a window, buffer,
+frame, device, or 'global, and defaults to 'global) to INSTANTIATOR,
+whose allowed values depend on the type of the specifier.  Optional
+argument TAG-SET limits the instantiator to apply only to the specified
+tag set, which should be a list of tags all of which must match the
+device being instantiated over (tags are a device type, a device class,
+or tags defined with `define-specifier-tag').  Specifying a single
+symbol for TAG-SET is equivalent to specifying a one-element list
+containing that symbol.  Optional argument HOW-TO-ADD specifies what to
+do if there are already specifications in the specifier.
+It should be one of
+
+  'prepend		Put at the beginning of the current list of
+			instantiators for LOCALE.
+  'append		Add to the end of the current list of
+			instantiators for LOCALE.
+  'remove-tag-set-prepend (this is the default)
+			Remove any existing instantiators whose tag set is
+			the same as TAG-SET; then put the new instantiator
+			at the beginning of the current list. ("Same tag
+			set" means that they contain the same elements.
+			The order may be different.)
+  'remove-tag-set-append
+			Remove any existing instantiators whose tag set is
+			the same as TAG-SET; then put the new instantiator
+			at the end of the current list.
+  'remove-locale	Remove all previous instantiators for this locale
+			before adding the new spec.
+  'remove-locale-type	Remove all specifications for all locales of the
+			same type as LOCALE (this includes LOCALE itself)
+			before adding the new spec.
+  'remove-all		Remove all specifications from the specifier
+			before adding the new spec.
+
+You can retrieve the specifications for a particular locale or locale type
+with the function `specifier-spec-list' or `specifier-specs'.
+
+arguments: (SPECIFIER INSTANTIATOR &optional LOCALE TAG-SET HOW-TO-ADD)
+Fadd-spec-list-to-specifier
+Add SPEC-LIST (a list of specifications) to SPECIFIER.
+The format of SPEC-LIST is
+
+  ((LOCALE (TAG-SET . INSTANTIATOR) ...) ...)
+
+where
+  LOCALE := a window, a buffer, a frame, a device, or 'global
+  TAG-SET := an unordered list of zero or more TAGS, each of which
+             is a symbol
+  TAG := a device class (see `valid-device-class-p'), a device type
+         (see `valid-console-type-p'), or a tag defined with
+         `define-specifier-tag'
+  INSTANTIATOR := format determined by the type of specifier
+
+The pair (TAG-SET . INSTANTIATOR) is called an `inst-pair'.
+A list of inst-pairs is called an `inst-list'.
+The pair (LOCALE . INST-LIST) is called a `specification' or `spec'.
+A spec-list, then, can be viewed as a list of specifications.
+
+HOW-TO-ADD specifies how to combine the new specifications with
+the existing ones, and has the same semantics as for
+`add-spec-to-specifier'.
+
+In many circumstances, the higher-level function `set-specifier' is
+more convenient and should be used instead.
+
+arguments: (SPECIFIER SPEC-LIST &optional HOW-TO-ADD)
+Fspecifier-spec-list
+Return the spec-list of specifications for SPECIFIER in LOCALE.
+
+If LOCALE is a particular locale (a buffer, window, frame, device,
+or 'global), a spec-list consisting of the specification for that
+locale will be returned.
+
+If LOCALE is a locale type (i.e. 'buffer, 'window, 'frame, or 'device),
+a spec-list of the specifications for all locales of that type will be
+returned.
+
+If LOCALE is nil or 'all, a spec-list of all specifications in SPECIFIER
+will be returned.
+
+LOCALE can also be a list of locales, locale types, and/or 'all; the
+result is as if `specifier-spec-list' were called on each element of the
+list and the results concatenated together.
+
+Only instantiators where TAG-SET (a list of zero or more tags) is a
+subset of (or possibly equal to) the instantiator's tag set are returned.
+(The default value of nil is a subset of all tag sets, so in this case
+no instantiators will be screened out.) If EXACT-P is non-nil, however,
+TAG-SET must be equal to an instantiator's tag set for the instantiator
+to be returned.
+
+arguments: (SPECIFIER &optional LOCALE TAG-SET EXACT-P)
+Fspecifier-specs
+Return the specification(s) for SPECIFIER in LOCALE.
+
+If LOCALE is a single locale or is a list of one element containing a
+single locale, then a "short form" of the instantiators for that locale
+will be returned.  Otherwise, this function is identical to
+`specifier-spec-list'.
+
+The "short form" is designed for readability and not for ease of use
+in Lisp programs, and is as follows:
+
+1. If there is only one instantiator, then an inst-pair (i.e. cons of
+   tag and instantiator) will be returned; otherwise a list of
+   inst-pairs will be returned.
+2. For each inst-pair returned, if the instantiator's tag is 'any,
+   the tag will be removed and the instantiator itself will be returned
+   instead of the inst-pair.
+3. If there is only one instantiator, its value is nil, and its tag is
+   'any, a one-element list containing nil will be returned rather
+   than just nil, to distinguish this case from there being no
+   instantiators at all.
+
+arguments: (SPECIFIER &optional LOCALE TAG-SET EXACT-P)
+Fremove-specifier
+Remove specification(s) for SPECIFIER.
+
+If LOCALE is a particular locale (a window, buffer, frame, device,
+or 'global), the specification for that locale will be removed.
+
+If instead, LOCALE is a locale type (i.e. 'window, 'buffer, 'frame,
+or 'device), the specifications for all locales of that type will be
+removed.
+
+If LOCALE is nil or 'all, all specifications will be removed.
+
+LOCALE can also be a list of locales, locale types, and/or 'all; this
+is equivalent to calling `remove-specifier' for each of the elements
+in the list.
+
+Only instantiators where TAG-SET (a list of zero or more tags) is a
+subset of (or possibly equal to) the instantiator's tag set are removed.
+The default value of nil is a subset of all tag sets, so in this case
+no instantiators will be screened out. If EXACT-P is non-nil, however,
+TAG-SET must be equal to an instantiator's tag set for the instantiator
+to be removed.
+
+arguments: (SPECIFIER &optional LOCALE TAG-SET EXACT-P)
+Fcopy-specifier
+Copy SPECIFIER to DEST, or create a new one if DEST is nil.
+
+If DEST is nil or omitted, a new specifier will be created and the
+specifications copied into it.  Otherwise, the specifications will be
+copied into the existing specifier in DEST.
+
+If LOCALE is nil or 'all, all specifications will be copied.  If LOCALE
+is a particular locale, the specification for that particular locale will
+be copied.  If LOCALE is a locale type, the specifications for all locales
+of that type will be copied.  LOCALE can also be a list of locales,
+locale types, and/or 'all; this is equivalent to calling `copy-specifier'
+for each of the elements of the list.  See `specifier-spec-list' for more
+information about LOCALE.
+
+Only instantiators where TAG-SET (a list of zero or more tags) is a
+subset of (or possibly equal to) the instantiator's tag set are copied.
+The default value of nil is a subset of all tag sets, so in this case
+no instantiators will be screened out. If EXACT-P is non-nil, however,
+TAG-SET must be equal to an instantiator's tag set for the instantiator
+to be copied.
+
+Optional argument HOW-TO-ADD specifies what to do with existing
+specifications in DEST.  If nil, then whichever locales or locale types
+are copied will first be completely erased in DEST.  Otherwise, it is
+the same as in `add-spec-to-specifier'.
+
+arguments: (SPECIFIER &optional DEST LOCALE TAG-SET EXACT-P HOW-TO-ADD)
+Fcheck-valid-specifier-matchspec
+Signal an error if MATCHSPEC is invalid for SPECIFIER-TYPE.
+See `specifier-matching-instance' for a description of matchspecs.
+
+arguments: (MATCHSPEC SPECIFIER-TYPE)
+Fvalid-specifier-matchspec-p
+Return non-nil if MATCHSPEC is valid for SPECIFIER-TYPE.
+See `specifier-matching-instance' for a description of matchspecs.
+
+arguments: (MATCHSPEC SPECIFIER-TYPE)
+Fspecifier-fallback
+Return the fallback value for SPECIFIER.
+Fallback values are provided by the C code for certain built-in
+specifiers to make sure that instancing won't fail even if all
+specs are removed from the specifier, or to implement simple
+inheritance behavior (e.g. this method is used to ensure that
+faces other than 'default inherit their attributes from 'default).
+By design, you cannot change the fallback value, and specifiers
+created with `make-specifier' will never have a fallback (although
+a similar, Lisp-accessible capability may be provided in the future
+to allow for inheritance).
+
+The fallback value will be an inst-list that is instanced like
+any other inst-list, a specifier of the same type as SPECIFIER
+(results in inheritance), or nil for no fallback.
+
+When you instance a specifier, you can explicitly request that the
+fallback not be consulted. (The C code does this, for example, when
+merging faces.) See `specifier-instance'.
+
+arguments: (SPECIFIER)
+Fspecifier-instance
+Instantiate SPECIFIER (return its value) in DOMAIN.
+If no instance can be generated for this domain, return DEFAULT.
+
+DOMAIN should be a window, frame, or device.  Other values that are legal
+as a locale (e.g. a buffer) are not valid as a domain because they do not
+provide enough information to identify a particular device (see
+`valid-specifier-domain-p').  DOMAIN defaults to the selected window
+if omitted.
+
+"Instantiating" a specifier in a particular domain means determining
+the specifier's "value" in that domain.  This is accomplished by
+searching through the specifications in the specifier that correspond
+to all locales that can be derived from the given domain, from specific
+to general.  In most cases, the domain is an Emacs window.  In that case
+specifications are searched for as follows:
+
+1. A specification whose locale is the window itself;
+2. A specification whose locale is the window's buffer;
+3. A specification whose locale is the window's frame;
+4. A specification whose locale is the window's frame's device;
+5. A specification whose locale is 'global.
+
+If all of those fail, then the C-code-provided fallback value for
+this specifier is consulted (see `specifier-fallback').  If it is
+an inst-list, then this function attempts to instantiate that list
+just as when a specification is located in the first five steps above.
+If the fallback is a specifier, `specifier-instance' is called
+recursively on this specifier and the return value used.  Note,
+however, that if the optional argument NO-FALLBACK is non-nil,
+the fallback value will not be consulted.
+
+Note that there may be more than one specification matching a particular
+locale; all such specifications are considered before looking for any
+specifications for more general locales.  Any particular specification
+that is found may be rejected because its tag set does not match the
+device being instantiated over, or because the specification is not
+valid for the device of the given domain (e.g. the font or color name
+does not exist for this particular X server).
+
+The returned value is dependent on the type of specifier.  For example,
+for a font specifier (as returned by the `face-font' function), the returned
+value will be a font-instance object.  For glyphs, the returned value
+will be a string, pixmap, or subwindow.
+
+See also `specifier-matching-instance'.
+
+arguments: (SPECIFIER &optional DOMAIN DEFAULT NO-FALLBACK)
+Fspecifier-matching-instance
+Return an instance for SPECIFIER in DOMAIN that matches MATCHSPEC.
+If no instance can be generated for this domain, return DEFAULT.
+
+This function is identical to `specifier-instance' except that a
+specification will only be considered if it matches MATCHSPEC.
+The definition of "match", and allowed values for MATCHSPEC, are
+dependent on the particular type of specifier.  Here are some examples:
+
+-- For chartable (e.g. display table) specifiers, MATCHSPEC should be a
+   character, and the specification (a chartable) must give a value for
+   that character in order to be considered.  This allows you to specify,
+   e.g., a buffer-local display table that only gives values for particular
+   characters.  All other characters are handled as if the buffer-local
+   display table is not there. (Chartable specifiers are not yet
+   implemented.)
+
+-- For font specifiers, MATCHSPEC should be a charset, and the specification
+   (a font string) must have a registry that matches the charset's registry.
+   (This only makes sense with Mule support.) This makes it easy to choose a
+   font that can display a particular character. (This is what redisplay
+   does, in fact.)
+
+arguments: (SPECIFIER MATCHSPEC &optional DOMAIN DEFAULT NO-FALLBACK)
+Fspecifier-instance-from-inst-list
+Attempt to convert a particular inst-list into an instance.
+This attempts to instantiate INST-LIST in the given DOMAIN,
+as if INST-LIST existed in a specification in SPECIFIER.  If
+the instantiation fails, DEFAULT is returned.  In most circumstances,
+you should not use this function; use `specifier-instance' instead.
+
+arguments: (SPECIFIER DOMAIN INST-LIST &optional DEFAULT)
+Fspecifier-matching-instance-from-inst-list
+Attempt to convert a particular inst-list into an instance.
+This attempts to instantiate INST-LIST in the given DOMAIN
+(as if INST-LIST existed in a specification in SPECIFIER),
+matching the specifications against MATCHSPEC.
+
+This function is analogous to `specifier-instance-from-inst-list'
+but allows for specification-matching as in `specifier-matching-instance'.
+See that function for a description of exactly how the matching process
+works.
+
+arguments: (SPECIFIER MATCHSPEC DOMAIN INST-LIST &optional DEFAULT)
+Fset-specifier-dirty-flag
+Force recomputation of any caches associated with SPECIFIER.
+Note that this automatically happens whenever you change a specification
+ in SPECIFIER; you do not have to call this function then.
+One example of where this function is useful is when you have a
+ toolbar button whose `active-p' field is an expression to be
+ evaluated.  Calling `set-specifier-dirty-flag' on the
+ toolbar specifier will force the `active-p' fields to be
+ recomputed.
+
+arguments: (SPECIFIER)
+Fgeneric-specifier-p
+Return non-nil if OBJECT is a generic specifier.
+
+See `make-generic-specifier' for a description of possible generic
+instantiators.
+
+arguments: (OBJECT)
+Finteger-specifier-p
+Return non-nil if OBJECT is an integer specifier.
+
+See `make-integer-specifier' for a description of possible integer
+instantiators.
+
+arguments: (OBJECT)
+Fnatnum-specifier-p
+Return non-nil if OBJECT is a natnum (non-negative-integer) specifier.
+
+See `make-natnum-specifier' for a description of possible natnum
+instantiators.
+
+arguments: (OBJECT)
+Fboolean-specifier-p
+Return non-nil if OBJECT is a boolean specifier.
+
+See `make-boolean-specifier' for a description of possible boolean
+instantiators.
+
+arguments: (OBJECT)
+Fdisplay-table-specifier-p
+Return non-nil if OBJECT is a display-table specifier.
+
+See `current-display-table' for a description of possible display-table
+instantiators.
+
+arguments: (OBJECT)
+Fintern
+Return the canonical symbol whose name is STRING.
+If there is none, one is created by this function and returned.
+Optional second argument OBARRAY specifies the obarray to use;
+it defaults to the value of the variable `obarray'.
+
+arguments: (STRING &optional OBARRAY)
+Fintern-soft
+Return the canonical symbol named NAME, or nil if none exists.
+NAME may be a string or a symbol.  If it is a symbol, that exact
+symbol is searched for.
+Optional second argument OBARRAY specifies the obarray to use;
+it defaults to the value of the variable `obarray'.
+
+arguments: (NAME &optional OBARRAY)
+Funintern
+Delete the symbol named NAME, if any, from OBARRAY.
+The value is t if a symbol was found and deleted, nil otherwise.
+NAME may be a string or a symbol.  If it is a symbol, that symbol
+is deleted, if it belongs to OBARRAY--no other symbol is deleted.
+OBARRAY defaults to the value of the variable `obarray'.
+
+arguments: (NAME &optional OBARRAY)
+Fmapatoms
+Call FUNCTION on every symbol in OBARRAY.
+OBARRAY defaults to the value of `obarray'.
+
+arguments: (FUNCTION &optional OBARRAY)
+Fapropos-internal
+Return a list of all symbols whose names contain match for REGEXP.
+If optional 2nd arg PREDICATE is non-nil, only symbols for which
+(funcall PREDICATE SYMBOL) returns non-nil are returned.
+
+arguments: (REGEXP &optional PREDICATE)
+Fboundp
+Return t if SYMBOL's value is not void.
+
+arguments: (SYMBOL)
+Fglobally-boundp
+Return t if SYMBOL has a global (non-bound) value.
+This is for the byte-compiler; you really shouldn't be using this.
+
+arguments: (SYMBOL)
+Ffboundp
+Return t if SYMBOL's function definition is not void.
+
+arguments: (SYMBOL)
+Fmakunbound
+Make SYMBOL's value be void.
+
+arguments: (SYMBOL)
+Ffmakunbound
+Make SYMBOL's function definition be void.
+
+arguments: (SYMBOL)
+Fsymbol-function
+Return SYMBOL's function definition.  Error if that is void.
+
+arguments: (SYMBOL)
+Fsymbol-plist
+Return SYMBOL's property list.
+
+arguments: (SYMBOL)
+Fsymbol-name
+Return SYMBOL's name, a string.
+
+arguments: (SYMBOL)
+Ffset
+Set SYMBOL's function definition to NEWDEF, and return NEWDEF.
+
+arguments: (SYMBOL NEWDEF)
+Fdefine-function
+Set SYMBOL's function definition to NEWDEF, and return NEWDEF.
+Associates the function with the current load file, if any.
+
+arguments: (SYMBOL NEWDEF)
+Fsetplist
+Set SYMBOL's property list to NEWPLIST, and return NEWPLIST.
+
+arguments: (SYMBOL NEWPLIST)
+Fsymbol-value
+Return SYMBOL's value.  Error if that is void.
+
+arguments: (SYMBOL)
+Fset
+Set SYMBOL's value to NEWVAL, and return NEWVAL.
+
+arguments: (SYMBOL NEWVAL)
+Fdefault-boundp
+Return t if SYMBOL has a non-void default value.
+This is the value that is seen in buffers that do not have their own values
+for this variable.
+
+arguments: (SYMBOL)
+Fdefault-value
+Return SYMBOL's default value.
+This is the value that is seen in buffers that do not have their own values
+for this variable.  The default value is meaningful for variables with
+local bindings in certain buffers.
+
+arguments: (SYMBOL)
+Fset-default
+Set SYMBOL's default value to VALUE.  SYMBOL and VALUE are evaluated.
+The default value is seen in buffers that do not have their own values
+for this variable.
+
+arguments: (SYMBOL VALUE)
+Fsetq-default
+Set the default value of variable SYMBOL to VALUE.
+SYMBOL, the variable name, is literal (not evaluated);
+VALUE is an expression and it is evaluated.
+The default value of a variable is seen in buffers
+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 SYMBOLs.Fmake-variable-buffer-local
+Make VARIABLE have a separate value for each buffer.
+At any time, the value for the current buffer is in effect.
+There is also a default value which is seen in any buffer which has not yet
+set its own value.
+Using `set' or `setq' to set the variable causes it to have a separate value
+for the current buffer if it was previously using the default value.
+The function `default-value' gets the default value and `set-default'
+sets it.
+
+arguments: (VARIABLE)
+Fmake-local-variable
+Make VARIABLE have a separate value in the current buffer.
+Other buffers will continue to share a common default value.
+(The buffer-local value of VARIABLE starts out as the same value
+VARIABLE previously had.  If VARIABLE was void, it remains void.)
+See also `make-variable-buffer-local'.
+
+If the variable is already arranged to become local when set,
+this function causes a local value to exist for this buffer,
+just as setting the variable would do.
+
+Do not use `make-local-variable' to make a hook variable buffer-local.
+Use `make-local-hook' instead.
+
+arguments: (VARIABLE)
+Fkill-local-variable
+Make VARIABLE no longer have a separate value in the current buffer.
+From now on the default value will apply in this buffer.
+
+arguments: (VARIABLE)
+Fkill-console-local-variable
+Make VARIABLE no longer have a separate value in the selected console.
+From now on the default value will apply in this console.
+
+arguments: (VARIABLE)
+Fsymbol-value-in-buffer
+Return the value of SYMBOL in BUFFER, or UNBOUND-VALUE if it is unbound.
+
+arguments: (SYMBOL BUFFER &optional UNBOUND-VALUE)
+Fsymbol-value-in-console
+Return the value of SYMBOL in CONSOLE, or UNBOUND-VALUE if it is unbound.
+
+arguments: (SYMBOL CONSOLE &optional UNBOUND-VALUE)
+Fbuilt-in-variable-type
+If SYMBOL is a built-in variable, return info about this; else return nil.
+The returned info will be a symbol, one of
+
+`object'		A simple built-in variable.
+`const-object'		Same, but cannot be set.
+`integer'		A built-in integer variable.
+`const-integer'		Same, but cannot be set.
+`boolean'		A built-in boolean variable.
+`const-boolean'		Same, but cannot be set.
+`const-specifier'	Always contains a specifier; e.g. `has-modeline-p'.
+`current-buffer'	A built-in buffer-local variable.
+`const-current-buffer'	Same, but cannot be set.
+`default-buffer'	Forwards to the default value of a built-in
+			buffer-local variable.
+`selected-console'	A built-in console-local variable.
+`const-selected-console' Same, but cannot be set.
+`default-console'	Forwards to the default value of a built-in
+			console-local variable.
+
+arguments: (SYMBOL)
+Flocal-variable-p
+Return t if SYMBOL's value is local to BUFFER.
+If optional third arg AFTER-SET is non-nil, return t if SYMBOL would be
+buffer-local after it is set, regardless of whether it is so presently.
+A nil value for BUFFER is *not* the same as (current-buffer), but means
+"no buffer".  Specifically:
+
+-- If BUFFER is nil and AFTER-SET is nil, a return value of t indicates that
+   the variable is one of the special built-in variables that is always
+   buffer-local. (This includes `buffer-file-name', `buffer-read-only',
+   `buffer-undo-list', and others.)
+
+-- If BUFFER is nil and AFTER-SET is t, a return value of t indicates that
+   the variable has had `make-variable-buffer-local' applied to it.
+
+arguments: (SYMBOL BUFFER &optional AFTER-SET)
+Fdontusethis-set-symbol-value-handler
+Don't you dare use this.
+If you do, suffer the wrath of Ben, who is likely to rename
+this function (or change the semantics of its arguments) without
+pity, thereby invalidating your code.
+
+arguments: (VARIABLE HANDLER-TYPE HANDLER &optional HARG KEEP-EXISTING)
+Fdefvaralias
+Define a variable as an alias for another variable.
+Thenceforth, any operations performed on VARIABLE will actually be
+performed on ALIAS.  Both VARIABLE and ALIAS should be symbols.
+If ALIAS is nil, remove any aliases for VARIABLE.
+ALIAS can itself be aliased, and the chain of variable aliases
+will be followed appropriately.
+If VARIABLE already has a value, this value will be shadowed
+until the alias is removed, at which point it will be restored.
+Currently VARIABLE cannot be a built-in variable, a variable that
+has a buffer-local value in any buffer, or the symbols nil or t.
+(ALIAS, however, can be any type of variable.)
+
+arguments: (VARIABLE ALIAS)
+Fvariable-alias
+If VARIABLE is aliased to another variable, return that variable.
+VARIABLE should be a symbol.  If VARIABLE is not aliased, return nil.
+Variable aliases are created with `defvaralias'.  See also
+`indirect-variable'.
+
+arguments: (VARIABLE &optional FOLLOW-PAST-LISP-MAGIC)
+Findirect-variable
+Return the variable at the end of OBJECT's variable-alias chain.
+If OBJECT is a symbol, follow all variable aliases and return
+the final (non-aliased) symbol.  Variable aliases are created with
+the function `defvaralias'.
+If OBJECT is not a symbol, just return it.
+Signal a cyclic-variable-indirection error if there is a loop in the
+variable chain of symbols.
+
+arguments: (OBJECT &optional FOLLOW-PAST-LISP-MAGIC)
+Vobarray
+Symbol table for use by `intern' and `read'.
+It is a vector whose length ought to be prime for best results.
+The vector's contents don't make sense if examined from Lisp programs;
+to find all the symbols in an obarray, use `mapatoms'.Fsyntax-table-p
+Return t if OBJECT is a syntax table.
+Any vector of 256 elements will do.
+
+arguments: (OBJECT)
+Fsyntax-table
+Return the current syntax table.
+This is the one specified by the current buffer, or by BUFFER if it
+is non-nil.
+
+arguments: (&optional BUFFER)
+Fstandard-syntax-table
+Return the standard syntax table.
+This is the one used for new buffers.
+
+arguments: ()
+Fcopy-syntax-table
+Return a new syntax table which is a copy of SYNTAX-TABLE.
+SYNTAX-TABLE defaults to the standard syntax table.
+
+arguments: (&optional SYNTAX-TABLE)
+Fset-syntax-table
+Select SYNTAX-TABLE as the new syntax table for BUFFER.
+BUFFER defaults to the current buffer if omitted.
+
+arguments: (SYNTAX-TABLE &optional BUFFER)
+Fsyntax-designator-chars
+Return a string of the recognized syntax designator chars.
+The chars are ordered by their internal syntax codes, which are
+numbered starting at 0.
+
+arguments: ()
+Fchar-syntax
+Return the syntax code of CHARACTER, described by a character.
+For example, if CHARACTER is a word constituent,
+the character `?w' is returned.
+The characters that correspond to various syntax codes
+are listed in the documentation of `modify-syntax-entry'.
+Optional second argument SYNTAX-TABLE defaults to the current buffer's
+syntax table.
+
+arguments: (CHARACTER &optional SYNTAX-TABLE)
+Fmatching-paren
+Return the matching parenthesis of CHARACTER, or nil if none.
+Optional second argument SYNTAX-TABLE defaults to the current buffer's
+syntax table.
+
+arguments: (CHARACTER &optional SYNTAX-TABLE)
+Fforward-word
+Move point forward COUNT words (backward if COUNT is negative).
+Normally t is returned, but if an edge of the buffer is reached,
+point is left there and nil is returned.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
+COUNT defaults to 1, and BUFFER defaults to the current buffer.
+
+arguments: (&optional COUNT BUFFER)
+Fforward-comment
+Move forward across up to COUNT comments, or backwards if COUNT is negative.
+Stop scanning if we find something other than a comment or whitespace.
+Set point to where scanning stops.
+If COUNT comments are found as expected, with nothing except whitespace
+between them, return t; otherwise return nil.
+Point is set in either case.
+COUNT defaults to 1, and BUFFER defaults to the current buffer.
+
+arguments: (&optional COUNT BUFFER)
+Fscan-lists
+Scan from character number FROM by COUNT lists.
+Returns the character number of the position thus found.
+
+If DEPTH is nonzero, paren depth begins counting from that value,
+only places where the depth in parentheses becomes zero
+are candidates for stopping; COUNT such places are counted.
+Thus, a positive value for DEPTH means go out levels.
+
+Comments are ignored if `parse-sexp-ignore-comments' is non-nil.
+
+If the beginning or end of (the accessible part of) the buffer is reached
+and the depth is wrong, an error is signaled.
+If the depth is right but the count is not used up, nil is returned.
+
+If optional arg BUFFER is non-nil, scanning occurs in that buffer instead
+of in the current buffer.
+
+If optional arg NOERROR is non-nil, scan-lists will return nil instead of
+signalling an error.
+
+arguments: (FROM COUNT DEPTH &optional BUFFER NOERROR)
+Fscan-sexps
+Scan from character number FROM by COUNT balanced expressions.
+If COUNT is negative, scan backwards.
+Returns the character number of the position thus found.
+
+Comments are ignored if `parse-sexp-ignore-comments' is non-nil.
+
+If the beginning or end of (the accessible part of) the buffer is reached
+in the middle of a parenthetical grouping, an error is signaled.
+If the beginning or end is reached between groupings
+but before count is used up, nil is returned.
+
+If optional arg BUFFER is non-nil, scanning occurs in that buffer instead
+of in the current buffer.
+
+If optional arg NOERROR is non-nil, scan-sexps will return nil instead of
+signalling an error.
+
+arguments: (FROM COUNT &optional BUFFER NOERROR)
+Fbackward-prefix-chars
+Move point backward over any number of chars with prefix syntax.
+This includes chars with "quote" or "prefix" syntax (' or p).
+
+Optional arg BUFFER defaults to the current buffer.
+
+arguments: (&optional BUFFER)
+Fparse-partial-sexp
+Parse Lisp syntax starting at FROM until TO; return status of parse at TO.
+Parsing stops at TO or when certain criteria are met;
+ point is set to where parsing stops.
+If fifth arg OLDSTATE is omitted or nil,
+ parsing assumes that FROM is the beginning of a function.
+Value is a list of nine elements describing final state of parsing:
+ 0. depth in parens.
+ 1. character address of start of innermost containing list; nil if none.
+ 2. character address of start of last complete sexp terminated.
+ 3. non-nil if inside a string.
+    (It is the character that will terminate the string,
+     or t if the string should be terminated by an explicit
+     `syntax-table' property.)
+ 4. t if inside a comment.
+ 5. t if following a quote character.
+ 6. the minimum paren-depth encountered during this scan.
+ 7. nil if in comment style a, or not in a comment; t if in comment style b;
+    `syntax-table' if given by an explicit `syntax-table' property.
+ 8. character address of start of last comment or string; nil if none.
+ 9. Intermediate data for continuation of parsing (subject to change).
+If third arg TARGETDEPTH is non-nil, parsing stops if the depth
+in parentheses becomes equal to TARGETDEPTH.
+Fourth arg STOPBEFORE non-nil means stop when come to
+ any character that starts a sexp.
+Fifth arg OLDSTATE is a nine-element list like what this function returns.
+It is used to initialize the state of the parse.  Its second and third
+elements are ignored.
+Sixth arg COMMENTSTOP non-nil means stop at the start of a comment. If it
+is `syntax-table', stop after the start of a comment or a string, or after
+the end of a comment or string.
+
+arguments: (FROM TO &optional TARGETDEPTH STOPBEFORE OLDSTATE COMMENTSTOP BUFFER)
+Vparse-sexp-ignore-comments
+Non-nil means `forward-sexp', etc., should treat comments as whitespace.Vlookup-syntax-properties
+Non-nil means `forward-sexp', etc., grant `syntax-table' property.
+The value of this property should be either a syntax table, or a cons
+of the form (SYNTAXCODE . MATCHCHAR), SYNTAXCODE being the numeric
+syntax code, MATCHCHAR being nil or the character to match (which is
+relevant only for open/close type.Vwords-include-escapes
+Non-nil means `forward-word', etc., should treat escape chars part of words.Fundo-boundary
+Mark a boundary between units of undo.
+An undo command will stop at this point,
+but another undo command will undo to the previous boundary.
+
+arguments: ()
+Fprimitive-undo
+Undo COUNT records from the front of the list LIST.
+Return what remains of the list.
+
+arguments: (COUNT LIST)
+Fx-debug-mode
+With a true arg, make the connection to the X server synchronous.
+With false, make it asynchronous.  Synchronous connections are much slower,
+but are useful for debugging. (If you get X errors, make the connection
+synchronous, and use a debugger to set a breakpoint on `x_error_handler'.
+Your backtrace of the C stack will now be useful.  In asynchronous mode,
+the stack above `x_error_handler' isn't helpful because of buffering.)
+If DEVICE is not specified, the selected device is assumed.
+
+Calling this function is the same as calling the C function `XSynchronize',
+or starting the program with the `-sync' command line argument.
+
+arguments: (ARG &optional DEVICE)
+Fx-get-resource
+Retrieve an X resource from the resource manager.
+
+The first arg is the name of the resource to retrieve, such as "font".
+The second arg is the class of the resource to retrieve, such as "Font".
+The third arg must be one of the symbols 'string, 'integer, 'natnum, or
+  'boolean, specifying the type of object that the database is searched for.
+The fourth arg is the locale to search for the resources on, and can
+  currently be a buffer, a frame, a device, or 'global.  If omitted, it
+  defaults to 'global.
+The fifth arg is the device to search for the resources on. (The resource
+  database for a particular device is constructed by combining non-device-
+  specific resources such as any command-line resources specified and any
+  app-defaults files found [or the fallback resources supplied by XEmacs,
+  if no app-defaults file is found] with device-specific resources such as
+  those supplied using xrdb.) If omitted, it defaults to the device of
+  LOCALE, if a device can be derived (i.e. if LOCALE is a frame or device),
+  and otherwise defaults to the value of `default-x-device'.
+The sixth arg NOERROR, if non-nil, means do not signal an error if a
+  bogus resource specification was retrieved (e.g. if a non-integer was
+  given when an integer was requested).  In this case, a warning is issued
+  instead, unless NOERROR is t, in which case no warning is issued.
+
+The resource names passed to this function are looked up relative to the
+locale.
+
+If you want to search for a subresource, you just need to specify the
+resource levels in NAME and CLASS.  For example, NAME could be
+"modeline.attributeFont", and CLASS "Face.AttributeFont".
+
+Specifically,
+
+1) If LOCALE is a buffer, a call
+
+    (x-get-resource "foreground" "Foreground" 'string SOME-BUFFER)
+
+is an interface to a C call something like
+
+    XrmGetResource (db, "xemacs.buffer.BUFFER-NAME.foreground",
+			"Emacs.EmacsLocaleType.EmacsBuffer.Foreground",
+			"String");
+
+2) If LOCALE is a frame, a call
+
+    (x-get-resource "foreground" "Foreground" 'string SOME-FRAME)
+
+is an interface to a C call something like
+
+    XrmGetResource (db, "xemacs.frame.FRAME-NAME.foreground",
+			"Emacs.EmacsLocaleType.EmacsFrame.Foreground",
+			"String");
+
+3) If LOCALE is a device, a call
+
+    (x-get-resource "foreground" "Foreground" 'string SOME-DEVICE)
+
+is an interface to a C call something like
+
+    XrmGetResource (db, "xemacs.device.DEVICE-NAME.foreground",
+			"Emacs.EmacsLocaleType.EmacsDevice.Foreground",
+			"String");
+
+4) If LOCALE is 'global, a call
+
+    (x-get-resource "foreground" "Foreground" 'string 'global)
+
+is an interface to a C call something like
+
+    XrmGetResource (db, "xemacs.foreground",
+			"Emacs.Foreground",
+			"String");
+
+Note that for 'global, no prefix is added other than that of the
+application itself; thus, you can use this locale to retrieve
+arbitrary application resources, if you really want to.
+
+The returned value of this function is nil if the queried resource is not
+found.  If the third arg is `string', a string is returned, and if it is
+`integer', an integer is returned.  If the third arg is `boolean', then the
+returned value is the list (t) for true, (nil) for false, and is nil to
+mean ``unspecified''.
+
+arguments: (NAME CLASS TYPE &optional LOCALE DEVICE NOERROR)
+Fx-get-resource-prefix
+Return the resource prefix for LOCALE on DEVICE.
+The resource prefix is the strings used to prefix resources if
+the LOCALE and DEVICE arguments were passed to `x-get-resource'.
+The returned value is a cons of a name prefix and a class prefix.
+For example, if LOCALE is a frame, the returned value might be
+("xemacs.frame.FRAME-NAME" . "Emacs.EmacsLocaleType.EmacsFrame").
+If no valid X device for resourcing can be obtained, this function
+returns nil. (In such a case, `x-get-resource' would always return nil.)
+
+arguments: (LOCALE &optional DEVICE)
+Fx-put-resource
+Add a resource to the resource database for DEVICE.
+RESOURCE-LINE specifies the resource to add and should be a
+standard resource specification.
+
+arguments: (RESOURCE-LINE &optional DEVICE)
+Fdefault-x-device
+Return the default X device for resourcing.
+This is the first-created X device that still exists.
+
+arguments: ()
+Fx-display-visual-class
+Return the visual class of the X display DEVICE is using.
+This can be altered from the default at startup using the XResource "EmacsVisual".
+The returned value will be one of the symbols `static-gray', `gray-scale',
+`static-color', `pseudo-color', `true-color', or `direct-color'.
+
+arguments: (&optional DEVICE)
+Fx-display-visual-depth
+Return the bitplane depth of the visual the X display DEVICE is using.
+
+arguments: (&optional DEVICE)
+Fx-server-vendor
+Return the vendor ID string of the X server DEVICE is on.
+Return the empty string if the vendor ID string cannot be determined.
+
+arguments: (&optional DEVICE)
+Fx-server-version
+Return the version numbers of the X server DEVICE is on.
+The returned value is a list of three integers: the major and minor
+version numbers of the X Protocol in use, and the vendor-specific release
+number.  See also `x-server-vendor'.
+
+arguments: (&optional DEVICE)
+Fx-valid-keysym-name-p
+Return true if KEYSYM names a keysym that the X library knows about.
+Valid keysyms are listed in the files /usr/include/X11/keysymdef.h and in
+/usr/lib/X11/XKeysymDB, or whatever the equivalents are on your system.
+
+arguments: (KEYSYM)
+Fx-keysym-hash-table
+Return a hash table containing a key for all keysyms on DEVICE.
+DEVICE must be an X11 display device.  See `x-keysym-on-keyboard-p'.
+
+arguments: (&optional DEVICE)
+Fx-keysym-on-keyboard-sans-modifiers-p
+Return true if KEYSYM names a key on the keyboard of DEVICE.
+More precisely, return true if pressing a physical key
+on the keyboard of DEVICE without any modifier keys generates KEYSYM.
+Valid keysyms are listed in the files /usr/include/X11/keysymdef.h and in
+/usr/lib/X11/XKeysymDB, or whatever the equivalents are on your system.
+The keysym name can be provided in two forms:
+- if keysym is a string, it must be the name as known to X windows.
+- if keysym is a symbol, it must be the name as known to XEmacs.
+The two names differ in capitalization and underscoring.
+
+arguments: (KEYSYM &optional DEVICE)
+Fx-keysym-on-keyboard-p
+Return true if KEYSYM names a key on the keyboard of DEVICE.
+More precisely, return true if some keystroke (possibly including modifiers)
+on the keyboard of DEVICE keys generates KEYSYM.
+Valid keysyms are listed in the files /usr/include/X11/keysymdef.h and in
+/usr/lib/X11/XKeysymDB, or whatever the equivalents are on your system.
+The keysym name can be provided in two forms:
+- if keysym is a string, it must be the name as known to X windows.
+- if keysym is a symbol, it must be the name as known to XEmacs.
+The two names differ in capitalization and underscoring.
+
+arguments: (KEYSYM &optional DEVICE)
+Fx-grab-pointer
+Grab the pointer and restrict it to its current window.
+If optional DEVICE argument is nil, the default device will be used.
+If optional CURSOR argument is non-nil, change the pointer shape to that
+ until `x-ungrab-pointer' is called (it should be an object returned by the
+ `make-cursor-glyph' function).
+If the second optional argument IGNORE-KEYBOARD is non-nil, ignore all
+  keyboard events during the grab.
+Returns t if the grab is successful, nil otherwise.
+
+arguments: (&optional DEVICE CURSOR IGNORE-KEYBOARD)
+Fx-ungrab-pointer
+Release a pointer grab made with `x-grab-pointer'.
+If optional first arg DEVICE is nil the default device is used.
+If it is t the pointer will be released on all X devices.
+
+arguments: (&optional DEVICE)
+Fx-grab-keyboard
+Grab the keyboard on the given device (defaulting to the selected one).
+So long as the keyboard is grabbed, all keyboard events will be delivered
+to emacs -- it is not possible for other X clients to eavesdrop on them.
+Ungrab the keyboard with `x-ungrab-keyboard' (use an unwind-protect).
+Returns t if the grab is successful, nil otherwise.
+
+arguments: (&optional DEVICE)
+Fx-ungrab-keyboard
+Release a keyboard grab made with `x-grab-keyboard'.
+
+arguments: (&optional DEVICE)
+Fx-get-font-path
+Get the X Server's font path.
+
+See also `x-set-font-path'.
+
+arguments: (&optional DEVICE)
+Fx-set-font-path
+Set the X Server's font path to FONT-PATH.
+
+There is only one font path per server, not one per client.  Use this
+sparingly.  It uncaches all of the X server's font information.
+
+Font directories should end in the path separator and should contain
+a file called fonts.dir usually created with the program mkfontdir.
+
+Setting the FONT-PATH to nil tells the X server to use the default
+font path.
+
+See also `x-get-font-path'.
+
+arguments: (FONT-PATH &optional DEVICE)
+Vx-emacs-application-class
+The X application class of the XEmacs process.
+This controls, among other things, the name of the `app-defaults' file
+that XEmacs will use.  For changes to this variable to take effect, they
+must be made before the connection to the X server is initialized, that is,
+this variable may only be changed before emacs is dumped, or by setting it
+in the file lisp/term/x-win.el.
+
+If this variable is nil before the connection to the X server is first
+initialized (which it is by default), the X resource database will be
+consulted and the value will be set according to whether any resources
+are found for the application class `XEmacs'.  If the user has set any
+resources for the XEmacs application class, the XEmacs process will use
+the application class `XEmacs'.  Otherwise, the XEmacs process will use
+the application class `Emacs' which is backwards compatible to previous
+XEmacs versions but may conflict with resources intended for GNU Emacs.Vx-initial-argv-list
+You don't want to know.
+This is used during startup to communicate the remaining arguments in
+`command-line-args-left' to the C code, which passes the args to
+the X initialization code, which removes some args, and then the
+args are placed back into `x-initial-arg-list' and thence into
+`command-line-args-left'.  Perhaps `command-line-args-left' should
+just reside in C.Vx-app-defaults-directory
+Used by the Lisp code to communicate to the low level X initialization
+where the localized init files are.Vx-allow-sendevents
+*Non-nil means to allow synthetic events.  Nil means they are ignored.
+Beware: allowing emacs to process SendEvents opens a big security hole.Vdebug-x-events
+If non-zero, display debug information about X events that XEmacs sees.
+Information is displayed on stderr.  Currently defined values are:
+
+1 == non-verbose output
+2 == verbose outputFcde-start-drag-internal
+Start a CDE drag from a buffer.
+First argument is the event that started the drag (must be a
+button-press-event),
+second arg defines if the data should be treated as a buffer or
+a filename transfer (set to nil for buffer transfer),
+and the third argument is a list of data strings.
+WARNING: can only handle plain/text and file: transfers!
+
+arguments: (EVENT DRAGTYPE DRAGDATA)
+Foffix-start-drag-internal
+Start a OffiX drag from a buffer.
+First arg is the event that started the drag,
+second arg should be some string, and the third
+is the type of the data (this should be an int).
+The type defaults to DndText (4).
+
+arguments: (EVENT DATA &optional DTYP)
+Fx-window-id
+Get the ID of the X11 window.
+This gives us a chance to manipulate the Emacs window from within a
+different program.  Since the ID is an unsigned long, we return it as
+a string.
+
+arguments: (&optional FRAME)
+Vdefault-x-frame-plist
+Plist of default frame-creation properties for X frames.
+These override what is specified in the resource database and in
+`default-frame-plist', but are overridden by the arguments to the
+particular call to `make-frame'.
+
+Note: In many cases, properties of a frame are available as specifiers
+instead of through the frame-properties mechanism.
+
+Here is a list of recognized frame properties, other than those
+documented in `set-frame-properties' (they can be queried and
+set at any time, except as otherwise noted):
+
+  window-id			The X window ID corresponding to the
+				frame.  May be set only at startup, and
+				only if external widget support was
+				compiled in; doing so causes the frame
+				to be created as an "external widget"
+				in another program that uses an existing
+				window in the program rather than creating
+				a new one.
+  initially-unmapped		If non-nil, the frame will not be visible
+				when it is created.  In this case, you
+				need to call `make-frame-visible' to make
+				the frame appear.
+  popup				If non-nil, it should be a frame, and this
+				frame will be created as a "popup" frame
+				whose parent is the given frame.  This
+				will make the window manager treat the
+				frame as a dialog box, which may entail
+				doing different things (e.g. not asking
+				for positioning, and not iconifying
+				separate from its parent).
+  inter-line-space		Not currently implemented.
+  toolbar-shadow-thickness	Thickness of toolbar shadows.
+  background-toolbar-color	Color of toolbar background.
+  bottom-toolbar-shadow-color	Color of bottom shadows on toolbars.
+				(*Not* specific to the bottom-toolbar.)
+  top-toolbar-shadow-color	Color of top shadows on toolbars.
+				(*Not* specific to the top-toolbar.)
+  internal-border-width		Width of internal border around text area.
+  border-width			Width of external border around text area.
+  top				Y position (in pixels) of the upper-left
+				outermost corner of the frame (i.e. the
+				upper-left of the window-manager
+				decorations).
+  left				X position (in pixels) of the upper-left
+				outermost corner of the frame (i.e. the
+				upper-left of the window-manager
+				decorations).
+  border-color			Color of external border around text area.
+  cursor-color			Color of text cursor.
+
+See also `default-frame-plist', which specifies properties which apply
+to all frames, not just X frames.Fchange-subwindow-property
+For the given SUBWINDOW, set PROPERTY to DATA, which is a string.
+Subwindows are not currently implemented.
+
+arguments: (SUBWINDOW PROPERTY DATA)
+Vx-bitmap-file-path
+A list of the directories in which X bitmap files may be found.
+If nil, this is initialized from the "*bitmapFilePath" resource.
+This is used by the `make-image-instance' function (however, note that if
+the environment variable XBMLANGPATH is set, it is consulted first).Vx-handle-non-fully-specified-fonts
+If this is true then fonts which do not have all characters specified
+will be considered to be proportional width even if they are actually
+fixed-width.  If this is not done then characters which are supposed to
+have 0 width may appear to actually have some width.
+
+Note:  While setting this to t guarantees correct output in all
+circumstances, it also causes a noticeable performance hit when using
+fixed-width fonts.  Since most people don't use characters which could
+cause problems this is set to nil by default.Fx-selection-reply-timeout-internal
+
+
+
+arguments: (ARG)
+Fx-get-cutbuffer-internal
+Return the value of the named CUTBUFFER (typically CUT_BUFFER0).
+
+arguments: (CUTBUFFER)
+Fx-store-cutbuffer-internal
+Set the value of the named CUTBUFFER (typically CUT_BUFFER0) to STRING.
+
+arguments: (CUTBUFFER STRING)
+Fx-rotate-cutbuffers-internal
+Rotate the values of the cutbuffers by the given number of steps;
+positive means move values forward, negative means backward.
+
+arguments: (N)
+Vx-sent-selection-hooks
+A function or functions to be called after we have responded to some
+other client's request for the value of a selection that we own.  The
+function(s) will be called with four arguments:
+  - the name of the selection (typically PRIMARY, SECONDARY, or CLIPBOARD);
+  - the name of the selection-type which we were requested to convert the
+    selection into before sending (for example, STRING or LENGTH);
+  - and whether we successfully transmitted the selection.
+We might have failed (and declined the request) for any number of reasons,
+including being asked for a selection that we no longer own, or being asked
+to convert into a type that we don't know about or that is inappropriate.
+This hook doesn't let you change the behavior of emacs's selection replies,
+it merely informs you that they have happened.Vx-selection-timeout
+If the selection owner doesn't reply in this many seconds, we give up.
+A value of 0 means wait as long as necessary.  This is initialized from the
+"*selectionTimeout" resource (which is expressed in milliseconds).Vx-selection-strict-motif-ownership
+*If true and XEmacs already owns the clipboard, don't own it again in the
+Motif way. Owning the selection on the Motif way does a huge amount of
+X protocol, and it makes killing text incredibly slow when using an
+X terminal.  However, when enabled Motif text fields don't bother to look up
+the new value, and you can't Copy from a buffer, Paste into a text
+field, then Copy something else from the buffer and paste it into the
+text field; it pastes the first thing again.Fwidget-plist-member
+Like `plist-get', but returns the tail of PLIST whose car is PROP.
+
+arguments: (PLIST PROP)
+Fwidget-put
+In WIDGET set PROPERTY to VALUE.
+The value can later be retrieved with `widget-get'.
+
+arguments: (WIDGET PROPERTY VALUE)
+Fwidget-get
+In WIDGET, get the value of PROPERTY.
+The value could either be specified when the widget was created, or
+later with `widget-put'.
+
+arguments: (WIDGET PROPERTY)
+Fwidget-apply
+Apply the value of WIDGET's PROPERTY to the widget itself.
+ARGS are passed as extra arguments to the function.Fwindow-truncated-p
+Returns non-nil if text in the window is truncated.
+
+arguments: (&optional WINDOW)
+Fwindowp
+Return t if OBJECT is a window.
+
+arguments: (OBJECT)
+Fwindow-live-p
+Return t if OBJECT is a window which is currently visible.
+
+arguments: (OBJECT)
+Fselected-window
+Return the window that the cursor now appears in and commands apply to.
+If the optional argument CON-DEV-OR-FRAME is specified and is a frame, return
+the selected window used by that frame.  If CON-DEV-OR-FRAME is a device,
+then the selected frame on that device will be used.  If CON-DEV-OR-FRAME
+is a console, the selected frame on that console's selected device will
+be used.  Otherwise, the selected frame is used.
+
+arguments: (&optional CON-DEV-OR-FRAME)
+Flast-nonminibuf-window
+Return the last selected window that is not a minibuffer window.
+If the optional argument CON-DEV-OR-FRAME is specified and is a frame,
+return the last non-minibuffer window used by that frame.  If
+CON-DEV-OR-FRAME is a device, then the selected frame on that device
+will be used.  If CON-DEV-OR-FRAME is a console, the selected frame on
+that console's selected device will be used.  Otherwise, the selected
+frame is used.
+
+arguments: (&optional CON-DEV-OR-FRAME)
+Fminibuffer-window
+Return the window used now for minibuffers.
+If the optional argument CON-DEV-OR-FRAME is specified and is a frame, return
+the minibuffer window used by that frame.  If CON-DEV-OR-FRAME is a device,
+then the selected frame on that device will be used.  If CON-DEV-OR-FRAME
+is a console, the selected frame on that console's selected device will
+be used.  Otherwise, the selected frame is used.
+
+arguments: (&optional CON-DEV-OR-FRAME)
+Fwindow-minibuffer-p
+Return non-nil if WINDOW is a minibuffer window.
+
+arguments: (&optional WINDOW)
+Fwindow-first-hchild
+Return the first horizontal child of WINDOW, or nil.
+
+arguments: (WINDOW)
+Fwindow-first-vchild
+Return the first vertical child of WINDOW, or nil.
+
+arguments: (WINDOW)
+Fwindow-next-child
+Return the next window on the same level as WINDOW, or nil.
+
+arguments: (WINDOW)
+Fwindow-previous-child
+Return the previous window on the same level as WINDOW, or nil.
+
+arguments: (WINDOW)
+Fwindow-parent
+Return the parent of WINDOW, or nil.
+
+arguments: (WINDOW)
+Fwindow-lowest-p
+Return non-nil if WINDOW is along the bottom of its frame.
+
+arguments: (WINDOW)
+Fwindow-highest-p
+Return non-nil if WINDOW is along the top of its frame.
+
+arguments: (WINDOW)
+Fwindow-leftmost-p
+Return non-nil if WINDOW is along the left edge of its frame.
+
+arguments: (WINDOW)
+Fwindow-rightmost-p
+Return non-nil if WINDOW is along the right edge of its frame.
+
+arguments: (WINDOW)
+Fpos-visible-in-window-p
+Return t if position POS is currently on the frame in WINDOW.
+Returns nil if that position is scrolled vertically out of view.
+POS defaults to point in WINDOW's buffer; WINDOW, to the selected window.
+
+arguments: (&optional POS WINDOW)
+Fwindow-buffer
+Return the buffer that WINDOW is displaying.
+
+arguments: (&optional WINDOW)
+Fwindow-frame
+Return the frame that window WINDOW is on.
+
+arguments: (&optional WINDOW)
+Fwindow-height
+Return the number of default lines in WINDOW.
+This actually works by dividing the window's pixel height (including
+the modeline and horizontal scrollbar, if any) by the height of the
+default font; therefore, the number of displayed lines will probably
+be different.
+Use `window-height' to get consistent results in geometry calculations.
+Use `window-displayed-height' to get the actual number of lines
+currently displayed in a window.
+
+The names are somewhat confusing; here's a table to help out:
+
+                    width                         height
+-------------------------------------------------------------------------
+w/o gutters
+  (rows/columns)    window-width                  window-text-area-height
+  (pixels)          window-text-area-pixel-width  window-text-area-pixel-height
+
+with gutters
+  (rows/columns)    window-full-width             window-height
+  (pixels)          window-pixel-width            window-pixel-height
+
+actually displayed
+  (rows/columns)    ----                          window-displayed-height
+  (pixels)          ----                     window-displayed-text-pixel-height
+
+arguments: (&optional WINDOW)
+Fwindow-displayed-height
+Return the number of lines currently displayed in WINDOW.
+This counts the actual number of lines displayed in WINDOW
+(as opposed to `window-height').  The modeline and horizontal
+scrollbar do not count as lines.  If there is some blank space
+between the end of the buffer and the end of the window, this
+function pretends that there are lines of text in the default
+font there.
+
+arguments: (&optional WINDOW)
+Fwindow-pixel-height
+Return the height of WINDOW in pixels.  Defaults to current window.
+This includes the window's modeline and horizontal scrollbar (if any).
+
+arguments: (&optional WINDOW)
+Fwindow-text-area-height
+Return the number of default lines in the text area of WINDOW.
+This actually works by dividing the window's text area pixel height (i.e.
+excluding the modeline and horizontal scrollbar, if any) by the height of the
+default font; therefore, the number of displayed lines will probably
+be different.
+See also `window-height' and `window-displayed-height'.
+
+arguments: (&optional WINDOW)
+Fwindow-text-area-pixel-height
+Return the height in pixels of the text-displaying portion of WINDOW.
+Unlike `window-pixel-height', the space occupied by the modeline and
+horizontal scrollbar, if any, is not counted.
+
+arguments: (&optional WINDOW)
+Fwindow-displayed-text-pixel-height
+Return the height in pixels of the text displayed in WINDOW.
+Unlike `window-text-area-pixel-height', any blank space below the
+end of the buffer is not included.  If optional argument NOCLIPPED
+is non-nil, do not include space occupied by clipped lines.
+
+arguments: (&optional WINDOW NOCLIPPED)
+Fwindow-width
+Return the number of display columns in WINDOW.
+This is the width that is usable columns available for text in WINDOW,
+and does not include vertical scrollbars, dividers, or the like.  See also
+`window-full-width' and `window-height'.
+
+arguments: (&optional WINDOW)
+Fwindow-full-width
+Return the total number of columns in WINDOW.
+This is like `window-width' but includes vertical scrollbars, dividers,
+etc.
+
+arguments: (&optional WINDOW)
+Fwindow-pixel-width
+Return the width of WINDOW in pixels.  Defaults to current window.
+
+arguments: (&optional WINDOW)
+Fwindow-text-area-pixel-width
+Return the width in pixels of the text-displaying portion of WINDOW.
+Unlike `window-pixel-width', the space occupied by the vertical
+scrollbar or divider, if any, is not counted.
+
+arguments: (&optional WINDOW)
+Fwindow-hscroll
+Return the number of columns by which WINDOW is scrolled from left margin.
+
+arguments: (&optional WINDOW)
+Fmodeline-hscroll
+Return the horizontal scrolling amount of WINDOW's modeline.
+If the window has no modeline, return nil.
+
+arguments: (&optional WINDOW)
+Fset-modeline-hscroll
+Set the horizontal scrolling amount of WINDOW's modeline to NCOL.
+If NCOL is negative, it will silently be forced to 0.
+If the window has no modeline, return nil. Otherwise, return the actual
+value that was set.
+
+arguments: (WINDOW NCOL)
+Fset-window-hscroll
+Set number of columns WINDOW is scrolled from left margin to NCOL.
+NCOL should be zero or positive.
+
+arguments: (WINDOW NCOL)
+Fwindow-pixel-edges
+Return a list of the pixel edge coordinates of WINDOW.
+The returned list is of the form (LEFT TOP RIGHT BOTTOM),
+all relative to 0, 0 at the top left corner of WINDOW's frame.
+The frame toolbars, menubars and gutters are considered to be outside
+of this area, while the scrollbars are considered to be inside.
+
+arguments: (&optional WINDOW)
+Fwindow-text-area-pixel-edges
+Return a list of the pixel edge coordinates of the text area of WINDOW.
+The returned list is of the form (LEFT TOP RIGHT BOTTOM),
+all relative to 0, 0 at the top left corner of the total area allocated
+to the window, which includes the scrollbars.
+
+arguments: (&optional WINDOW)
+Fwindow-point
+Return current value of point in WINDOW.
+For a non-selected window, this is the value point would have
+if that window were selected.
+
+Note that, when WINDOW is the selected window and its buffer
+is also currently selected, the value returned is the same as (point).
+It would be more strictly correct to return the `top-level' value
+of point, outside of any save-excursion forms.
+But that value is hard to find.
+
+arguments: (&optional WINDOW)
+Fwindow-start
+Return position at which display currently starts in WINDOW.
+This is updated by redisplay or by calling `set-window-start'.
+
+arguments: (&optional WINDOW)
+Fwindow-end
+Return position at which display currently ends in WINDOW.
+This is updated by redisplay, when it runs to completion.
+Simply changing the buffer text or setting `window-start' does not
+update this value.  WINDOW defaults to the selected window.
+
+If optional arg GUARANTEE is non-nil, the return value is guaranteed
+to be the same value as this function would return at the end of the
+next full redisplay assuming nothing else changes in the meantime.
+This function is potentially much slower with this flag set.
+
+arguments: (&optional WINDOW GUARANTEE)
+Fwindow-last-line-visible-height
+Return pixel height of visible part of last window line if it is clipped.
+If the last line is not clipped, return nil.
+
+arguments: (&optional WINDOW)
+Fset-window-point
+Make point value in WINDOW be at position POS in WINDOW's buffer.
+
+arguments: (WINDOW POS)
+Fset-window-start
+Make display in WINDOW start at position POS in WINDOW's buffer.
+Optional third arg NOFORCE non-nil inhibits next redisplay
+from overriding motion of point in order to display at this exact start.
+
+arguments: (WINDOW POS &optional NOFORCE)
+Fwindow-dedicated-p
+Return WINDOW's dedicated object, usually t or nil.
+See also `set-window-dedicated-p'.
+
+arguments: (WINDOW)
+Fset-window-dedicated-p
+Control whether WINDOW is dedicated to the buffer it displays.
+If it is dedicated, Emacs will not automatically change
+which buffer appears in it.
+The second argument is the new value for the dedication flag;
+non-nil means yes.
+
+arguments: (WINDOW ARG)
+Fdelete-window
+Remove WINDOW from the display.  Default is selected window.
+If window is the only one on its frame, the frame is deleted as well.
+Normally, you cannot delete the last non-minibuffer-only frame (you must
+use `save-buffers-kill-emacs' or `kill-emacs').  However, if optional
+second argument FORCE is non-nil, you can delete the last frame. (This
+will automatically call `save-buffers-kill-emacs'.)
+
+arguments: (&optional WINDOW FORCE)
+Fnext-window
+Return the next window after WINDOW in the canonical ordering of windows.
+If omitted, WINDOW defaults to the selected window.
+
+Optional second arg MINIBUF t means count the minibuffer window even
+if not active.  MINIBUF nil or omitted means count the minibuffer iff
+it is active.  MINIBUF neither t nor nil means not to count the
+minibuffer even if it is active.
+
+Several frames may share a single minibuffer; if the minibuffer
+counts, all windows on all frames that share that minibuffer count
+too.  Therefore, `next-window' can be used to iterate through the
+set of windows even when the minibuffer is on another frame.  If the
+minibuffer does not count, only windows from WINDOW's frame count.
+
+By default, only the windows in the selected frame are considered.
+The optional argument WHICH-FRAMES changes this behavior:
+WHICH-FRAMES = `visible' means search windows on all visible frames.
+WHICH-FRAMES = 0 means search windows on all visible and iconified frames.
+WHICH-FRAMES = t means search windows on all frames including invisible frames.
+WHICH-FRAMES = a frame means search only windows on that frame.
+Anything else means restrict to the selected frame.
+
+The optional fourth argument WHICH-DEVICES further clarifies on which
+devices to search for frames as specified by WHICH-FRAMES.  This value
+is only meaningful if WHICH-FRAMES is non-nil.
+If nil or omitted, search all devices on the selected console.
+If a device, only search that device.
+If a console, search all devices on that console.
+If a device type, search all devices of that type.
+If `window-system', search all window-system devices.
+Any other non-nil value means search all devices.
+
+If you use consistent values for MINIBUF, WHICH-FRAMES, and WHICH-DEVICES,
+you can use `next-window' to iterate through the entire cycle of
+acceptable windows, eventually ending up back at the window you started with.
+`previous-window' traverses the same cycle, in the reverse order.
+
+arguments: (&optional WINDOW MINIBUF WHICH-FRAMES WHICH-DEVICES)
+Fprevious-window
+Return the window preceding WINDOW in the canonical ordering of windows.
+If omitted, WINDOW defaults to the selected window.
+
+Optional second arg MINIBUF t means count the minibuffer window even
+if not active.  MINIBUF nil or omitted means count the minibuffer iff
+it is active.  MINIBUF neither t nor nil means not to count the
+minibuffer even if it is active.
+
+Several frames may share a single minibuffer; if the minibuffer
+counts, all windows on all frames that share that minibuffer count
+too.  Therefore, `previous-window' can be used to iterate through
+the set of windows even when the minibuffer is on another frame.  If
+the minibuffer does not count, only windows from WINDOW's frame count.
+
+By default, only the windows in the selected frame are considered.
+The optional argument WHICH-FRAMES changes this behavior:
+WHICH-FRAMES = `visible' means search windows on all visible frames.
+WHICH-FRAMES = 0 means search windows on all visible and iconified frames.
+WHICH-FRAMES = t means search windows on all frames including invisible frames.
+WHICH-FRAMES = a frame means search only windows on that frame.
+Anything else means restrict to the selected frame.
+
+The optional fourth argument WHICH-DEVICES further clarifies on which
+devices to search for frames as specified by WHICH-FRAMES.  This value
+is only meaningful if WHICH-FRAMES is non-nil.
+If nil or omitted, search all devices on the selected console.
+If a device, only search that device.
+If a console, search all devices on that console.
+If a device type, search all devices of that type.
+If `window-system', search all window-system devices.
+Any other non-nil value means search all devices.
+
+If you use consistent values for MINIBUF, WHICH-FRAMES, and WHICH-DEVICES,
+you can use `previous-window' to iterate through the entire cycle of
+acceptable windows, eventually ending up back at the window you started with.
+`next-window' traverses the same cycle, in the reverse order.
+
+arguments: (&optional WINDOW MINIBUF WHICH-FRAMES DEVICES)
+Fnext-vertical-window
+Return the next window which is vertically after WINDOW.
+
+arguments: (&optional WINDOW)
+Fother-window
+Select the COUNT'th different window on this frame.
+All windows on current frame are arranged in a cyclic order.
+This command selects the window COUNT steps away in that order.
+A negative COUNT moves in the opposite order.
+
+By default, only the windows in the selected frame are considered.
+The optional argument WHICH-FRAMES changes this behavior:
+WHICH-FRAMES = `visible' means search windows on all visible frames.
+WHICH-FRAMES = 0 means search windows on all visible and iconified frames.
+WHICH-FRAMES = t means search windows on all frames including invisible frames.
+WHICH-FRAMES = a frame means search only windows on that frame.
+Anything else means restrict to the selected frame.
+
+The optional argument WHICH-DEVICES further clarifies on which devices
+to search for frames as specified by WHICH-FRAMES.  This value is only
+meaningful if WHICH-FRAMES is non-nil.
+If nil or omitted, search all devices on the selected console.
+If a device, only search that device.
+If a console, search all devices on that console.
+If a device type, search all devices of that type.
+If `window-system', search all window-system devices.
+Any other non-nil value means search all devices.
+
+arguments: (COUNT &optional WHICH-FRAMES WHICH-DEVICES)
+Fget-lru-window
+Return the window least recently selected or used for display.
+
+By default, only the windows in the selected frame are considered.
+The optional argument WHICH-FRAMES changes this behavior:
+If optional argument WHICH-FRAMES is `visible', search all visible frames.
+If WHICH-FRAMES is 0, search all visible and iconified frames.
+If WHICH-FRAMES is t, search all frames.
+If WHICH-FRAMES is nil, search only the selected frame.
+If WHICH-FRAMES is a frame, search only that frame.
+
+The optional argument WHICH-DEVICES further clarifies on which devices
+to search for frames as specified by WHICH-FRAMES.  This value is only
+meaningful if WHICH-FRAMES is non-nil.
+If nil or omitted, search all devices on the selected console.
+If a device, only search that device.
+If a console, search all devices on that console.
+If a device type, search all devices of that type.
+If `window-system', search all devices on window-system consoles.
+Any other non-nil value means search all devices.
+
+arguments: (&optional WHICH-FRAMES WHICH-DEVICES)
+Fget-largest-window
+Return the window largest in area.
+
+By default, only the windows in the selected frame are considered.
+The optional argument WHICH-FRAMES changes this behavior:
+If optional argument WHICH-FRAMES is `visible', search all visible frames.
+If WHICH-FRAMES is 0, search all visible and iconified frames.
+If WHICH-FRAMES is t, search all frames.
+If WHICH-FRAMES is nil, search only the selected frame.
+If WHICH-FRAMES is a frame, search only that frame.
+
+The optional argument WHICH-DEVICES further clarifies on which devices
+to search for frames as specified by WHICH-FRAMES.  This value is only
+meaningful if WHICH-FRAMES is non-nil.
+If nil or omitted, search all devices on the selected console.
+If a device, only search that device.
+If a console, search all devices on that console.
+If a device type, search all devices of that type.
+If `window-system', search all devices on window-system consoles.
+Any other non-nil value means search all devices.
+
+arguments: (&optional WHICH-FRAMES WHICH-DEVICES)
+Fget-buffer-window
+Return a window currently displaying BUFFER, or nil if none.
+
+By default, only the windows in the selected frame are considered.
+The optional argument WHICH-FRAMES changes this behavior:
+If optional argument WHICH-FRAMES is `visible', search all visible frames.
+If WHICH-FRAMES is 0, search all visible and iconified frames.
+If WHICH-FRAMES is t, search all frames.
+If WHICH-FRAMES is nil, search only the selected frame.
+If WHICH-FRAMES is a frame, search only that frame.
+
+The optional argument WHICH-DEVICES further clarifies on which devices
+to search for frames as specified by WHICH-FRAMES.  This value is only
+meaningful if WHICH-FRAMES is non-nil.
+If nil or omitted, search all devices on the selected console.
+If a device, only search that device.
+If a console, search all devices on that console.
+If a device type, search all devices of that type.
+If `window-system', search all devices on window-system consoles.
+Any other non-nil value means search all devices.
+
+arguments: (BUFFER &optional WHICH-FRAMES WHICH-DEVICES)
+Fwindow-left-margin-pixel-width
+Return the width in pixels of the left outside margin of window WINDOW.
+If WINDOW is nil, the selected window is assumed.
+
+arguments: (&optional WINDOW)
+Fwindow-right-margin-pixel-width
+Return the width in pixels of the right outside margin of window WINDOW.
+If WINDOW is nil, the selected window is assumed.
+
+arguments: (&optional WINDOW)
+Fdelete-other-windows
+Make WINDOW (or the selected window) fill its frame.
+Only the frame WINDOW is on is affected.
+This function tries to reduce display jumps
+by keeping the text previously visible in WINDOW
+in the same place on the frame.  Doing this depends on
+the value of (window-start WINDOW), so if calling this function
+in a program gives strange scrolling, make sure the window-start
+value is reasonable when this function is called.
+
+arguments: (&optional WINDOW)
+Fdelete-windows-on
+Delete all windows showing BUFFER.
+
+Optional second argument WHICH-FRAMES controls which frames are affected.
+If nil or omitted, delete all windows showing BUFFER in any frame.
+If t, delete only windows showing BUFFER in the selected frame.
+If `visible', delete all windows showing BUFFER in any visible frame.
+If a frame, delete only windows showing BUFFER in that frame.
+Warning: WHICH-FRAMES has the same meaning as with `next-window',
+except that the meanings of nil and t are reversed.
+
+The optional third argument WHICH-DEVICES further clarifies on which
+devices to search for frames as specified by WHICH-FRAMES.  This value
+is only meaningful if WHICH-FRAMES is not t.
+If nil or omitted, search only the selected console.
+If a device, only search that device.
+If a console, search all devices on that console.
+If a device type, search all devices of that type.
+If `window-system', search all devices on a window system.
+Any other non-nil value means search all devices.
+
+arguments: (BUFFER &optional WHICH-FRAMES WHICH-DEVICES)
+Freplace-buffer-in-windows
+Replace BUFFER with some other buffer in all windows showing it.
+
+Optional second argument WHICH-FRAMES controls which frames are affected.
+If nil or omitted, all frames are affected.
+If t, only the selected frame is affected.
+If `visible', all visible frames are affected.
+If a frame, only that frame is affected.
+Warning: WHICH-FRAMES has the same meaning as with `next-window',
+except that the meanings of nil and t are reversed.
+
+The optional third argument WHICH-DEVICES further clarifies on which
+devices to search for frames as specified by WHICH-FRAMES.  This value
+is only meaningful if WHICH-FRAMES is not t.
+If nil or omitted, search only the selected console.
+If a device, only search that device.
+If a console, search all devices on that console.
+If a device type, search all devices of that type.
+If `window-system', search all devices on a window system.
+Any other non-nil value means search all devices.
+
+arguments: (BUFFER &optional WHICH-FRAMES WHICH-DEVICES)
+Fset-window-buffer
+Make WINDOW display BUFFER as its contents.
+BUFFER can be a buffer or buffer name.
+
+With non-nil optional argument NORECORD, do not modify the
+global or per-frame buffer ordering.
+
+arguments: (WINDOW BUFFER &optional NORECORD)
+Fselect-window
+Select WINDOW.  Most editing will apply to WINDOW's buffer.
+The main editor command loop selects the buffer of the selected window
+before each command.
+
+With non-nil optional argument NORECORD, do not modify the
+global or per-frame buffer ordering.
+
+arguments: (WINDOW &optional NORECORD)
+Fsplit-window
+Split WINDOW, putting SIZE lines in the first of the pair.
+WINDOW defaults to the selected one and SIZE to half its size.
+If optional third arg HORFLAG is non-nil, split side by side
+and put SIZE columns in the first of the pair.
+
+arguments: (&optional WINDOW SIZE HORFLAG)
+Fenlarge-window
+Make the selected window COUNT lines taller.
+From program, optional second arg HORIZONTALP non-nil means grow
+sideways COUNT columns, and optional third arg WINDOW specifies the
+window to change instead of the selected window.
+
+arguments: (COUNT &optional HORIZONTALP WINDOW)
+Fenlarge-window-pixels
+Make the selected window COUNT pixels taller.
+From program, optional second arg HORIZONTALP non-nil means grow
+sideways COUNT pixels, and optional third arg WINDOW specifies the
+window to change instead of the selected window.
+
+arguments: (COUNT &optional HORIZONTALP WINDOW)
+Fshrink-window
+Make the selected window COUNT lines shorter.
+From program, optional second arg HORIZONTALP non-nil means shrink
+sideways COUNT columns, and optional third arg WINDOW specifies the
+window to change instead of the selected window.
+
+arguments: (COUNT &optional HORIZONTALP WINDOW)
+Fshrink-window-pixels
+Make the selected window COUNT pixels smaller.
+From program, optional second arg HORIZONTALP non-nil means shrink
+sideways COUNT pixels, and optional third arg WINDOW specifies the
+window to change instead of the selected window.
+
+arguments: (COUNT &optional HORIZONTALP WINDOW)
+Fscroll-up
+Scroll text of current window up COUNT lines; or near full screen if no arg.
+A near full screen is `next-screen-context-lines' less than a full screen.
+Negative COUNT means scroll downward.
+When calling from a program, supply an integer as argument or nil.
+On attempt to scroll past end of buffer, `end-of-buffer' is signaled.
+On attempt to scroll past beginning of buffer, `beginning-of-buffer' is
+signaled.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
+arguments: (&optional COUNT)
+Fscroll-down
+Scroll text of current window down COUNT lines; or near full screen if no arg.
+A near full screen is `next-screen-context-lines' less than a full screen.
+Negative COUNT means scroll upward.
+When calling from a program, supply a number as argument or nil.
+On attempt to scroll past end of buffer, `end-of-buffer' is signaled.
+On attempt to scroll past beginning of buffer, `beginning-of-buffer' is
+signaled.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
+arguments: (&optional COUNT)
+Fother-window-for-scrolling
+Return the other window for "other window scroll" commands.
+If in the minibuffer, `minibuffer-scroll-window' if non-nil
+specifies the window.
+If `other-window-scroll-buffer' is non-nil, a window
+showing that buffer is used.
+
+arguments: ()
+Fscroll-other-window
+Scroll next window upward COUNT lines; or near full frame if no arg.
+The next window is the one below the current one; or the one at the top
+if the current one is at the bottom.  Negative COUNT means scroll downward.
+When calling from a program, supply a number as argument or nil.
+
+If in the minibuffer, `minibuffer-scroll-window' if non-nil
+specifies the window to scroll.
+If `other-window-scroll-buffer' is non-nil, scroll the window
+showing that buffer, popping the buffer up if necessary.
+
+arguments: (&optional COUNT)
+Fscroll-left
+Scroll selected window display COUNT columns left.
+Default for COUNT is window width minus 2.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
+arguments: (&optional COUNT)
+Fscroll-right
+Scroll selected window display COUNT columns right.
+Default for COUNT is window width minus 2.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
+arguments: (&optional COUNT)
+Fcenter-to-window-line
+Center point in WINDOW.  With N, put point on line N.
+The desired position of point is always relative to the window.
+If WINDOW is nil, the selected window is used.
+
+arguments: (&optional N WINDOW)
+Fmove-to-window-line
+Position point relative to WINDOW.
+With no argument, position text at center of window.
+An argument specifies window line; zero means top of window,
+negative means relative to bottom of window.
+If WINDOW is nil, the selected window is used.
+
+arguments: (ARG &optional WINDOW)
+Fwindow-memory-usage
+Return stats about the memory usage of window WINDOW.
+The values returned are in the form of an alist of usage types and byte
+counts.  The byte counts attempt to encompass all the memory used
+by the window (separate from the memory logically associated with a
+buffer or frame), including internal structures and any malloc()
+overhead associated with them.  In practice, the byte counts are
+underestimated because certain memory usage is very hard to determine
+(e.g. the amount of memory used inside the Xt library or inside the
+X server) and because there is other stuff that might logically
+be associated with a window, buffer, or frame (e.g. window configurations,
+glyphs) but should not obviously be included in the usage counts.
+
+Multiple slices of the total memory usage may be returned, separated
+by a nil.  Each slice represents a particular view of the memory, a
+particular way of partitioning it into groups.  Within a slice, there
+is no overlap between the groups of memory, and each slice collectively
+represents all the memory concerned.
+
+arguments: (WINDOW)
+Fwindow-configuration-p
+Return t if OBJECT is a window-configuration object.
+
+arguments: (OBJECT)
+Fset-window-configuration
+Set the configuration of windows and buffers as specified by CONFIGURATION.
+CONFIGURATION must be a value previously returned
+by `current-window-configuration' (which see).
+
+arguments: (CONFIGURATION)
+Fcurrent-window-configuration
+Return an object representing the current window configuration of FRAME.
+If FRAME is nil or omitted, use the selected frame.
+This describes the number of windows, their sizes and current buffers,
+and for each window on FRAME the displayed buffer, where display
+starts, and the positions of point and mark.
+An exception is made for point in the current buffer:
+its value is -not- saved.
+
+arguments: (&optional FRAME)
+Fsave-window-excursion
+Execute body, preserving window sizes and contents.
+Restores which buffer appears in which window, where display starts,
+as well as the current buffer.
+Does not restore the value of point in current buffer.Fcurrent-pixel-column
+Return the horizontal pixel position of POS in window.
+Beginning of line is column 0. This is calculated using the redisplay
+display tables.  If WINDOW is nil, the current window is assumed.
+If POS is nil, point is assumed. Note that POS must be visible for
+a non-nil result to be returned.
+
+arguments: (&optional WINDOW POS)
+Vscroll-on-clipped-lines
+*Non-nil means to scroll if point lands on a line which is clipped.Vtemp-buffer-show-hook
+See `temp-buffer-show-function'.Vtemp-buffer-show-function
+Non-nil means call as function to display a help buffer.
+The function is called with one argument, the buffer to be displayed.
+Used by `with-output-to-temp-buffer'.
+If this function is used, then it must do the entire job of showing
+the buffer; `temp-buffer-show-hook' is not run unless this function runs it.
+(`temp-buffer-show-hook' is obsolete.  Do not use in new code.)Vminibuffer-scroll-window
+Non-nil means it is the window that \<minibuffer-local-map>\[scroll-other-window] in minibuffer should scroll.Vother-window-scroll-buffer
+If non-nil, this is a buffer and \[scroll-other-window] should scroll its window.Vwindow-pixel-scroll-increment
+*Number of pixels to scroll by per requested line.
+If nil then normal line scrolling occurs regardless of line height.
+If t then scrolling is done in increments equal to the height of the default face.Vnext-screen-context-lines
+*Number of lines of continuity when scrolling by screenfuls.Vwindow-min-height
+*Delete any window less than this tall (including its modeline).Vwindow-min-width
+*Delete any window less than this wide.Vmodeline-shadow-thickness
+*How thick to draw 3D shadows around modelines.
+If this is set to 0, modelines will be the traditional 2D.  Sizes above
+10 will be accepted but the maximum thickness that will be drawn is 10.
+This is a specifier; use `set-specifier' to change it.Vhas-modeline-p
+*Whether the modeline should be displayed.
+This is a specifier; use `set-specifier' to change it.Vvertical-divider-always-visible-p
+*Should XEmacs always display vertical dividers between windows.
+
+When this is non-nil, vertical dividers are always shown, and are
+draggable.  When it is nil, vertical dividers are shown only when
+there are no scrollbars in between windows, and are not draggable.
+
+This is a specifier; use `set-specifier' to change it.Vvertical-divider-shadow-thickness
+*How thick to draw 3D shadows around vertical dividers.
+This is a specifier; use `set-specifier' to change it.Vvertical-divider-line-width
+*The width of the vertical dividers, not including shadows.
+
+For TTY windows, divider line is always one character wide.  When
+instance of this specifier is zero in a TTY window, no divider is
+drawn at all between windows.  When non-zero, a one character wide
+divider is displayed.
+
+This is a specifier; use `set-specifier' to change it.Vvertical-divider-spacing
+*How much space to leave around the vertical dividers.
+
+In TTY windows, spacing is always zero, and the value of this
+specifier is ignored.
+
+This is a specifier; use `set-specifier' to change it.Freally-free
+Actually free the storage held by the free() debug hook.
+A no-op if the free hook is disabled.
+
+arguments: (&optional ARG)
+
+Fbackquote
+Expand the internal representation of a backquoted TEMPLATE into a lisp form.
+
+The backquote character is like the quote character in that it prevents the
+template which follows it from being evaluated, except that backquote
+permits you to evaluate portions of the quoted template.  A comma character
+inside TEMPLATE indicates that the following item should be evaluated.  A
+comma character may be followed by an at-sign, which indicates that the form
+which follows should be evaluated and inserted and "spliced" into the
+template.  Forms following ,@ must evaluate to lists.
+
+Here is how to use backquotes:
+  (setq p 'b
+        q '(c d e))
+  `(a ,p ,@q)   -> (a b c d e)
+  `(a . b)      -> (a . b)
+  `(a . ,p)     -> (a . b)
+
+The XEmacs lisp reader expands lisp backquotes as it reads them.
+Examples:
+  `atom             is read as (backquote atom)
+  `(a ,b ,@(c d e)) is read as (backquote (a (\, b) (\,\@ (c d e))))
+  `(a . ,p)         is read as (backquote (a \, p))
+
+(backquote TEMPLATE) is a macro that produces code to construct TEMPLATE.
+Note that this is very slow in interpreted code, but fast if you compile.
+TEMPLATE is one or more nested lists or vectors, which are `almost quoted'.
+They are copied recursively, with elements preceded by comma evaluated.
+ (backquote (a b))     == (list 'a 'b)
+ (backquote (a [b c])) == (list 'a (vector 'b 'c))
+
+However, certain special lists are not copied.  They specify substitution.
+Lists that look like (\, EXP) are evaluated and the result is substituted.
+ (backquote (a (\, (+ x 5)))) == (list 'a (+ x 5))
+
+Elements of the form (\,\@ EXP) are evaluated and then all the elements
+of the result are substituted.  This result must be a list; it may
+be `nil'.
+
+Elements of the form (\,\. EXP) are evaluated and then all the elements
+of the result are concatenated to the list of preceding elements in the list.
+They must occur as the last element of a list (not a vector).
+EXP may evaluate to nil.
+
+As an example, a simple macro `push' could be written:
+   (defmacro push (v l)
+     `(setq ,l (cons ,@(list v l))))
+or as
+   (defmacro push (v l)
+     `(setq ,l (cons ,v ,l)))
+
+For backwards compatibility, old-style emacs-lisp backquotes are still read.
+     OLD STYLE                        NEW STYLE
+     (` (foo (, bar) (,@ bing)))      `(foo ,bar ,@bing)
+
+Because of the old-style backquote support, you cannot use a new-style
+backquoted form as the first element of a list.  Perhaps some day this
+restriction will go away, but for now you should be wary of it:
+    (`(this ,will ,@fail))
+    ((` (but (, this) will (,@ work))))
+This is an extremely rare thing to need to do in lisp.
+Fbq-list*
+Return a list of its arguments with last cons a dotted pair.
+Fproclaim-inline
+Cause the named functions to be open-coded when called from compiled code.
+They will only be compiled open-coded when `byte-optimize' is true.
+Fproclaim-notinline
+Cause the named functions to no longer be open-coded.
+Fdefsubst
+Define an inline function.  The syntax is just like that of `defun'.
+Fmake-obsolete
+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.
+Fmake-obsolete-variable
+Make the byte-compiler warn that VARIABLE is obsolete,
+and NEW should be used instead.  If NEW is a string, then that is the
+`use instead' message.
+Fmake-compatible
+Make the byte-compiler know that FUNCTION is provided for compatibility.
+The warning will say that NEW should be used instead.
+If NEW is a string, that is the `use instead' message.
+Fmake-compatible-variable
+Make the byte-compiler know that VARIABLE is provided for compatibility.
+and NEW should be used instead.  If NEW is a string, then that is the
+`use instead' message.
+Fdont-compile
+Like `progn', but the body always runs interpreted (not compiled).
+If you think you need this, you're probably making a mistake somewhere.
+Feval-when-compile
+Like `progn', but evaluates the body at compile time.
+The result of the body appears to the compiler as a quoted constant.
+Feval-and-compile
+Like `progn', but evaluates the body at compile time and at load time.
+Feval-when-feature
+Run the body forms when FEATURE is featurep, be it now or later.
+Called (eval-when-feature (FEATURE [. FILENAME]) BODYFORMS...).
+If (featurep 'FEATURE), evals now; otherwise adds an elt to
+`after-load-alist' (which see), using FEATURE as filename if FILENAME is nil.
+Fwith-boundp
+Evaluate BODY, but do not issue bytecomp warnings about SYMBOLS undefined.
+SYMBOLS can be a symbol or a list of symbols and must be quoted.  When
+compiling this file, the warning `reference to free variable SYMBOL'
+will not occur.  This is a clean way to avoid such warnings.  See also
+`declare-boundp' and `if-boundp'.
+Fif-boundp
+Equivalent to (if (boundp SYMBOL) THEN ELSE) but handles bytecomp warnings.
+When compiling this file, the warning `reference to free variable SYMBOL'
+will not occur.  This is a clean way to avoid such warnings.  See also
+`with-boundp' and `declare-boundp'.
+Fdeclare-boundp
+Evaluate SYMBOL without bytecomp warnings about the symbol.
+Sample usage is
+
+  (declare-boundp gpm-minor-mode)
+
+which is equivalent to
+
+  (with-fboundp 'gpm-minor-mode
+    gpm-minor-mode)
+Fglobally-declare-boundp
+Declare that all free uses of SYMBOL in this file are valid.
+SYMBOL can also be a list of symbols.  SYMBOL must be quoted.
+
+When compiling this file, the warning `reference to free variable
+SYMBOL' will not occur regardless of where calls to SYMBOL occur in
+the file.
+
+In general, you should *NOT* use this; use `declare-boundp',
+`if-boundp', or `with-boundp' to wrap individual uses, as necessary.
+That way, you're more likely to remember to put in the explicit checks
+for the variable's existence that are usually necessary.  However,
+`globally-declare-boundp' is better in some circumstances, such as
+when writing an ELisp package that makes integral use of
+optionally-compiled-in functionality (typically, an interface onto a
+system library) and checks for the existence of the functionality at
+some entry point to the package.  See `globally-declare-fboundp' for
+more information.
+Fwith-fboundp
+Evaluate BODY, but do not issue bytecomp warnings about SYMBOL.
+SYMBOL must be quoted.  When compiling this file, the warning `the
+function SYMBOL is not known to be defined' will not occur.  This is a
+clean way to avoid such warnings.  See also `declare-fboundp',
+`if-fboundp', and `globally-declare-fboundp'.
+Fif-fboundp
+Equivalent to (if (fboundp SYMBOL) THEN ELSE) but handles bytecomp warnings.
+When compiling this file, the warning `the function SYMBOL is not
+known to be defined' will not occur.  This is a clean way to avoid
+such warnings.  See also `declare-fboundp', `with-fboundp', and
+`globally-declare-fboundp'.
+Fdeclare-fboundp
+Execute FORM (a function call) without bytecomp warnings about the call.
+Sample usage is
+
+  (declare-fboundp (x-keysym-on-keyboard-sans-modifiers-p 'backspace))
+
+which is equivalent to
+
+  (with-fboundp 'x-keysym-on-keyboard-sans-modifiers-p
+    (x-keysym-on-keyboard-sans-modifiers-p 'backspace))
+Fglobally-declare-fboundp
+Declare that all calls to function SYMBOL in this file are valid.
+SYMBOL can also be a list of symbols.  SYMBOL must be quoted.
+
+When compiling this file, the warning `the function SYMBOL is not
+known to be defined' will not occur regardless of where calls to
+SYMBOL occur in the file.
+
+In general, you should *NOT* use this; use `declare-fboundp',
+`if-fboundp', or `with-fboundp' to wrap individual uses, as necessary.
+That way, you're more likely to remember to put in the explicit checks
+for the function's existence that are usually necessary.  However,
+`globally-declare-fboundp' is better in some circumstances, such as
+when writing an ELisp package that makes integral use of
+optionally-compiled-in functionality (typically, an interface onto a
+system library) and checks for the existence of the functionality at
+some entry point to the package.  The file `ldap.el' is a good
+example: It provides a layer on top of the optional LDAP ELisp
+primitives, makes calls to them throughout its code, and verifies the
+presence of LDAP support at load time.  Putting calls to
+`declare-fboundp' throughout the code would be a major annoyance.
+Fwith-byte-compiler-warnings-suppressed
+Evaluate BODY, but do not issue bytecomp warnings TYPE.
+TYPE should be one of `redefine', `callargs', `subr-callargs',
+`free-vars', `unresolved', `unused-vars', `obsolete', or `pedantic',
+or a list of one or more of these symbols. (See `byte-compile-warnings'.)
+TYPE must be quoted.
+
+NOTE: You should *NOT* under normal circumstances be using this!
+There are better ways of avoiding most of these warnings.  In particular:
+
+-- use (declare (special ...)) if you are making use of
+   dynamically-scoped variables.
+-- use `with-fboundp', `declare-fboundp', `if-fboundp', or
+   `globally-declare-fboundp' to avoid warnings about undefined
+   functions when you know the function actually exists.
+-- use `with-boundp', `declare-boundp', or `if-boundp' to avoid
+   warnings about undefined variables when you know the variable
+   actually exists.
+-- use `with-obsolete-variable' or `with-obsolete-function' if you
+   are purposely using such a variable or function.
+Fwith-obsolete-variable
+Evaluate BODY but do not warn about usage of obsolete variable SYMBOL.
+SYMBOL must be quoted.  See also `with-obsolete-function'.
+Fwith-obsolete-function
+Evaluate BODY but do not warn about usage of obsolete function SYMBOL.
+SYMBOL must be quoted.  See also `with-obsolete-variable'.
+Fbyte-compiler-options
+Set some compilation-parameters for this file.  
+This will affect only the file in which it appears; this does nothing when
+evaluated, or when loaded from a .el file.
+
+Each argument to this macro must be a list of a key and a value.
+
+  Keys:		  Values:		Corresponding variable:
+
+  verbose	  t, nil		byte-compile-verbose
+  optimize	  t, nil, source, byte	byte-optimize
+  warnings	  list of warnings	byte-compile-warnings
+  file-format	  emacs19, emacs20	byte-compile-emacs19-compatibility
+
+The value specified with the `warnings' option must be a list, containing
+some subset of the following flags:
+
+  free-vars	references to variables not in the current lexical scope.
+  unused-vars	references to non-global variables bound but not referenced.
+  unresolved	calls to unknown functions.
+  callargs	lambda calls with args that don't match the definition.
+  subr-callargs	calls to subrs with args that don't match the definition.
+  redefine	function cell redefined from a macro to a lambda or vice
+		versa, or redefined to take a different number of arguments.
+  obsolete	use of an obsolete function or variable.
+  pedantic	warn of use of compatible symbols.
+
+If the first element if the list is `+' or `-' then the specified elements 
+are added to or removed from the current set of warnings, instead of the
+entire set of warnings being overwritten.
+
+For example, something like this might appear at the top of a source file:
+
+    (byte-compiler-options
+      (optimize t)
+      (warnings (- callargs))		; Don't warn about arglist mismatch
+      (warnings (+ unused-vars))	; Do warn about unused bindings
+      (file-format emacs19))
+Vpaths-version-control-filename-regexp
+File bases associated with version control.
+Vpaths-lisp-filename-regexp
+File bases that contain Lisp file.
+Vpaths-no-lisp-directory-regexp
+File bases that may not be directories containing Lisp code.
+Fpaths-find-recursive-path
+Return a list of the directory hierarchy underneath DIRECTORIES.
+The returned list is sorted by pre-order and lexicographically.
+MAX-DEPTH limits the depth of the search to MAX-DEPTH level,
+if it is a number.  If MAX-DEPTH is NIL, the search depth is unlimited.
+EXCLUDE-REGEXP is a regexp that matches directory names to exclude
+from the search.
+Fpaths-file-readable-directory-p
+Check if filename is a readable directory.
+Fpaths-find-recursive-load-path
+Construct a recursive load path underneath DIRECTORIES.
+Fpaths-emacs-root-p
+Check if DIRECTORY is a plausible installation root for XEmacs.
+Fpaths-root-in-place-p
+Check if ROOT is an in-place installation root for XEmacs.
+Fpaths-chase-symlink
+Chase a symlink until the bitter end.
+Fpaths-find-emacs-root
+Find the run-time root of XEmacs.
+Fpaths-construct-path
+Convert list of path components COMPONENTS into a path.
+If EXPAND-DIRECTORY is non-NIL, use it as a directory to feed
+to EXPAND-FILE-NAME.
+Fpaths-construct-emacs-directory
+Construct a directory name within the XEmacs hierarchy.
+Fpaths-find-emacs-directory
+Find a directory in the XEmacs hierarchy.
+ROOTS must be a list of installation roots.
+SUFFIX is the subdirectory from there.
+BASE is the base to look for.
+ENVVAR is the name of the environment variable that might also
+specify the directory.
+DEFAULT is the preferred value.
+If KEEP-SUFFIX is non-nil, the suffix must be respected in searching
+the directory.
+If IN-PLACE-EXTERNAL is non-nil, the directory might be found outside
+an in-place root-hierarchy.
+Fpaths-find-site-directory
+Find a site-specific directory in the XEmacs hierarchy.
+If IN-PLACE-EXTERNAL is non-nil, the directory might be found outside
+an in-place root-hierarchy.
+Fpaths-find-version-directory
+Find a version-specific directory in the XEmacs hierarchy.
+If ENFORCE-VERSION is non-nil, the directory must contain the XEmacs version.
+Fpaths-find-architecture-directory
+Find an architecture-specific directory in the XEmacs hierarchy.
+Fconstruct-emacs-version-name
+Construct the raw XEmacs version number.
+Fpaths-directories-which-exist
+Return the directories among DIRECTORIES.
+Fpaths-uniq-append
+Append LIST-1 and LIST-2, omitting duplicates.
+Fpaths-filter
+Delete all matches of PREDICATE from LIST.
+Fpaths-decode-directory-path
+Split STRING at path separators into a directory list.
+Non-"" components are converted into directory form.
+If DROP-EMPTIES is non-NIL, "" components are dropped from the output.
+Otherwise, they are left alone.
+Fpaths-find-emacs-roots
+Find all plausible installation roots for XEmacs.
+Vpackages-package-list
+Database of installed packages and version numbers
+Vpackages-hierarchy-depth
+Depth of package hierarchies.
+Vpackages-load-path-depth
+Depth of load-path search in package hierarchies.
+Vpackages-data-path-depth
+Depth of data-path search in package hierarchies.
+Vearly-packages
+Packages early in the load path.
+Vearly-package-load-path
+Load path for packages early in the load path.
+Vlate-packages
+Packages late in the load path.
+Vlate-package-load-path
+Load path for packages late in the load path.
+Vlast-packages
+Packages last in the load path.
+Vlast-package-load-path
+Load path for packages last in the load path.
+Fpackages-compute-package-locations
+Compute locations of the various package directories.
+This is a list each of whose elements describes one directory.
+A directory description is a three-element list.
+The first element is either an absolute path or a subdirectory
+in the XEmacs hierarchy.
+The second component is one of the symbols EARLY, LATE, LAST,
+depending on the load-path segment the hierarchy is supposed to
+show up in.
+The third component is a thunk which, if it returns NIL, causes
+the directory to be ignored.
+Fpackage-get-key-1
+Locate keyword `key' in list.
+Fpackage-get-key
+Get info `key' from package `name'.
+Vautoload-file-name
+Filename that autoloads are expected to be found in.
+Vpackages-hardcoded-lisp
+Lisp packages that are always dumped with XEmacs.
+This includes every package that is loaded directly by a package listed
+in dumped-lisp.el and is not itself listed.
+Vpackages-useful-lisp
+Lisp packages that need early byte compilation.
+Vpackages-unbytecompiled-lisp
+Lisp packages that should not be byte compiled.
+Flocate-library
+Show the precise file name of Emacs library LIBRARY.
+This command searches the directories in `load-path' like `M-x load-library'
+to find the file that `M-x load-library RET LIBRARY RET' would load.
+Optional second arg NOSUFFIX non-nil means don't add suffixes `.elc' or `.el'
+to the specified name LIBRARY.
+
+If the optional third arg PATH is specified, that list of directories
+is used instead of `load-path'.
+Fpackages-list-autoloads-path
+List autoloads from precomputed load-path.
+Fpackages-list-autoloads
+List autoload files in (what will be) the normal lisp search path.
+This function is used during build to find where the global symbol files so
+they can be perused for their useful information.
+Fpackages-new-autoloads
+Return autoloads files that have been added or modified since XEmacs dump.
+Fpackages-reload-autoloads
+Reload new or updated auto-autoloads files.
+This is an extremely dangerous function to call after the user-init-files
+is run.  Don't call it or you'll be sorry.
+Flocate-data-directory-list
+Locate the matching list of directories in a search path DIR-LIST.
+If no DIR-LIST is supplied, it defaults to `data-directory-list'.
+Flocate-data-directory
+Locate a directory in a search path DIR-LIST (a list of directories).
+If no DIR-LIST is supplied, it defaults to `data-directory-list'.
+Flocate-data-file
+Locate a file in a search path DIR-LIST (a list of directories).
+If no DIR-LIST is supplied, it defaults to `data-directory-list'.
+This function is basically a wrapper over `locate-file'.
+Fpackages-find-package-directories
+Find a set of package directories.
+Vpackages-special-base-regexp
+Special subdirectories of packages.
+Vpackages-no-package-hierarchy-regexp
+Directories which can't be the roots of package hierarchies.
+Fpackages-find-packages-in-directories
+Find all packages underneath directories in DIRECTORIES.
+Fpackages-split-path
+Split PATH at "", return pair with two components.
+The second component is shared with PATH.
+Fpackages-split-package-path
+Split up PACKAGE-PATH into early, late and last components.
+The separation is by "" components.
+This returns (LIST EARLY-PACKAGES LATE-PACKAGES LAST-PACKAGES).
+Fpackages-deconstruct
+Deconstruct LIST and feed it to CONSUMER.
+Fpackages-find-packages-by-name
+Find a package hierarchy by its name.
+Fpackages-find-packages-at-time
+Find packages at given time.
+For the format of PACKAGE-LOCATIONS, see the global variable of the same name.
+TIME is either 'EARLY, 'LATE, or 'LAST.
+DEFAULT is a default list of packages.
+Fpackages-find-packages
+Find the packages.
+Fpackages-find-package-library-path
+Construct a path into a component of the packages hierarchy.
+PACKAGES is a list of package directories.
+SUFFIXES is a list of names of package subdirectories to look for.
+Fpackages-find-package-load-path
+Construct the load-path component for packages.
+PACKAGES is a list of package directories.
+Fpackages-find-package-exec-path
+Construct the exec-path component for packages.
+PACKAGES is a list of package directories.
+Fpackages-find-package-info-path
+Construct the info-path component for packages.
+PACKAGES is a list of package directories.
+Fpackages-find-package-data-path
+Construct the data-path component for packages.
+PACKAGES is a list of package directories.
+Fpackages-load-package-lisps
+Load all Lisp files of a certain name along a load path.
+BASE is the base name of the files.
+Fpackages-load-package-auto-autoloads
+Load auto-autoload files along a load path.
+Fpackages-handle-package-dumped-lisps
+Load dumped-lisp.el files along a load path.
+Call HANDLE on each file off definitions of PACKAGE-LISP there.
+Fpackages-load-package-dumped-lisps
+Load dumped-lisp.el files along a load path.
+Also load files off PACKAGE-LISP definitions there.
+Fpackages-collect-package-dumped-lisps
+Load dumped-lisp.el files along a load path.
+Return list of files off PACKAGE-LISP definitions there.
+Vpaths-core-load-path-depth
+Depth of load-path searches in core Lisp paths.
+Vpaths-site-load-path-depth
+Depth of load-path searches in site Lisp paths.
+Vpaths-mule-load-path-depth
+Depth of load-path searches in Mule Lisp paths.
+Vpaths-default-info-directories
+Directories appended to the end of the info path by default.
+Fpaths-find-site-lisp-directory
+Find the site Lisp directory of the XEmacs hierarchy.
+Fpaths-find-site-module-directory
+Find the site modules directory of the XEmacs hierarchy.
+Fpaths-find-lisp-directory
+Find the main Lisp directory of the XEmacs hierarchy.
+Fpaths-find-mule-lisp-directory
+Find the Mule Lisp directory of the XEmacs hierarchy.
+Fpaths-find-module-directory
+Find the main modules directory of the XEmacs hierarchy.
+Fpaths-construct-load-path
+Construct the load path.
+Fpaths-construct-module-load-path
+Construct the modules load path.
+Fpaths-construct-info-path
+Construct the info path.
+Fpaths-find-doc-directory
+Find the documentation directory.
+Fpaths-find-exec-directory
+Find the binary directory.
+Fpaths-construct-exec-path
+Find the binary path.
+Fpaths-find-data-directory
+Find the data directory.
+Fpaths-construct-data-directory-list
+Find the data path.
+Flambda
+Return a lambda expression.
+A call of the form (lambda ARGS DOCSTRING INTERACTIVE BODY) is
+self-quoting; the result of evaluating the lambda expression is the
+expression itself.  The lambda expression may then be treated as a
+function, i.e., stored as the function value of a symbol, passed to
+funcall or mapcar, etc.
+
+ARGS should take the same form as an argument list for a `defun'.
+DOCSTRING is an optional documentation string.
+ If present, it should describe how to call the function.
+ 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.
+Fdefun-when-void
+Define a function, just like `defun', unless it's already defined.
+Used for compatibility among different emacs variants.
+Fdefine-function-when-void
+Define a function, just like `define-function', unless it's already defined.
+Used for compatibility among different emacs variants.
+Flocal-variable-if-set-p
+Return t if SYM would be local to BUFFER after it is set.
+A nil value for BUFFER is *not* the same as (current-buffer), but
+can be used to determine whether `make-variable-buffer-local' has been
+called on SYM.
+Fmake-local-hook
+Make the hook HOOK local to the current buffer.
+When a hook is local, its local and global values
+work in concert: running the hook actually runs all the hook
+functions listed in *either* the local value *or* the global value
+of the hook variable.
+
+This function works by making `t' a member of the buffer-local value,
+which acts as a flag to run the hook functions in the default value as
+well.  This works for all normal hooks, but does not work for most
+non-normal hooks yet.  We will be changing the callers of non-normal
+hooks so that they can handle localness; this has to be done one by
+one.
+
+This function does nothing if HOOK is already local in the current
+buffer.
+
+Do not use `make-local-variable' to make a hook variable buffer-local.
+
+See also `add-local-hook' and `remove-local-hook'.
+Fadd-hook
+Add to the value of HOOK the function FUNCTION.
+FUNCTION is not added if already present.
+FUNCTION is added (if necessary) at the beginning of the hook list
+unless the optional argument APPEND is non-nil, in which case
+FUNCTION is added at the end.
+
+The optional fourth argument, LOCAL, if non-nil, says to modify
+the hook's buffer-local value rather than its default value.
+This makes no difference if the hook is not buffer-local.
+To make a hook variable buffer-local, always use
+`make-local-hook', not `make-local-variable'.
+
+HOOK should be a symbol, and FUNCTION may be any valid function.  If
+HOOK is void, it is first set to nil.  If HOOK's value is a single
+function, it is changed to a list of functions.
+
+You can remove this hook yourself using `remove-hook'.
+
+See also `add-local-hook' and `add-one-shot-hook'.
+Fremove-hook
+Remove from the value of HOOK the function FUNCTION.
+HOOK should be a symbol, and FUNCTION may be any valid function.  If
+FUNCTION isn't the value of HOOK, or, if FUNCTION doesn't appear in the
+list of hooks to run in HOOK, then nothing is done.  See `add-hook'.
+
+The optional third argument, LOCAL, if non-nil, says to modify
+the hook's buffer-local value rather than its default value.
+This makes no difference if the hook is not buffer-local.
+To make a hook variable buffer-local, always use
+`make-local-hook', not `make-local-variable'.
+Fadd-local-hook
+Add to the local value of HOOK the function FUNCTION.
+This modifies only the buffer-local value for the hook (which is
+automatically make buffer-local, if necessary), not its default value.
+FUNCTION is not added if already present.
+FUNCTION is added (if necessary) at the beginning of the hook list
+unless the optional argument APPEND is non-nil, in which case
+FUNCTION is added at the end.
+
+HOOK should be a symbol, and FUNCTION may be any valid function.  If
+HOOK is void, it is first set to nil.  If HOOK's value is a single
+function, it is changed to a list of functions.
+
+You can remove this hook yourself using `remove-local-hook'.
+
+See also `add-hook' and `make-local-hook'.
+Fremove-local-hook
+Remove from the local value of HOOK the function FUNCTION.
+This modifies only the buffer-local value for the hook, not its default
+value. (Nothing happens if the hook is not buffer-local.)
+HOOK should be a symbol, and FUNCTION may be any valid function.  If
+FUNCTION isn't the value of HOOK, or, if FUNCTION doesn't appear in the
+list of hooks to run in HOOK, then nothing is done.  See `add-hook'.
+
+See also `add-local-hook' and `make-local-hook'.
+Fadd-one-shot-hook
+Add to the value of HOOK the one-shot function FUNCTION.
+FUNCTION will automatically be removed from the hook the first time
+after it runs (whether to completion or to an error).
+FUNCTION is not added if already present.
+FUNCTION is added (if necessary) at the beginning of the hook list
+unless the optional argument APPEND is non-nil, in which case
+FUNCTION is added at the end.
+
+HOOK should be a symbol, and FUNCTION may be any valid function.  If
+HOOK is void, it is first set to nil.  If HOOK's value is a single
+function, it is changed to a list of functions.
+
+You can remove this hook yourself using `remove-hook'.
+
+See also `add-hook', `add-local-hook', and `add-local-one-shot-hook'.
+Fadd-local-one-shot-hook
+Add to the local value of HOOK the one-shot function FUNCTION.
+FUNCTION will automatically be removed from the hook the first time
+after it runs (whether to completion or to an error).
+FUNCTION is not added if already present.
+FUNCTION is added (if necessary) at the beginning of the hook list
+unless the optional argument APPEND is non-nil, in which case
+FUNCTION is added at the end.
+
+The optional fourth argument, LOCAL, if non-nil, says to modify
+the hook's buffer-local value rather than its default value.
+This makes no difference if the hook is not buffer-local.
+To make a hook variable buffer-local, always use
+`make-local-hook', not `make-local-variable'.
+
+HOOK should be a symbol, and FUNCTION may be any valid function.  If
+HOOK is void, it is first set to nil.  If HOOK's value is a single
+function, it is changed to a list of functions.
+
+You can remove this hook yourself using `remove-local-hook'.
+
+See also `add-hook', `add-local-hook', and `add-local-one-shot-hook'.
+Fadd-to-list
+Add to the value of LIST-VAR the element ELEMENT if it isn't there yet.
+The test for presence of ELEMENT is done with `equal'.
+If you want to use `add-to-list' on a variable that is not defined
+until a certain package is loaded, you should put the call to `add-to-list'
+into a hook function that will be run only after loading the package.
+`eval-after-load' provides one way to do this.  In some cases
+other hooks, such as major mode hooks, can do the job.
+Vkill-buffer-hook
+Function or functions to be called when a buffer is killed.
+The value of this variable may be buffer-local.
+The buffer about to be killed is current when this hook is run.
+Vkill-emacs-hook
+Function or functions to be called when `kill-emacs' is called,
+just before emacs is actually killed.
+Fcopy-symbol
+Return a new uninterned symbol with the same name as SYMBOL.
+If COPY-PROPERTIES is non-nil, the new symbol will have a copy of
+SYMBOL's value, function, and property lists.
+Fset-symbol-value-in-buffer
+Set the value of SYM to VAL in BUFFER.  Useful with buffer-local variables.
+If SYM has a buffer-local value in BUFFER, or will have one if set, this
+function allows you to set the local value.
+
+NOTE: At some point, this will be moved into C and will be very fast.
+Freplace-in-string
+Replace all matches in STR for REGEXP with NEWTEXT string,
+ and returns the new string.
+Optional LITERAL non-nil means do a literal replacement.
+Otherwise treat `\' in NEWTEXT as special:
+  `\&' in NEWTEXT means substitute original matched text.
+  `\N' means substitute what matched the Nth `\(...\)'.
+       If Nth parens didn't match, substitute nothing.
+  `\\' means insert one `\'.
+  `\u' means upcase the next character.
+  `\l' means downcase the next character.
+  `\U' means begin upcasing all following characters.
+  `\L' means begin downcasing all following characters.
+  `\E' means terminate the effect of any `\U' or `\L'.
+Fsplit-string
+Return a list of substrings of STRING which are separated by PATTERN.
+If PATTERN is omitted, it defaults to "[ \f\t\n\r\v]+".
+Fwith-output-to-string
+Collect output to `standard-output' while evaluating FORMS and return
+it as a string.
+Fwith-current-buffer
+Temporarily make BUFFER the current buffer and execute the forms in BODY.
+The value returned is the value of the last form in BODY.
+See also `with-temp-buffer'.
+Fwith-temp-file
+Create a new buffer, evaluate FORMS there, and write the buffer to FILENAME.
+The value of the last form in FORMS is returned, like `progn'.
+See also `with-temp-buffer'.
+Fwith-temp-buffer
+Create a temporary buffer, and evaluate FORMS there like `progn'.
+See also `with-temp-file' and `with-output-to-string'.
+Fwith-string-as-buffer-contents
+With the contents of the current buffer being STR, run BODY.
+Returns the new contents of the buffer, as modified by BODY.
+The original current buffer is restored afterwards.
+Finsert-face
+Insert STRING and highlight with FACE.  Return the extent created.
+Fplist-to-alist
+Convert property list PLIST into the equivalent association-list form.
+The alist is returned.  This converts from
+
+(a 1 b 2 c 3)
+
+into
+
+((a . 1) (b . 2) (c . 3))
+
+The original plist is not modified.  See also `destructive-plist-to-alist'.
+Fdestructive-plist-to-alist
+Convert property list PLIST into the equivalent association-list form.
+The alist is returned.  This converts from
+
+(a 1 b 2 c 3)
+
+into
+
+((a . 1) (b . 2) (c . 3))
+
+The original plist is destroyed in the process of constructing the alist.
+See also `plist-to-alist'.
+Falist-to-plist
+Convert association list ALIST into the equivalent property-list form.
+The plist is returned.  This converts from
+
+((a . 1) (b . 2) (c . 3))
+
+into
+
+(a 1 b 2 c 3)
+
+The original alist is not modified.  See also `destructive-alist-to-plist'.
+Fputf
+Add property PROPERTY to plist PLIST with value VALUE.
+Analogous to (setq PLIST (plist-put PLIST PROPERTY VALUE)).
+Flaxputf
+Add property PROPERTY to lax plist LAX-PLIST with value VALUE.
+Analogous to (setq LAX-PLIST (lax-plist-put LAX-PLIST PROPERTY VALUE)).
+Flaxremf
+Remove property PROPERTY from lax plist LAX-PLIST.
+Analogous to (setq LAX-PLIST (lax-plist-remprop LAX-PLIST PROPERTY)).
+Ferror
+Signal a non-continuable error.
+DATUM should normally be an error symbol, i.e. a symbol defined using
+`define-error'.  ARGS will be made into a list, and DATUM and ARGS passed
+as the two arguments to `signal', the most basic error handling function.
+
+This error is not continuable: you cannot continue execution after the
+error using the debugger `r' command.  See also `cerror'.
+
+The correct semantics of ARGS varies from error to error, but for most
+errors that need to be generated in Lisp code, the first argument
+should be a string describing the *context* of the error (i.e. the
+exact operation being performed and what went wrong), and the remaining
+arguments or "frobs" (most often, there is one) specify the
+offending object(s) and/or provide additional details such as the exact
+error when a file error occurred, e.g.:
+
+-- the buffer in which an editing error occurred.
+-- an invalid value that was encountered. (In such cases, the string
+   should describe the purpose or "semantics" of the value [e.g. if the
+   value is an argument to a function, the name of the argument; if the value
+   is the value corresponding to a keyword, the name of the keyword; if the
+   value is supposed to be a list length, say this and say what the purpose
+   of the list is; etc.] as well as specifying why the value is invalid, if
+   that's not self-evident.)
+-- the file in which an error occurred. (In such cases, there should be a
+   second frob, probably a string, specifying the exact error that occurred.
+   This does not occur in the string that precedes the first frob, because
+   that frob describes the exact operation that was happening.
+
+For historical compatibility, DATUM can also be a string.  In this case,
+DATUM and ARGS are passed together as the arguments to `format', and then
+an error is signalled using the error symbol `error' and formatted string.
+Although this usage of `error' is very common, it is deprecated because it
+totally defeats the purpose of having structured errors.  There is now
+a rich set of defined errors you can use:
+
+quit
+
+error
+  invalid-argument
+    syntax-error
+      invalid-read-syntax
+      invalid-regexp
+      structure-formation-error
+        list-formation-error
+          malformed-list
+            malformed-property-list
+          circular-list
+            circular-property-list
+    invalid-function
+    no-catch
+    undefined-keystroke-sequence
+    invalid-constant
+    wrong-type-argument
+    args-out-of-range
+    wrong-number-of-arguments
+
+  invalid-state
+    void-function
+    cyclic-function-indirection
+    void-variable
+    cyclic-variable-indirection
+    invalid-byte-code
+    stack-overflow
+    out-of-memory
+    invalid-key-binding
+    internal-error
+
+  invalid-operation
+    invalid-change
+      setting-constant
+      protected-field
+    editing-error
+      beginning-of-buffer
+      end-of-buffer
+      buffer-read-only
+    io-error
+      file-error
+        file-already-exists
+        file-locked
+        file-supersession
+        end-of-file
+      process-error
+      network-error
+      tooltalk-error
+      gui-error
+        dialog-box-error
+      sound-error
+      conversion-error
+        text-conversion-error
+        image-conversion-error
+        base64-conversion-error
+        selection-conversion-error
+    arith-error
+      range-error
+      domain-error
+      singularity-error
+      overflow-error
+      underflow-error
+    search-failed
+    printing-unreadable-object
+    unimplemented
+
+Note the semantic differences between some of the more common errors:
+
+-- `invalid-argument' is for all cases where a bad value is encountered.
+-- `invalid-constant' is for arguments where only a specific set of values
+   is allowed.
+-- `syntax-error' is when complex structures (parsed strings, lists,
+   and the like) are badly formed.  If the problem is just a single bad
+   value inside the structure, you should probably be using something else,
+   e.g. `invalid-constant', `wrong-type-argument', or `invalid-argument'.
+-- `invalid-state' means that some settings have been changed in such a way
+   that their current state is unallowable.  More and more, code is being
+   written more carefully, and catches the error when the settings are being
+   changed, rather than afterwards.  This leads us to the next error:
+-- `invalid-change' means that an attempt is being made to change some settings
+   into an invalid state.  `invalid-change' is a type of `invalid-operation'.
+-- `invalid-operation' refers to all cases where code is trying to do something
+   that's disallowed, or when an error occurred during an operation. (These
+   two concepts are merged because there's no clear distinction between them.)
+-- `io-error' refers to errors involving interaction with any external
+   components (files, other programs, the operating system, etc).
+
+See also `cerror', `signal', and `signal-error'.
+Fcerror
+Like `error' but signals a continuable error.
+Fcheck-argument-type
+Check that ARGUMENT satisfies PREDICATE.
+This is a macro, and ARGUMENT is not evaluated.  If ARGUMENT is an lvalue,
+this function signals a continuable `wrong-type-argument' error until the
+returned value satisfies PREDICATE, and assigns the returned value
+to ARGUMENT.  Otherwise, this function signals a non-continuable
+`wrong-type-argument' error if the returned value does not satisfy PREDICATE.
+Fsignal-error
+Signal a non-continuable error.  Args are ERROR-SYMBOL, and associated DATA.
+An error symbol is a symbol defined using `define-error'.
+DATA should be a list.  Its elements are printed as part of the error message.
+If the signal is handled, DATA is made available to the handler.
+See also `signal', and the functions to handle errors: `condition-case'
+and `call-with-condition-handler'.
+Fdefine-error
+Define a new error, denoted by ERROR-SYM.
+DOC-STRING is an informative message explaining the error, and will be
+printed out when an unhandled error occurs.
+ERROR-SYM is a sub-error of INHERITS-FROM (which defaults to `error').
+
+[`define-error' internally works by putting on ERROR-SYM an `error-message'
+property whose value is DOC-STRING, and an `error-conditions' property
+that is a list of ERROR-SYM followed by each of its super-errors, up
+to and including `error'.  You will sometimes see code that sets this up
+directly rather than calling `define-error', but you should *not* do this
+yourself.]
+Fdefined-error-p
+Returns non-nil if SYM names a currently-defined error.
+Fget-buffer-window-list
+Return windows currently displaying BUFFER, or nil if none.
+BUFFER defaults to the current buffer.
+See `walk-windows' for the meaning of MINIBUF and FRAME.
+Fignore
+Do nothing and return nil.
+This function accepts any number of arguments, but ignores them.
+Ffunction-interactive
+Return the interactive specification of FUNCTION.
+FUNCTION can be any funcallable object.
+The specification will be returned as the list of the symbol `interactive'
+ and the specs.
+If FUNCTION is not interactive, nil will be returned.
+Ffunction-allows-args
+Return whether FUNCTION can be called with N arguments.
+Fbuffer-string
+Return the contents of the current buffer as a string.
+If narrowing is in effect, this function returns only the visible part
+of the buffer.
+
+If BUFFER is specified, the contents of that buffer are returned.
+
+The arguments OLD-END and OLD-BUFFER are supported for backward
+compatibility with pre-21.2 XEmacsen times when arguments to this
+function were (buffer-string &optional START END BUFFER).
+Feval-after-load
+Arrange that, if FILE is ever loaded, FORM will be run at that time.
+This makes or adds to an entry on `after-load-alist'.
+If FILE is already loaded, evaluate FORM right now.
+It does nothing if FORM is already on the list for FILE.
+FILE should be the name of a library, with no directory name.
+Feval-next-after-load
+Read the following input sexp, and run it whenever FILE is loaded.
+This makes or adds to an entry on `after-load-alist'.
+FILE should be the name of a library, with no directory name.
+Vcase-replace
+*Non-nil means `query-replace' should preserve case in replacements.
+What this means is that `query-replace' will change the case of the
+replacement text so that it matches the text that was replaced.
+If this variable is nil, the replacement text will be inserted
+exactly as it was specified by the user, irrespective of the case
+of the text that was replaced.
+
+Note that this flag has no effect if `case-fold-search' is nil,
+or if the replacement text has any uppercase letters in it.
+Vquery-replace-interactive
+Non-nil means `query-replace' uses the last search string.
+That becomes the "string to replace".
+Vreplace-search-function
+Function used by perform-replace to search forward for a string. It will be
+called with two arguments: the string to search for and a limit bounding the
+search.
+Vreplace-re-search-function
+Function used by perform-replace to search forward for a regular
+expression. It will be called with two arguments: the regexp to search for and
+a limit bounding the search.
+Fquery-replace
+Replace some occurrences of FROM-STRING with TO-STRING.
+As each match is found, the user must type a character saying
+what to do with it.  For directions, type \[help-command] at that time.
+
+If `query-replace-interactive' is non-nil, the last incremental search
+string is used as FROM-STRING--you don't have to specify it with the
+minibuffer.
+
+Preserves case in each replacement if `case-replace' and `case-fold-search'
+are non-nil and FROM-STRING has no uppercase letters.
+(Preserving case means that if the string matched is all caps, or capitalized,
+then its replacement is upcased or capitalized.)
+
+Third arg DELIMITED (prefix arg if interactive), if non-nil, means replace
+only matches surrounded by word boundaries.
+
+To customize possible responses, change the "bindings" in `query-replace-map'.
+Fquery-replace-regexp
+Replace some things after point matching REGEXP with TO-STRING.
+As each match is found, the user must type a character saying
+what to do with it.  For directions, type \[help-command] at that time.
+
+If `query-replace-interactive' is non-nil, the last incremental search
+regexp is used as REGEXP--you don't have to specify it with the
+minibuffer.
+
+Preserves case in each replacement if `case-replace' and `case-fold-search'
+are non-nil and REGEXP has no uppercase letters.
+Third arg DELIMITED (prefix arg if interactive), if non-nil, means replace
+only matches surrounded by word boundaries.
+In TO-STRING, `\&' stands for whatever matched the whole of REGEXP,
+and `\=\N' (where N is a digit) stands for
+ whatever what matched the Nth `\(...\)' in REGEXP.
+Fmap-query-replace-regexp
+Replace some matches for REGEXP with various strings, in rotation.
+The second argument TO-STRINGS contains the replacement strings, separated
+by spaces.  This command works like `query-replace-regexp' except
+that each successive replacement uses the next successive replacement string,
+wrapping around from the last such string to the first.
+
+Non-interactively, TO-STRINGS may be a list of replacement strings.
+
+If `query-replace-interactive' is non-nil, the last incremental search
+regexp is used as REGEXP--you don't have to specify it with the minibuffer.
+
+A prefix argument N says to use each replacement string N times
+before rotating to the next.
+Freplace-string
+Replace occurrences of FROM-STRING with TO-STRING.
+Preserve case in each match if `case-replace' and `case-fold-search'
+are non-nil and FROM-STRING has no uppercase letters.
+(Preserving case means that if the string matched is all caps, or capitalized,
+then its replacement is upcased or capitalized.)
+
+Third arg DELIMITED (prefix arg if interactive), if non-nil, means replace
+only matches surrounded by word boundaries.
+
+If `query-replace-interactive' is non-nil, the last incremental search
+string is used as FROM-STRING--you don't have to specify it with the
+minibuffer.
+
+This function is usually the wrong thing to use in a Lisp program.
+What you probably want is a loop like this:
+  (while (search-forward FROM-STRING nil t)
+    (replace-match TO-STRING nil t))
+which will run faster and will not set the mark or print anything.
+Freplace-regexp
+Replace things after point matching REGEXP with TO-STRING.
+Preserve case in each match if `case-replace' and `case-fold-search'
+are non-nil and REGEXP has no uppercase letters.
+(Preserving case means that if the string matched is all caps, or capitalized,
+then its replacement is upcased or capitalized.)
+
+Third arg DELIMITED (prefix arg if interactive), if non-nil, means replace
+only matches surrounded by word boundaries.
+In TO-STRING, `\&' stands for whatever matched the whole of REGEXP,
+and `\=\N' (where N is a digit) stands for
+ whatever what matched the Nth `\(...\)' in REGEXP.
+
+If `query-replace-interactive' is non-nil, the last incremental search
+regexp is used as REGEXP--you don't have to specify it with the minibuffer.
+
+This function is usually the wrong thing to use in a Lisp program.
+What you probably want is a loop like this:
+  (while (re-search-forward REGEXP nil t)
+    (replace-match TO-STRING nil nil))
+which will run faster and will not set the mark or print anything.
+Vregexp-history
+History list for some commands that read regular expressions.
+Fdelete-non-matching-lines
+Delete all lines except those containing matches for REGEXP.
+A match split across lines preserves all the lines it lies in.
+Applies to all lines after point.
+Fdelete-matching-lines
+Delete lines containing matches for REGEXP.
+If a match is split across lines, all the lines it lies in are deleted.
+Applies to lines after point.
+Fcount-matches
+Print number of matches for REGEXP following point.
+Foccur-mode
+Major mode for output from \[occur].
+\<occur-mode-map>Move point to one of the items in this buffer, then use
+\[occur-mode-goto-occurrence] to go to the occurrence that the item refers to.
+Alternatively, click \[occur-mode-mouse-goto] on an item to go to it.
+
+\{occur-mode-map}
+Foccur-mode-mouse-goto
+Go to the occurrence highlighted by mouse.
+This function should be bound to a mouse key in the `*Occur*' buffer.
+Foccur-mode-goto-occurrence
+Go to the occurrence the current line describes.
+Vlist-matching-lines-default-context-lines
+*Default number of context lines to include around a `list-matching-lines'
+match.  A negative number means to include that many lines before the match.
+A positive number means to include that many lines both before and after.
+Vlist-matching-lines-whole-buffer
+If t, occur operates on whole buffer, otherwise occur starts from point.
+default is t.
+Flist-matching-lines
+Show all lines in the current buffer containing a match for REGEXP.
+
+If a match spreads across multiple lines, all those lines are shown.
+
+If variable `list-matching-lines-whole-buffer' is non-nil, the entire
+buffer is searched, otherwise search begins at point.
+
+Each line is displayed with NLINES lines before and after, or -NLINES
+before if NLINES is negative.
+NLINES defaults to `list-matching-lines-default-context-lines'.
+Interactively it is the prefix arg.
+
+The lines are shown in a buffer named `*Occur*'.
+It serves as a menu to find any of the occurrences in this buffer.
+\[describe-mode] in that buffer will explain how.
+Vquery-replace-help
+Help message while in query-replace
+Vquery-replace-map
+Keymap that defines the responses to questions in `query-replace'.
+The "bindings" in this map are not commands; they are answers.
+The valid answers include `act', `skip', `act-and-show',
+`exit', `act-and-exit', `edit', `delete-and-edit', `recenter',
+`automatic', `backup', `exit-prefix', and `help'.
+Fperform-replace
+Subroutine of `query-replace'.  Its complexity handles interactive queries.
+Don't use this in your own program unless you want to query and set the mark
+just as `query-replace' does.  Instead, write a simple loop like this:
+  (while (re-search-forward "foo[ 	]+bar" nil t)
+    (replace-match "foobar" nil nil))
+which will run faster and probably do exactly what you want.
+When searching for a match, this function uses
+`replace-search-function' and `replace-re-search-function'.
+Fmatch-string
+Return string of text matched by last search.
+NUM specifies which parenthesized expression in the last regexp.
+ Value is nil if NUMth pair didn't match, or there were less than NUM pairs.
+Zero means the entire text matched by the whole regexp or whole string.
+STRING should be given if the last search was by `string-match' on STRING.
+Fsave-match-data
+Execute BODY forms, restoring the global value of the match data.
+Vcustom-print-functions
+This is a list of functions that format user objects for printing.
+Each function is called in turn with three arguments: the object, the
+stream, and the print level (currently ignored).  If it is able to
+print the object it returns true; otherwise it returns nil and the
+printer proceeds to the next function on the list.
+
+This variable is not used at present, but it is defined in hopes that
+a future Emacs interpreter will be able to use it.
+Feql
+Return t if the two args are the same Lisp object.
+Floating-point numbers of equal value are `eql', but they may not be `eq'.
+Fincf
+(incf PLACE [X]): increment PLACE by X (1 by default).
+PLACE may be a symbol, or any generalized variable allowed by `setf'.
+The return value is the incremented value of PLACE.
+Fdecf
+(decf PLACE [X]): decrement PLACE by X (1 by default).
+PLACE may be a symbol, or any generalized variable allowed by `setf'.
+The return value is the decremented value of PLACE.
+Fpop
+(pop PLACE): remove and return the head of the list stored in PLACE.
+Analogous to (prog1 (car PLACE) (setf PLACE (cdr PLACE))), though more
+careful about evaluating each argument only once and in the right order.
+PLACE may be a symbol, or any generalized variable allowed by `setf'.
+Fpush
+(push X PLACE): insert X at the head of the list stored in PLACE.
+Analogous to (setf PLACE (cons X PLACE)), though more careful about
+evaluating each argument only once and in the right order.  PLACE may
+be a symbol, or any generalized variable allowed by `setf'.
+Fpushnew
+(pushnew X PLACE): insert X at the head of the list if not already there.
+Like (push X PLACE), except that the list is unmodified if X is `eql' to
+an element already on the list.
+Keywords supported:  :test :test-not :key
+Fcl-macroexpand
+Return result of expanding macros at top level of FORM.
+If FORM is not a macro call, it is returned unchanged.
+Otherwise, the macro is expanded and the expansion is considered
+in place of FORM.  When a non-macro-call results, it is returned.
+
+The second optional arg ENVIRONMENT specifies an environment of macro
+definitions to shadow the loaded ones for use in file byte-compilation.
+Fgensym
+Generate a new uninterned symbol.
+The name is made by appending a number to PREFIX, default "G".
+Fgentemp
+Generate a new interned symbol with a unique name.
+The name is made by appending a number to PREFIX, default "G".
+Ffloatp-safe
+Return t if OBJECT is a floating point number.
+Fplusp
+Return t if NUMBER is positive.
+Fminusp
+Return t if NUMBER is negative.
+Foddp
+Return t if INTEGER is odd.
+Fevenp
+Return t if INTEGER is even.
+Fcl-abs
+Return the absolute value of NUMBER.
+Vmost-positive-fixnum
+The integer closest in value to positive infinity.
+Vmost-negative-fixnum
+The integer closest in value to negative infinity.
+Vmost-positive-float
+The float closest in value to positive infinity.
+Vmost-negative-float
+The float closest in value to negative infinity.
+Vleast-positive-float
+The positive float closest in value to 0.
+Vleast-negative-float
+The negative float closest in value to 0.
+Fmapcar*
+Apply FUNCTION to each element of SEQ, and make a list of the results.
+If there are several SEQs, FUNCTION is called with that many arguments,
+and mapping stops as soon as the shortest list runs out.  With just one
+SEQ, this is like `mapcar'.  With several, it is like the Common Lisp
+`mapcar' function extended to arbitrary sequence types.
+Fsecond
+Return the second element of the list LIST.
+Fthird
+Return the third element of the list LIST.
+Ffourth
+Return the fourth element of the list LIST.
+Ffifth
+Return the fifth element of the list LIST.
+Fsixth
+Return the sixth element of the list LIST.
+Fseventh
+Return the seventh element of the list LIST.
+Feighth
+Return the eighth element of the list LIST.
+Fninth
+Return the ninth element of the list LIST.
+Ftenth
+Return the tenth element of the list LIST.
+Fcaar
+Return the `car' of the `car' of X.
+Fcadr
+Return the `car' of the `cdr' of X.
+Fcdar
+Return the `cdr' of the `car' of X.
+Fcddr
+Return the `cdr' of the `cdr' of X.
+Fcaaar
+Return the `car' of the `car' of the `car' of X.
+Fcaadr
+Return the `car' of the `car' of the `cdr' of X.
+Fcadar
+Return the `car' of the `cdr' of the `car' of X.
+Fcaddr
+Return the `car' of the `cdr' of the `cdr' of X.
+Fcdaar
+Return the `cdr' of the `car' of the `car' of X.
+Fcdadr
+Return the `cdr' of the `car' of the `cdr' of X.
+Fcddar
+Return the `cdr' of the `cdr' of the `car' of X.
+Fcdddr
+Return the `cdr' of the `cdr' of the `cdr' of X.
+Fcaaaar
+Return the `car' of the `car' of the `car' of the `car' of X.
+Fcaaadr
+Return the `car' of the `car' of the `car' of the `cdr' of X.
+Fcaadar
+Return the `car' of the `car' of the `cdr' of the `car' of X.
+Fcaaddr
+Return the `car' of the `car' of the `cdr' of the `cdr' of X.
+Fcadaar
+Return the `car' of the `cdr' of the `car' of the `car' of X.
+Fcadadr
+Return the `car' of the `cdr' of the `car' of the `cdr' of X.
+Fcaddar
+Return the `car' of the `cdr' of the `cdr' of the `car' of X.
+Fcadddr
+Return the `car' of the `cdr' of the `cdr' of the `cdr' of X.
+Fcdaaar
+Return the `cdr' of the `car' of the `car' of the `car' of X.
+Fcdaadr
+Return the `cdr' of the `car' of the `car' of the `cdr' of X.
+Fcdadar
+Return the `cdr' of the `car' of the `cdr' of the `car' of X.
+Fcdaddr
+Return the `cdr' of the `car' of the `cdr' of the `cdr' of X.
+Fcddaar
+Return the `cdr' of the `cdr' of the `car' of the `car' of X.
+Fcddadr
+Return the `cdr' of the `cdr' of the `car' of the `cdr' of X.
+Fcdddar
+Return the `cdr' of the `cdr' of the `cdr' of the `car' of X.
+Fcddddr
+Return the `cdr' of the `cdr' of the `cdr' of the `cdr' of X.
+Flist*
+Return a new list with specified args as elements, cons'd to last arg.
+Thus, `(list* A B C D)' is equivalent to `(nconc (list A B C) D)', or to
+`(cons A (cons B (cons C D)))'.
+Fldiff
+Return a copy of LIST with the tail SUBLIST removed.
+Fadjoin
+Return ITEM consed onto the front of LIST only if it's not already there.
+Otherwise, return LIST unmodified.
+Keywords supported:  :test :test-not :key
+Fsubst
+Substitute NEW for OLD everywhere in TREE (non-destructively).
+Return a copy of TREE with all elements `eql' to OLD replaced by NEW.
+Keywords supported:  :test :test-not :key
+Facons
+Return a new alist created by adding (KEY . VALUE) to ALIST.
+Fcl-add-hook
+Add to hook variable HOOK the function FUNC.
+FUNC is not added if it already appears on the list stored in HOOK.
+Fcoerce
+Coerce OBJECT to type TYPE.
+TYPE is a Common Lisp type specifier.
+Fequalp
+Return t if two Lisp objects have similar structures and contents.
+This is like `equal', except that it accepts numerically equal
+numbers of different types (float vs. integer), and also compares
+strings case-insensitively.
+Fmap
+Map a function across one or more sequences, returning a sequence.
+TYPE is the sequence type to return, FUNC is the function, and SEQS
+are the argument sequences.
+Fmaplist
+Map FUNC to each sublist of LIST or LISTS.
+Like `mapcar', except applies to lists and their cdr's rather than to
+the elements themselves.
+Fmapc
+Like `mapcar', but does not accumulate values returned by the function.
+Fmapl
+Like `maplist', but does not accumulate values returned by the function.
+Fmapcan
+Like `mapcar', but nconc's together the values returned by the function.
+Fmapcon
+Like `maplist', but nconc's together the values returned by the function.
+Fsome
+Return true if PREDICATE is true of any element of SEQ or SEQs.
+If so, return the true (non-nil) value returned by PREDICATE.
+Fevery
+Return true if PREDICATE is true of every element of SEQ or SEQs.
+Fnotany
+Return true if PREDICATE is false of every element of SEQ or SEQs.
+Fnotevery
+Return true if PREDICATE is false of some element of SEQ or SEQs.
+Fgcd
+Return the greatest common divisor of the arguments.
+Flcm
+Return the least common multiple of the arguments.
+Fisqrt
+Return the integer square root of the argument.
+Fcl-expt
+Return X raised to the power of Y.  Works only for integer arguments.
+Ffloor*
+Return a list of the floor of X and the fractional part of X.
+With two arguments, return floor and remainder of their quotient.
+Fceiling*
+Return a list of the ceiling of X and the fractional part of X.
+With two arguments, return ceiling and remainder of their quotient.
+Ftruncate*
+Return a list of the integer part of X and the fractional part of X.
+With two arguments, return truncation and remainder of their quotient.
+Fround*
+Return a list of X rounded to the nearest integer and the remainder.
+With two arguments, return rounding and remainder of their quotient.
+Fmod*
+The remainder of X divided by Y, with the same sign as Y.
+Frem*
+The remainder of X divided by Y, with the same sign as X.
+Fsignum
+Return 1 if A is positive, -1 if negative, 0 if zero.
+Frandom*
+Return a random nonnegative number less than LIM, an integer or float.
+Optional second arg STATE is a random-state object.
+Fmake-random-state
+Return a copy of random-state STATE, or of `*random-state*' if omitted.
+If STATE is t, return a new state object seeded from the time of day.
+Frandom-state-p
+Return t if OBJECT is a random-state object.
+Fconcatenate
+Concatenate, into a sequence of type TYPE, the argument SEQUENCES.
+Frevappend
+Equivalent to (append (reverse X) Y).
+Fnreconc
+Equivalent to (nconc (nreverse X) Y).
+Flist-length
+Return the length of a list.  Return nil if list is circular.
+Ftailp
+Return true if SUBLIST is a tail of LIST.
+Fcl-copy-tree
+Make a copy of TREE.
+If TREE is a cons cell, this recursively copies both its car and its cdr.
+Contrast to copy-sequence, which copies only along the cdrs.  With second
+argument VECP, this copies vectors as well as conses.
+Fcl-prettyprint
+Insert a pretty-printed rendition of a Lisp FORM in current buffer.
+Fcl-macroexpand-all
+Expand all macro calls through a Lisp FORM.
+This also does some trivial optimizations to make the form prettier.
+Fcl-parsing-keywords
+Helper macro for functions with keyword arguments.
+This is a temporary solution, until keyword arguments are natively supported.
+Declare your function ending with (... &rest cl-keys), then wrap the
+function body in a call to `cl-parsing-keywords'.
+
+KWORDS is a list of keyword definitions.  Each definition should be
+either a keyword or a list (KEYWORD DEFAULT-VALUE).  In the former case,
+the default value is nil.  The keywords are available in BODY as the name
+of the keyword, minus its initial colon and prepended with `cl-'.
+
+OTHER-KEYS specifies other keywords that are accepted but ignored.  It
+is either the value 't' (ignore all other keys, equivalent to the
+&allow-other-keys argument declaration in Common Lisp) or a list in the
+same format as KWORDS.  If keywords are given that are not in KWORDS
+and not allowed by OTHER-KEYS, an error will normally be signalled; but
+the caller can override this by specifying a non-nil value for the
+keyword :allow-other-keys (which defaults to t).
+Freduce
+Reduce two-argument FUNCTION across SEQUENCE.
+Keywords supported:  :start :end :from-end :initial-value :key
+Ffill
+Fill the elements of SEQ with ITEM.
+Keywords supported:  :start :end
+Freplace
+Replace the elements of SEQ1 with the elements of SEQ2.
+SEQ1 is destructively modified, then returned.
+Keywords supported:  :start1 :end1 :start2 :end2
+Fremove*
+Remove all occurrences of ITEM in SEQ.
+This is a non-destructive function; it makes a copy of SEQ if necessary
+to avoid corrupting the original SEQ.
+Keywords supported:  :test :test-not :key :count :start :end :from-end
+Fremove-if
+Remove all items satisfying PREDICATE in SEQ.
+This is a non-destructive function; it makes a copy of SEQ if necessary
+to avoid corrupting the original SEQ.
+Keywords supported:  :key :count :start :end :from-end
+Fremove-if-not
+Remove all items not satisfying PREDICATE in SEQ.
+This is a non-destructive function; it makes a copy of SEQ if necessary
+to avoid corrupting the original SEQ.
+Keywords supported:  :key :count :start :end :from-end
+Fdelete*
+Remove all occurrences of ITEM in SEQ.
+This is a destructive function; it reuses the storage of SEQ whenever possible.
+Keywords supported:  :test :test-not :key :count :start :end :from-end
+Fdelete-if
+Remove all items satisfying PREDICATE in SEQ.
+This is a destructive function; it reuses the storage of SEQ whenever possible.
+Keywords supported:  :key :count :start :end :from-end
+Fdelete-if-not
+Remove all items not satisfying PREDICATE in SEQ.
+This is a destructive function; it reuses the storage of SEQ whenever possible.
+Keywords supported:  :key :count :start :end :from-end
+Fremove
+Remove all occurrences of ITEM in SEQ, testing with `equal'
+This is a non-destructive function; it makes a copy of SEQ if necessary
+to avoid corrupting the original SEQ.
+Also see: `remove*', `delete', `delete*'
+Fremq
+Remove all occurrences of ELT in LIST, comparing with `eq'.
+This is a non-destructive function; it makes a copy of LIST to avoid
+corrupting the original LIST.
+Also see: `delq', `delete', `delete*', `remove', `remove*'.
+Fremove-duplicates
+Return a copy of SEQ with all duplicate elements removed.
+Keywords supported:  :test :test-not :key :start :end :from-end
+Fdelete-duplicates
+Remove all duplicate elements from SEQ (destructively).
+Keywords supported:  :test :test-not :key :start :end :from-end
+Fsubstitute
+Substitute NEW for OLD in SEQ.
+This is a non-destructive function; it makes a copy of SEQ if necessary
+to avoid corrupting the original SEQ.
+Keywords supported:  :test :test-not :key :count :start :end :from-end
+Fsubstitute-if
+Substitute NEW for all items satisfying PREDICATE in SEQ.
+This is a non-destructive function; it makes a copy of SEQ if necessary
+to avoid corrupting the original SEQ.
+Keywords supported:  :key :count :start :end :from-end
+Fsubstitute-if-not
+Substitute NEW for all items not satisfying PREDICATE in SEQ.
+This is a non-destructive function; it makes a copy of SEQ if necessary
+to avoid corrupting the original SEQ.
+Keywords supported:  :key :count :start :end :from-end
+Fnsubstitute
+Substitute NEW for OLD in SEQ.
+This is a destructive function; it reuses the storage of SEQ whenever possible.
+Keywords supported:  :test :test-not :key :count :start :end :from-end
+Fnsubstitute-if
+Substitute NEW for all items satisfying PREDICATE in SEQ.
+This is a destructive function; it reuses the storage of SEQ whenever possible.
+Keywords supported:  :key :count :start :end :from-end
+Fnsubstitute-if-not
+Substitute NEW for all items not satisfying PREDICATE in SEQ.
+This is a destructive function; it reuses the storage of SEQ whenever possible.
+Keywords supported:  :key :count :start :end :from-end
+Ffind
+Find the first occurrence of ITEM in LIST.
+Return the matching ITEM, or nil if not found.
+Keywords supported:  :test :test-not :key :start :end :from-end
+Ffind-if
+Find the first item satisfying PREDICATE in LIST.
+Return the matching ITEM, or nil if not found.
+Keywords supported:  :key :start :end :from-end
+Ffind-if-not
+Find the first item not satisfying PREDICATE in LIST.
+Return the matching ITEM, or nil if not found.
+Keywords supported:  :key :start :end :from-end
+Fposition
+Find the first occurrence of ITEM in LIST.
+Return the index of the matching item, or nil if not found.
+Keywords supported:  :test :test-not :key :start :end :from-end
+Fposition-if
+Find the first item satisfying PREDICATE in LIST.
+Return the index of the matching item, or nil if not found.
+Keywords supported:  :key :start :end :from-end
+Fposition-if-not
+Find the first item not satisfying PREDICATE in LIST.
+Return the index of the matching item, or nil if not found.
+Keywords supported:  :key :start :end :from-end
+Fcount
+Count the number of occurrences of ITEM in LIST.
+Keywords supported:  :test :test-not :key :start :end
+Fcount-if
+Count the number of items satisfying PREDICATE in LIST.
+Keywords supported:  :key :start :end
+Fcount-if-not
+Count the number of items not satisfying PREDICATE in LIST.
+Keywords supported:  :key :start :end
+Fmismatch
+Compare SEQ1 with SEQ2, return index of first mismatching element.
+Return nil if the sequences match.  If one sequence is a prefix of the
+other, the return value indicates the end of the shorted sequence.
+Keywords supported:  :test :test-not :key :start1 :end1 :start2 :end2 :from-end
+Fsearch
+Search for SEQ1 as a subsequence of SEQ2.
+Return the index of the leftmost element of the first match found;
+return nil if there are no matches.
+Keywords supported:  :test :test-not :key :start1 :end1 :start2 :end2 :from-end
+Fsort*
+Sort the argument SEQUENCE according to PREDICATE.
+This is a destructive function; it reuses the storage of SEQUENCE if possible.
+Keywords supported:  :key
+Fstable-sort
+Sort the argument SEQUENCE stably according to PREDICATE.
+This is a destructive function; it reuses the storage of SEQUENCE if possible.
+Keywords supported:  :key
+Fmerge
+Destructively merge the two sequences to produce a new sequence.
+TYPE is the sequence type to return, SEQ1 and SEQ2 are the two
+argument sequences, and PRED is a `less-than' predicate on the elements.
+Keywords supported:  :key
+Fmember*
+Find the first occurrence of ITEM in LIST.
+Return the sublist of LIST whose car is ITEM.
+Keywords supported:  :test :test-not :key
+Fmember-if
+Find the first item satisfying PREDICATE in LIST.
+Return the sublist of LIST whose car matches.
+Keywords supported:  :key
+Fmember-if-not
+Find the first item not satisfying PREDICATE in LIST.
+Return the sublist of LIST whose car matches.
+Keywords supported:  :key
+Fassoc*
+Find the first item whose car matches ITEM in LIST.
+Keywords supported:  :test :test-not :key
+Fassoc-if
+Find the first item whose car satisfies PREDICATE in LIST.
+Keywords supported:  :key
+Fassoc-if-not
+Find the first item whose car does not satisfy PREDICATE in LIST.
+Keywords supported:  :key
+Frassoc*
+Find the first item whose cdr matches ITEM in LIST.
+Keywords supported:  :test :test-not :key
+Frassoc-if
+Find the first item whose cdr satisfies PREDICATE in LIST.
+Keywords supported:  :key
+Frassoc-if-not
+Find the first item whose cdr does not satisfy PREDICATE in LIST.
+Keywords supported:  :key
+Funion
+Combine LIST1 and LIST2 using a set-union operation.
+The result list contains all items that appear in either LIST1 or LIST2.
+This is a non-destructive function; it makes a copy of the data if necessary
+to avoid corrupting the original LIST1 and LIST2.
+Keywords supported:  :test :test-not :key
+Fnunion
+Combine LIST1 and LIST2 using a set-union operation.
+The result list contains all items that appear in either LIST1 or LIST2.
+This is a destructive function; it reuses the storage of LIST1 and LIST2
+whenever possible.
+Keywords supported:  :test :test-not :key
+Fintersection
+Combine LIST1 and LIST2 using a set-intersection operation.
+The result list contains all items that appear in both LIST1 and LIST2.
+This is a non-destructive function; it makes a copy of the data if necessary
+to avoid corrupting the original LIST1 and LIST2.
+Keywords supported:  :test :test-not :key
+Fnintersection
+Combine LIST1 and LIST2 using a set-intersection operation.
+The result list contains all items that appear in both LIST1 and LIST2.
+This is a destructive function; it reuses the storage of LIST1 and LIST2
+whenever possible.
+Keywords supported:  :test :test-not :key
+Fset-difference
+Combine LIST1 and LIST2 using a set-difference operation.
+The result list contains all items that appear in LIST1 but not LIST2.
+This is a non-destructive function; it makes a copy of the data if necessary
+to avoid corrupting the original LIST1 and LIST2.
+Keywords supported:  :test :test-not :key
+Fnset-difference
+Combine LIST1 and LIST2 using a set-difference operation.
+The result list contains all items that appear in LIST1 but not LIST2.
+This is a destructive function; it reuses the storage of LIST1 and LIST2
+whenever possible.
+Keywords supported:  :test :test-not :key
+Fset-exclusive-or
+Combine LIST1 and LIST2 using a set-exclusive-or operation.
+The result list contains all items that appear in exactly one of LIST1, LIST2.
+This is a non-destructive function; it makes a copy of the data if necessary
+to avoid corrupting the original LIST1 and LIST2.
+Keywords supported:  :test :test-not :key
+Fnset-exclusive-or
+Combine LIST1 and LIST2 using a set-exclusive-or operation.
+The result list contains all items that appear in exactly one of LIST1, LIST2.
+This is a destructive function; it reuses the storage of LIST1 and LIST2
+whenever possible.
+Keywords supported:  :test :test-not :key
+Fsubsetp
+True if LIST1 is a subset of LIST2.
+I.e., if every element of LIST1 also appears in LIST2.
+Keywords supported:  :test :test-not :key
+Fsubst-if
+Substitute NEW for elements matching PREDICATE in TREE (non-destructively).
+Return a copy of TREE with all matching elements replaced by NEW.
+Keywords supported:  :key
+Fsubst-if-not
+Substitute NEW for elts not matching PREDICATE in TREE (non-destructively).
+Return a copy of TREE with all non-matching elements replaced by NEW.
+Keywords supported:  :key
+Fnsubst
+Substitute NEW for OLD everywhere in TREE (destructively).
+Any element of TREE which is `eql' to OLD is changed to NEW (via a call
+to `setcar').
+Keywords supported:  :test :test-not :key
+Fnsubst-if
+Substitute NEW for elements matching PREDICATE in TREE (destructively).
+Any element of TREE which matches is changed to NEW (via a call to `setcar').
+Keywords supported:  :key
+Fnsubst-if-not
+Substitute NEW for elements not matching PREDICATE in TREE (destructively).
+Any element of TREE which matches is changed to NEW (via a call to `setcar').
+Keywords supported:  :key
+Fsublis
+Perform substitutions indicated by ALIST in TREE (non-destructively).
+Return a copy of TREE with all matching elements replaced.
+Keywords supported:  :test :test-not :key
+Fnsublis
+Perform substitutions indicated by ALIST in TREE (destructively).
+Any matching element of TREE is changed via a call to `setcar'.
+Keywords supported:  :test :test-not :key
+Ftree-equal
+Return t if trees X and Y have `eql' leaves.
+Atoms are compared by `eql'; cons cells are compared recursively.
+Keywords supported:  :test :test-not :key
+Fdefine-widget-keywords
+This doesn't do anything in Emacs 20 or XEmacs.
+Fdefine-widget
+Define a new widget type named NAME from CLASS.
+
+NAME and CLASS should both be symbols, CLASS should be one of the
+existing widget types, or nil to create the widget from scratch.
+
+After the new widget has been defined, the following two calls will
+create identical widgets:
+
+* (widget-create NAME)
+
+* (apply 'widget-create CLASS ARGS)
+
+The third argument DOC is a documentation string for the widget.
+Vcustom-define-hook
+Hook called after defining each customize option.
+Fcustom-initialize-default
+Initialize SYMBOL with VALUE.
+This will do nothing if symbol already has a default binding.
+Otherwise, if symbol has a `saved-value' property, it will evaluate
+the car of that and used as the default binding for symbol.
+Otherwise, VALUE will be evaluated and used as the default binding for
+symbol.
+Fcustom-initialize-set
+Initialize SYMBOL with VALUE.
+Like `custom-initialize-default', but use the function specified by
+`:set' to initialize SYMBOL.
+Fcustom-initialize-reset
+Initialize SYMBOL with VALUE.
+Like `custom-initialize-set', but use the function specified by
+`:get' to reinitialize SYMBOL if it is already bound.
+Fcustom-initialize-changed
+Initialize SYMBOL with VALUE.
+Like `custom-initialize-reset', but only use the `:set' function if the
+not using the standard setting.  Otherwise, use the `set-default'.
+Fcustom-declare-variable
+Like `defcustom', but SYMBOL and VALUE are evaluated as normal arguments.
+Fdefcustom
+Declare SYMBOL as a customizable variable that defaults to VALUE.
+DOC is the variable documentation.
+
+Neither SYMBOL nor VALUE needs to be quoted.
+If SYMBOL is not already bound, initialize it to VALUE.
+The remaining arguments should have the form
+
+   [KEYWORD VALUE]...
+
+The following KEYWORD's are defined:
+
+:type   VALUE should be a widget type for editing the symbols value.
+        The default is `sexp'.
+:options VALUE should be a list of valid members of the widget type.
+:group  VALUE should be a customization group.
+        Add SYMBOL to that group.
+:initialize VALUE should be a function used to initialize the
+        variable.  It takes two arguments, the symbol and value
+        given in the `defcustom' call.  The default is
+        `custom-initialize-set'
+:set    VALUE should be a function to set the value of the symbol.
+        It takes two arguments, the symbol to set and the value to
+        give it.  The default is `set-default'.
+:get    VALUE should be a function to extract the value of symbol.
+        The function takes one argument, a symbol, and should return
+        the current value for that symbol.  The default is
+        `default-value'.
+:require VALUE should be a feature symbol.  Each feature will be
+        required after initialization, of the user have saved this
+        option.
+
+Read the section about customization in the Emacs Lisp manual for more
+information.
+Fdefface
+Declare FACE as a customizable face that defaults to SPEC.
+FACE does not need to be quoted.
+
+Third argument DOC is the face documentation.
+
+If FACE has been set with `custom-set-face', set the face attributes
+as specified by that function, otherwise set the face attributes
+according to SPEC.
+
+The remaining arguments should have the form
+
+   [KEYWORD VALUE]...
+
+The following KEYWORDs are defined:
+
+:group  VALUE should be a customization group.
+        Add FACE to that group.
+
+SPEC should be an alist of the form ((DISPLAY ATTS)...).
+
+ATTS is a list of face attributes and their values.  The possible
+attributes are defined in the variable `custom-face-attributes'.
+
+The ATTS of the first entry in SPEC where the DISPLAY matches the
+frame should take effect in that frame.  DISPLAY can either be the
+symbol t, which will match all frames, or an alist of the form
+((REQ ITEM...)...)
+
+For the DISPLAY to match a FRAME, the REQ property of the frame must
+match one of the ITEM.  The following REQ are defined:
+
+`type' (the value of `window-system')
+  Should be one of `x', `mswindows', or `tty'.
+
+`class' (the frame's color support)
+  Should be one of `color', `grayscale', or `mono'.
+
+`background' (what color is used for the background text)
+  Should be one of `light' or `dark'.
+
+Read the section about customization in the Emacs Lisp manual for more
+information.
+Fcustom-declare-group
+Like `defgroup', but SYMBOL is evaluated as a normal argument.
+Fdefgroup
+Declare SYMBOL as a customization group containing MEMBERS.
+SYMBOL does not need to be quoted.
+
+Third arg DOC is the group documentation.
+
+MEMBERS should be an alist of the form ((NAME WIDGET)...) where NAME
+is a symbol and WIDGET is a widget for editing that symbol.  Useful
+widgets are `custom-variable' for editing variables, `custom-face' for
+edit faces, and `custom-group' for editing groups.
+
+The remaining arguments should have the form
+
+   [KEYWORD VALUE]...
+
+The following KEYWORD's are defined:
+
+:group  VALUE should be a customization group.
+        Add SYMBOL to that group.
+
+Read the section about customization in the Emacs Lisp manual for more
+information.
+Vcustom-group-hash-table
+Hash-table of non-empty groups.
+Fcustom-add-to-group
+To existing GROUP add a new OPTION of type WIDGET.
+If there already is an entry for that option, overwrite it.
+Fcustom-handle-all-keywords
+For customization option SYMBOL, handle keyword arguments ARGS.
+Third argument TYPE is the custom option type.
+Fcustom-handle-keyword
+For customization option SYMBOL, handle KEYWORD with VALUE.
+Fourth argument TYPE is the custom option type.
+Fcustom-add-option
+To the variable SYMBOL add OPTION.
+
+If SYMBOL is a hook variable, OPTION should be a hook member.
+For other types variables, the effect is undefined.
+Fcustom-add-link
+To the custom option SYMBOL add the link WIDGET.
+Fcustom-add-version
+To the custom option SYMBOL add the version VERSION.
+Fcustom-add-load
+To the custom option SYMBOL add the dependency LOAD.
+LOAD should be either a library file name, or a feature name.
+Vcustom-known-themes
+Themes that have been defthemed.
+Fcustom-define-theme
+
+Common Lisp lambda list:
+  (custom-define-theme THEME FEATURE &optional DOC &key SHORT-DESCRIPTION IMMEDIATE VARIABLE-RESET-STRING VARIABLE-SET-STRING FACE-SET-STRING FACE-RESET-STRING &allow-other-keys)
+
+
+Fdeftheme
+(deftheme THEME &optional DOC &key KEYWORDS)
+
+Define a theme labeled by SYMBOL THEME. The optional argument DOC is a
+doc string describing the theme. It is optionally followed by the
+following keyword arguments
+
+:short-description DESC
+      DESC is a short (one line) description of the theme. If not given DOC
+      is used.
+:immediate FLAG
+      If FLAG is non-nil variables set in this theme are bound
+      immediately when loading the theme.
+:variable-set-string VARIABLE_-SET-STRING
+      A string used by the UI to indicate that the value takes it
+      setting from this theme. It is passed to FORMAT with the
+      name of the theme a additional argument.
+      If not given, a generic description is used.
+:variable-reset-string VARIABLE-RESET-STRING
+      As above but used in the case the variable has been forced to
+      the value in this theme.
+:face-set-string FACE-SET-STRING
+:face-reset-string FACE-RESET-STRING
+      As above but for faces.
+Fcustom-theme-p
+Non-nil when THEME has been defined.
+Fcustom-check-theme
+Check whether THEME is valid and signal an error if NOT.
+Fcustom-set-variables
+Initialize variables according to user preferences.
+The settings are registered as theme `user'.
+The arguments should be a list where each entry has the form:
+
+  (SYMBOL VALUE [NOW [REQUEST [COMMENT]]])
+
+The unevaluated VALUE is stored as the saved value for SYMBOL.
+If NOW is present and non-nil, VALUE is also evaluated and bound as
+the default value for the SYMBOL.
+REQUEST is a list of features we must 'require for SYMBOL.
+COMMENT is a comment string about SYMBOL.
+Fcustom-theme-set-variables
+Initialize variables according to settings specified by args.
+Records the settings as belonging to THEME.
+
+See `custom-set-variables' for a description of the arguments ARGS.
+Vcustom-loaded-themes
+Themes in the order they are loaded.
+Fcustom-theme-loaded-p
+Return non-nil when THEME has been loaded.
+Fprovide-theme
+Indicate that this file provides THEME.
+Frequire-theme
+Try to load a theme by requiring its feature.
+Fcustom-theme-load-themes
+Load the themes specified by BODY and record them as required by
+theme BY-THEME. BODY is a sequence of
+       - a SYMBOL
+            require the theme SYMBOL
+       - a list (reset THEME)
+            Undo all the settings made by THEME.
+       - a list (hidden THEME)
+            require the THEME but hide it from the user.
+Fcustom-load-themes
+Load themes for the USER theme as specified by BODY.
+
+BODY is as with custom-theme-load-themes.
+Fcopy-upto-last
+Copy all the elements of the list upto the last occurrence of elt.
+Fcustom-theme-value
+Determine the value for THEME defined by THEME-SPEC-LIST.
+Returns (list value) if found. Nil otherwise.
+Fcustom-theme-variable-value
+Return (list value) value of VARIABLE in THEME if the THEME modifies the
+VARIABLE.  Nil otherwise.
+Fcustom-theme-reset-variables
+Reset the value of the variables to values previously defined.
+Associate this setting with THEME.
+
+ARGS is a list of lists of the form
+
+    (variable to-theme)
+
+This means reset variable to its value in to-theme.
+Fcustom-reset-variables
+Reset the value of the variables to values previously defined.
+Associate this setting with the `user' theme.
+
+The ARGS are as in `custom-theme-reset-variables'.
+Frecursion-depth
+Return the current depth in recursive edits.
+Ftop-level
+Exit all recursive editing levels.
+Fexit-recursive-edit
+Exit from the innermost recursive edit or minibuffer.
+Fabort-recursive-edit
+Abort the command that requested this recursive edit or minibuffer input.
+Fkeyboard-quit
+Signal a `quit' condition.
+If this character is typed while lisp code is executing, it will be treated
+ as an interrupt.
+If this character is typed at top-level, this simply beeps.
+If `zmacs-regions' is true, and the zmacs region is active in this buffer,
+then this key deactivates the region without beeping or signalling.
+Vbuffer-quit-function
+Function to call to "quit" the current buffer, or nil if none.
+\[keyboard-escape-quit] calls this function when its more local actions
+(such as cancelling a prefix argument, minibuffer or region) do not apply.
+Fkeyboard-escape-quit
+Exit the current "mode" (in a generalized sense of the word).
+This command can exit an interactive command such as `query-replace',
+can clear out a prefix argument or a region,
+can get out of the minibuffer or other recursive edit,
+cancel the use of the current buffer (for special-purpose buffers),
+or go back to just one window (by deleting all but the selected window).
+Vlast-error
+Object describing the last signaled error.
+Fdescribe-last-error
+Redisplay the last error-message.  See the variable `last-error'.
+Fexecute-extended-command
+Read a command name from the minibuffer using 'completing-read'.
+Then call the specified command using 'command-execute' and return its
+return value.  If the command asks for a prefix argument, supply the
+value of the current raw prefix argument, or the value of PREFIX-ARG
+when called from Lisp.
+Fy-or-n-p-minibuf
+Ask user a "y or n" question.  Return t if answer is "y".
+Takes one argument, which is the string to display to ask the question.
+It should end in a space; `y-or-n-p' adds `(y or n) ' to it.
+No confirmation of the answer is requested; a single character is enough.
+Also accepts Space to mean yes, or Delete to mean no.
+Fyes-or-no-p-minibuf
+Ask user a yes-or-no question.  Return t if answer is yes.
+Takes one argument, which is the string to display to ask the question.
+It should end in a space; `yes-or-no-p' adds `(yes or no) ' to it.
+The user must confirm the answer with RET,
+and can edit it until it has been confirmed.
+Fyes-or-no-p
+Ask user a yes-or-no question.  Return t if answer is yes.
+The question is asked with a dialog box or the minibuffer, as appropriate.
+Takes one argument, which is the string to display to ask the question.
+It should end in a space; `yes-or-no-p' adds `(yes or no) ' to it.
+The user must confirm the answer with RET,
+and can edit it until it as been confirmed.
+Fy-or-n-p
+Ask user a "y or n" question.  Return t if answer is "y".
+Takes one argument, which is the string to display to ask the question.
+The question is asked with a dialog box or the minibuffer, as appropriate.
+It should end in a space; `y-or-n-p' adds `(y or n) ' to it.
+No confirmation of the answer is requested; a single character is enough.
+Also accepts Space to mean yes, or Delete to mean no.
+Fread-char
+Read a character from the command input (keyboard or macro).
+If a mouse click or non-ASCII character is detected, an error is
+signalled.  The character typed is returned as an ASCII value.  This
+is most likely the wrong thing for you to be using: consider using
+the `next-command-event' function instead.
+Fread-char-exclusive
+Read a character from the command input (keyboard or macro).
+If a mouse click or non-ASCII character is detected, it is discarded.
+The character typed is returned as an ASCII value.  This is most likely
+the wrong thing for you to be using: consider using the
+`next-command-event' function instead.
+Fread-quoted-char
+Like `read-char', except that if the first character read is an octal
+digit, we read up to two more octal digits and return the character
+represented by the octal number consisting of those digits.
+Optional argument PROMPT specifies a string to use to prompt the user.
+Fmomentary-string-display
+Momentarily display STRING in the buffer at POS.
+Display remains until next character is typed.
+If the char is EXIT-CHAR (optional third arg, default is SPC) it is swallowed;
+otherwise it is then available as input (as a command if nothing else).
+Display MESSAGE (optional fourth arg) in the echo area.
+If MESSAGE is nil, instructions to type EXIT-CHAR are displayed there.
+Fkbd
+Convert KEYS to the internal Emacs key representation.
+KEYS should be a string in the format used for saving keyboard macros
+(see `insert-kbd-macro').
+Fsuppress-keymap
+Make MAP override all normally self-inserting keys to be undefined.
+Normally, as an exception, digits and minus-sign are set to make prefix args,
+but optional second arg NODIGITS non-nil treats them like other chars.
+Fsubstitute-key-definition
+Replace OLDDEF with NEWDEF for any keys in KEYMAP now defined as OLDDEF.
+In other words, OLDDEF is replaced with NEWDEF wherever it appears.
+Prefix keymaps are checked recursively.  If optional fourth argument OLDMAP
+is specified, we redefine in KEYMAP as NEWDEF those chars which are defined
+as OLDDEF in OLDMAP, unless that keybinding is already present in KEYMAP.
+If optional fifth argument PREFIX is non-nil, then only those occurrences of
+OLDDEF found in keymaps accessible through the keymap bound to PREFIX in
+KEYMAP are redefined.  See also `accessible-keymaps'.
+Finsert-key-binding
+Insert the command bound to KEY.
+Fread-command-or-command-sexp
+Read a command symbol or command sexp.
+A command sexp is wrapped in an interactive lambda if needed.
+Prompts with PROMPT.
+Flocal-key-binding
+Return the binding for command KEYS in current local keymap only.
+KEYS is a string, a vector of events, or a vector of key-description lists
+as described in the documentation for the `define-key' function.
+The binding is probably a symbol with a function definition; see
+the documentation for `lookup-key' for more information.
+Fglobal-key-binding
+Return the binding for command KEYS in current global keymap only.
+KEYS is a string or vector of events, a sequence of keystrokes.
+The binding is probably a symbol with a function definition; see
+the documentation for `lookup-key' for more information.
+Fglobal-set-key
+Give KEY a global binding as COMMAND.
+COMMAND is a symbol naming an interactively-callable function.
+KEY is a string, a vector of events, or a vector of key-description lists
+as described in the documentation for the `define-key' function.
+Note that if KEY has a local binding in the current buffer
+that local binding will continue to shadow any global binding.
+Flocal-set-key
+Give KEY a local binding as COMMAND.
+COMMAND is a symbol naming an interactively-callable function.
+KEY is a string, a vector of events, or a vector of key-description lists
+as described in the documentation for the `define-key' function.
+The binding goes in the current buffer's local map,
+which is shared with other buffers in the same major mode.
+Fglobal-unset-key
+Remove global binding of KEY.
+KEY is a string, a vector of events, or a vector of key-description lists
+as described in the documentation for the `define-key' function.
+Flocal-unset-key
+Remove local binding of KEY.
+KEY is a string, a vector of events, or a vector of key-description lists
+as described in the documentation for the `define-key' function.
+Fminor-mode-key-binding
+Find the visible minor mode bindings of KEY.
+Return an alist of pairs (MODENAME . BINDING), where MODENAME is
+the symbol which names the minor mode binding KEY, and BINDING is
+KEY's definition in that mode.  In particular, if KEY has no
+minor-mode bindings, return nil.  If the first binding is a
+non-prefix, all subsequent bindings will be omitted, since they would
+be ignored.  Similarly, the list doesn't include non-prefix bindings
+that come after prefix bindings.
+
+If optional argument ACCEPT-DEFAULT is non-nil, recognize default
+bindings; see the description of `lookup-key' for more details about this.
+Fcurrent-minor-mode-maps
+Return a list of keymaps for the minor modes of the current buffer.
+Fdefine-prefix-command
+Define COMMAND as a prefix command.
+A new sparse keymap is stored as COMMAND's function definition.
+If second optional argument MAPVAR is not specified,
+ COMMAND's value (as well as its function definition) is set to the keymap.
+If a second optional argument MAPVAR is given and is not `t',
+  the map is stored as its value.
+Regardless of MAPVAR, COMMAND's function-value is always set to the keymap.
+Fevents-to-keys
+Given a vector of event objects, returns a vector of key descriptors,
+or a string (if they all fit in the ASCII range).
+Optional arg NO-MICE means that button events are not allowed.
+Fnext-key-event
+Return the next available keyboard event.
+Fkey-sequence-list-description
+Convert a key sequence KEYS to the full [(modifiers... key)...] form.
+Argument KEYS can be in any form accepted by `define-key' function.
+The output is always in a canonical form, meaning you can use this
+function to determine if two key sequence specifications are equivalent
+by comparing the respective outputs of this function using `equal'.
+Fevent-apply-modifier
+Return the next key event, with a modifier flag applied.
+SYMBOL is the name of this modifier, as a symbol.
+`function-key-map' is scanned for prefix bindings.
+Fsynthesize-keysym
+Read a sequence of keys, and returned the corresponding key symbol.
+The characters must be from the [-_a-zA-Z0-9].  Reading is terminated
+ by RET (which is discarded).
+Fmake-syntax-table
+Return a new syntax table.
+It inherits all characters from the standard syntax table.
+Fchar-syntax-from-code
+Extract the syntax designator from the internal syntax code CODE.
+CODE is the value actually contained in the syntax table.
+Fset-char-syntax-in-code
+Return a new internal syntax code whose syntax designator is DESIG.
+Other characteristics are the same as in CODE.
+Fsyntax-code-to-string
+Return a string equivalent to internal syntax code CODE.
+The string can be passed to `modify-syntax-entry'.
+If CODE is invalid, return nil.
+Fsyntax-string-to-code
+Return the internal syntax code equivalent to STRING.
+STRING should be something acceptable as the second argument to
+`modify-syntax-entry'.
+If STRING is invalid, signal an error.
+Fmodify-syntax-entry
+Set syntax for the characters CHAR-RANGE according to string SPEC.
+CHAR-RANGE is a single character or a range of characters,
+ as per `put-char-table'.
+The syntax is changed only for SYNTAX-TABLE, which defaults to
+ the current buffer's syntax table.
+The first character of SPEC should be one of the following:
+  Space    whitespace syntax.    w   word constituent.
+  _        symbol constituent.   .   punctuation.
+  (        open-parenthesis.     )   close-parenthesis.
+  "        string quote.         \   character-quote.
+  $        paired delimiter.     '   expression quote or prefix operator.
+  <	   comment starter.	 >   comment ender.
+  /        character-quote.      @   inherit from `standard-syntax-table'.
+
+Only single-character comment start and end sequences are represented thus.
+Two-character sequences are represented as described below.
+The second character of SPEC is the matching parenthesis,
+ used only if the first character is `(' or `)'.
+Any additional characters are flags.
+Defined flags are the characters 1, 2, 3, 4, 5, 6, 7, 8, p, a, and b.
+ 1 means C is the first of a two-char comment start sequence of style a.
+ 2 means C is the second character of such a sequence.
+ 3 means C is the first of a two-char comment end sequence of style a.
+ 4 means C is the second character of such a sequence.
+ 5 means C is the first of a two-char comment start sequence of style b.
+ 6 means C is the second character of such a sequence.
+ 7 means C is the first of a two-char comment end sequence of style b.
+ 8 means C is the second character of such a sequence.
+ p means C is a prefix character for `backward-prefix-chars';
+   such characters are treated as whitespace when they occur
+   between expressions.
+ a means C is comment starter or comment ender for comment style a (default)
+ b means C is comment starter or comment ender for comment style b.
+Fmap-syntax-table
+Map FUNCTION over entries in SYNTAX-TABLE, collapsing inheritance.
+This is similar to `map-char-table', but works only on syntax tables, and
+ collapses any entries that call for inheritance by invisibly substituting
+ the inherited values from the standard syntax table.
+Fsymbol-near-point
+Return the first textual item to the nearest point.
+Fdevice-list
+Return a list of all devices.
+Fdevice-type
+Return the type of the specified device (e.g. `x' or `tty').
+This is equivalent to the type of the device's console.
+Value is `tty' for a tty device (a character-only terminal),
+`x' for a device that is a screen on an X display,
+`gtk' for a device that is a GTK connection.
+`ns' for a device that is a NeXTstep connection (not yet implemented),
+`mswindows' for a device that is a MS Windows workstation,
+`msprinter' for a device that is a MS Windows printer connection,
+`stream' for a stream device (which acts like a stdio stream), and
+`dead' for a deleted device.
+Fmake-tty-device
+Create a new device on TTY.
+  TTY should be the name of a tty device file (e.g. "/dev/ttyp3" under
+SunOS et al.), as returned by the `tty' command.  A value of nil means
+use the stdin and stdout as passed to XEmacs from the shell.
+  If TERMINAL-TYPE is non-nil, it should be a string specifying the
+type of the terminal attached to the specified tty.  If it is nil,
+the terminal type will be inferred from the TERM environment variable.
+  If CONTROLLING-PROCESS is non-nil, it should be an integer
+specifying the process id of the process in control of the specified tty.  If
+it is nil, it is assumes to be the value returned by emacs-pid.
+Fdevice-pixel-width
+Return the width in pixels of DEVICE, or nil if unknown.
+Fdevice-pixel-height
+Return the height in pixels of DEVICE, or nil if unknown.
+Fdevice-mm-width
+Return the width in millimeters of DEVICE, or nil if unknown.
+Fdevice-mm-height
+Return the height in millimeters of DEVICE, or nil if unknown.
+Fdevice-bitplanes
+Return the number of bitplanes of DEVICE, or nil if unknown.
+Fdevice-color-cells
+Return the number of color cells of DEVICE, or nil if unknown.
+Fmake-gtk-device
+Create a new GTK device.
+Fmake-x-device
+Create a new device connected to DISPLAY.
+Fmake-mswindows-device
+Create a new mswindows device.
+Fdevice-on-window-system-p
+Return non-nil if DEVICE is on a window system.
+This generally means that there is support for the mouse, the menubar,
+the toolbar, glyphs, etc.
+Fcall-device-method
+Call a DEVICE-specific function with the generic name NAME.
+If DEVICE is not provided then the selected device is used.
+Fdefine-device-method
+Define NAME to be a device method.
+Fdefine-device-method*
+Define NAME to be a device method.
+Fquit-char
+Return the character that causes a QUIT to happen.
+This is normally C-g.  Optional arg CONSOLE specifies the console
+that the information is returned for; nil means the current console.
+Fresume-pid-console
+Resume the consoles with a controlling process of PID.
+Fdefine-obsolete-function-alias
+Define OLDFUN as an obsolete alias for function NEWFUN.
+This makes calling OLDFUN equivalent to calling NEWFUN and marks OLDFUN
+as obsolete.
+Fdefine-compatible-function-alias
+Define OLDFUN as a compatible alias for function NEWFUN.
+This makes calling OLDFUN equivalent to calling NEWFUN and marks OLDFUN
+as provided for compatibility only.
+Fdefine-obsolete-variable-alias
+Define OLDVAR as an obsolete alias for variable NEWVAR.
+This makes referencing or setting OLDVAR equivalent to referencing or
+setting NEWVAR and marks OLDVAR as obsolete.
+If OLDVAR was bound and NEWVAR was not, Set NEWVAR to OLDVAR.
+
+Note: Use this before any other references (defvar/defcustom) to NEWVAR.
+Fdefine-compatible-variable-alias
+Define OLDVAR as a compatible alias for variable NEWVAR.
+This makes referencing or setting OLDVAR equivalent to referencing or
+setting NEWVAR and marks OLDVAR as provided for compatibility only.
+Fx-display-color-p
+Return t if DEVICE is a color device.
+Fx-display-grayscale-p
+Return t if DEVICE is a grayscale device.
+Fframe-first-window
+Return the topmost, leftmost window of FRAME.
+If omitted, FRAME defaults to the currently selected frame.
+Fframe-parameters
+Return the parameters-alist of frame FRAME.
+It is a list of elements of the form (PARM . VALUE), where PARM is a symbol.
+The meaningful PARMs depend on the kind of frame.
+If FRAME is omitted, return information on the currently selected frame.
+
+See the variables `default-frame-plist', `default-x-frame-plist', and
+`default-tty-frame-plist' for a description of the parameters meaningful
+for particular types of frames.
+Fmodify-frame-parameters
+Modify the properties of frame FRAME according to ALIST.
+ALIST is an alist of properties to change and their new values.
+Each element of ALIST has the form (PARM . VALUE), where PARM is a symbol.
+The meaningful PARMs depend on the kind of frame.
+
+See `set-frame-properties' for built-in property names.
+VInfo-default-directory-list
+This used to be the initial value of Info-directory-list.
+If you want to change the locations where XEmacs looks for info files,
+set Info-directory-list.
+Vinit-file-user
+This used to be the name of the user whose init file was read at startup.
+Fkeymap-parent
+Return the first parent of the given keymap.
+Fset-keymap-parent
+Make the given keymap have (only) the given parent.
+Fadd-menu-item
+Obsolete.  See the function `add-menu-button'.
+Fadd-menu
+See the function `add-submenu'.
+Fx-color-values
+Return a description of the color named COLOR on frame FRAME.
+The value is a list of integer RGB values--(RED GREEN BLUE).
+These values appear to range from 0 to 65280 or 65535, depending
+on the system; white is (65280 65280 65280) or (65535 65535 65535).
+If FRAME is omitted or nil, use the selected frame.
+Fstring-to-sequence
+Convert STRING to a sequence of TYPE which contains characters in STRING.
+TYPE should be `list' or `vector'.
+Multibyte characters are concerned.
+Fstring-to-list
+Return a list of characters in STRING.
+Fstring-to-vector
+Return a vector of characters in STRING.
+Fstore-substring
+Embed OBJECT (string or character) at index IDX of STRING.
+Ftruncate-string-to-width
+Truncate string STR to end at column END-COLUMN.
+The optional 2nd arg START-COLUMN, if non-nil, specifies
+the starting column; that means to return the characters occupying
+columns START-COLUMN ... END-COLUMN of STR.
+
+The optional 3rd arg PADDING, if non-nil, specifies a padding character
+to add at the end of the result if STR doesn't reach column END-COLUMN,
+or if END-COLUMN comes in the middle of a character in STR.
+PADDING is also added at the beginning of the result
+if column START-COLUMN appears in the middle of a character in STR.
+
+If PADDING is nil, no padding is added in these cases, so
+the resulting string may be narrower than END-COLUMN.
+Fmake-specifier-and-init
+Create and initialize a new specifier.
+
+This is a front-end onto `make-specifier' that allows you to create a
+specifier and add specs to it at the same time.  TYPE specifies the
+specifier type.  SPEC-LIST supplies the specification(s) to be added
+to the specifier. Normally, almost any reasonable abbreviation of the
+full spec-list form is accepted, and is converted to the full form;
+however, if optional argument DONT-CANONICALIZE is non-nil, this
+conversion is not performed, and the SPEC-LIST must already be in full
+form.  See `canonicalize-spec-list'.
+Fmap-specifier
+Apply MS-FUNC to the specification(s) for MS-LOCALE in MS-SPECIFIER.
+
+If MS-LOCALE is a locale, MS-FUNC will be called for that locale.
+If MS-LOCALE is a locale type, MS-FUNC will be mapped over all locales
+of that type.  If MS-LOCALE is 'all or nil, MS-FUNC will be mapped
+over all locales in MS-SPECIFIER.
+
+MS-FUNC is called with four arguments: the MS-SPECIFIER, the locale
+being mapped over, the inst-list for that locale, and the
+optional MS-MAPARG.  If any invocation of MS-FUNC returns non-nil,
+the mapping will stop and the returned value becomes the
+value returned from `map-specifier'.  Otherwise, `map-specifier'
+returns nil.
+Fcanonicalize-inst-pair
+Canonicalize the given INST-PAIR.
+
+SPECIFIER-TYPE specifies the type of specifier that this SPEC-LIST
+will be used for.
+
+Canonicalizing means converting to the full form for an inst-pair, i.e.
+`(TAG-SET . INSTANTIATOR)'.  A single, untagged instantiator is given
+a tag set of nil (the empty set), and a single tag is converted into
+a tag set consisting only of that tag.
+
+If NOERROR is non-nil, signal an error if the inst-pair is invalid;
+otherwise return t.
+Fcanonicalize-inst-list
+Canonicalize the given INST-LIST (a list of inst-pairs).
+
+SPECIFIER-TYPE specifies the type of specifier that this INST-LIST
+will be used for.
+
+Canonicalizing means converting to the full form for an inst-list, i.e.
+`((TAG-SET . INSTANTIATOR) ...)'.  This function accepts a single
+inst-pair or any abbreviation thereof or a list of (possibly
+abbreviated) inst-pairs. (See `canonicalize-inst-pair'.)
+
+If NOERROR is non-nil, signal an error if the inst-list is invalid;
+otherwise return t.
+Fcanonicalize-spec
+Canonicalize the given SPEC (a specification).
+
+SPECIFIER-TYPE specifies the type of specifier that this SPEC-LIST
+will be used for.
+
+Canonicalizing means converting to the full form for a spec, i.e.
+`(LOCALE (TAG-SET . INSTANTIATOR) ...)'.  This function accepts a
+possibly abbreviated inst-list or a cons of a locale and a possibly
+abbreviated inst-list. (See `canonicalize-inst-list'.)
+
+If NOERROR is nil, signal an error if the specification is invalid;
+otherwise return t.
+Fcanonicalize-spec-list
+Canonicalize the given SPEC-LIST (a list of specifications).
+
+SPECIFIER-TYPE specifies the type of specifier that this SPEC-LIST
+will be used for.
+
+Canonicalizing means converting to the full form for a spec-list, i.e.
+`((LOCALE (TAG-SET . INSTANTIATOR) ...) ...)'.  This function accepts
+a possibly abbreviated specification or a list of such things. (See
+`canonicalize-spec'.) This is the function used to convert spec-lists
+accepted by `set-specifier' and such into a form suitable for
+`add-spec-list-to-specifier'.
+
+This function tries extremely hard to resolve any ambiguities,
+and the built-in specifier types (font, image, toolbar, etc.) are
+designed so that there won't be any ambiguities.
+
+If NOERROR is nil, signal an error if the spec-list is invalid;
+otherwise return t.
+Fset-specifier
+Add a specification or specifications to SPECIFIER.
+
+This function adds a specification of VALUE in locale LOCALE.
+LOCALE indicates where this specification is active, and should be
+a buffer, a window, a frame, a device, or the symbol `global' to
+indicate that it applies everywhere.  LOCALE usually defaults to
+`global' if omitted.
+
+VALUE is usually what is called an "instantiator" (which, roughly
+speaking, corresponds to the "value" of the property governed by
+SPECIFIER).  The valid instantiators for SPECIFIER depend on the type
+of SPECIFIER (which you can determine using `specifier-type').  The
+specifier `scrollbar-width', for example, is of type `integer',
+meaning its valid instantiators are integers.  The specifier governing
+the background color of the `default' face (you can retrieve this
+specifier using `(face-background 'default)') is of type `color',
+meaning its valid instantiators are strings naming colors and
+color-instance objects.  For some types of specifiers, such as `image'
+and `toolbar', the instantiators can be very complex.  Generally this
+is documented in the appropriate creation function --
+e.g. `make-color-specifier', `make-font-specifier',
+`make-image-specifier' -- or in the global variable holding the most
+common specifier for that type (`default-toolbar', `default-gutter',
+`current-display-table').
+
+NOTE: It does *not* work to give a VALUE of nil as a way of
+removing the specifications for a locale.  Use `remove-specifier'
+instead. (And keep in mind that, if you omit the LOCALE argument
+to `remove-specifier', it removes *all* specifications!  If you
+want to remove just the `global' specification, make sure to
+specify a LOCALE of `global'.)
+
+VALUE can also be a list of instantiators.  This means basically,
+"try each one in turn until you get one that works".  This allows
+you to give funky instantiators that may only work in some cases,
+and provide more normal backups for the other cases. (For example,
+you might like the color "darkseagreen2", but some X servers
+don't recognize this color, so you could provide a backup
+"forest green".  Color TTY devices probably won't recognize this
+either, so you could provide a second backup "green".  You'd
+do this by specifying this list of instantiators:
+
+'("darkseagreen2" "forest green" "green")
+
+VALUE can also be various more complicated forms; see below.
+
+Optional argument TAG-SET is a tag or a list of tags, to be associated
+with the VALUE.  Tags are symbols (usually naming device types, such
+as `x' and `tty', or device classes, such as `color', `mono', and
+`grayscale'); specifying a TAG-SET restricts the scope of VALUE to
+devices that match all specified tags. (You can also create your
+own tags using `define-specifier-tag', and use them to identify
+specifications added by you, so you can remove them later.)
+
+Optional argument HOW-TO-ADD should be either nil or one of the
+symbols `prepend', `append', `remove-tag-set-prepend',
+`remove-tag-set-append', `remove-locale', `remove-locale-type',
+or `remove-all'.  This specifies what to do with existing
+specifications in LOCALE (and possibly elsewhere in the specifier).
+Most of the time, you do not need to worry about this argument;
+the default behavior of `remove-tag-set-prepend' is usually fine.
+See `copy-specifier' and `add-spec-to-specifier' for a full
+description of what each of these means.
+
+VALUE can actually be anything acceptable to `canonicalize-spec-list';
+this includes, among other things:
+
+-- a cons of a locale and an instantiator (or list of instantiators)
+-- a cons of a tag or tag-set and an instantiator (or list of
+   instantiators)
+-- a cons of a locale and the previous type of item
+-- a list of one or more of any of the previous types of items
+
+However, in these cases, you cannot give a LOCALE or TAG-SET,
+because they do not make sense. (You will probably get an error if
+you try this.)
+
+Finally, VALUE can itself be a specifier (of the same type as
+SPECIFIER), if you want to copy specifications from one specifier
+to another; this is equivalent to calling `copy-specifier', and
+LOCALE, TAG-SET, and HOW-TO-ADD have the same semantics as with
+that function.
+
+Note that `set-specifier' is exactly complementary to `specifier-specs'
+except in the case where SPECIFIER has no specs at all in it but nil
+is a valid instantiator (in that case, `specifier-specs' will return
+nil (meaning no specs) and `set-specifier' will interpret the `nil'
+as meaning "I'm adding a global instantiator and its value is `nil'"),
+or in strange cases where there is an ambiguity between a spec-list
+and an inst-list, etc. (The built-in specifier types are designed
+in such a way as to avoid any such ambiguities.)
+
+NOTE: If you want to work with spec-lists, you should probably not
+use either `set-specifier' or `specifier-specs', but should use the
+lower-level functions `add-spec-list-to-specifier' and `specifier-spec-list'.
+These functions always work with fully-qualified spec-lists; thus, there
+is no possibility for ambiguity and no need to go through the function
+`canonicalize-spec-list', which is potentially time-consuming.
+Fmodify-specifier-instances
+Modify all specifications that match LOCALE and TAG-SET by FUNC.
+
+For each specification that exists for SPECIFIER, in locale LOCALE
+that matches TAG-SET, call the function FUNC with the instance as its
+first argument and with optional arguments ARGS.  The result is then
+used as the new value of the instantiator.
+
+If there is no specification in the domain LOCALE matching TAG-SET and
+FORCE is non-nil, an explicit one is created from the matching
+specifier instance if that exists or DEFAULT otherwise. If LOCALE is
+not a domain (i.e. a buffer), DEFAULT is always used. FUNC is then
+applied like above and the resulting specification is added.
+Flet-specifier
+Add specifier specs, evaluate forms in BODY and restore the specifiers.
+(let-specifier SPECIFIER-LIST BODY...)
+
+Each element of SPECIFIER-LIST should look like this:
+(SPECIFIER VALUE &optional LOCALE TAG-SET HOW-TO-ADD).
+
+SPECIFIER is the specifier to be temporarily modified.  VALUE is the
+instantiator to be temporarily added to SPECIFIER in LOCALE.  LOCALE,
+TAG-SET and HOW-TO-ADD have the same meaning as in
+`add-spec-to-specifier'.
+
+The code resulting from macro expansion will add specifications to
+specifiers using `add-spec-to-specifier'.  After BODY is finished, the
+temporary specifications are removed and old spec-lists are restored.
+
+LOCALE, TAG-SET and HOW-TO-ADD may be omitted, and default to nil.
+The value of the last form in BODY is returned.
+
+NOTE: If you want the specifier's instance to change in all
+circumstances, use (selected-window) as the LOCALE.  If LOCALE is nil
+or omitted, it defaults to `global'.
+
+Example:
+    (let-specifier ((modeline-shadow-thickness 0 (selected-window)))
+      (sit-for 1))
+Fmake-integer-specifier
+Return a new `integer' specifier object with the given specification list.
+SPEC-LIST can be a list of specifications (each of which is a cons of a
+locale and a list of instantiators), a single instantiator, or a list
+of instantiators.  See `make-specifier' for more information about
+specifiers.
+
+Valid instantiators for integer specifiers are integers.
+Fmake-boolean-specifier
+Return a new `boolean' specifier object with the given specification list.
+SPEC-LIST can be a list of specifications (each of which is a cons of a
+locale and a list of instantiators), a single instantiator, or a list
+of instantiators.  See `make-specifier' for more information about
+specifiers.
+
+Valid instantiators for boolean specifiers are t and nil.
+Fmake-natnum-specifier
+Return a new `natnum' specifier object with the given specification list.
+SPEC-LIST can be a list of specifications (each of which is a cons of a
+locale and a list of instantiators), a single instantiator, or a list
+of instantiators.  See `make-specifier' for more information about
+specifiers.
+
+Valid instantiators for natnum specifiers are non-negative integers.
+Fmake-generic-specifier
+Return a new `generic' specifier object with the given specification list.
+SPEC-LIST can be a list of specifications (each of which is a cons of a
+locale and a list of instantiators), a single instantiator, or a list
+of instantiators.  See `make-specifier' for more information about
+specifiers.
+
+Valid instantiators for generic specifiers are all Lisp values.
+They are returned back unchanged when a specifier is instantiated.
+Fmake-display-table-specifier
+Return a new `display-table' specifier object with the given spec list.
+SPEC-LIST can be a list of specifications (each of which is a cons of a
+locale and a list of instantiators), a single instantiator, or a list
+of instantiators.  See `make-specifier' for more information about
+specifiers.
+
+Valid instantiators for display-table specifiers are described in
+detail in the doc string for `current-display-table'.
+Vbuilt-in-face-specifiers
+A list of the built-in face properties that are specifiers.
+Fface-property
+Return FACE's value of the given PROPERTY.
+
+If LOCALE is omitted, the FACE's actual value for PROPERTY will be
+  returned.  For built-in properties, this will be a specifier object
+  of a type appropriate to the property (e.g. a font or color
+  specifier).  For other properties, this could be anything.
+
+If LOCALE is supplied, then instead of returning the actual value,
+  the specification(s) for the given locale or locale type will
+  be returned.  This will only work if the actual value of
+  PROPERTY is a specifier (this will always be the case for built-in
+  properties, but not or not may apply to user-defined properties).
+  If the actual value of PROPERTY is not a specifier, this value
+  will simply be returned regardless of LOCALE.
+
+The return value will be a list of instantiators (e.g. strings
+  specifying a font or color name), or a list of specifications, each
+  of which is a cons of a locale and a list of instantiators.
+  Specifically, if LOCALE is a particular locale (a buffer, window,
+  frame, device, or 'global), a list of instantiators for that locale
+  will be returned.  Otherwise, if LOCALE is a locale type (one of
+  the symbols 'buffer, 'window, 'frame, or 'device), the specifications
+  for all locales of that type will be returned.  Finally, if LOCALE is
+  'all, the specifications for all locales of all types will be returned.
+
+The specifications in a specifier determine what the value of
+  PROPERTY will be in a particular "domain" or set of circumstances,
+  which is typically a particular Emacs window along with the buffer
+  it contains and the frame and device it lies within.  The value is
+  derived from the instantiator associated with the most specific
+  locale (in the order buffer, window, frame, device, and 'global)
+  that matches the domain in question.  In other words, given a domain
+  (i.e. an Emacs window, usually), the specifier for PROPERTY will
+  first be searched for a specification whose locale is the buffer
+  contained within that window; then for a specification whose locale
+  is the window itself; then for a specification whose locale is the
+  frame that the window is contained within; etc.  The first
+  instantiator that is valid for the domain (usually this means that
+  the instantiator is recognized by the device [i.e. MS Windows, the X
+  server or TTY device] that the domain is on.  The function
+  `face-property-instance' actually does all this, and is used to
+  determine how to display the face.
+
+See `set-face-property' for the built-in property-names.
+Fconvert-face-property-into-specifier
+Convert PROPERTY on FACE into a specifier, if it's not already.
+Fface-property-instance
+Return the instance of FACE's PROPERTY in the specified DOMAIN.
+
+Under most circumstances, DOMAIN will be a particular window,
+  and the returned instance describes how the specified property
+  actually is displayed for that window and the particular buffer
+  in it.  Note that this may not be the same as how the property
+  appears when the buffer is displayed in a different window or
+  frame, or how the property appears in the same window if you
+  switch to another buffer in that window; and in those cases,
+  the returned instance would be different.
+
+The returned instance will typically be a color-instance,
+  font-instance, or pixmap-instance object, and you can query
+  it using the appropriate object-specific functions.  For example,
+  you could use `color-instance-rgb-components' to find out the
+  RGB (red, green, and blue) components of how the 'background
+  property of the 'highlight face is displayed in a particular
+  window.  The results might be different from the results
+  you would get for another window (perhaps the user
+  specified a different color for the frame that window is on;
+  or perhaps the same color was specified but the window is
+  on a different X server, and that X server has different RGB
+  values for the color from this one).
+
+DOMAIN defaults to the selected window if omitted.
+
+DOMAIN can be a frame or device, instead of a window.  The value
+  returned for a such a domain is used in special circumstances
+  when a more specific domain does not apply; for example, a frame
+  value might be used for coloring a toolbar, which is conceptually
+  attached to a frame rather than a particular window.  The value
+  is also useful in determining what the value would be for a
+  particular window within the frame or device, if it is not
+  overridden by a more specific specification.
+
+If PROPERTY does not name a built-in property, its value will
+  simply be returned unless it is a specifier object, in which case
+  it will be instanced using `specifier-instance'.
+
+Optional arguments DEFAULT and NO-FALLBACK are the same as in
+  `specifier-instance'.
+Fface-property-matching-instance
+Return the instance of FACE's PROPERTY matching MATCHSPEC in DOMAIN.
+Currently the only useful value for MATCHSPEC is a charset, when used
+in conjunction with the face's font; this allows you to retrieve a
+font that can be used to display a particular charset, rather than just
+any font.
+
+Other than MATCHSPEC, this function is identical to `face-property-instance'.
+See also `specifier-matching-instance' for a fuller description of the
+matching process.
+Fset-face-property
+Change a property of FACE.
+
+NOTE: If you want to remove a property from a face, use `remove-face-property'
+  rather than attempting to set a value of nil for the property.
+
+For built-in properties, the actual value of the property is a
+  specifier and you cannot change this; but you can change the
+  specifications within the specifier, and that is what this function
+  will do.  For user-defined properties, you can use this function
+  to either change the actual value of the property or, if this value
+  is a specifier, change the specifications within it.
+
+If PROPERTY is a built-in property, the specifications to be added to
+  this property can be supplied in many different ways:
+
+  -- If VALUE is a simple instantiator (e.g. a string naming a font or
+     color) or a list of instantiators, then the instantiator(s) will
+     be added as a specification of the property for the given LOCALE
+     (which defaults to 'global if omitted).
+  -- If VALUE is a list of specifications (each of which is a cons of
+     a locale and a list of instantiators), then LOCALE must be nil
+     (it does not make sense to explicitly specify a locale in this
+     case), and specifications will be added as given.
+  -- If VALUE is a specifier (as would be returned by `face-property'
+     if no LOCALE argument is given), then some or all of the
+     specifications in the specifier will be added to the property.
+     In this case, the function is really equivalent to
+     `copy-specifier' and LOCALE has the same semantics (if it is
+     a particular locale, the specification for the locale will be
+     copied; if a locale type, specifications for all locales of
+     that type will be copied; if nil or 'all, then all
+     specifications will be copied).
+
+HOW-TO-ADD should be either nil or one of the symbols 'prepend,
+  'append, 'remove-tag-set-prepend, 'remove-tag-set-append, 'remove-locale,
+  'remove-locale-type, or 'remove-all.  See `copy-specifier' and
+  `add-spec-to-specifier' for a description of what each of
+  these means.  Most of the time, you do not need to worry about
+  this argument; the default behavior usually is fine.
+
+In general, it is OK to pass an instance object (e.g. as returned
+  by `face-property-instance') as an instantiator in place of
+  an actual instantiator.  In such a case, the instantiator used
+  to create that instance object will be used (for example, if
+  you set a font-instance object as the value of the 'font
+  property, then the font name used to create that object will
+  be used instead).  If some cases, however, doing this
+  conversion does not make sense, and this will be noted in
+  the documentation for particular types of instance objects.
+
+If PROPERTY is not a built-in property, then this function will
+  simply set its value if LOCALE is nil.  However, if LOCALE is
+  given, then this function will attempt to add VALUE as the
+  instantiator for the given LOCALE, using `add-spec-to-specifier'.
+  If the value of the property is not a specifier, it will
+  automatically be converted into a 'generic specifier.
+
+
+The following symbols have predefined meanings:
+
+ foreground         The foreground color of the face.
+                    For valid instantiators, see `make-color-specifier'.
+
+ background         The background color of the face.
+                    For valid instantiators, see `make-color-specifier'.
+
+ font               The font used to display text covered by this face.
+                    For valid instantiators, see `make-font-specifier'.
+
+ display-table      The display table of the face.
+                    This should be a vector of 256 elements.
+
+ background-pixmap  The pixmap displayed in the background of the face.
+                    Only used by faces on X and MS Windows devices.
+                    For valid instantiators, see `make-image-specifier'.
+
+ underline          Underline all text covered by this face.
+                    For valid instantiators, see `make-face-boolean-specifier'.
+
+ strikethru         Draw a line through all text covered by this face.
+                    For valid instantiators, see `make-face-boolean-specifier'.
+
+ highlight          Highlight all text covered by this face.
+                    Only used by faces on TTY devices.
+                    For valid instantiators, see `make-face-boolean-specifier'.
+
+ dim                Dim all text covered by this face.
+                    For valid instantiators, see `make-face-boolean-specifier'.
+
+ blinking           Blink all text covered by this face.
+                    Only used by faces on TTY devices.
+                    For valid instantiators, see `make-face-boolean-specifier'.
+
+ reverse            Reverse the foreground and background colors.
+                    Only used by faces on TTY devices.
+                    For valid instantiators, see `make-face-boolean-specifier'.
+
+ doc-string         Description of what the face's normal use is.
+                    NOTE: This is not a specifier, unlike all
+                    the other built-in properties, and cannot
+                    contain locale-specific values.
+Fremove-face-property
+Remove a property from FACE.
+For built-in properties, this is analogous to `remove-specifier'.
+See `remove-specifier' for the meaning of the LOCALE, TAG-SET, and EXACT-P
+arguments.
+Freset-face
+Clear all existing built-in specifications from FACE.
+This makes FACE inherit all its display properties from 'default.
+WARNING: Be absolutely sure you want to do this!!!  It is a dangerous
+operation and is not undoable.
+
+The arguments LOCALE, TAG-SET and EXACT-P are the same as for
+`remove-specifier'.
+Fset-face-parent
+Set the parent of FACE to PARENT, for all properties.
+This makes all properties of FACE inherit from PARENT.
+Fface-doc-string
+Return the documentation string for FACE.
+Fset-face-doc-string
+Change the documentation string of FACE to DOC-STRING.
+Fface-font-name
+Return the font name of FACE in DOMAIN, or nil if it is unspecified.
+DOMAIN is as in `face-font-instance'.
+Fface-font
+Return the font of FACE in LOCALE, or nil if it is unspecified.
+
+FACE may be either a face object or a symbol representing a face.
+
+LOCALE may be a locale (the instantiators for that particular locale
+  will be returned), a locale type (the specifications for all locales
+  of that type will be returned), 'all (all specifications will be
+  returned), or nil (the actual specifier object will be returned).
+
+See `face-property' for more information.
+Fface-font-instance
+Return the instance of FACE's font in DOMAIN.
+
+FACE may be either a face object or a symbol representing a face.
+
+Normally DOMAIN will be a window or nil (meaning the selected window),
+  and an instance object describing how the font appears in that
+  particular window and buffer will be returned.
+
+See `face-property-instance' for more information.
+Fset-face-font
+Change the font of FACE to FONT in LOCALE.
+
+FACE may be either a face object or a symbol representing a face.
+
+FONT should be an instantiator (see `make-font-specifier'), a list of
+  instantiators, an alist of specifications (each mapping a
+  locale to an instantiator list), or a font specifier object.
+
+If FONT is an alist, LOCALE must be omitted.  If FONT is a
+  specifier object, LOCALE can be a locale, a locale type, 'all,
+  or nil; see `copy-specifier' for its semantics.  Otherwise LOCALE
+  specifies the locale under which the specified instantiator(s)
+  will be added, and defaults to 'global.
+
+See `set-face-property' for more information.
+Fface-foreground
+Return the foreground of FACE in LOCALE, or nil if it is unspecified.
+
+FACE may be either a face object or a symbol representing a face.
+
+LOCALE may be a locale (the instantiators for that particular locale
+  will be returned), a locale type (the specifications for all locales
+  of that type will be returned), 'all (all specifications will be
+  returned), or nil (the actual specifier object will be returned).
+
+See `face-property' for more information.
+Fface-foreground-instance
+Return the instance of FACE's foreground in DOMAIN.
+
+FACE may be either a face object or a symbol representing a face.
+
+Normally DOMAIN will be a window or nil (meaning the selected window),
+  and an instance object describing how the foreground appears in that
+  particular window and buffer will be returned.
+
+See `face-property-instance' for more information.
+Fface-foreground-name
+Return the name of FACE's foreground color in DOMAIN.
+
+FACE may be either a face object or a symbol representing a face.
+
+Normally DOMAIN will be a window or nil (meaning the selected window),
+  and an instance object describing how the background appears in that
+  particular window and buffer will be returned.
+
+See `face-property-instance' for more information.
+Fset-face-foreground
+Change the foreground color of FACE to COLOR in LOCALE.
+
+FACE may be either a face object or a symbol representing a face.
+
+COLOR should be an instantiator (see `make-color-specifier'), a list of
+  instantiators, an alist of specifications (each mapping a locale to
+  an instantiator list), or a color specifier object.
+
+If COLOR is an alist, LOCALE must be omitted.  If COLOR is a
+  specifier object, LOCALE can be a locale, a locale type, 'all,
+  or nil; see `copy-specifier' for its semantics.  Otherwise LOCALE
+  specifies the locale under which the specified instantiator(s)
+  will be added, and defaults to 'global.
+
+See `set-face-property' for more information.
+Fface-background
+Return the background color of FACE in LOCALE, or nil if it is unspecified.
+
+FACE may be either a face object or a symbol representing a face.
+
+LOCALE may be a locale (the instantiators for that particular locale
+  will be returned), a locale type (the specifications for all locales
+  of that type will be returned), 'all (all specifications will be
+  returned), or nil (the actual specifier object will be returned).
+
+See `face-property' for more information.
+Fface-background-instance
+Return the instance of FACE's background in DOMAIN.
+
+FACE may be either a face object or a symbol representing a face.
+
+Normally DOMAIN will be a window or nil (meaning the selected window),
+  and an instance object describing how the background appears in that
+  particular window and buffer will be returned.
+
+See `face-property-instance' for more information.
+Fface-background-name
+Return the name of FACE's background color in DOMAIN.
+
+FACE may be either a face object or a symbol representing a face.
+
+Normally DOMAIN will be a window or nil (meaning the selected window),
+  and an instance object describing how the background appears in that
+  particular window and buffer will be returned.
+
+See `face-property-instance' for more information.
+Fset-face-background
+Change the background color of FACE to COLOR in LOCALE.
+
+FACE may be either a face object or a symbol representing a face.
+
+COLOR should be an instantiator (see `make-color-specifier'), a list of
+  instantiators, an alist of specifications (each mapping a locale to
+  an instantiator list), or a color specifier object.
+
+If COLOR is an alist, LOCALE must be omitted.  If COLOR is a
+  specifier object, LOCALE can be a locale, a locale type, 'all,
+  or nil; see `copy-specifier' for its semantics.  Otherwise LOCALE
+  specifies the locale under which the specified instantiator(s)
+  will be added, and defaults to 'global.
+
+See `set-face-property' for more information.
+Fface-background-pixmap
+Return the background pixmap of FACE in LOCALE, or nil if it is unspecified.
+This property is only used on window system devices.
+
+FACE may be either a face object or a symbol representing a face.
+
+LOCALE may be a locale (the instantiators for that particular locale
+  will be returned), a locale type (the specifications for all locales
+  of that type will be returned), 'all (all specifications will be
+  returned), or nil (the actual specifier object will be returned).
+
+See `face-property' for more information.
+Fface-background-pixmap-instance
+Return the instance of FACE's background pixmap in DOMAIN.
+
+FACE may be either a face object or a symbol representing a face.
+
+Normally DOMAIN will be a window or nil (meaning the selected window),
+  and an instance object describing how the background appears in that
+  particular window and buffer will be returned.
+
+See `face-property-instance' for more information.
+Fset-face-background-pixmap
+Change the background pixmap of FACE to PIXMAP in LOCALE.
+This property is only used on window system devices.
+
+FACE may be either a face object or a symbol representing a face.
+
+PIXMAP should be an instantiator (see `make-image-specifier'), a list
+  of instantiators, an alist of specifications (each mapping a locale
+  to an instantiator list), or an image specifier object.
+
+If PIXMAP is an alist, LOCALE must be omitted.  If PIXMAP is a
+  specifier object, LOCALE can be a locale, a locale type, 'all,
+  or nil; see `copy-specifier' for its semantics.  Otherwise LOCALE
+  specifies the locale under which the specified instantiator(s)
+  will be added, and defaults to 'global.
+
+See `set-face-property' for more information.
+Fface-display-table
+Return the display table of FACE in LOCALE.
+
+A vector (as returned by `make-display-table') will be returned.
+
+LOCALE may be a locale (the instantiators for that particular locale
+  will be returned), a locale type (the specifications for all locales
+  of that type will be returned), 'all (all specifications will be
+  returned), or nil (the actual specifier object will be returned).
+
+See `face-property' for more information.
+Fface-display-table-instance
+Return the instance of FACE's display table in DOMAIN.
+A vector (as returned by `make-display-table') will be returned.
+
+See `face-property-instance' for the semantics of the DOMAIN argument.
+Fset-face-display-table
+Change the display table of FACE to DISPLAY-TABLE in LOCALE.
+DISPLAY-TABLE should be a vector as returned by `make-display-table'.
+
+See `set-face-property' for the semantics of the LOCALE, TAG-SET, and
+  HOW-TO-ADD arguments.
+Fface-underline-p
+Return t if FACE is underlined in DOMAIN.
+See `face-property-instance' for the semantics of the DOMAIN argument.
+Fset-face-underline-p
+Change the underline property of FACE to UNDERLINE-P.
+UNDERLINE-P is normally a face-boolean instantiator; see
+ `make-face-boolean-specifier'.
+See `set-face-property' for the semantics of the LOCALE, TAG-SET, and
+ HOW-TO-ADD arguments.
+Fface-strikethru-p
+Return t if FACE is strikethru-d (i.e. struck through) in DOMAIN.
+See `face-property-instance' for the semantics of the DOMAIN argument.
+Fset-face-strikethru-p
+Change whether FACE is strikethru-d (i.e. struck through) in LOCALE.
+STRIKETHRU-P is normally a face-boolean instantiator; see
+ `make-face-boolean-specifier'.
+See `set-face-property' for the semantics of the LOCALE, TAG-SET, and
+ HOW-TO-ADD arguments.
+Fface-highlight-p
+Return t if FACE is highlighted in DOMAIN (TTY domains only).
+See `face-property-instance' for the semantics of the DOMAIN argument.
+Fset-face-highlight-p
+Change whether FACE is highlighted in LOCALE (TTY locales only).
+HIGHLIGHT-P is normally a face-boolean instantiator; see
+ `make-face-boolean-specifier'.
+See `set-face-property' for the semantics of the LOCALE, TAG-SET, and
+ HOW-TO-ADD arguments.
+Fface-dim-p
+Return t if FACE is dimmed in DOMAIN.
+See `face-property-instance' for the semantics of the DOMAIN argument.
+Fset-face-dim-p
+Change whether FACE is dimmed in LOCALE.
+DIM-P is normally a face-boolean instantiator; see
+ `make-face-boolean-specifier'.
+See `set-face-property' for the semantics of the LOCALE, TAG-SET, and
+ HOW-TO-ADD arguments.
+Fface-blinking-p
+Return t if FACE is blinking in DOMAIN (TTY domains only).
+See `face-property-instance' for the semantics of the DOMAIN argument.
+Fset-face-blinking-p
+Change whether FACE is blinking in LOCALE (TTY locales only).
+BLINKING-P is normally a face-boolean instantiator; see
+ `make-face-boolean-specifier'.
+See `set-face-property' for the semantics of the LOCALE, TAG-SET, and
+ HOW-TO-ADD arguments.
+Fface-reverse-p
+Return t if FACE is reversed in DOMAIN (TTY domains only).
+See `face-property-instance' for the semantics of the DOMAIN argument.
+Fset-face-reverse-p
+Change whether FACE is reversed in LOCALE (TTY locales only).
+REVERSE-P is normally a face-boolean instantiator; see
+ `make-face-boolean-specifier'.
+See `set-face-property' for the semantics of the LOCALE, TAG-SET, and
+ HOW-TO-ADD arguments.
+Fface-equal
+Return t if FACE1 and FACE2 will display in the same way in DOMAIN.
+See `face-property-instance' for the semantics of the DOMAIN argument.
+Fface-differs-from-default-p
+Return t if FACE will display differently from the default face in DOMAIN.
+See `face-property-instance' for the semantics of the DOMAIN argument.
+Ffrob-face-property
+Change the specifier for FACE's PROPERTY according to FUNC, in LOCALE.
+This function is ugly and messy and is primarily used as an internal
+helper function for `make-face-bold' et al., so you probably don't
+want to use it or read the rest of the documentation.  But if you do ...
+
+FUNC should be a function of two arguments (an instance and a device)
+that returns a modified name that is valid for the given device.
+If LOCALE specifies a valid domain (i.e. a window, frame, or device),
+this function instantiates the specifier over that domain, applies FUNC
+to the resulting instance, and adds the result back as an instantiator
+for that locale.  Otherwise, LOCALE should be a locale, locale type, or
+'all (defaults to 'all if omitted).  For each specification thusly
+included: if the locale given is a valid domain, FUNC will be
+iterated over all valid instantiators for the device of the domain
+until a non-nil result is found (if there is no such result, the
+first valid instantiator is used), and that result substituted for
+the specification; otherwise, the process just outlined is
+iterated over each existing device and the concatenated results
+substituted for the specification.
+
+DEVICE-TAGS is a list of tags that each device must match in order for
+the function to be called on it.
+Fmake-face-bold
+Make FACE bold in LOCALE, if possible.
+This will attempt to make the font bold for X/MSW locales and will set the
+highlight flag for TTY locales.
+
+If LOCALE is nil, omitted, or `all', this will attempt to frob all
+font specifications for FACE to make them appear bold.  Similarly, if
+LOCALE is a locale type, this frobs all font specifications for locales
+of that type.  If LOCALE is a particular locale, what happens depends on
+what sort of locale is given.  If you gave a device, frame, or window,
+then it's always possible to determine what the font actually will be,
+so this is determined and the resulting font is frobbed and added back as a
+specification for this locale.  If LOCALE is a buffer, however, you can't
+determine what the font will actually be unless there's actually a
+specification given for that particular buffer (otherwise, it depends
+on what window and frame the buffer appears in, and might not even be
+well-defined if the buffer appears multiple times in different places);
+therefore you will get an error unless there's a specification for the
+buffer.
+
+Finally, in some cases (specifically, when LOCALE is not a locale type),
+if the frobbing didn't actually make the font look any different
+(this happens, for example, if your font specification is already bold
+or has no bold equivalent), and currently looks like the font of the
+'default face, it is set to inherit from the 'bold face.  This is kludgy
+but it makes `make-face-bold' have more intuitive behavior in many
+circumstances.
+Fmake-face-italic
+Make FACE italic in LOCALE, if possible.
+This will attempt to make the font italic for X/MS Windows locales and
+will set the underline flag for TTY locales.  See `make-face-bold' for
+the semantics of the LOCALE argument and for more specifics on exactly
+how this function works.
+Fmake-face-bold-italic
+Make FACE bold and italic in LOCALE, if possible.
+This will attempt to make the font bold-italic for X/MS Windows
+locales and will set the highlight and underline flags for TTY
+locales.  See `make-face-bold' for the semantics of the LOCALE
+argument and for more specifics on exactly how this function works.
+Fmake-face-unbold
+Make FACE non-bold in LOCALE, if possible.
+This will attempt to make the font non-bold for X/MS Windows locales
+and will unset the highlight flag for TTY locales.  See
+`make-face-bold' for the semantics of the LOCALE argument and for more
+specifics on exactly how this function works.
+Fmake-face-unitalic
+Make FACE non-italic in LOCALE, if possible.
+This will attempt to make the font non-italic for X/MS Windows locales
+and will unset the underline flag for TTY locales.  See
+`make-face-bold' for the semantics of the LOCALE argument and for more
+specifics on exactly how this function works.
+Fmake-face-smaller
+Make the font of FACE be smaller, if possible.
+LOCALE works as in `make-face-bold' et al., but the ``inheriting-
+from-the-bold-face'' operations described there are not done
+because they don't make sense in this context.
+Fmake-face-larger
+Make the font of FACE be larger, if possible.
+See `make-face-smaller' for the semantics of the LOCALE argument.
+Finvert-face
+Swap the foreground and background colors of the face.
+Fface-ascent
+Return the ascent of FACE in DOMAIN.
+See `face-property-instance' for the semantics of the DOMAIN argument.
+Fface-descent
+Return the descent of FACE in DOMAIN.
+See `face-property-instance' for the semantics of the DOMAIN argument.
+Fface-width
+Return the width of FACE in DOMAIN.
+See `face-property-instance' for the semantics of the DOMAIN argument.
+Fface-height
+Return the height of FACE in DOMAIN.
+See `face-property-instance' for the semantics of the DOMAIN argument.
+Fface-proportional-p
+Return t if FACE is proportional in DOMAIN.
+See `face-property-instance' for the semantics of the DOMAIN argument.
+Fget-frame-background-mode
+Detect background mode for FRAME.
+Fextract-custom-frame-properties
+Return a plist with the frame properties of FRAME used by custom.
+Fface-spec-set
+Set FACE's face attributes according to the first matching entry in SPEC.
+If optional FRAME is non-nil, set it for that frame only.
+If it is nil, then apply SPEC to each frame individually.
+See `defface' for information about SPEC.
+Fface-display-set
+Set FACE to the attributes to the first matching entry in SPEC.
+Iff optional FRAME is non-nil, set it for that frame only.
+See `defface' for information about SPEC.
+Vdefault-custom-frame-properties
+The frame properties used for the global faces.
+Frames not matching these properties should have frame local faces.
+The value should be nil, if uninitialized, or a plist otherwise.
+See `defface' for a list of valid keys and values for the plist.
+Fget-custom-frame-properties
+Return a plist with the frame properties of FRAME used by custom.
+If FRAME is nil, return the default frame properties.
+Fface-spec-update-all-matching
+Update all entries in the face spec that could match display to
+have the entries from the new plist and return the new spec.
+Fface-spec-set-match-display
+Return non-nil if DISPLAY matches FRAME.
+DISPLAY is part of a spec such as can be used in `defface'.
+If FRAME is nil or omitted, the selected frame is used.
+Frelevant-custom-frames
+List of frames whose custom properties differ from the default.
+Finitialize-custom-faces
+Initialize all custom faces for FRAME.
+If FRAME is nil or omitted, initialize them for all frames.
+Fcustom-initialize-frame
+Initialize frame-local custom faces for FRAME if necessary.
+Fstartup-initialize-custom-faces
+Reset faces created by defface.  Only called at startup.
+Don't use this function in your program.
+Fmake-empty-face
+Like `make-face', but doesn't query the resource database.
+Finit-face-from-resources
+Initialize FACE from the resource database.
+If LOCALE is specified, it should be a frame, device, or 'global, and
+the face will be resourced over that locale.  Otherwise, the face will
+be resourced over all possible locales (i.e. all frames, all devices,
+and 'global).
+Finit-other-random-faces
+Initialize the colors and fonts of the bold, italic, bold-italic,
+zmacs-region, list-mode-item-selected, highlight, primary-selection,
+secondary-selection, and isearch faces when each device is created.  If
+you want to add code to do stuff like this, use the create-device-hook.
+Fset-face-stipple
+Change the stipple pixmap of FACE to PIXMAP.
+This is an Emacs compatibility function; consider using
+set-face-background-pixmap instead.
+
+PIXMAP should be a string, the name of a file of pixmap data.
+The directories listed in the variables `x-bitmap-file-path' and
+`mswindows-bitmap-file-path' under X and MS Windows respectively
+are searched.
+
+Alternatively, PIXMAP may be a list of the form (WIDTH HEIGHT
+DATA) where WIDTH and HEIGHT are the size in pixels, and DATA is
+a string, containing the raw bits of the bitmap.  XBM data is
+expected in this case, other types of image data will not work.
+
+If the optional FRAME argument is provided, change only
+in that frame; otherwise change each frame.
+Fmake-image-specifier
+Return a new `image' specifier object with the specification list SPEC-LIST.
+SPEC-LIST can be a list of specifications (each of which is a cons of a
+locale and a list of instantiators), a single instantiator, or a list
+of instantiators.  See `make-specifier' for more information about
+specifiers.
+
+An image specifier is used for images (pixmaps, widgets and the like).
+It is used to describe the actual image in a glyph.  It is instanced
+as an image-instance.  Note that "image" as used in XEmacs does not
+actually refer to what the term "image" normally means (a picture,
+e.g. in .GIF or .JPG format, and called a "pixmap" in XEmacs), but
+includes all types of graphical elements, including pixmaps, widgets
+(buttons, sliders, text fields, etc.) and even strings of text.
+
+Note that, in practice, you rarely, if ever, need to actually create
+an image specifier! (The function `make-image-specifier' exists mainly
+for completeness.) Pretty much the only use for image specifiers is to
+control how glyphs are displayed, and the image specifier associated
+with a glyph (the `image' property of a glyph) is created
+automatically when a glyph is created (see `make-glyph') and need not
+(and cannot, for that matter) ever be changed.  In fact, the design
+decision to create a separate image specifier type, rather than make
+glyphs themselves be specifiers, is debatable -- the other properties
+of glyphs are rarely used and could conceivably have been incorporated
+into the glyph's instantiator.  The rarely used glyph types (buffer,
+pointer, icon) could also have been incorporated into the instantiator.
+
+Image instantiators come in many formats: `xbm', `xpm', `gif', `jpeg',
+etc.  This describes the format of the data describing the image.  The
+resulting image instances also come in many types -- `mono-pixmap',
+`color-pixmap', `text', `pointer', etc.  This refers to the behavior of
+the image and the sorts of places it can appear. (For example, a
+color-pixmap image has fixed colors specified for it, while a
+mono-pixmap image comes in two unspecified shades "foreground" and
+"background" that are determined from the face of the glyph or
+surrounding text; a text image appears as a string of text and has an
+unspecified foreground, background, and font; a pointer image behaves
+like a mono-pixmap image but can only be used as a mouse pointer
+[mono-pixmap images cannot be used as mouse pointers]; etc.) It is
+important to keep the distinction between image instantiator format and
+image instance type in mind.  Typically, a given image instantiator
+format can result in many different image instance types (for example,
+`xpm' can be instanced as `color-pixmap', `mono-pixmap', or `pointer';
+whereas `cursor-font' can be instanced only as `pointer'), and a
+particular image instance type can be generated by many different
+image instantiator formats (e.g.  `color-pixmap' can be generated by `xpm',
+`gif', `jpeg', etc.).
+
+See `make-image-instance' for a more detailed discussion of image
+instance types.
+
+An image instantiator should be a string or a vector of the form
+
+ [FORMAT :KEYWORD VALUE ...]
+
+i.e. a format symbol followed by zero or more alternating keyword-value
+pairs.  FORMAT should be one of
+
+'nothing
+   Don't display anything; no keywords are valid for this.
+   Can only be instanced as `nothing'.
+'string
+   Display this image as a text string.  Can only be instanced
+   as `text', although support for instancing as `mono-pixmap'
+   and `color-pixmap' should be added.
+'formatted-string
+   Display this image as a text string, with replaceable fields;
+   not currently implemented. (It is, instead, equivalent to `string'.)
+'xbm
+   An X bitmap; only if X or MS Windows support was compiled into this
+   XEmacs.  Can be instanced as `mono-pixmap', `color-pixmap', or `pointer'.
+'xpm
+   An XPM pixmap; only if XPM support was compiled into this XEmacs.
+   Can be instanced as `color-pixmap', `mono-pixmap', or `pointer'.
+'xface
+   An X-Face bitmap, used to encode people's faces in e-mail messages;
+   only if X-Face support was compiled into this XEmacs.  Can be
+   instanced as `mono-pixmap', `color-pixmap', or `pointer'.
+'gif
+   A GIF87 or GIF89 image; only if GIF support was compiled into this
+   XEmacs.  NOTE: only the first frame of animated gifs will be displayed.
+   Can be instanced as `color-pixmap'.
+'jpeg
+   A JPEG image; only if JPEG support was compiled into this XEmacs.
+   Can be instanced as `color-pixmap'.
+'png
+   A PNG image; only if PNG support was compiled into this XEmacs.
+   Can be instanced as `color-pixmap'.
+'tiff
+   A TIFF image; only if TIFF support was compiled into this XEmacs.
+   Can be instanced as `color-pixmap'.
+'bmp
+   A MS Windows BMP image; only if MS Windows support was compiled into
+   this XEmacs.  Can be instanced as `color-pixmap'.
+'cursor-font
+   One of the standard cursor-font names, such as "watch" or
+   "right_ptr" under X.  Under X, this is, more specifically, any
+   of the standard cursor names from appendix B of the Xlib manual
+   [also known as the file <X11/cursorfont.h>] minus the XC_ prefix.
+   On other window systems, the valid names will be specific to the
+   type of window system.  Can only be instanced as `pointer'.
+'mswindows-resource
+   An MS Windows pointer resource.  Specifies a resource to retrieve
+   directly from the system (an OEM resource) or from a file, particularly
+   an executable file.  If the resource is to be retrieved from a file, use
+   :file and optionally :resource-id.  Otherwise use :resource-id.  Always
+   specify :resource-type to specify the type (cursor, bitmap or icon) of
+   the resource.  Possible values for :resource-id are listed below.  Can
+   be instanced as `pointer' or `color-pixmap'.
+'font
+   A glyph from a font; i.e. the name of a font, and glyph index into it
+   of the form "FONT fontname index [[mask-font] mask-index]".
+   Currently can only be instanced as `pointer', although this should
+   probably be fixed.
+'subwindow
+   An embedded windowing system window.  Can only be instanced as
+   `subwindow'.
+'button
+   A button widget; either a push button, radio button or toggle button.
+   Can only be instanced as `widget'.
+'combo-box
+   A drop list of selectable items in a widget, for editing text.
+   Can only be instanced as `widget'.
+'edit-field
+   A text editing widget.  Can only be instanced as `widget'.
+'label
+   A static, text-only, widget; for displaying text.  Can only be instanced
+   as `widget'.
+'layout
+   A widget for controlling the positioning of children underneath it.
+   Through the use of nested layouts, a widget hierarchy can be created
+   which can have the appearance of any standard dialog box or similar
+   arrangement; all of this is counted as one "glyph" and could appear
+   in many of the places that expect a single glyph.  Can only be instanced
+   as `widget'.
+'native-layout
+   The native version of a layout widget.  #### Document me better!
+   Can only be instanced as `widget'.
+'progress-gauge
+   A sliding widget, for showing progress.  Can only be instanced as
+   `widget'.
+'tab-control
+   A tab widget; a series of user selectable tabs.  Can only be instanced
+   as `widget'.
+'tree-view
+   A folding widget.  Can only be instanced as `widget'.
+'scrollbar
+   A scrollbar widget.  Can only be instanced as `widget'.
+'autodetect
+   XEmacs tries to guess what format the data is in.  If X support
+   exists, the data string will be checked to see if it names a filename.
+   If so, and this filename contains XBM or XPM data, the appropriate
+   sort of pixmap or pointer will be created. [This includes picking up
+   any specified hotspot or associated mask file.] Otherwise, if `pointer'
+   is one of the allowable image-instance types and the string names a
+   valid cursor-font name, the image will be created as a pointer.
+   Otherwise, the image will be displayed as text.  If no X support
+   exists, the image will always be displayed as text.  Can be instanced as
+   `mono-pixmap', `color-pixmap', `pointer', or `text'.
+'inherit
+   Inherit from the background-pixmap property of a face.  Can only be
+   instanced as `mono-pixmap'.
+
+The valid keywords are:
+
+:data
+   Inline data.  For most formats above, this should be a string.  For
+   XBM images, this should be a list of three elements: width, height, and
+   a string of bit data.  This keyword is valid for all of the bitmap/pixmap
+   formats, as well as `string', `formatted-string', `font', `cursor-font',
+   and `autodetect'.
+:file
+   Data is contained in a file.  The value is the name of this file.
+   If both :data and :file are specified, the image is created from
+   what is specified in :data and the string in :file becomes the
+   value of the `image-instance-file-name' function when applied to
+   the resulting image-instance.  This keyword is valid for all of the
+   bitmap/pixmap formats as well as `mswindows-resource'.
+:foreground
+:background
+   For `xbm', `xface', `cursor-font', `widget' and `font'.  These keywords
+   allow you to explicitly specify foreground and background colors.
+   The argument should be anything acceptable to `make-color-instance'.
+   This will cause what would be a `mono-pixmap' to instead be colorized
+   as a two-color color-pixmap, and specifies the foreground and/or
+   background colors for a pointer instead of black and white.
+:mask-data
+   For `xbm' and `xface'.  This specifies a mask to be used with the
+   bitmap.  The format is a list of width, height, and bits, like for
+   :data.
+:mask-file
+   For `xbm' and `xface'.  This specifies a file containing the mask data.
+   If neither a mask file nor inline mask data is given for an XBM image,
+   and the XBM image comes from a file, XEmacs will look for a mask file
+   with the same name as the image file but with "Mask" or "msk"
+   appended.  For example, if you specify the XBM file "left_ptr"
+   [usually located in "/usr/include/X11/bitmaps"], the associated
+   mask file "left_ptrmsk" will automatically be picked up.
+:hotspot-x
+:hotspot-y
+   For `xbm' and `xface'.  These keywords specify a hotspot if the image
+   is instantiated as a `pointer'.  Note that if the XBM image file
+   specifies a hotspot, it will automatically be picked up if no
+   explicit hotspot is given.
+:color-symbols
+   Only for `xpm'.  This specifies an alist that maps strings
+   that specify symbolic color names to the actual color to be used
+   for that symbolic color (in the form of a string or a color-specifier
+   object).  If this is not specified, the contents of `xpm-color-symbols'
+   are used to generate the alist.
+:resource-id
+   Only for `mswindows-resource'.  This must be either an integer (which
+   directly specifies a resource number) or a string.  Valid strings are
+
+   -- For bitmaps:
+
+   "close", "uparrow", "dnarrow", "rgarrow", "lfarrow",
+   "reduce", "zoom", "restore", "reduced", "zoomd",
+   "restored", "uparrowd", "dnarrowd", "rgarrowd", "lfarrowd",
+   "mnarrow", "combo", "uparrowi", "dnarrowi", "rgarrowi",
+   "lfarrowi", "size", "btsize", "check", "checkboxes", and
+   "btncorners".
+
+   -- For cursors:
+
+   "normal", "ibeam", "wait", "cross", "up", "sizenwse",
+   "sizenesw", "sizewe", "sizens", "sizeall", and "no".
+
+   -- For icons:
+
+   "sample", "hand", "ques", "bang", "note", and "winlogo".
+:resource-type
+   Only for `mswindows-resource'.  This must be a symbol, either `cursor',
+   `icon', or `bitmap', specifying the type of resource to be retrieved.
+:face
+   Only for `inherit'.  This specifies the face to inherit from.
+   For widgets this also specifies the face to use for display. It defaults
+   to gui-element-face.
+
+Keywords accepted as menu item specs are also accepted by widgets.
+These are `:selected', `:active', `:suffix', `:keys', `:style',
+`:filter', `:config', `:included', `:key-sequence', `:accelerator',
+`:label' and `:callback'.
+
+If instead of a vector, the instantiator is a string, it will be
+converted into a vector by looking it up according to the specs in the
+`console-type-image-conversion-list' (q.v.) for the console type of
+the domain (usually a window; sometimes a frame or device) over which
+the image is being instantiated.
+
+If the instantiator specifies data from a file, the data will be read
+in at the time that the instantiator is added to the image (which may
+be well before when the image is actually displayed), and the
+instantiator will be converted into one of the inline-data forms, with
+the filename retained using a :file keyword.  This implies that the
+file must exist when the instantiator is added to the image, but does
+not need to exist at any other time (e.g. it may safely be a temporary
+file).
+
+Vbuilt-in-glyph-specifiers
+A list of the built-in glyph properties that are specifiers.
+Fglyph-property
+Return GLYPH's value of PROPERTY in LOCALE.
+
+If LOCALE is omitted, the GLYPH's actual value for PROPERTY will be
+  returned.  For built-in properties, this will be a specifier object
+  of a type appropriate to the property (e.g. a font or color
+  specifier).  For other properties, this could be anything.
+
+If LOCALE is supplied, then instead of returning the actual value,
+  the specification(s) for the given locale or locale type will
+  be returned.  This will only work if the actual value of
+  PROPERTY is a specifier (this will always be the case for built-in
+  properties, but not or not may apply to user-defined properties).
+  If the actual value of PROPERTY is not a specifier, this value
+  will simply be returned regardless of LOCALE.
+
+The return value will be a list of instantiators (e.g. strings
+  specifying a font or color name), or a list of specifications, each
+  of which is a cons of a locale and a list of instantiators.
+  Specifically, if LOCALE is a particular locale (a buffer, window,
+  frame, device, or 'global), a list of instantiators for that locale
+  will be returned.  Otherwise, if LOCALE is a locale type (one of
+  the symbols 'buffer, 'window, 'frame, 'device, 'device-class, or
+  'device-type), the specifications for all locales of that type will
+  be returned.  Finally, if LOCALE is 'all, the specifications for all
+  locales of all types will be returned.
+
+The specifications in a specifier determine what the value of
+  PROPERTY will be in a particular "domain" or set of circumstances,
+  which is typically a particular Emacs window along with the buffer
+  it contains and the frame and device it lies within.  The value
+  is derived from the instantiator associated with the most specific
+  locale (in the order buffer, window, frame, device, and 'global)
+  that matches the domain in question.  In other words, given a domain
+  (i.e. an Emacs window, usually), the specifier for PROPERTY will first
+  be searched for a specification whose locale is the buffer contained
+  within that window; then for a specification whose locale is the window
+  itself; then for a specification whose locale is the frame that the
+  window is contained within; etc.  The first instantiator that is
+  valid for the domain (usually this means that the instantiator is
+  recognized by the device [i.e. the X server or TTY device] that the
+  domain is on.  The function `glyph-property-instance' actually does
+  all this, and is used to determine how to display the glyph.
+
+See `set-glyph-property' for the built-in property-names.
+Fconvert-glyph-property-into-specifier
+Convert PROPERTY on GLYPH into a specifier, if it's not already.
+Fglyph-property-instance
+Return the instance of GLYPH's PROPERTY in the specified DOMAIN.
+
+Under most circumstances, DOMAIN will be a particular window,
+  and the returned instance describes how the specified property
+  actually is displayed for that window and the particular buffer
+  in it.  Note that this may not be the same as how the property
+  appears when the buffer is displayed in a different window or
+  frame, or how the property appears in the same window if you
+  switch to another buffer in that window; and in those cases,
+  the returned instance would be different.
+
+DOMAIN defaults to the selected window if omitted.
+
+DOMAIN can be a frame or device, instead of a window.  The value
+  returned for a such a domain is used in special circumstances
+  when a more specific domain does not apply; for example, a frame
+  value might be used for coloring a toolbar, which is conceptually
+  attached to a frame rather than a particular window.  The value
+  is also useful in determining what the value would be for a
+  particular window within the frame or device, if it is not
+  overridden by a more specific specification.
+
+If PROPERTY does not name a built-in property, its value will
+  simply be returned unless it is a specifier object, in which case
+  it will be instanced using `specifier-instance'.
+
+Optional arguments DEFAULT and NO-FALLBACK are the same as in
+  `specifier-instance'.
+Fset-glyph-property
+Change a property of a GLYPH.
+
+NOTE: If you want to remove a property from a glyph, use
+  `remove-glyph-property' rather than attempting to set a value of nil
+   for the property.
+
+For built-in properties, the actual value of the property is a
+  specifier and you cannot change this; but you can change the
+  specifications within the specifier, and that is what this function
+  will do.  For user-defined properties, you can use this function
+  to either change the actual value of the property or, if this value
+  is a specifier, change the specifications within it.
+
+If PROPERTY is a built-in property, the specifications to be added to
+  this property can be supplied in many different ways:
+
+  -- If VALUE is a simple instantiator (e.g. a string naming a font or
+     color) or a list of instantiators, then the instantiator(s) will
+     be added as a specification of the property for the given LOCALE
+     (which defaults to 'global if omitted).
+  -- If VALUE is a list of specifications (each of which is a cons of
+     a locale and a list of instantiators), then LOCALE must be nil
+     (it does not make sense to explicitly specify a locale in this
+     case), and specifications will be added as given.
+  -- If VALUE is a specifier (as would be returned by `glyph-property'
+     if no LOCALE argument is given), then some or all of the
+     specifications in the specifier will be added to the property.
+     In this case, the function is really equivalent to
+     `copy-specifier' and LOCALE has the same semantics (if it is
+     a particular locale, the specification for the locale will be
+     copied; if a locale type, specifications for all locales of
+     that type will be copied; if nil or 'all, then all
+     specifications will be copied).
+
+HOW-TO-ADD should be either nil or one of the symbols 'prepend,
+  'append, 'remove-tag-set-prepend, 'remove-tag-set-append, 'remove-locale,
+  'remove-locale-type, or 'remove-all.  See `copy-specifier' and
+  `add-spec-to-specifier' for a description of what each of
+  these means.  Most of the time, you do not need to worry about
+  this argument; the default behavior usually is fine.
+
+In general, it is OK to pass an instance object (e.g. as returned
+  by `glyph-property-instance') as an instantiator in place of
+  an actual instantiator.  In such a case, the instantiator used
+  to create that instance object will be used (for example, if
+  you set a font-instance object as the value of the 'font
+  property, then the font name used to create that object will
+  be used instead).  If some cases, however, doing this
+  conversion does not make sense, and this will be noted in
+  the documentation for particular types of instance objects.
+
+If PROPERTY is not a built-in property, then this function will
+  simply set its value if LOCALE is nil.  However, if LOCALE is
+  given, then this function will attempt to add VALUE as the
+  instantiator for the given LOCALE, using `add-spec-to-specifier'.
+  If the value of the property is not a specifier, it will
+  automatically be converted into a 'generic specifier.
+
+
+The following symbols have predefined meanings:
+
+ image		The image used to display the glyph.
+
+ baseline	Percent above baseline that glyph is to be
+		displayed.
+
+ contrib-p	Whether the glyph contributes to the
+		height of the line it's on.
+
+ face		Face of this glyph (*not* a specifier).
+Fremove-glyph-property
+Remove a property from a glyph.
+For built-in properties, this is analogous to `remove-specifier'.
+See `remove-specifier' for the meaning of the LOCALE, TAG-SET, and EXACT-P
+  arguments.
+Fglyph-face
+Return the face of GLYPH.
+Fset-glyph-face
+Change the face of GLYPH to FACE.
+Fglyph-image
+Return the image of GLYPH in LOCALE, or nil if it is unspecified.
+
+LOCALE may be a locale (the instantiators for that particular locale
+  will be returned), a locale type (the specifications for all locales
+  of that type will be returned), 'all (all specifications will be
+  returned), or nil (the actual specifier object will be returned).
+
+See `glyph-property' for more information.
+Fglyph-image-instance
+Return the instance of GLYPH's image in DOMAIN.
+
+Normally DOMAIN will be a window or nil (meaning the selected window),
+  and an instance object describing how the image appears in that
+  particular window and buffer will be returned.
+
+See `glyph-property-instance' for more information.
+Fglyph-image-property
+Return property PROP of the instance of GLYPH's image in DOMAIN.
+
+Normally DOMAIN will be a window or nil (meaning the selected window).
+The value returned is dependent on the image instance type.
+Fset-glyph-image
+Change the image of GLYPH in LOCALE.
+
+SPEC should be an instantiator (a string or vector; see
+  `make-image-specifier' for a description of possible values here),
+  a list of (possibly tagged) instantiators, an alist of specifications
+  (each mapping a locale to an instantiator list), or an image specifier
+  object.
+
+If SPEC is an alist, LOCALE must be omitted.  If SPEC is a
+  specifier object, LOCALE can be a locale, a locale type, 'all,
+  or nil; see `copy-specifier' for its semantics.  Otherwise LOCALE
+  specifies the locale under which the specified instantiator(s)
+  will be added, and defaults to 'global.
+
+See `set-glyph-property' for more information.
+Fglyph-contrib-p
+Return whether GLYPH contributes to its line height.
+
+LOCALE may be a locale (the instantiators for that particular locale
+  will be returned), a locale type (the specifications for all locales
+  of that type will be returned), 'all (all specifications will be
+  returned), or nil (the actual specifier object will be returned).
+
+See `glyph-property' for more information.
+Fglyph-contrib-p-instance
+Return the instance of GLYPH's 'contrib-p property in DOMAIN.
+
+Normally DOMAIN will be a window or nil (meaning the selected window),
+  and an instance object describing what the 'contrib-p property is in
+  that particular window and buffer will be returned.
+
+See `glyph-property-instance' for more information.
+Fset-glyph-contrib-p
+Change the contrib-p property of GLYPH in LOCALE.
+
+SPEC should be an instantiator (t or nil), a list of (possibly
+  tagged) instantiators, an alist of specifications (each mapping a
+  locale to an instantiator list), or a boolean specifier object.
+
+If SPEC is an alist, LOCALE must be omitted.  If SPEC is a
+  specifier object, LOCALE can be a locale, a locale type, 'all,
+  or nil; see `copy-specifier' for its semantics.  Otherwise LOCALE
+  specifies the locale under which the specified instantiator(s)
+  will be added, and defaults to 'global.
+
+See `set-glyph-property' for more information.
+Fglyph-baseline
+Return the baseline of GLYPH in LOCALE, or nil if it is unspecified.
+
+LOCALE may be a locale (the instantiators for that particular locale
+  will be returned), a locale type (the specifications for all locales
+  of that type will be returned), 'all (all specifications will be
+  returned), or nil (the actual specifier object will be returned).
+
+See `glyph-property' for more information.
+Fglyph-baseline-instance
+Return the instance of GLYPH's baseline in DOMAIN.
+
+Normally DOMAIN will be a window or nil (meaning the selected window),
+  and an integer or nil (specifying the baseline in that particular
+  window and buffer) will be returned.
+
+See `glyph-property-instance' for more information.
+Fset-glyph-baseline
+Change the baseline of GLYPH to SPEC in LOCALE.
+
+SPEC should be an instantiator (an integer [a percentage above the
+  baseline of the line the glyph is on] or nil), a list of (possibly
+  tagged) instantiators, an alist of specifications (each mapping a
+  locale to an instantiator list), or a generic specifier object.
+
+If SPEC is an alist, LOCALE must be omitted.  If SPEC is a
+  specifier object, LOCALE can be a locale, a locale type, 'all,
+  or nil; see `copy-specifier' for its semantics.  Otherwise LOCALE
+  specifies the locale under which the specified instantiator(s)
+  will be added, and defaults to 'global.
+
+See `set-glyph-property' for more information.
+Fmake-glyph
+Create a new glyph of type TYPE.
+
+A glyph in XEmacs does NOT refer to a single unit of textual display (the
+XEmacs term for this is "rune"), but rather is an object encapsulating
+a graphical element, such as an image or widget (an element such as a
+button or text field; "widget" is the term for this under X Windows,
+and it's called a "control" under MS Windows).  This graphical element
+could appear in a buffer, a margin, a gutter, or a toolbar, or as a mouse
+pointer or an icon, for example.
+
+Creating a glyph using `make-glyph' does not specify *where* the glyph
+will be used, but it does specify *what* the glyph will look like.  In
+particular, SPEC-LIST is used to specify this, and it's used to
+initialize the glyph's `image' property, which is an image
+specifier. (Note that "image" as used in the context of a glyph's
+`image' property or in the terms "image specifier", "image
+instantiator", or "image instance" does not refer to what people
+normally think of as an image (which in XEmacs is called a
+"pixmap"), but to any graphical element -- a pixmap, a widget, or
+even a block of text, when used in the places that call for a glyph.)
+The format of the SPEC-LIST is typically an image instantiator (a
+string or a vector; see `make-image-specifier' for a detailed description
+of the valid image instantiators), but can also be a list of such
+instantiators (each one in turn is tried until an image is
+successfully produced), a cons of a locale (frame, buffer, etc.)  and
+an instantiator, a list of such conses, or any other form accepted by
+`canonicalize-spec-list'.
+
+If you're not familiar with specifiers, you should be in order to
+understand how glyphs work.  The clearest introduction to specifiers
+is in the Lispref manual, available under Info. (Choose
+Help->Info->Info Contents on the menubar or type \[info].) You can
+also see `make-specifier' for a capsule summary.  What's important to
+keep in mind is that a specifier lets you set a different value for
+any particular buffer, window, frame, device, or console.  This allows
+for a great deal of flexibility; in particular, only one global glyph
+needs to exist for a particular purpose (e.g. the icon used to represent
+an iconified frame, the mouse pointer used over particular areas of a
+frame, etc.), and in these cases you do not create your own glyph, but
+rather modify the existing one.
+
+As well as using SPEC-LIST to initialize the glyph, you can set
+specifications using `set-glyph-image'.  Note that, due to a possibly
+questionable historical design decision, a glyph itself is not
+actually a specifier, but rather is an object containing an image
+specifier (as well as other, seldom-used properties).  Therefore, you
+cannot set or access specifications for the glyph's image by directly
+using `set-specifier', `specifier-instance' or the like on the glyph;
+instead use them on `(glyph-image GLYPH)' or use the convenience
+functions `set-glyph-image', `glyph-image-instance', and
+`glyph-image'.
+
+Once you have created a glyph, you specify where it will be used as follows:
+
+-- To insert a glyph into a buffer, create an extent in the buffer and then
+   use `set-extent-begin-glyph' or `set-extent-end-glyph' to set a glyph
+   to be displayed at the corresponding edge of the extent. (It is common
+   to create zero-width extents for this purpose.)
+
+-- To insert a glyph into the left or right margin of a buffer, first
+   make sure the margin is visible by setting a value for the specifiers
+   `left-margin-width' or `right-margin-width'. (Not strictly necessary
+   when using margin glyphs with layout policy `whitespace'.) Then follow
+   the same procedure above for inserting a glyph in a buffer, and then
+   set a non-default layout policy for the glyph using
+   `set-extent-begin-glyph-layout' or `set-extent-end-glyph-layout'.
+   Alternatively, use the high-level annotations API (see
+   `make-annotation'). (In point of fact, you can also use the annotations
+   API for glyphs in a buffer, by setting a layout policy of `text'.)
+
+-- To insert a glyph into the modeline, just put the glyph directly as
+   one of the modeline elements. (Unfortunately you can't currently
+   put a begin glyph or end glyph on one of the modeline extents --
+   they're ignored.)
+
+-- To insert a glyph into a toolbar, specify it as part of a toolbar
+   instantiator (typically set on the specifier `default-toolbar').
+   See `default-toolbar' for more information. (Note that it is standard
+   practice to use a symbol in place of the glyph list in the toolbar
+   instantiator; the symbol is evalled to get the glyph list.  This
+   facilitates both creating the toolbar instantiator and modifying
+   individual glyphs in a toolbar later on.  For example, you can
+   change the way that the Mail toolbar button looks by modifying the
+   value of the variable `toolbar-mail-icon' (in general, `toolbar-*-icon')
+   and then calling `(set-specifier-dirty-flag default-toolbar)'.
+   (#### Unfortunately this doesn't quite work the way it should; the
+   change will appear in new frames, but not existing ones.
+
+-- To insert a glyph into a gutter, create or modify a gutter instantiator
+   (typically set on the specifier `default-gutter').  Gutter instantiators
+   consist of strings or lists of strings, so to insert a glyph, create an
+   extent over the string, and use `set-extent-begin-glyph' or
+   `set-extent-end-glyph' to set a glyph to be displayed at the corresponding
+   edge of the extent, just like for glyphs in a buffer.
+
+-- To use a glyph as the icon for a frame, you do not actually create a new
+   glyph; rather, you change the specifications for the existing glyph
+   `frame-icon-glyph'. (Remember that, because of the specifier nature of
+   glyphs, you can set different values for any particular buffer or frame.)
+
+-- To use a glyph as the mouse pointer, in general you do not create a
+   new glyph, but rather you change the specifications of various existing
+   glyphs, such as `text-pointer-glyph' for the pointer used over text,
+   `modeline-pointer-glyph' for the pointer used over the modeline, etc.
+   Do an apropos over `*-pointer-glyph' to find all of them. (Note also
+   that you can temporarily set the mouse pointer to some specific shape
+   by using `set-frame-pointer', which takes an image instance, as obtained
+   from calling `glyph-image-instance' on a glyph of type `pointer' --
+   either one of the above-mentioned variables or one you created yourself.
+   (See below for what it means to create a glyph of type `pointer'.)
+   This pointer will last only until the next mouse motion event is
+   processed or certain other things happen, such as creating or deleting
+   a window. (In fact, the above-mentioned pointer glyph variables are
+   implemented as part of the default handler for mouse motion events.
+   If you want to customize this behavior, take a look at `mode-motion-hook',
+   or `mouse-motion-handler' if you really want to get low-level.)
+
+-- To use a glyph to control the shape of miscellaneous redisplay effects
+   such as the truncation and continuation markers, set the appropriate
+   existing glyph variables, as for icons and pointers above.  See
+   `continuation-glyph', `control-arrow-glyph', `hscroll-glyph',
+   `invisible-text-glyph', `octal-escape-glyph', and `truncation-glyph'.
+   See also `overlay-arrow-string', an odd redisplay leftover which can
+   be set to a glyph you created, and will cause the glyph to be displayed
+   on top of the text position specified in the marker stored in
+   `overlay-arrow-position'.
+
+-- To use a glyph in a display table (i.e. to control the appearance of
+   any individual character), create the appropriate character glyphs
+   and then set a specification for the specifier `current-display-table',
+   which controls the appearance of characters.  You can also set an
+   overriding display table for use with text displayed in a particular
+   face; see `set-face-display-table' and `make-display-table'.
+   #### Note: Display tables do not currently support general Mule
+   characters.  They will be overhauled at some point to support this
+   and to provide other features required under Mule.
+
+-- To use a glyph as the background pixmap of a face: Note that the
+   background pixmap of a face is actually an image specifier -- probably
+   the only place in XEmacs where an image specifier occurs outside of
+   a glyph.  Similarly to how the glyph's image specifier works, you
+   don't create your own image specifier, but rather add specifications
+   to the existing one (using `set-face-background-pixmap').  Note that
+   the image instance that is generated in order to actually display the
+   background pixmap is of type `mono-pixmap', meaning that it's a two-color
+   image and the foreground and background of the image get filled in with
+   the corresponding colors from the face.
+
+It is extremely rare that you will ever have to specify a value for TYPE,
+which should be one of `buffer' (used for glyphs in an extent, the modeline,
+the toolbar, or elsewhere in a buffer), `pointer' (used for the mouse-pointer),
+or `icon' (used for a frame's icon), and defaults to `buffer'.  The only cases
+where it needs to be specified is when creating icon or pointer glyphs, and
+in both cases the necessary glyphs have already been created at startup and
+are accessed through the appropriate variables, e.g. `text-pointer-glyph'
+(or in general, `*-pointer-glyph') and `frame-icon-glyph'.
+Fbuffer-glyph-p
+Return t if OBJECT is a glyph of type `buffer'.
+Fpointer-glyph-p
+Return t if OBJECT is a glyph of type `pointer'.
+Ficon-glyph-p
+Return t if OBJECT is a glyph of type `icon'.
+Fmake-pointer-glyph
+Return a new `pointer-glyph' object with the specification list SPEC-LIST.
+This is equivalent to calling `make-glyph', specifying a type of `pointer'.
+See `make-glyph' for more information.
+
+It is extremely unlikely that you will ever need to create a pointer glyph.
+Instead, you probably want to be calling `set-glyph-image' on an existing
+glyph, e.g. `text-pointer-glyph'.
+Fmake-icon-glyph
+Return a new `icon-glyph' object with the specification list SPEC-LIST.
+This is equivalent to calling `make-glyph', specifying a type of `icon'.
+See `make-glyph' for more information.
+
+It is extremely unlikely that you will ever need to create a icon glyph.
+Instead, you probably want to be calling `set-glyph-image' on
+`frame-icon-glyph'.
+Fnothing-image-instance-p
+Return t if OBJECT is an image instance of type `nothing'.
+Ftext-image-instance-p
+Return t if OBJECT is an image instance of type `text'.
+Fmono-pixmap-image-instance-p
+Return t if OBJECT is an image instance of type `mono-pixmap'.
+Fcolor-pixmap-image-instance-p
+Return t if OBJECT is an image instance of type `color-pixmap'.
+Fpointer-image-instance-p
+Return t if OBJECT is an image instance of type `pointer'.
+Fwidget-image-instance-p
+Return t if OBJECT is an image instance of type `widget'.
+Fsubwindow-image-instance-p
+Return t if OBJECT is an image instance of type `subwindow'.
+Vtext-pointer-glyph
+*The shape of the mouse-pointer when over text.
+This is a glyph; use `set-glyph-image' to change it.
+Vnontext-pointer-glyph
+*The shape of the mouse-pointer when over a buffer, but not over text.
+This is a glyph; use `set-glyph-image' to change it.
+If unspecified in a particular domain, `text-pointer-glyph' is used.
+Vmodeline-pointer-glyph
+*The shape of the mouse-pointer when over the modeline.
+This is a glyph; use `set-glyph-image' to change it.
+If unspecified in a particular domain, `nontext-pointer-glyph' is used.
+Vselection-pointer-glyph
+*The shape of the mouse-pointer when over a selectable text region.
+This is a glyph; use `set-glyph-image' to change it.
+If unspecified in a particular domain, `text-pointer-glyph' is used.
+Vbusy-pointer-glyph
+*The shape of the mouse-pointer when XEmacs is busy.
+This is a glyph; use `set-glyph-image' to change it.
+If unspecified in a particular domain, the pointer is not changed
+when XEmacs is busy.
+Vtoolbar-pointer-glyph
+*The shape of the mouse-pointer when over a toolbar.
+This is a glyph; use `set-glyph-image' to change it.
+If unspecified in a particular domain, `nontext-pointer-glyph' is used.
+Vdivider-pointer-glyph
+*The shape of the mouse-pointer when over a window divider.
+This is a glyph; use `set-glyph-image' to change it.
+If unspecified in a particular domain, `nontext-pointer-glyph' is used.
+Fmake-font-specifier
+Return a new `font' specifier object with the given specification list.
+SPEC-LIST can be a list of specifications (each of which is a cons of a
+locale and a list of instantiators), a single instantiator, or a list
+of instantiators.  See `make-specifier' for more information about
+specifiers.
+
+Valid instantiators for font specifiers are:
+
+-- a string naming a font (e.g. under X this might be
+   "-*-courier-medium-r-*-*-*-140-*-*-*-*-iso8859-*" for a 14-point
+   upright medium-weight Courier font)
+-- a font instance (use that instance directly if the device matches,
+   or use the string that generated it)
+-- a vector of no elements (only on TTY's; this means to set no font
+   at all, thus using the "natural" font of the terminal's text)
+-- a vector of one element (a face to inherit from)
+
+Ffont-name
+Return the name of the FONT in the specified DOMAIN, if any.
+FONT should be a font specifier object and DOMAIN is normally a window
+and defaults to the selected window if omitted.  This is equivalent
+to using `specifier-instance' and applying `font-instance-name' to
+the result.  See `make-specifier' for more information about specifiers.
+Ffont-ascent
+Return the ascent of the FONT in the specified DOMAIN, if any.
+FONT should be a font specifier object and DOMAIN is normally a window
+and defaults to the selected window if omitted.  This is equivalent
+to using `specifier-instance' and applying `font-instance-ascent' to
+the result.  See `make-specifier' for more information about specifiers.
+Ffont-descent
+Return the descent of the FONT in the specified DOMAIN, if any.
+FONT should be a font specifier object and DOMAIN is normally a window
+and defaults to the selected window if omitted.  This is equivalent
+to using `specifier-instance' and applying `font-instance-descent' to
+the result.  See `make-specifier' for more information about specifiers.
+Ffont-width
+Return the width of the FONT in the specified DOMAIN, if any.
+FONT should be a font specifier object and DOMAIN is normally a window
+and defaults to the selected window if omitted.  This is equivalent
+to using `specifier-instance' and applying `font-instance-width' to
+the result.  See `make-specifier' for more information about specifiers.
+Ffont-height
+Return the height of the FONT in the specified DOMAIN, if any.
+FONT should be a font specifier object and DOMAIN is normally a window
+and defaults to the selected window if omitted.  This is equivalent
+to using `specifier-instance' and applying `font-instance-height' to
+the result.  See `make-specifier' for more information about specifiers.
+Ffont-proportional-p
+Return whether FONT is proportional in the specified DOMAIN, if known.
+FONT should be a font specifier object and DOMAIN is normally a window
+and defaults to the selected window if omitted.  This is equivalent
+to using `specifier-instance' and applying `font-instance-proportional-p' to
+the result.  See `make-specifier' for more information about specifiers.
+Ffont-properties
+Return the properties of the FONT in the specified DOMAIN, if any.
+FONT should be a font specifier object and DOMAIN is normally a window
+and defaults to the selected window if omitted.  This is equivalent
+to using `specifier-instance' and applying `font-instance-properties'
+to the result.  See `make-specifier' for more information about specifiers.
+Ffont-truename
+Return the truename of the FONT in the specified DOMAIN, if any.
+FONT should be a font specifier object and DOMAIN is normally a window
+and defaults to the selected window if omitted.  This is equivalent
+to using `specifier-instance' and applying `font-instance-truename'
+to the result.  See `make-specifier' for more information about specifiers.
+Ffont-instance-height
+Return the height in pixels of FONT-INSTANCE.
+The returned value is the maximum height for all characters in the font,
+and is equivalent to the sum of the font instance's ascent and descent.
+Fmake-color-specifier
+Return a new `color' specifier object with the given specification list.
+SPEC-LIST can be a list of specifications (each of which is a cons of a
+locale and a list of instantiators), a single instantiator, or a list
+of instantiators.  See `make-specifier' for a detailed description of
+how specifiers work.
+
+Valid instantiators for color specifiers are:
+
+-- a string naming a color (e.g. under X this might be "lightseagreen2"
+   or "#F534B2")
+-- a color instance (use that instance directly if the device matches,
+   or use the string that generated it)
+-- a vector of no elements (only on TTY's; this means to set no color
+   at all, thus using the "natural" color of the terminal's text)
+-- a vector of one or two elements: a face to inherit from, and
+   optionally a symbol naming which property of that face to inherit,
+   either `foreground' or `background' (if omitted, defaults to the same
+   property that this color specifier is used for; if this specifier is
+   not part of a face, the instantiator would not be valid).
+Fcolor-name
+Return the name of the COLOR in the specified DOMAIN, if any.
+COLOR should be a color specifier object and DOMAIN is normally a window
+and defaults to the selected window if omitted.  This is equivalent
+to using `specifier-instance' and applying `color-instance-name' to
+the result.  See `make-specifier' for more information about specifiers.
+Fcolor-rgb-components
+Return the RGB components of the COLOR in the specified DOMAIN, if any.
+COLOR should be a color specifier object and DOMAIN is normally a window
+and defaults to the selected window if omitted.  This is equivalent
+to using `specifier-instance' and applying `color-instance-rgb-components'
+to the result.  See `make-specifier' for more information about specifiers.
+Fmake-face-boolean-specifier
+Return a new `face-boolean' specifier object with the given spec list.
+SPEC-LIST can be a list of specifications (each of which is a cons of a
+locale and a list of instantiators), a single instantiator, or a list
+of instantiators.  See `make-specifier' for a detailed description of
+how specifiers work.
+
+Valid instantiators for face-boolean specifiers are
+
+-- t or nil
+-- a vector of two or three elements: a face to inherit from,
+   optionally a symbol naming the property of that face to inherit from
+   (if omitted, defaults to the same property that this face-boolean
+   specifier is used for; if this specifier is not part of a face,
+   the instantiator would not be valid), and optionally a value which,
+   if non-nil, means to invert the sense of the inherited property.
+Fmapcar-extents
+Apply FUNCTION to all extents which overlap a region in BUFFER-OR-STRING.
+The region is delimited by FROM and TO.  FUNCTION is called with
+one argument, the extent.  A list of the values returned by FUNCTION
+is returned.  An optional PREDICATE may be used to further limit the
+extents over which FUNCTION is mapped.  The optional arguments FLAGS,
+PROPERTY, and VALUE may also be used to control the extents passed to
+PREDICATE or FUNCTION.  See also `map-extents'.
+Fextent-list
+Return a list of the extents in BUFFER-OR-STRING.
+BUFFER-OR-STRING defaults to the current buffer if omitted.
+FROM and TO can be used to limit the range over which extents are
+returned; if omitted, all extents in the buffer or string are returned.
+
+More specifically, if a range is specified using FROM and TO, only
+extents that overlap the range (i.e. begin or end inside of the range)
+are included in the list.  FROM and TO default to the beginning and
+end of BUFFER-OR-STRING, respectively.
+
+FLAGS controls how end cases are treated.  For a discussion of this,
+and exactly what ``overlap'' means, see `map-extents'.  PROPERTY and VALUE
+are also as in `map-extents'.
+
+If you want to map a function over the extents in a buffer or string,
+consider using `map-extents' or `mapcar-extents' instead.
+
+See also `extents-at'.
+Fextent-at-event
+Return the smallest extent under EVENT, if any.
+PROPERTY, BEFORE, and AT-FLAG are as in `extent-at'.
+Fextents-at-event
+Return a list of all extents under EVENT.
+PROPERTY, BEFORE, and AT-FLAG are as in `extent-at'.
+Fextent-string
+Return the string delimited by the bounds of EXTENT.
+Fextent-descendants
+Return a list of all descendants of EXTENT, including EXTENT.
+This recursively applies `extent-children' to any children of
+EXTENT, until no more children can be found.
+Fset-extent-keymap
+Set EXTENT's `keymap' property to KEYMAP.
+Fextent-keymap
+Return EXTENT's `keymap' property.
+Fevent-console
+Return the console that EVENT occurred on.
+This will be nil for some types of events (e.g. eval events).
+Fevent-device
+Return the device that EVENT occurred on.
+This will be nil for some types of events (e.g. keyboard and eval events).
+Fevent-frame
+Return the frame that EVENT occurred on.
+This will be nil for some types of events (e.g. keyboard and eval events).
+Fevent-buffer
+Return the buffer of the window over which mouse event EVENT occurred.
+Return nil unless both (mouse-event-p EVENT) and
+(event-over-text-area-p EVENT) are non-nil.
+Fkey-press-event-p
+Return t if OBJECT is a key-press event.
+Fbutton-press-event-p
+Return t if OBJECT is a mouse button-press event.
+Fbutton-release-event-p
+Return t if OBJECT is a mouse button-release event.
+Fbutton-event-p
+Return t if OBJECT is a mouse button-press or button-release event.
+Fmotion-event-p
+Return t if OBJECT is a mouse motion event.
+Fmouse-event-p
+Return t if OBJECT is a mouse button-press, button-release or motion event.
+Fprocess-event-p
+Return t if OBJECT is a process-output event.
+Ftimeout-event-p
+Return t if OBJECT is a timeout event.
+Feval-event-p
+Return t if OBJECT is an eval event.
+Fmisc-user-event-p
+Return t if OBJECT is a misc-user event.
+A misc-user event is a user event that is not a keypress or mouse click;
+normally this means a menu selection or scrollbar action.
+Fevent-over-glyph-p
+Return t if OBJECT is a mouse event occurring over a glyph.
+Mouse events are events of type button-press, button-release or motion.
+Fkeyboard-translate
+Translate character or keysym FROM to TO at a low level.
+Multiple FROM-TO pairs may be specified.
+
+See `keyboard-translate-table' for more information.
+Fhash-table-key-list
+Return a list of all keys in HASH-TABLE.
+Fhash-table-value-list
+Return a list of all values in HASH-TABLE.
+Fhash-table-key-value-alist
+Return an alist of (KEY . VALUE) for all keys and values in HASH-TABLE.
+Fhash-table-key-value-plist
+Return a plist for all keys and values in HASH-TABLE.
+A plist is a simple list containing alternating keys and values.
+Fset-text-properties
+You should NEVER use this function.  It is ideologically blasphemous.
+It is provided only to ease porting of broken FSF Emacs programs.
+Instead, use `remove-text-properties' to remove the specific properties
+you do not want.
+
+Completely replace properties of text from START to END.
+The third argument PROPS is the new property list.
+The optional fourth argument, BUFFER-OR-STRING,
+is the string or buffer containing the text.
+Fextent-properties-at
+Return the properties of the character at the given position in OBJECT.
+OBJECT is either a string or a buffer. The properties of overlapping
+extents are merged.  The returned value is a property list, some of
+which may be shared with other structures.  You must not modify it.
+
+If POSITION is at the end of OBJECT, the value is nil.
+
+This returns all properties on all extents.
+See also `text-properties-at'.
+Ftext-properties-at
+Return the properties of the character at the given position in OBJECT.
+OBJECT is either a string or a buffer. The properties of overlapping
+extents are merged.  The returned value is a property list, some of
+which may be shared with other structures.  You must not modify it.
+
+If POSITION is at the end of OBJECT, the value is nil.
+
+This returns only those properties added with `put-text-property'.
+See also `extent-properties-at'.
+Ftext-property-any
+Check text from START to END to see if PROP is ever `eq' to VALUE.
+If so, return the position of the first character whose PROP is `eq'
+to VALUE.  Otherwise return nil.
+The optional fifth argument, BUFFER-OR-STRING, is the buffer or string
+containing the text and defaults to the current buffer.
+Ftext-property-not-all
+Check text from START to END to see if PROP is ever not `eq' to VALUE.
+If so, return the position of the first character whose PROP is not
+`eq' to VALUE.  Otherwise, return nil.
+The optional fifth argument, BUFFER-OR-STRING, is the buffer or string
+containing the text and defaults to the current buffer.
+Fnext-property-change
+Return the position of next property change.
+Scans forward from POS in BUFFER-OR-STRING (defaults to the current buffer)
+ until it finds a change in some text property, then returns the position of
+ the change.
+Returns nil if the properties remain unchanged all the way to the end.
+If the value is non-nil, it is a position greater than POS, never equal.
+If the optional third argument LIMIT is non-nil, don't search
+ past position LIMIT; return LIMIT if nothing is found before LIMIT.
+If two or more extents with conflicting non-nil values for a property overlap
+ a particular character, it is undefined which value is considered to be
+ the value of the property. (Note that this situation will not happen if
+ you always use the text-property primitives.)
+Fprevious-property-change
+Return the position of previous property change.
+Scans backward from POS in BUFFER-OR-STRING (defaults to the current buffer)
+ until it finds a change in some text property, then returns the position of
+ the change.
+Returns nil if the properties remain unchanged all the way to the beginning.
+If the value is non-nil, it is a position less than POS, never equal.
+If the optional third argument LIMIT is non-nil, don't search back
+ past position LIMIT; return LIMIT if nothing is found until LIMIT.
+If two or more extents with conflicting non-nil values for a property overlap
+ a particular character, it is undefined which value is considered to be
+ the value of the property. (Note that this situation will not happen if
+ you always use the text-property primitives.)
+Ftext-property-bounds
+Return the bounds of property PROP at POS.
+This returns a cons (START . END) of the largest region of text containing
+POS which has a non-nil value for PROP.  The return value is nil if POS
+does not have a non-nil value for PROP.  OBJECT specifies the buffer
+or string to search in.  Optional arg AT-FLAG controls what "at POS"
+means, and has the same meaning as for `extent-at'.
+Fnext-text-property-bounds
+Return the COUNTth bounded property region of property PROP after POS.
+If COUNT is less than zero, search backwards.  This returns a cons
+(START . END) of the COUNTth maximal region of text that begins after POS
+(starts before POS) and has a non-nil value for PROP.  If there aren't
+that many regions, nil is returned.  OBJECT specifies the buffer or
+string to search in.
+Vshell-command-switch
+Switch used to have the shell execute its command line argument.
+Fstart-process-shell-command
+Start a program in a subprocess.  Return the process object for it.
+Args are NAME BUFFER COMMAND &rest COMMAND-ARGS.
+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.
+ Process output goes at end of that buffer, unless you specify
+ an output stream or filter function to handle the output.
+ BUFFER may be also nil, meaning that this process is not associated
+ with any buffer
+Third arg is command name, the name of a shell command.
+Remaining arguments are the arguments for the command.
+Wildcards and redirection are handled as usual in the shell.
+Fcall-process-internal
+Call PROGRAM synchronously in separate process, with coding-system specified.
+Arguments are
+ (PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS).
+The program's input comes from file INFILE (nil means `/dev/null').
+Insert output in BUFFER before point; t means current buffer;
+ nil for BUFFER means discard it; 0 means discard and don't wait.
+BUFFER can also have the form (REAL-BUFFER STDERR-FILE); in that case,
+REAL-BUFFER says what to do with standard output, as above,
+while STDERR-FILE says what to do with standard error in the child.
+STDERR-FILE may be nil (discard standard error output),
+t (mix it with ordinary output), or a file name string.
+
+Fourth arg DISPLAY non-nil means redisplay buffer as output is inserted.
+Remaining arguments are strings passed as command arguments to PROGRAM.
+
+If BUFFER is 0, `call-process' returns immediately with value nil.
+Otherwise it waits for PROGRAM to terminate and returns a numeric exit status
+ or a signal description string.
+If you quit, the process is killed with SIGINT, or SIGKILL if you
+ quit again.
+Fcall-process
+Call PROGRAM synchronously in separate process.
+The program's input comes from file INFILE (nil means `/dev/null').
+Insert output in BUFFER before point; t means current buffer;
+ nil for BUFFER means discard it; 0 means discard and don't wait.
+BUFFER can also have the form (REAL-BUFFER STDERR-FILE); in that case,
+REAL-BUFFER says what to do with standard output, as above,
+while STDERR-FILE says what to do with standard error in the child.
+STDERR-FILE may be nil (discard standard error output),
+t (mix it with ordinary output), or a file name string.
+
+Fourth arg DISPLAYP non-nil means redisplay buffer as output is inserted.
+Remaining arguments are strings passed as command arguments to PROGRAM.
+
+If BUFFER is 0, `call-process' returns immediately with value nil.
+Otherwise it waits for PROGRAM to terminate and returns a numeric exit status
+ or a signal description string.
+If you quit, the process is killed with SIGINT, or SIGKILL if you
+ quit again.
+Fcall-process-region
+Send text from START to END to a synchronous process running PROGRAM.
+Delete the text if fourth arg DELETEP is non-nil.
+
+Insert output in BUFFER before point; t means current buffer;
+ nil for BUFFER means discard it; 0 means discard and don't wait.
+BUFFER can also have the form (REAL-BUFFER STDERR-FILE); in that case,
+REAL-BUFFER says what to do with standard output, as above,
+while STDERR-FILE says what to do with standard error in the child.
+STDERR-FILE may be nil (discard standard error output),
+t (mix it with ordinary output), or a file name string.
+
+Sixth arg DISPLAYP non-nil means redisplay buffer as output is inserted.
+Remaining args are passed to PROGRAM at startup as command args.
+
+If BUFFER is 0, returns immediately with value nil.
+Otherwise waits for PROGRAM to terminate
+and returns a numeric exit status or a signal description string.
+If you quit, the process is first killed with SIGINT, then with SIGKILL if
+you quit again before the process exits.
+Fshell-command
+Execute string COMMAND in inferior shell; display output, if any.
+
+If COMMAND ends in ampersand, execute it asynchronously.
+The output appears in the buffer `*Async Shell Command*'.
+That buffer is in shell mode.
+
+Otherwise, COMMAND is executed synchronously.  The output appears in the
+buffer `*Shell Command Output*'.
+If the output is one line, it is displayed in the echo area *as well*,
+but it is nonetheless available in buffer `*Shell Command Output*',
+even though that buffer is not automatically displayed.
+If there is no output, or if output is inserted in the current buffer,
+then `*Shell Command Output*' is deleted.
+
+The optional second argument OUTPUT-BUFFER, if non-nil,
+says to put the output in some other buffer.
+If OUTPUT-BUFFER is a buffer or buffer name, put the output there.
+If OUTPUT-BUFFER is not a buffer and not nil,
+insert output in current buffer.  (This cannot be done asynchronously.)
+In either case, the output is inserted after point (leaving mark after it).
+Fshell-command-on-region
+Execute string COMMAND in inferior shell with region as input.
+Normally display output (if any) in temp buffer `*Shell Command Output*';
+Prefix arg means replace the region with it.
+
+The noninteractive arguments are START, END, COMMAND, OUTPUT-BUFFER, REPLACE.
+If REPLACE is non-nil, that means insert the output
+in place of text from START to END, putting point and mark around it.
+
+If the output is one line, it is displayed in the echo area,
+but it is nonetheless available in buffer `*Shell Command Output*'
+even though that buffer is not automatically displayed.
+If there is no output, or if output is inserted in the current buffer,
+then `*Shell Command Output*' is deleted.
+
+If the optional fourth argument OUTPUT-BUFFER is non-nil,
+that says to put the output in some other buffer.
+If OUTPUT-BUFFER is a buffer or buffer name, put the output there.
+If OUTPUT-BUFFER is not a buffer and not nil,
+insert output in the current buffer.
+In either case, the output is inserted after point (leaving mark after it).
+Fstart-process
+Start a program in a subprocess.  Return the process object for it.
+Args are NAME BUFFER PROGRAM &rest PROGRAM-ARGS
+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.
+ Process output goes at end of that buffer, unless you specify
+ an output stream or filter function to handle the output.
+ BUFFER may be also nil, meaning that this process is not associated
+ with any buffer
+Third arg is program file name.  It is searched for as in the shell.
+Remaining arguments are strings to give program as arguments.
+Fopen-network-stream
+Open a TCP connection for a service to a host.
+Returns a process 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.
+ Process output goes at end of that buffer, unless you specify
+ an output stream or filter function to handle the output.
+ BUFFER may be also nil, meaning that this process is not associated
+ with any buffer
+Third arg is name of the host to connect to, or its IP address.
+Fourth arg SERVICE is name of the service desired, or an integer
+ specifying a port number to connect to.
+Fifth argument PROTOCOL is a network protocol.  Currently 'tcp
+ (Transmission Control Protocol) and 'udp (User Datagram Protocol) are
+ supported.  When omitted, 'tcp is assumed.
+
+Output via `process-send-string' and input via buffer or filter (see
+`set-process-filter') are stream-oriented.  That means UDP datagrams are
+not guaranteed to be sent and received in discrete packets. (But small
+datagrams around 500 bytes that are not truncated by `process-send-string'
+are usually fine.)  Note further that UDP protocol does not guard against
+lost packets.
+Fshell-quote-argument
+Quote an argument for passing as argument to an inferior shell.
+Fshell-command-to-string
+Execute shell command COMMAND and return its output as a string.
+Fopen-multicast-group
+Open a multicast connection on the specified address.
+Returns a process object to represent the connection.
+Input and output work as for subprocesses; `delete-process' closes it.
+Args are NAME BUFFER ADDRESS.
+NAME is a name for the process. It is modified if necessary to make it unique.
+BUFFER is the buffer (or buffer-name) to associate with the process.
+ Process output goes at the end of that buffer, unless you specify an output
+ stream or filter function to handle the output.
+ BUFFER may be also nil, meaning that this process is not associated with any
+ buffer
+ADDRESS specifies a standard multicast address "dest/port/ttl":
+ dest is an internet address between 224.0.0.0 and 239.255.255.255
+ port is a communication port like in traditional unicast
+ ttl is the time-to-live (15 for site, 63 for region and 127 for world).
+
+WARNING: it is *strongly* recommended to avoid using groups beginning with
+         224 or 239. Such groups are considered 'admin' groups, and may
+         behave in a surprising way ...
+Fget-other-frame
+Return some frame other than the selected frame, creating one if necessary.
+Fnext-multiframe-window
+Select the next window, regardless of which frame it is on.
+Fprevious-multiframe-window
+Select the previous window, regardless of which frame it is on.
+Fmake-frame-on-device
+Create a frame of type TYPE on CONNECTION.
+TYPE should be a symbol naming the device type, i.e. one of
+
+x	    An X display.  CONNECTION should be a standard display string
+	    such as "unix:0", or nil for the display specified on the
+	    command line or in the DISPLAY environment variable.  Only if
+	    support for X was compiled into XEmacs.
+tty	    A standard TTY connection or terminal.  CONNECTION should be
+	    a TTY device name such as "/dev/ttyp2" (as determined by
+	    the Unix command `tty') or nil for XEmacs' standard input
+	    and output (usually the TTY in which XEmacs started).  Only
+	    if support for TTY's was compiled into XEmacs.
+gtk	    A GTK device.
+ns	    A connection to a machine running the NeXTstep windowing
+	    system.  Not currently implemented.
+mswindows   A connection to a machine running Microsoft Windows NT or
+	    Windows 95/97.
+pc	    A direct-write MS-DOS frame.  Not currently implemented.
+
+PROPS should be a plist of properties, as in the call to `make-frame'.
+
+If a connection to CONNECTION already exists, it is reused; otherwise,
+a new connection is opened.
+Ffiltered-frame-list
+Return a list of all live frames which satisfy PREDICATE.
+If optional second arg DEVICE is non-nil, restrict the frames
+ returned to that device.
+Fminibuffer-frame-list
+Return a list of all frames with their own minibuffers.
+If optional second arg DEVICE is non-nil, restrict the frames
+ returned to that device.
+Fframe-minibuffer-only-p
+Return non-nil if FRAME is a minibuffer-only frame.
+Fframe-remove-geometry-props
+Return the property list PLIST, but with geometry specs removed.
+This deletes all bindings in PLIST for `top', `left', `width',
+`height', `user-size' and `user-position' properties.
+Emacs uses this to avoid overriding explicit moves and resizings from
+the user during startup.
+Fother-frame
+Select the ARG'th different visible frame, and raise it.
+All frames are arranged in a cyclic order.
+This command selects the frame ARG steps away in that order.
+A negative ARG moves in the opposite order.
+
+This sets the window system focus, regardless of the value
+of `focus-follows-mouse'.
+Fsave-selected-frame
+Execute forms in BODY, then restore the selected frame.
+The value returned is the value of the last form in BODY.
+Fwith-selected-frame
+Execute forms in BODY with FRAME as the selected frame.
+The value returned is the value of the last form in BODY.
+Fframe-list
+Return a list of all frames on all devices/consoles.
+Fframe-type
+Return the type of the specified frame (e.g. `x' or `tty').
+This is equivalent to the type of the frame's device.
+Value is `tty' for a tty frame (a character-only terminal),
+`x' for a frame that is an X window,
+`ns' for a frame that is a NeXTstep window (not yet implemented),
+`mswindows' for a frame that is a MS Windows desktop window,
+`msprinter' for a frame that is a MS Windows print job,
+`stream' for a stream frame (which acts like a stdio stream), and
+`dead' for a deleted frame.
+Fdevice-or-frame-p
+Return non-nil if OBJECT is a device or frame.
+Fdevice-or-frame-type
+Return the type (e.g. `x' or `tty') of DEVICE-OR-FRAME.
+DEVICE-OR-FRAME should be a device or a frame object.  See `device-type'
+for a description of the possible types.
+Ffw-frame
+Given a frame or window, return the associated frame.
+Return nil otherwise.
+Fcurrent-frame-configuration
+Return a list describing the positions and states of all frames.
+Its car is `frame-configuration'.
+Each element of the cdr is a list of the form (FRAME PLIST WINDOW-CONFIG),
+where
+  FRAME is a frame object,
+  PLIST is a property list specifying some of FRAME's properties, and
+  WINDOW-CONFIG is a window configuration object for FRAME.
+Fset-frame-configuration
+Restore the frames to the state described by CONFIGURATION.
+Each frame listed in CONFIGURATION has its position, size, window
+configuration, and other properties set as specified in CONFIGURATION.
+Ordinarily, this function deletes all existing frames not
+listed in CONFIGURATION.  But if optional second argument NODELETE
+is given and non-nil, the unwanted frames are iconified instead.
+Fframe-configuration-p
+Return non-nil if OBJECT seems to be a frame configuration.
+Any list whose car is `frame-configuration' is assumed to be a frame
+configuration.
+Ficonify-emacs
+Replace every non-iconified FRAME with a *single* icon.
+Iconified frames are left alone.  When XEmacs is in this
+globally-iconified state, de-iconifying any emacs icon will uniconify
+all frames that were visible, and iconify all frames that were not.
+Fsuspend-or-iconify-emacs
+Call iconify-emacs if using a window system, otherwise suspend Emacs.
+Fsuspend-emacs-or-iconify-frame
+Iconify the selected frame if using a window system, otherwise suspend Emacs.
+Fdefault-select-frame-hook
+Implement the `auto-raise-frame' variable.
+For use as the value of `select-frame-hook'.
+Fdefault-deselect-frame-hook
+Implement the `auto-lower-frame' variable.
+For use as the value of `deselect-frame-hook'.
+Fget-frame-for-buffer-noselect
+Return a frame in which to display BUFFER.
+This is a subroutine of `get-frame-for-buffer' (which see).
+Fget-frame-for-buffer
+Select and return a frame in which to display BUFFER.
+Normally, the buffer will simply be displayed in the selected frame.
+But if the symbol naming the major-mode of the buffer has a 'frame-name
+property (which should be a symbol), then the buffer will be displayed in
+a frame of that name.  If there is no frame of that name, then one is
+created.
+
+If the major-mode doesn't have a 'frame-name property, then the frame
+named by `get-frame-for-buffer-default-frame-name' will be used.  If
+that is nil (the default) then the currently selected frame will used.
+
+If the frame-name symbol has an 'instance-limit property (an integer)
+then each time a buffer of the mode in question is displayed, a new frame
+with that name will be created, until there are `instance-limit' of them.
+If instance-limit is 0, then a new frame will be created each time.
+
+If a buffer is already displayed in a frame, then `instance-limit' is
+ignored, and that frame is used.
+
+If the frame-name symbol has a 'frame-defaults property, then that is
+prepended to the `default-frame-plist' when creating a frame for the
+first time.
+
+This function may be used as the value of `pre-display-buffer-function',
+to cause the `display-buffer' function and its callers to exhibit the
+above behavior.
+Fframes-of-buffer
+Return list of frames that BUFFER is currently being displayed on.
+If the buffer is being displayed on the currently selected frame, that frame
+is first in the list.  VISIBLE-ONLY will only list non-iconified frames.
+Fshow-temp-buffer-in-current-frame
+For use as the value of `temp-buffer-show-function':
+always displays the buffer in the selected frame, regardless of the behavior
+that would otherwise be introduced by the `pre-display-buffer-function', which
+is normally set to `get-frame-for-buffer' (which see).
+Fdelete-other-frames
+Delete all but FRAME (or the selected frame).
+Fframe-highest-window
+Return the highest window on FRAME which is at POSITION.
+If omitted, FRAME defaults to the currently selected frame.
+POSITION is used to distinguish between multiple windows that abut
+ the top of the frame: 0 means the leftmost window abutting the
+ top of the frame, 1 the next-leftmost, etc.  POSITION can also
+ be less than zero: -1 means the rightmost window abutting the
+ top of the frame, -2 the next-rightmost, etc.
+If omitted, POSITION defaults to 0, i.e. the leftmost highest window.
+If there is no window at the given POSITION, return nil.
+Fframe-lowest-window
+Return the lowest window on FRAME which is at POSITION.
+If omitted, FRAME defaults to the currently selected frame.
+POSITION is used to distinguish between multiple windows that abut
+ the bottom of the frame: 0 means the leftmost window abutting the
+ bottom of the frame, 1 the next-leftmost, etc.  POSITION can also
+ be less than zero: -1 means the rightmost window abutting the
+ bottom of the frame, -2 the next-rightmost, etc.
+If omitted, POSITION defaults to 0, i.e. the leftmost lowest window.
+If there is no window at the given POSITION, return nil.
+Fframe-leftmost-window
+Return the leftmost window on FRAME which is at POSITION.
+If omitted, FRAME defaults to the currently selected frame.
+POSITION is used to distinguish between multiple windows that abut
+ the left edge of the frame: 0 means the highest window abutting the
+ left edge of the frame, 1 the next-highest, etc.  POSITION can also
+ be less than zero: -1 means the lowest window abutting the
+ left edge of the frame, -2 the next-lowest, etc.
+If omitted, POSITION defaults to 0, i.e. the highest leftmost window.
+If there is no window at the given POSITION, return nil.
+Fframe-rightmost-window
+Return the rightmost window on FRAME which is at POSITION.
+If omitted, FRAME defaults to the currently selected frame.
+POSITION is used to distinguish between multiple windows that abut
+ the right edge of the frame: 0 means the highest window abutting the
+ right edge of the frame, 1 the next-highest, etc.  POSITION can also
+ be less than zero: -1 means the lowest window abutting the
+ right edge of the frame, -2 the next-lowest, etc.
+If omitted, POSITION defaults to 0, i.e. the highest rightmost window.
+If there is no window at the given POSITION, return nil.
+Fset-frame-property
+Set property PROP of FRAME to VAL.  See `set-frame-properties'.
+Fframe-height
+Return number of lines available for display on FRAME.
+Fframe-width
+Return number of columns available for display on FRAME.
+Fmap-y-or-n-p
+Ask a series of boolean questions.
+Takes args PROMPTER ACTOR LIST, and optional args HELP and ACTION-ALIST.
+
+LIST is a list of objects, or a function of no arguments to return the next
+object or nil.
+
+If PROMPTER is a string, the prompt is (format PROMPTER OBJECT).  If not
+a string, PROMPTER is a function of one arg (an object from LIST), which
+returns a string to be used as the prompt for that object.  If the return
+value is not a string, it may be nil to ignore the object or non-nil to act
+on the object without asking the user.
+
+ACTOR is a function of one arg (an object from LIST),
+which gets called with each object that the user answers `yes' for.
+
+If HELP is given, it is a list (OBJECT OBJECTS ACTION),
+where OBJECT is a string giving the singular noun for an elt of LIST;
+OBJECTS is the plural noun for elts of LIST, and ACTION is a transitive
+verb describing ACTOR.  The default is ("object" "objects" "act on").
+
+At the prompts, the user may enter y, Y, or SPC to act on that object;
+n, N, or DEL to skip that object; ! to act on all following objects;
+ESC or q to exit (skip all following objects); . (period) to act on the
+current object and then exit; or \[help-command] to get help.
+
+If ACTION-ALIST is given, it is an alist (KEY FUNCTION HELP) of extra keys
+that will be accepted.  KEY is a character; FUNCTION is a function of one
+arg (an object from LIST); HELP is a string.  When the user hits KEY,
+FUNCTION is called.  If it returns non-nil, the object is considered
+"acted upon", and the next object from LIST is processed.  If it returns
+nil, the prompt is repeated for the same object.
+
+Final optional argument NO-CURSOR-IN-ECHO-AREA non-nil says not to set
+`cursor-in-echo-area' while prompting.
+
+This function uses `query-replace-map' to define the standard responses,
+but not all of the responses which `query-replace' understands
+are meaningful here.
+
+Returns the number of actions taken.
+Fno-upper-case-p
+Return t if there are no upper case chars in STRING.
+If REGEXP-FLAG is non-nil, disregard letters preceded by `\' (but not `\\')
+since they have special meaning in a regexp.
+Fwith-search-caps-disable-folding
+Eval BODY with `case-fold-search' let to nil if `search-caps-disable-folding'
+is non-nil, and if STRING (either a string or a regular expression according
+to REGEXP-FLAG) contains uppercase letters.
+Fwith-interactive-search-caps-disable-folding
+Same as `with-search-caps-disable-folding', but only in the case of a
+function called interactively.
+Fnewline
+Insert a newline, and move to left margin of the new line if it's blank.
+The newline is marked with the text-property `hard'.
+With optional arg N, insert that many newlines.
+In Auto Fill mode, if no numeric arg, break the preceding line if it's long.
+Fopen-line
+Insert a newline and leave point before it.
+If there is a fill prefix and/or a left-margin, insert them on the new line
+if the line would have been blank.
+With arg N, insert N newlines.
+Fsplit-line
+Split current line, moving portion beyond point vertically down.
+Fquoted-insert
+Read next input character and insert it.
+This is useful for inserting control characters.
+You may also type up to 3 octal digits, to insert a character with that code.
+
+In overwrite mode, this function inserts the character anyway, and
+does not handle octal digits specially.  This means that if you use
+overwrite as your normal editing mode, you can use this function to
+insert characters when necessary.
+
+In binary overwrite mode, this function does overwrite, and octal
+digits are interpreted as a character code.  This is supposed to make
+this function useful in editing binary files.
+Fdelete-indentation
+Join this line to previous and fix up whitespace at join.
+If there is a fill prefix, delete it from the beginning of this line.
+With argument, join this line to following line.
+Ffixup-whitespace
+Fixup white space between objects around point.
+Leave one space or none, according to the context.
+Fdelete-horizontal-space
+Delete all spaces and tabs around point.
+Fjust-one-space
+Delete all spaces and tabs around point, leaving one space.
+Fdelete-blank-lines
+On blank line, delete all surrounding blank lines, leaving just one.
+On isolated blank line, delete that one.
+On nonblank line, delete any immediately following blank lines.
+Fback-to-indentation
+Move point to the first non-whitespace character on this line.
+Fnewline-and-indent
+Insert a newline, then indent according to major mode.
+Indentation is done using the value of `indent-line-function'.
+In programming language modes, this is the same as TAB.
+In some text modes, where TAB inserts a tab, this command indents to the
+column specified by the function `current-left-margin'.
+Freindent-then-newline-and-indent
+Reindent current line, insert newline, then indent the new line.
+Indentation of both lines is done according to the current major mode,
+which means calling the current value of `indent-line-function'.
+In programming language modes, this is the same as TAB.
+In some text modes, where TAB inserts a tab, this indents to the
+column specified by the function `current-left-margin'.
+Fbackward-delete-char-untabify
+Delete characters backward, changing tabs into spaces.
+Delete ARG chars, and kill (save in kill ring) if KILLP is non-nil.
+Interactively, ARG is the prefix arg (default 1)
+and KILLP is t if a prefix arg was specified.
+Fbackward-or-forward-delete-char
+Delete either one character backwards or one character forwards.
+Controlled by the state of `delete-key-deletes-forward' and whether the
+BackSpace keysym even exists on your keyboard.  If you don't have a
+BackSpace keysym, the delete key should always delete one character
+backwards.
+Fbackward-or-forward-kill-word
+Delete either one word backwards or one word forwards.
+Controlled by the state of `delete-key-deletes-forward' and whether the
+BackSpace keysym even exists on your keyboard.  If you don't have a
+BackSpace keysym, the delete key should always delete one character
+backwards.
+Fbackward-or-forward-kill-sentence
+Delete either one sentence backwards or one sentence forwards.
+Controlled by the state of `delete-key-deletes-forward' and whether the
+BackSpace keysym even exists on your keyboard.  If you don't have a
+BackSpace keysym, the delete key should always delete one character
+backwards.
+Fbackward-or-forward-kill-sexp
+Delete either one sexpr backwards or one sexpr forwards.
+Controlled by the state of `delete-key-deletes-forward' and whether the
+BackSpace keysym even exists on your keyboard.  If you don't have a
+BackSpace keysym, the delete key should always delete one character
+backwards.
+Fzap-to-char
+Kill up to and including ARG'th occurrence of CHAR.
+Goes backward if ARG is negative; error if CHAR not found.
+Fzap-up-to-char
+Kill up to ARG'th occurrence of CHAR.
+Goes backward if ARG is negative; error if CHAR not found.
+Fbeginning-of-buffer
+Move point to the beginning of the buffer; leave mark at previous position.
+With arg N, put point N/10 of the way from the beginning.
+
+If the buffer is narrowed, this command uses the beginning and size
+of the accessible part of the buffer.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
+Don't use this command in Lisp programs!
+(goto-char (point-min)) is faster and avoids clobbering the mark.
+Fend-of-buffer
+Move point to the end of the buffer; leave mark at previous position.
+With arg N, put point N/10 of the way from the end.
+
+If the buffer is narrowed, this command uses the beginning and size
+of the accessible part of the buffer.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
+Don't use this command in Lisp programs!
+(goto-char (point-max)) is faster and avoids clobbering the mark.
+Fmark-beginning-of-buffer
+Push a mark at the beginning of the buffer; leave point where it is.
+With arg N, push mark N/10 of the way from the true beginning.
+Fmark-end-of-buffer
+Push a mark at the end of the buffer; leave point where it is.
+With arg N, push mark N/10 of the way from the true end.
+Fmark-whole-buffer
+Put point at beginning and mark at end of buffer.
+You probably should not use this function in Lisp programs;
+it is usually a mistake for a Lisp function to use any subroutine
+that uses or sets the mark.
+Feval-current-buffer
+Evaluate the current buffer as Lisp code.
+Programs can pass argument PRINTFLAG which controls printing of output:
+nil means discard it; anything else is stream for print.
+Fcount-words-buffer
+Print the number of words in BUFFER.
+If called noninteractively, the value is returned rather than printed.
+BUFFER defaults to the current buffer.
+Fcount-words-region
+Print the number of words in region between START and END in BUFFER.
+If called noninteractively, the value is returned rather than printed.
+BUFFER defaults to the current buffer.
+Fcount-lines-region
+Print number of lines and characters in the region.
+Fcount-lines-buffer
+Print number of lines and characters in BUFFER.
+Fwhat-line
+Print the following variants of the line number of point:
+     Region line     - displayed line within the active region
+     Collapsed line  - includes only selectively displayed lines;
+     Buffer line     - physical line in the buffer;
+     Narrowed line   - line number from the start of the buffer narrowing.
+Fline-number
+Return the line number of POS (defaults to point).
+If RESPECT-NARROWING is non-nil, then the narrowed line number is returned;
+otherwise, the absolute line number is returned.  The returned line can always
+be given to `goto-line' to get back to the current line.
+Fcount-lines
+Return number of lines between START and END.
+This is usually the number of newlines between them,
+but can be one more if START is not equal to END
+and the greater of them is not at the start of a line.
+
+With optional IGNORE-INVISIBLE-LINES-FLAG non-nil, lines collapsed with
+selective-display are excluded from the line count.
+
+NOTE: The expression to return the current line number is not obvious:
+
+(1+ (count-lines 1 (point-at-bol)))
+
+See also `line-number'.
+Fwhat-cursor-position
+Print info on cursor position (on screen and within buffer).
+Ffundamental-mode
+Major mode not specialized for anything in particular.
+Other major modes are defined by comparison with this one.
+Feval-expression
+Evaluate EXPRESSION and print value in minibuffer.
+Value is also consed on to front of the variable `values'.
+With prefix argument, insert the result to the current buffer.
+Fedit-and-eval-command
+Prompting with PROMPT, let user edit FORM and eval result.
+FORM is a Lisp expression.  Let user edit that expression in
+the minibuffer, then read and evaluate the result.
+Frepeat-complex-command
+Edit and re-evaluate last complex command, or ARGth from last.
+A complex command is one which used the minibuffer.
+The command is placed in the minibuffer as a Lisp form for editing.
+The result is executed, repeating the command as changed.
+If the command has been changed or is not the most recent previous command
+it is added to the front of the command history.
+You can use the minibuffer history commands \<minibuffer-local-map>\[next-history-element] and \[previous-history-element]
+to get different commands to edit and resubmit.
+Fgoto-line
+Goto line LINE, counting from line 1 at beginning of buffer.
+Fundo
+Undo some previous changes.
+Repeat this command to undo more changes.
+A numeric argument serves as a repeat count.
+Vpending-undo-list
+Within a run of consecutive undo commands, list remaining to be undone.
+Fundo-start
+Set `pending-undo-list' to the front of the undo list.
+The next call to `undo-more' will undo the most recently made change.
+Fundo-more
+Undo back N undo-boundaries beyond what was already undone recently.
+Call `undo-start' to get ready to undo recent changes,
+then call `undo-more' one or more times to undo them.
+Fcall-with-transparent-undo
+Apply FN to ARGS, and then undo all changes made by FN to the current
+buffer.  The undo records are processed even if FN returns non-locally.
+There is no trace of the changes made by FN in the buffer's undo history.
+
+You can use this in a write-file-hooks function with continue-save-buffer
+to make the contents of a disk file differ from its in-memory buffer.
+Vuniversal-argument-map
+Keymap used while processing \[universal-argument].
+Vuniversal-argument-num-events
+Number of argument-specifying events read by `universal-argument'.
+`universal-argument-other-key' uses this to discard those events
+from (this-command-keys), and reread only the final command.
+Funiversal-argument
+Begin a numeric argument for the following command.
+Digits or minus sign following \[universal-argument] make up the numeric argument.
+\[universal-argument] following the digits or minus sign ends the argument.
+\[universal-argument] without digits or minus sign provides 4 as argument.
+Repeating \[universal-argument] without digits or minus sign
+ multiplies the argument by 4 each time.
+Fnegative-argument
+Begin a negative numeric argument for the next command.
+\[universal-argument] following digits or minus sign ends the argument.
+Fdigit-argument
+Part of the numeric argument for the next command.
+\[universal-argument] following digits or minus sign ends the argument.
+Fforward-to-indentation
+Move forward COUNT lines and position at first nonblank character.
+Fbackward-to-indentation
+Move backward COUNT lines and position at first nonblank character.
+Fkill-entire-line
+Kill the entire line.
+With prefix argument, kill that many lines from point.  Negative
+arguments kill lines backward.
+
+When calling from a program, nil means "no arg",
+a number counts as a prefix arg.
+Fkill-line
+Kill the rest of the current line, or the entire line.
+If no nonblanks there, kill thru newline.  If called interactively,
+may kill the entire line when given no argument at the beginning of a
+line; see `kill-whole-line'.  With prefix argument, kill that many
+lines from point.  Negative arguments kill lines backward.
+
+WARNING: This is a misnamed function!  It should be called something
+like `kill-to-end-of-line'.  If you simply want to kill the entire
+current line, use `kill-entire-line'.
+
+When calling from a program, nil means "no arg",
+a number counts as a prefix arg.
+Fbackward-kill-line
+Kill back to the beginning of the line.
+Vkill-ring
+List of killed text sequences.
+Since the kill ring is supposed to interact nicely with cut-and-paste
+facilities offered by window systems, use of this variable should
+interact nicely with `interprogram-cut-function' and
+`interprogram-paste-function'.  The functions `kill-new',
+`kill-append', and `current-kill' are supposed to implement this
+interaction; you may want to use them instead of manipulating the kill
+ring directly.
+Vkill-ring-yank-pointer
+The tail of the kill ring whose car is the last thing yanked.
+Fkill-new
+Make STRING the latest kill in the kill ring.
+Set `kill-ring-yank-pointer' to point to it.
+Run `kill-hooks'.
+Optional second argument REPLACE non-nil means that STRING will replace
+the front of the kill ring, rather than being added to the list.
+Fkill-append
+Append STRING to the end of the latest kill in the kill ring.
+If BEFORE-P is non-nil, prepend STRING to the kill.
+Run `kill-hooks'.
+Fcurrent-kill
+Rotate the yanking point by N places, and then return that kill.
+If N is zero, `interprogram-paste-function' is set, and calling it
+returns a string, then that string is added to the front of the
+kill ring and returned as the latest kill.
+If optional arg DO-NOT-MOVE is non-nil, then don't actually move the
+yanking point; just return the Nth kill forward.
+Fkill-region
+Kill between point and mark.
+The text is deleted but saved in the kill ring.
+The command \[yank] can retrieve it from there.
+(If you want to kill and then yank immediately, use \[copy-region-as-kill].)
+
+This is the primitive for programs to kill text (as opposed to deleting it).
+Supply two arguments, character numbers indicating the stretch of text
+ to be killed.
+Any command that calls this function is a "kill command".
+If the previous command was also a kill command,
+the text killed this time appends to the text killed last time
+to make one entry in the kill ring.
+Fcopy-region-as-kill
+Save the region as if killed, but don't kill it.
+Run `kill-hooks'.
+Fkill-ring-save
+Save the region as if killed, but don't kill it.
+This command is similar to `copy-region-as-kill', except that it gives
+visual feedback indicating the extent of the region being copied.
+Fappend-next-kill
+Cause following command, if it kills, to append to previous kill.
+Fyank-pop
+Replace just-yanked stretch of killed text with a different stretch.
+This command is allowed only immediately after a `yank' or a `yank-pop'.
+At such a time, the region contains a stretch of reinserted
+previously-killed text.  `yank-pop' deletes that text and inserts in its
+place a different stretch of killed text.
+
+With no argument, the previous kill is inserted.
+With argument N, insert the Nth previous kill.
+If N is negative, this is a more recent kill.
+
+The sequence of kills wraps around, so that after the oldest one
+comes the newest one.
+Fyank
+Reinsert the last stretch of killed text.
+More precisely, reinsert the stretch of killed text most recently
+killed OR yanked.  Put point at end, and set mark at beginning.
+With just C-u as argument, same but put point at beginning (and mark at end).
+With argument N, reinsert the Nth most recently killed stretch of killed
+text.
+See also the command \[yank-pop].
+Frotate-yank-pointer
+Rotate the yanking point in the kill ring.
+With argument, rotate that many kills forward (or backward, if negative).
+Finsert-buffer
+Insert after point the contents of BUFFER.
+Puts mark after the inserted text.
+BUFFER may be a buffer or a buffer name.
+Fappend-to-buffer
+Append to specified buffer the text of the region.
+It is inserted into that buffer before its point.
+
+When calling from a program, give three arguments:
+BUFFER (or buffer name), START and END.
+START and END specify the portion of the current buffer to be copied.
+Fprepend-to-buffer
+Prepend to specified buffer the text of the region.
+It is inserted into that buffer after its point.
+
+When calling from a program, give three arguments:
+BUFFER (or buffer name), START and END.
+START and END specify the portion of the current buffer to be copied.
+Fcopy-to-buffer
+Copy to specified buffer the text of the region.
+It is inserted into that buffer, replacing existing text there.
+
+When calling from a program, give three arguments:
+BUFFER (or buffer name), START and END.
+START and END specify the portion of the current buffer to be copied.
+Fmark
+Return this buffer's mark value as integer, or nil if no mark.
+
+If `zmacs-regions' is true, then this returns nil unless the region is
+currently in the active (highlighted) state.  With an argument of t, this
+returns the mark (if there is one) regardless of the active-region state.
+You should *generally* not use the mark unless the region is active, if
+the user has expressed a preference for the active-region model.
+
+If you are using this in an editing command, you are most likely making
+a mistake; see the documentation of `set-mark'.
+Fset-mark
+Set this buffer's mark to POS.  Don't use this function!
+That is to say, don't use this function unless you want
+the user to see that the mark has moved, and you want the previous
+mark position to be lost.
+
+Normally, when a new mark is set, the old one should go on the stack.
+This is why most applications should use `push-mark', not `set-mark'.
+
+Novice Emacs Lisp programmers often try to use the mark for the wrong
+purposes.  The mark saves a location for the user's convenience.
+Most editing commands should not alter the mark.
+To remember a location for internal use in the Lisp program,
+store it in a Lisp variable.  Example:
+
+   (let ((start (point))) (forward-line 1) (delete-region start (point))).
+Vmark-ring
+The list of former marks of the current buffer, most recent first.
+This variable is automatically buffer-local.
+Vdont-record-current-mark
+If set to t, the current mark value should not be recorded on the mark ring.
+This is set by commands that manipulate the mark incidentally, to avoid
+cluttering the mark ring unnecessarily.  Under most circumstances, you do
+not need to set this directly; it is automatically reset each time
+`push-mark' is called, according to `mark-ring-unrecorded-commands'.  This
+variable is automatically buffer-local.
+Vglobal-mark-ring
+The list of saved global marks, most recent first.
+Fset-mark-command
+Set mark at where point is, or jump to mark.
+With no prefix argument, set mark, push old mark position on local mark
+ring, and push mark on global mark ring.
+With argument, jump to mark, and pop a new position for mark off the ring
+(does not affect global mark ring).
+
+The mark ring is a per-buffer stack of marks, most recent first.  Its
+maximum length is controlled by `mark-ring-max'.  Generally, when new
+marks are set, the current mark is pushed onto the stack.  You can pop
+marks off the stack using \[universal-argument] \[set-mark-command].  The term "ring" is used because when
+you pop a mark off the stack, the current mark value is pushed onto the
+far end of the stack.  If this is confusing, just think of the mark ring
+as a stack.
+
+Novice Emacs Lisp programmers often try to use the mark for the wrong
+purposes.  See the documentation of `set-mark' for more information.
+Fpush-mark
+Set mark at LOCATION (point, by default) and push old mark on mark ring.
+If the last global mark pushed was not in the current buffer,
+also push LOCATION on the global mark ring.
+Display `Mark set' unless the optional second arg NOMSG is non-nil.
+Activate mark if optional third arg ACTIVATE-REGION non-nil.
+
+Novice Emacs Lisp programmers often try to use the mark for the wrong
+purposes.  See the documentation of `set-mark' for more information.
+Fpop-mark
+Pop off mark ring into the buffer's actual mark.
+Does not set point.  Does nothing if mark ring is empty.
+Fexchange-point-and-mark
+Put the mark where point is now, and point where the mark is now.
+The mark is activated unless DONT-ACTIVATE-REGION is non-nil.
+Fmark-something
+internal function used by mark-sexp, mark-word, etc.
+Fpop-global-mark
+Pop off global mark ring and jump to the top location.
+Fforward-char-command
+Move point right ARG characters (left if ARG negative) in BUFFER.
+On attempt to pass end of buffer, stop and signal `end-of-buffer'.
+On attempt to pass beginning of buffer, stop and signal `beginning-of-buffer'.
+Error signaling is suppressed if `signal-error-on-buffer-boundary'
+is nil.  If BUFFER is nil, the current buffer is assumed.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+Fbackward-char-command
+Move point left ARG characters (right if ARG negative) in BUFFER.
+On attempt to pass end of buffer, stop and signal `end-of-buffer'.
+On attempt to pass beginning of buffer, stop and signal `beginning-of-buffer'.
+Error signaling is suppressed if `signal-error-on-buffer-boundary'
+is nil.  If BUFFER is nil, the current buffer is assumed.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+Fscroll-up-one
+Scroll text of current window upward one line.
+On attempt to scroll past end of buffer, `end-of-buffer' is signaled.
+On attempt to scroll past beginning of buffer, `beginning-of-buffer' is
+signaled.
+
+If `signal-error-on-buffer-boundary' is nil, attempts to scroll past buffer
+boundaries do not cause an error to be signaled.
+Fscroll-up-command
+Scroll current window upward N lines; or near full screen if N is nil.
+A near full screen is `next-screen-context-lines' less than a full screen.
+Negative N means scroll downward.
+When calling from a program, supply a number as argument or nil.
+On attempt to scroll past end of buffer, `end-of-buffer' is signaled.
+On attempt to scroll past beginning of buffer, `beginning-of-buffer' is
+signaled.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
+If `signal-error-on-buffer-boundary' is nil, attempts to scroll past buffer
+boundaries do not cause an error to be signaled.
+Fscroll-down-one
+Scroll text of current window downward one line.
+On attempt to scroll past end of buffer, `end-of-buffer' is signaled.
+On attempt to scroll past beginning of buffer, `beginning-of-buffer' is
+signaled.
+
+If `signal-error-on-buffer-boundary' is nil, attempts to scroll past buffer
+boundaries do not cause an error to be signaled.
+Fscroll-down-command
+Scroll current window downward N lines; or near full screen if N is nil.
+A near full screen is `next-screen-context-lines' less than a full screen.
+Negative N means scroll upward.
+When calling from a program, supply a number as argument or nil.
+On attempt to scroll past end of buffer, `end-of-buffer' is signaled.
+On attempt to scroll past beginning of buffer, `beginning-of-buffer' is
+signaled.
+
+If `signal-error-on-buffer-boundary' is nil, attempts to scroll past buffer
+boundaries do not cause an error to be signaled.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+Fnext-line
+Move cursor vertically down COUNT lines.
+If there is no character in the target line exactly under the current column,
+the cursor is positioned after the character in that line which spans this
+column, or at the end of the line if it is not long enough.
+
+If there is no line in the buffer after this one, behavior depends on the
+value of `next-line-add-newlines'.  If non-nil, it inserts a newline character
+to create a line, and moves the cursor to that line.  Otherwise it moves the
+cursor to the end of the buffer.
+
+The command \[set-goal-column] can be used to create
+a semipermanent goal column to which this command always moves.
+Then it does not try to move vertically.  This goal column is stored
+in `goal-column', which is nil when there is none.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
+If you are thinking of using this in a Lisp program, consider
+using `forward-line' instead.  It is usually easier to use
+and more reliable (no dependence on goal column, etc.).
+Fprevious-line
+Move cursor vertically up COUNT lines.
+If there is no character in the target line exactly over the current column,
+the cursor is positioned after the character in that line which spans this
+column, or at the end of the line if it is not long enough.
+
+The command \[set-goal-column] can be used to create
+a semipermanent goal column to which this command always moves.
+Then it does not try to move vertically.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+
+If you are thinking of using this in a Lisp program, consider using
+`forward-line' with a negative argument instead.  It is usually easier
+to use and more reliable (no dependence on goal column, etc.).
+Fbackward-block-of-lines
+Move backward by one "block" of lines.
+The number of lines that make up a block is controlled by
+`block-movement-size', which defaults to 6.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+Fforward-block-of-lines
+Move forward by one "block" of lines.
+The number of lines that make up a block is controlled by
+`block-movement-size', which defaults to 6.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+Vtemporary-goal-column
+Current goal column for vertical motion.
+It is the column where point was
+at the start of current run of vertical motion commands.
+When the `track-eol' feature is doing its job, the value is 9999.
+Fset-goal-column
+Set the current horizontal position as a goal for \[next-line] and \[previous-line].
+Those commands will move to this position in the line moved to
+rather than trying to keep the same horizontal position.
+With a non-nil argument, clears out the goal column
+so that \[next-line] and \[previous-line] resume vertical motion.
+The goal column is stored in the variable `goal-column'.
+Fscroll-other-window-down
+Scroll the "other window" down.
+For more details, see the documentation for `scroll-other-window'.
+Fbeginning-of-buffer-other-window
+Move point to the beginning of the buffer in the other window.
+Leave mark at previous position.
+With arg N, put point N/10 of the way from the true beginning.
+Fend-of-buffer-other-window
+Move point to the end of the buffer in the other window.
+Leave mark at previous position.
+With arg N, put point N/10 of the way from the true end.
+Ftranspose-chars
+Interchange characters around point, moving forward one character.
+With prefix arg ARG, effect is to take character before point
+and drag it forward past ARG other characters (backward if ARG negative).
+If no argument and at end of line, the previous two chars are exchanged.
+Ftranspose-preceding-chars
+Interchange characters before point.
+With prefix arg ARG, effect is to take character before point
+and drag it forward past ARG other characters (backward if ARG negative).
+If no argument and not at start of line, the previous two chars are exchanged.
+Ftranspose-words
+Interchange words around point, leaving point at end of them.
+With prefix arg ARG, effect is to take word before or around point
+and drag it forward past ARG other words (backward if ARG negative).
+If ARG is zero, the words around or after point and around or after mark
+are interchanged.
+Ftranspose-sexps
+Like \[transpose-words] but applies to sexps.
+Does not work on a sexp that point is in the middle of
+if it is a list or string.
+Ftranspose-lines
+Exchange current line and previous line, leaving point after both.
+With argument ARG, takes previous line and moves it past ARG lines.
+With argument 0, interchanges line point is in with line mark is in.
+Ftranspose-line-up
+Move current line one line up, leaving point at beginning of that line.
+With argument ARG, move it ARG lines up.  This can be run repeatedly
+to move the current line up a number of lines.
+
+If the region is active, move the region up one line (or ARG lines,
+if specified).  The region will not be selected afterwards, but this
+command can still be run repeatedly to move the region up a number
+of lines.
+Ftranspose-line-down
+Move current line one line down, leaving point at beginning of that line.
+With argument ARG, move it ARG lines down.  This can be run repeatedly
+to move the current line down a number of lines.
+
+If the region is active, move the region down one line (or ARG lines,
+if specified).  The region will not be selected afterwards, but this
+command can still be run repeatedly to move the region down a number
+of lines.
+Vcomment-indent-hook
+Obsolete variable for function to compute desired indentation for a comment.
+Use `comment-indent-function' instead.
+This function is called with no args with point at the beginning of
+the comment's starting delimiter.
+Vcomment-indent-function
+Function to compute desired indentation for a comment.
+This function is called with no args with point at the beginning of
+the comment's starting delimiter.
+Findent-for-comment
+Indent this line's comment to comment column, or insert an empty
+comment.  Comments starting in column 0 are not moved.
+Fset-comment-column
+Set the comment column based on point.
+With no arg, set the comment column to the current column.
+With just minus as arg, kill any comment on this line.
+With any other arg, set comment column to indentation of the previous comment
+ and then align or create a comment on this line at that column.
+Fkill-comment
+Kill the comment on this line, if any.
+With argument, kill comments on that many lines starting with this one.
+Vcomment-padding
+Number of spaces `comment-region' puts between comment chars and text.
+
+Extra spacing between the comment characters and the comment text
+makes the comment easier to read.  Default is 1.  Nil means 0 and is
+more efficient.
+Fcomment-region
+Comment or uncomment each line in the region.
+With just C-u prefix arg, uncomment each line in region.
+Numeric prefix arg ARG means use ARG comment characters.
+If ARG is negative, delete that many comment characters instead.
+Comments are terminated on each line, even for syntax in which newline does
+not end the comment.  Blank lines do not get comments.
+Fprefix-region
+Add a prefix string to each line between mark and point.
+Fbackward-word
+Move point backward COUNT words (forward if COUNT is negative).
+Normally t is returned, but if an edge of the buffer is reached,
+point is left there and nil is returned.
+
+COUNT defaults to 1, and BUFFER defaults to the current buffer.
+
+The characters that are moved over may be added to the current selection
+(i.e. active region) if the Shift key is held down, a motion key is used
+to invoke this command, and `shifted-motion-keys-select-region' is t; see
+the documentation for this variable for more details.
+Fmark-word
+Mark the text from point until encountering the end of a word.
+With optional argument COUNT, mark COUNT words.
+Fkill-word
+Kill characters forward until encountering the end of a word.
+With optional argument COUNT, do this that many times.
+Fbackward-kill-word
+Kill characters backward until encountering the end of a word.
+With argument, do this that many times.
+Fcurrent-word
+Return the word point is on (or a nearby word) as a string.
+If optional arg STRICT is non-nil, return nil unless point is within
+or adjacent to a word.
+If point is not between two word-constituent characters, but immediately
+follows one, move back first.
+Otherwise, if point precedes a word constituent, move forward first.
+Otherwise, move backwards until a word constituent is found and get that word;
+if you a newlines is reached first, move forward instead.
+Vcomment-line-break-function
+*Mode-specific function which line breaks and continues a comment.
+
+This function is only called during auto-filling of a comment section.
+The function should take a single optional argument which is a flag
+indicating whether soft newlines should be inserted.
+Vnormal-auto-fill-function
+The function to use for `auto-fill-function' if Auto Fill mode is turned on.
+Some major modes set this.
+Fauto-fill-mode
+Toggle auto-fill mode.
+With arg, turn auto-fill mode on if and only if arg is positive.
+In Auto-Fill mode, inserting a space at a column beyond `current-fill-column'
+automatically breaks the line at a previous space.
+
+The value of `normal-auto-fill-function' specifies the function to use
+for `auto-fill-function' when turning Auto Fill mode on.
+Fauto-fill-function
+Automatically break line at a previous space, in insertion of text.
+Fturn-on-auto-fill
+Unconditionally turn on Auto Fill mode.
+Fset-fill-column
+Set `fill-column' to specified argument.
+Just \[universal-argument] as argument means to use the current column
+The variable `fill-column' has a separate value for each buffer.
+Findent-new-comment-line
+Break line at point and indent, continuing comment if within one.
+This indents the body of the continued comment
+under the previous comment line.
+
+This command is intended for styles where you write a comment per line,
+starting a new comment (and terminating it if necessary) on each line.
+If you want to continue one comment across several lines, use \[newline-and-indent].
+
+If a fill column is specified, it overrides the use of the comment column
+or comment indentation.
+
+The inserted newline is marked hard if `use-hard-newlines' is true,
+unless optional argument SOFT is non-nil.
+Fset-selective-display
+Set `selective-display' to ARG; clear it if no arg.
+When the value of `selective-display' is a number > 0,
+lines whose indentation is >= that value are not displayed.
+The variable `selective-display' has a separate value for each buffer.
+Fnuke-selective-display
+Ensure that the buffer is not in selective-display mode.
+If `selective-display' is t, then restore the buffer text to its original
+state before disabling selective display.
+Voverwrite-mode-textual
+The string displayed in the mode line when in overwrite mode.
+Voverwrite-mode-binary
+The string displayed in the mode line when in binary overwrite mode.
+Foverwrite-mode
+Toggle overwrite mode.
+With arg, enable overwrite mode if arg is positive, else disable.
+In overwrite mode, printing characters typed in replace existing text
+on a one-for-one basis, rather than pushing it to the right.  At the
+end of a line, such characters extend the line.  Before a tab,
+such characters insert until the tab is filled in.
+\[quoted-insert] still inserts characters in overwrite mode; this
+is supposed to make it easier to insert characters when necessary.
+Fbinary-overwrite-mode
+Toggle binary overwrite mode.
+With arg, enable binary overwrite mode if arg is positive, else disable.
+In binary overwrite mode, printing characters typed in replace
+existing text.  Newlines are not treated specially, so typing at the
+end of a line joins the line to the next, with the typed character
+between them.  Typing before a tab character simply replaces the tab
+with the character typed.
+\[quoted-insert] replaces the text at the cursor, just as ordinary
+typing characters do.
+
+Note that binary overwrite mode is not its own minor mode; it is a
+specialization of overwrite-mode, entered by setting the
+`overwrite-mode' variable to `overwrite-mode-binary'.
+Fline-number-mode
+Toggle Line Number mode.
+With arg, enable Line Number mode if arg is positive, else disable.
+When Line Number mode is enabled, the line number appears
+in the mode line.
+Fcolumn-number-mode
+Toggle Column Number mode.
+With arg, enable Column Number mode if arg is positive, else disable.
+When Column Number mode is enabled, the column number appears
+in the mode line.
+Fblink-matching-open
+Move cursor momentarily to the beginning of the sexp before point.
+Fassoc-ignore-case
+Like `assoc', but assumes KEY is a string and ignores case when comparing.
+Fdefine-mail-user-agent
+Define a symbol to identify a mail-sending package for `mail-user-agent'.
+
+SYMBOL can be any Lisp symbol.  Its function definition and/or
+value as a variable do not matter for this usage; we use only certain
+properties on its property list, to encode the rest of the arguments.
+
+COMPOSEFUNC is program callable function that composes an outgoing
+mail message buffer.  This function should set up the basics of the
+buffer without requiring user interaction.  It should populate the
+standard mail headers, leaving the `to:' and `subject:' headers blank
+by default.
+
+COMPOSEFUNC should accept several optional arguments--the same
+arguments that `compose-mail' takes.  See that function's documentation.
+
+SENDFUNC is the command a user would run to send the message.
+
+Optional ABORTFUNC is the command a user would run to abort the
+message.  For mail packages that don't have a separate abort function,
+this can be `kill-buffer' (the equivalent of omitting this argument).
+
+Optional HOOKVAR is a hook variable that gets run before the message
+is actually sent.  Callers that use the `mail-user-agent' may
+install a hook function temporarily on this hook variable.
+If HOOKVAR is nil, `mail-send-hook' is used.
+
+The properties used on SYMBOL are `composefunc', `sendfunc',
+`abortfunc', and `hookvar'.
+Fcompose-mail
+Start composing a mail message to send.
+This uses the user's chosen mail composition package
+as selected with the variable `mail-user-agent'.
+The optional arguments TO and SUBJECT specify recipients
+and the initial Subject field, respectively.
+
+OTHER-HEADERS is an alist specifying additional
+header fields.  Elements look like (HEADER . VALUE) where both
+HEADER and VALUE are strings.
+
+CONTINUE, if non-nil, says to continue editing a message already
+being composed.
+
+SWITCH-FUNCTION, if non-nil, is a function to use to
+switch to and display the buffer used for mail composition.
+
+YANK-ACTION, if non-nil, is an action to perform, if and when necessary,
+to insert the raw text of the message being replied to.
+It has the form (FUNCTION . ARGS).  The user agent will apply
+FUNCTION to ARGS, to insert the raw text of the original message.
+(The user agent will also run `mail-citation-hook', *after* the
+original text has been inserted in this way.)
+
+SEND-ACTIONS is a list of actions to call when the message is sent.
+Each action has the form (FUNCTION . ARGS).
+Fcompose-mail-other-window
+Like \[compose-mail], but edit the outgoing message in another window.
+Fcompose-mail-other-frame
+Like \[compose-mail], but edit the outgoing message in another frame.
+Fset-variable
+Set VARIABLE to VALUE.  VALUE is a Lisp object.
+When using this interactively, supply a Lisp expression for VALUE.
+If you want VALUE to be a string, you must surround it with doublequotes.
+If VARIABLE is a specifier, VALUE is added to it as an instantiator in
+the 'global locale with nil tag set (see `set-specifier').
+
+If VARIABLE has a `variable-interactive' property, that is used as if
+it were the arg to `interactive' (which see) to interactively read the value.
+Fcapitalize-region-or-word
+Capitalize the selected region or the following word (or ARG words).
+Fupcase-region-or-word
+Upcase the selected region or the following word (or ARG words).
+Fdowncase-region-or-word
+Downcase the selected region or the following word (or ARG words).
+Fcapitalize-string-as-title
+Capitalize the words in the string, except for small words (as in titles).
+The words not capitalized are specified in `uncapitalized-title-words'.
+Fcapitalize-region-as-title
+Capitalize the words in the region, except for small words (as in titles).
+The words not capitalized are specified in `uncapitalized-title-words'.
+Factivate-region
+Activate the region, if `zmacs-regions' is true.
+Setting `zmacs-regions' to true causes LISPM-style active regions to be used.
+This function has no effect if `zmacs-regions' is false.
+Fregion-exists-p
+Return t if the region exists.
+If active regions are in use (i.e. `zmacs-regions' is true), this means that
+ the region is active.  Otherwise, this means that the user has pushed
+ a mark in this buffer at some point in the past.
+The functions `region-beginning' and `region-end' can be used to find the
+ limits of the region.
+
+You should use this, *NOT* `region-active-p', in a menu item
+specification that you want grayed out when the region is not active:
+
+  [ ... ... :active (region-exists-p)]
+
+This correctly caters to the user's setting of `zmacs-regions'.
+Fregion-active-p
+Return non-nil if the region is active.
+If `zmacs-regions' is true, this is equivalent to `region-exists-p'.
+Otherwise, this function always returns false.
+
+You should generally *NOT* use this in a menu item specification that you
+want grayed out when the region is not active.  Instead, use this:
+
+  [ ... ... :active (region-exists-p)]
+
+Which correctly caters to the user's setting of `zmacs-regions'.
+Vzmacs-activate-region-hook
+Function or functions called when the region becomes active;
+see the variable `zmacs-regions'.
+Vzmacs-deactivate-region-hook
+Function or functions called when the region becomes inactive;
+see the variable `zmacs-regions'.
+Vzmacs-update-region-hook
+Function or functions called when the active region changes.
+This is called after each command that sets `zmacs-region-stays' to t.
+See the variable `zmacs-regions'.
+Vzmacs-region-extent
+The extent of the zmacs region; don't use this.
+Vzmacs-region-rectangular-p
+Whether the zmacs region is a rectangle; don't use this.
+Fzmacs-region-buffer
+Return the buffer containing the zmacs region, or nil.
+Fzmacs-activate-region
+Make the region between `point' and `mark' be active (highlighted),
+if `zmacs-regions' is true.  Only a very small number of commands
+should ever do this.  Calling this function will call the hook
+`zmacs-activate-region-hook', if the region was previously inactive.
+Calling this function ensures that the region stays active after the
+current command terminates, even if `zmacs-region-stays' is not set.
+Returns t if the region was activated (i.e. if `zmacs-regions' if t).
+Fzmacs-deactivate-region
+Make the region between `point' and `mark' no longer be active,
+if `zmacs-regions' is true.  You shouldn't need to call this; the
+command loop calls it when appropriate.  Calling this function will
+call the hook `zmacs-deactivate-region-hook', if the region was
+previously active.  Returns t if the region had been active, nil
+otherwise.
+Fzmacs-update-region
+Update the highlighted region between `point' and `mark'.
+You shouldn't need to call this; the command loop calls it
+when appropriate.  Calling this function will call the hook
+`zmacs-update-region-hook', if the region is active.
+Vmessage-stack
+An alist of label/string pairs representing active echo-area messages.
+The first element in the list is currently displayed in the echo area.
+Do not modify this directly--use the `message' or
+`display-message'/`clear-message' functions.
+Vremove-message-hook
+A function or list of functions to be called when a message is removed
+from the echo area at the bottom of the frame.  The label of the removed
+message is passed as the first argument, and the text of the message
+as the second argument.
+Fshow-message-log
+Show the " *Message-Log*" buffer, which contains old messages and errors.
+Vlog-message-filter-function
+Value must be a function of two arguments: a symbol (label) and
+a string (message).  It should return non-nil to indicate a message
+should be logged.  Possible values include 'log-message-filter and
+'log-message-filter-errors-only.
+Flog-message-filter
+Default value of `log-message-filter-function'.
+Messages whose text matches one of the `log-message-ignore-regexps'
+or whose label appears in `log-message-ignore-labels' are not saved.
+Flog-message-filter-errors-only
+For use as the `log-message-filter-function'.  Only logs error messages.
+Flog-message
+Stuff a copy of the message into the " *Message-Log*" buffer,
+if it satisfies the `log-message-filter-function'.
+
+For use on `remove-message-hook'.
+Fmessage-displayed-p
+Return a non-nil value if a message is presently displayed in the
+minibuffer's echo area.  If optional argument RETURN-STRING is non-nil,
+return a string containing the message, otherwise just return t.
+Fclear-message
+Remove any message with the given LABEL from the message-stack,
+erasing it from the echo area if it's currently displayed there.
+If a message remains at the head of the message-stack and NO-RESTORE
+is nil, it will be displayed.  The string which remains in the echo
+area will be returned, or nil if the message-stack is now empty.
+If LABEL is nil, the entire message-stack is cleared.
+
+Unless you need the return value or you need to specify a label,
+you should just use (message nil).
+Fdisplay-message
+Print a one-line message at the bottom of the frame.  First argument
+LABEL is an identifier for this message.  MESSAGE is the string to display.
+Use `clear-message' to remove a labelled message.
+
+Here are some standard labels (those marked with `*' are not logged
+by default--see the `log-message-ignore-labels' variable):
+    message       default label used by the `message' function
+    error         default label used for reporting errors
+  * progress      progress indicators like "Converting... 45%"
+  * prompt        prompt-like messages like "I-search: foo"
+  * command       helper command messages like "Mark set"
+  * no-log        messages that should never be logged
+Fcurrent-message
+Return the current message in the echo area, or nil.
+The FRAME argument is currently unused.
+Fmessage
+Print a one-line message at the bottom of the frame.
+The arguments are the same as to `format'.
+
+If the only argument is nil, clear any existing message; let the
+minibuffer contents show.
+Flmessage
+Print a one-line message at the bottom of the frame.
+First argument LABEL is an identifier for this message.  The rest of the
+arguments are the same as to `format'.
+
+See `display-message' for a list of standard labels.
+Vlog-warning-suppressed-classes
+List of classes of warnings that shouldn't be logged or displayed.
+If any of the CLASS symbols associated with a warning is the same as
+any of the symbols listed here, the warning will be completely ignored,
+as it they never happened.
+
+NOTE: In most circumstances, you should *not* set this variable.
+Set `display-warning-suppressed-classes' instead.  That way the suppressed
+warnings are not displayed but are still unobtrusively logged.
+
+See also `log-warning-minimum-level' and `display-warning-minimum-level'.
+Vwarning-count
+Count of the number of warning messages displayed so far.
+Fwarning-level-p
+Non-nil if LEVEL specifies a warning level.
+Fafter-init-display-warnings
+Display warnings deferred till after the init file is run.
+Warnings that occur before then are deferred so that warning
+suppression in the .emacs file will be honored.
+Fdisplay-warning
+Display a warning message.
+CLASS should be a symbol describing what sort of warning this is, such
+as `resource' or `key-mapping'.  A list of such symbols is also
+accepted. (Individual classes can be suppressed; see
+`display-warning-suppressed-classes'.)  Optional argument LEVEL can
+be used to specify a priority for the warning, other than default priority
+`warning'. (See `display-warning-minimum-level').  The message is
+inserted into the *Warnings* buffer, which is made visible at appropriate
+times.
+Fwarn
+Display a warning message.
+The message is constructed by passing all args to `format'.  The message
+is placed in the *Warnings* buffer, which will be popped up at the next
+redisplay.  The class of the warning is `warning'.  See also
+`display-warning'.
+Flwarn
+Display a labeled warning message.
+CLASS should be a symbol describing what sort of warning this is, such
+as `resource' or `key-mapping'.  A list of such symbols is also
+accepted. (Individual classes can be suppressed; see
+`display-warning-suppressed-classes'.)  If non-nil, LEVEL can be used
+to specify a priority for the warning, other than default priority
+`warning'. (See `display-warning-minimum-level').  The message is
+inserted into the *Warnings* buffer, which is made visible at appropriate
+times.
+
+The rest of the arguments are passed to `format'.
+Fdisplay-warning-buffer
+Make the buffer that contains the warnings be visible.
+The C code calls this periodically, right before redisplay.
+Femacs-name
+Return the printable name of this instance of Emacs.
+Fdebug-print
+Send a string to the debugging output.
+The string is formatted using (apply #'format FORMAT ARGS).
+Vglobal-map
+Default global keymap mapping XEmacs keyboard input into commands.
+The value is a keymap which is usually (but not necessarily) XEmacs's
+global map.
+Vesc-map
+Default keymap for ESC (meta) commands.
+The normal global definition of the character ESC indirects to this keymap.
+Vctl-x-map
+Default keymap for C-x commands.
+The normal global definition of the character C-x indirects to this keymap.
+Vctl-x-4-map
+Keymap for subcommands of C-x 4
+Vctl-x-5-map
+Keymap for subcommands of C-x 5
+Vmode-specific-map
+Keymap for characters following C-c.
+Vabbrev-table-name-list
+List of symbols whose values are abbrev tables.
+Vabbrevs-changed
+Set non-nil by defining or altering any word abbrevs.
+This causes `save-some-buffers' to offer to save the abbrevs.
+Fmake-abbrev-table
+Return a new, empty abbrev table object.
+Fclear-abbrev-table
+Undefine all abbrevs in abbrev table TABLE, leaving it empty.
+Fdefine-abbrev-table
+Define TABLE-NAME (a symbol) as an abbrev table name.
+Define abbrevs in it according to DEFINITIONS, which is a list of elements
+of the form (ABBREVNAME EXPANSION HOOK USECOUNT).
+Fdefine-abbrev
+Define an abbrev in TABLE named NAME, to expand to EXPANSION or call HOOK.
+NAME and EXPANSION are strings.  Hook is a function or `nil'.
+To undefine an abbrev, define it with an expansion of `nil'.
+Fdefine-global-abbrev
+Define ABBREV as a global abbreviation for EXPANSION.
+Fdefine-mode-abbrev
+Define ABBREV as a mode-specific abbreviation for EXPANSION.
+Fabbrev-symbol
+Return the symbol representing abbrev named ABBREV.
+This symbol's name is ABBREV, but it is not the canonical symbol of that name;
+it is interned in an abbrev-table rather than the normal obarray.
+The value is nil if that abbrev is not defined.
+Optional second arg TABLE is abbrev table to look it up in.
+The default is to try buffer's mode-specific abbrev table, then global table.
+Fabbrev-expansion
+Return the string that ABBREV expands into in the current buffer.
+Optionally specify an abbrev table as second arg;
+then ABBREV is looked up in that table only.
+Funexpand-abbrev
+Undo the expansion of the last abbrev that expanded.
+This differs from ordinary undo in that other editing done since then
+is not undone.
+Finsert-abbrev-table-description
+Insert before point a full description of abbrev table named NAME.
+NAME is a symbol whose value is an abbrev table.
+If optional second argument HUMAN-READABLE is non-nil, insert a
+human-readable description. Otherwise the description is an
+expression, a call to `define-abbrev-table', which would define the
+abbrev table NAME exactly as it is currently defined.
+Fabbrev-mode
+Toggle abbrev mode.
+With argument ARG, enable abbrev mode if ARG is positive, else disable.
+In abbrev mode, inserting an abbreviation causes it to expand
+and be replaced by its expansion.
+Vedit-abbrevs-map
+Keymap used in edit-abbrevs.
+Fkill-all-abbrevs
+Undefine all defined abbrevs.
+Finsert-abbrevs
+Insert after point a description of all defined abbrevs.
+Mark is set after the inserted text.
+Flist-abbrevs
+Display a list of all defined abbrevs.
+Fedit-abbrevs-mode
+Major mode for editing the list of abbrev definitions.
+\{edit-abbrevs-map}
+Fedit-abbrevs
+Alter abbrev definitions by editing a list of them.
+Selects a buffer containing a list of abbrev definitions.
+You can edit them and type \<edit-abbrevs-map>\[edit-abbrevs-redefine] to redefine abbrevs
+according to your editing.
+Buffer contains a header line for each abbrev table,
+ which is the abbrev table name in parentheses.
+This is followed by one line per abbrev in that table:
+NAME   USECOUNT   EXPANSION   HOOK
+where NAME and EXPANSION are strings with quotes,
+USECOUNT is an integer, and HOOK is any valid function
+or may be omitted (it is usually omitted).
+Fedit-abbrevs-redefine
+Redefine abbrevs according to current buffer contents.
+Fdefine-abbrevs
+Define abbrevs according to current visible buffer contents.
+See documentation of `edit-abbrevs' for info on the format of the
+text you must have in the buffer.
+With argument, eliminate all abbrev definitions except
+the ones defined from the buffer now.
+Fread-abbrev-file
+Read abbrev definitions from file written with `write-abbrev-file'.
+Optional argument FILE is the name of the file to read;
+it defaults to the value of `abbrev-file-name'.
+Optional second argument QUIETLY non-nil means don't print anything.
+Fquietly-read-abbrev-file
+Read abbrev definitions from file written with `write-abbrev-file'.
+Optional argument FILE is the name of the file to read;
+it defaults to the value of `abbrev-file-name'.
+Does not print anything.
+Fwrite-abbrev-file
+Write all abbrev definitions to a file of Lisp code.
+The file written can be loaded in another session to define the same abbrevs.
+The argument FILE is the file name to write.
+Fabbrev-string-to-be-defined
+Return the string for which an abbrev will be defined.
+ARG is the argument to `add-global-abbrev' or `add-mode-abbrev'.
+Fadd-mode-abbrev
+Define mode-specific abbrev for last word(s) before point.
+Argument is how many words before point form the expansion;
+or zero means the region is the expansion.
+A negative argument means to undefine the specified abbrev.
+Reads the abbreviation in the minibuffer.
+
+Don't use this function in a Lisp program; use `define-abbrev' instead.
+Fadd-global-abbrev
+Define global (all modes) abbrev for last word(s) before point.
+The prefix argument specifies the number of words before point that form the
+expansion; or zero means the region is the expansion.
+A negative argument means to undefine the specified abbrev.
+This command uses the minibuffer to read the abbreviation.
+
+Don't use this function in a Lisp program; use `define-abbrev' instead.
+Fadd-abbrev
+Add an abbreviation to abbrev table TABLE.
+TYPE is a string describing in English the kind of abbrev this will be
+(typically, "global" or "mode-specific"); this is used in
+prompting the user.  ARG is the number of words in the expansion.
+
+Return the symbol that internally represents the new abbrev, or nil if
+the user declines to confirm redefining an existing abbrev.
+Finverse-abbrev-string-to-be-defined
+Return the string for which an inverse abbrev will be defined.
+ARG is the argument to `inverse-add-global-abbrev' or
+`inverse-add-mode-abbrev'.
+Finverse-add-mode-abbrev
+Define last word before point as a mode-specific abbrev.
+With prefix argument N, defines the Nth word before point.
+This command uses the minibuffer to read the expansion.
+Expands the abbreviation after defining it.
+Finverse-add-global-abbrev
+Define last word before point as a global (mode-independent) abbrev.
+With prefix argument N, defines the Nth word before point.
+This command uses the minibuffer to read the expansion.
+Expands the abbreviation after defining it.
+Fabbrev-prefix-mark
+Mark current point as the beginning of an abbrev.
+Abbrev to be expanded starts here rather than at beginning of word.
+This way, you can expand an abbrev with a prefix: insert the prefix,
+use this command, then insert the abbrev.
+Fexpand-region-abbrevs
+For abbrev occurrence in the region, offer to expand it.
+The user is asked to type y or n for each occurrence.
+A prefix argument means don't query; expand all abbrevs.
+If called from a Lisp program, arguments are START END &optional NOQUERY.
+Fdefine-derived-mode
+Create a new mode as a variant of an existing mode.
+
+The arguments to this command are as follow:
+
+CHILD:     the name of the command for the derived mode.
+PARENT:    the name of the command for the parent mode (ie. text-mode).
+NAME:      a string which will appear in the status line (ie. "Hypertext")
+DOCSTRING: an optional documentation string--if you do not supply one,
+           the function will attempt to invent something useful.
+BODY:      forms to execute just before running the
+           hooks for the new mode.
+
+Here is how you could define LaTeX-Thesis mode as a variant of LaTeX mode:
+
+  (define-derived-mode LaTeX-thesis-mode LaTeX-mode "LaTeX-Thesis")
+
+You could then make new key bindings for `LaTeX-thesis-mode-map'
+without changing regular LaTeX mode.  In this example, BODY is empty,
+and DOCSTRING is generated by default.
+
+On a more complicated level, the following command uses sgml-mode as
+the parent, and then sets the variable `case-fold-search' to nil:
+
+  (define-derived-mode article-mode sgml-mode "Article"
+    "Major mode for editing technical articles."
+    (setq case-fold-search nil))
+
+Note that if the documentation string had been left out, it would have
+been generated automatically, with a reference to the keymap.
+Fderived-mode-class
+Find the class of a major mode.
+A mode's class is the first ancestor which is NOT a derived mode.
+Use the `derived-mode-parent' property of the symbol to trace backwards.
+Fderived-mode-setup-function-name
+Construct a setup-function name based on a mode name.
+Fderived-mode-hooks-name
+Construct a hooks name based on a mode name.
+Fderived-mode-map-name
+Construct a map name based on a mode name.
+Fderived-mode-syntax-table-name
+Construct a syntax-table name based on a mode name.
+Fderived-mode-abbrev-table-name
+Construct an abbrev-table name based on a mode name.
+Fderived-mode-init-mode-variables
+Initialize variables for a new mode. 
+Right now, if they don't already exist, set up a blank keymap, an
+empty syntax table, and an empty abbrev table -- these will be merged
+the first time the mode is used.
+Fderived-mode-make-docstring
+Construct a docstring for a new mode if none is provided.
+Fderived-mode-set-keymap
+Set the keymap of the new mode, maybe merging with the parent.
+Fderived-mode-set-syntax-table
+Set the syntax table of the new mode, maybe merging with the parent.
+Fderived-mode-set-abbrev-table
+Set the abbrev table if it exists.  
+Always merge its parent into it, since the merge is non-destructive.
+Fderived-mode-run-hooks
+Run the hooks if they exist.
+Fderived-mode-merge-keymaps
+Merge an old keymap into a new one.
+The old keymap is set to be the parent of the new one, so that there will
+be automatic inheritance.
+Fderived-mode-merge-syntax-tables
+Merge an old syntax table into a new one.
+Where the new table already has an entry, nothing is copied from the old one.
+Vminibuffer-completion-table
+Alist or obarray used for completion in the minibuffer.
+This becomes the ALIST argument to `try-completion' and `all-completions'.
+
+The value may alternatively be a function, which is given three arguments:
+  STRING, the current buffer contents;
+  PREDICATE, the predicate for filtering possible matches;
+  CODE, which says what kind of things to do.
+CODE can be nil, t or `lambda'.
+nil means to return the best completion of STRING, nil if there is none,
+  or t if it is already a unique completion.
+t means to return a list of all possible completions of STRING.
+`lambda' means to return t if STRING is a valid completion as it stands.
+Vminibuffer-completion-predicate
+Within call to `completing-read', this holds the PREDICATE argument.
+Vminibuffer-completion-confirm
+Non-nil => demand confirmation of completion before exiting minibuffer.
+Vminibuffer-exit-hook
+Normal hook run just after exit from minibuffer.
+Vminibuffer-help-form
+Value that `help-form' takes on inside the minibuffer.
+Vminibuffer-default
+Default value for minibuffer input.
+Vminibuffer-local-map
+Default keymap to use when reading from the minibuffer.
+Vminibuffer-local-completion-map
+Local keymap for minibuffer input with completion.
+Vminibuffer-local-must-match-map
+Local keymap for minibuffer input with completion, for exact match.
+Vread-expression-map
+Minibuffer keymap used for reading Lisp expressions.
+Vread-shell-command-map
+Minibuffer keymap used by `shell-command' and related commands.
+Fminibuffer-keyboard-quit
+Abort recursive edit.
+If `zmacs-regions' is true, and the zmacs region is active in this buffer,
+then this key deactivates the region without beeping.
+Vminibuffer-history-variable
+History list symbol to add minibuffer values to.
+Each minibuffer output is added with
+  (set minibuffer-history-variable
+       (cons STRING (symbol-value minibuffer-history-variable)))
+Fread-from-minibuffer
+Read a string from the minibuffer, prompting with string PROMPT.
+If optional second arg INITIAL-CONTENTS is non-nil, it is a string
+  to be inserted into the minibuffer before reading input.
+  If INITIAL-CONTENTS is (STRING . POSITION), the initial input
+  is STRING, but point is placed POSITION characters into the string.
+Third arg KEYMAP is a keymap to use while reading;
+  if omitted or nil, the default is `minibuffer-local-map'.
+If fourth arg READ is non-nil, then interpret the result as a lisp object
+  and return that object:
+  in other words, do `(car (read-from-string INPUT-STRING))'
+Fifth arg HISTORY, if non-nil, specifies a history list
+  and optionally the initial position in the list.
+  It can be a symbol, which is the history list variable to use,
+  or it can be a cons cell (HISTVAR . HISTPOS).
+  In that case, HISTVAR is the history list variable to use,
+  and HISTPOS is the initial position (the position in the list
+  which INITIAL-CONTENTS corresponds to).
+  If HISTORY is `t', no history will be recorded.
+  Positions are counted starting from 1 at the beginning of the list.
+Sixth arg ABBREV-TABLE, if non-nil, becomes the value of `local-abbrev-table'
+  in the minibuffer.
+Seventh arg DEFAULT, if non-nil, will be returned when user enters
+  an empty string.
+
+See also the variable `completion-highlight-first-word-only' for
+  control over completion display.
+Fcompleting-read
+Read a string in the minibuffer, with completion.
+Args: PROMPT, TABLE, PREDICATE, REQUIRE-MATCH, INITIAL-CONTENTS, HISTORY.
+PROMPT is a string to prompt with; normally it ends in a colon and a space.
+TABLE is an alist whose elements' cars are strings, or an obarray.
+PREDICATE limits completion to a subset of TABLE.
+See `try-completion' for more details on completion, TABLE, and PREDICATE.
+If REQUIRE-MATCH is non-nil, the user is not allowed to exit unless
+ the input is (or completes to) an element of TABLE or is null.
+ If it is also not t, Return does not exit if it does non-null completion.
+If INITIAL-CONTENTS is non-nil, insert it in the minibuffer initially.
+  If it is (STRING . POSITION), the initial input
+  is STRING, but point is placed POSITION characters into the string.
+HISTORY, if non-nil, specifies a history list
+  and optionally the initial position in the list.
+  It can be a symbol, which is the history list variable to use,
+  or it can be a cons cell (HISTVAR . HISTPOS).
+  In that case, HISTVAR is the history list variable to use,
+  and HISTPOS is the initial position (the position in the list
+  which INITIAL-CONTENTS corresponds to).
+  If HISTORY is `t', no history will be recorded.
+  Positions are counted starting from 1 at the beginning of the list.
+DEFAULT, if non-nil, is the default value.
+Completion ignores case if the ambient value of
+  `completion-ignore-case' is non-nil.
+Fminibuffer-complete
+Complete the minibuffer contents as far as possible.
+Return nil if there is no valid completion, else t.
+If no characters can be completed, display a list of possible completions.
+If you repeat this command after it displayed such a list,
+scroll the window of possible completions.
+Fminibuffer-complete-and-exit
+Complete the minibuffer contents, and maybe exit.
+Exit if the name is valid with no completion needed.
+If name was completed to a valid match,
+a repetition of this command will exit.
+Fself-insert-and-exit
+Terminate minibuffer input.
+Fexit-minibuffer
+Terminate this minibuffer argument.
+If minibuffer-confirm-incomplete is true, and we are in a completing-read
+of some kind, and the contents of the minibuffer is not an existing
+completion, requires an additional RET before the minibuffer will be exited
+(assuming that RET was the character that invoked this command:
+the character in question must be typed again).
+Fminibuffer-complete-word
+Complete the minibuffer contents at most a single word.
+After one word is completed as much as possible, a space or hyphen
+is added, provided that matches some possible completion.
+Return nil if there is no valid completion, else t.
+Fminibuffer-smart-select-highlighted-completion
+Select the highlighted text under the mouse as a minibuffer response.
+When the minibuffer is being used to prompt the user for a completion,
+any valid completions which are visible on the frame will highlight
+when the mouse moves over them.  Clicking \<minibuffer-local-map>\[minibuffer-smart-select-highlighted-completion] will select the
+highlighted completion under the mouse.
+
+If the mouse is clicked while not over a highlighted completion,
+then the global binding of \[minibuffer-smart-select-highlighted-completion] will be executed instead.  In this
+way you can get at the normal global behavior of \[minibuffer-smart-select-highlighted-completion] as well as
+the special minibuffer behavior.
+Fminibuffer-smart-maybe-select-highlighted-completion
+Like `minibuffer-smart-select-highlighted-completion' but does nothing if
+there is no completion (as opposed to executing the global binding).  Useful
+as the value of `mouse-track-click-hook'.
+Vminibuffer-history
+Default minibuffer history list.
+This is used for all minibuffer input except when an alternate history
+list is specified.
+Vminibuffer-history-sexp-flag
+Non-nil when doing history operations on `command-history'.
+More generally, indicates that the history list being acted on
+contains expressions rather than strings.
+Fprevious-matching-history-element
+Find the previous history element that matches REGEXP.
+(Previous history elements refer to earlier actions.)
+With prefix argument N, search for Nth previous match.
+If N is negative, find the next or Nth next match.
+Fnext-matching-history-element
+Find the next history element that matches REGEXP.
+(The next history element refers to a more recent action.)
+With prefix argument N, search for Nth next match.
+If N is negative, find the previous or Nth previous match.
+Fnext-history-element
+Insert the next element of the minibuffer history into the minibuffer.
+Fprevious-history-element
+Insert the previous element of the minibuffer history into the minibuffer.
+Fnext-complete-history-element
+Get next element of history which is a completion of minibuffer contents.
+Fprevious-complete-history-element
+Get previous element of history which is a completion of minibuffer contents.
+Fread-expression
+Return a Lisp object read using the minibuffer, prompting with PROMPT.
+If non-nil, optional second arg INITIAL-CONTENTS is a string to insert
+ in the minibuffer before reading.
+Third arg HISTORY, if non-nil, specifies a history list.
+Fourth arg DEFAULT-VALUE is the default value.  If non-nil, it is used
+ for history command, and as the value to return if the user enters the
+ empty string.
+Fread-string
+Return a string from the minibuffer, prompting with string PROMPT.
+If non-nil, optional second arg INITIAL-CONTENTS is a string to insert
+ in the minibuffer before reading.
+Third arg HISTORY, if non-nil, specifies a history list.
+Fourth arg DEFAULT-VALUE is the default value.  If non-nil, it is used
+ for history command, and as the value to return if the user enters the
+ empty string.
+Feval-minibuffer
+Return value of Lisp expression read using the minibuffer.
+Prompt with PROMPT.  If non-nil, optional second arg INITIAL-CONTENTS
+is a string to insert in the minibuffer before reading.
+Third arg HISTORY, if non-nil, specifies a history list.
+Fourth arg DEFAULT-VALUE is the default value.  If non-nil, it is used
+ for history command, and as the value to return if the user enters the
+ empty string.
+Fread-command
+Read the name of a command and return as a symbol.
+Prompts with PROMPT.  By default, return DEFAULT-VALUE.
+Fread-function
+Read the name of a function and return as a symbol.
+Prompts with PROMPT.  By default, return DEFAULT-VALUE.
+Fread-variable
+Read the name of a user variable and return it as a symbol.
+Prompts with PROMPT.  By default, return DEFAULT-VALUE.
+A user variable is one whose documentation starts with a `*' character.
+Fread-buffer
+Read the name of a buffer and return as a string.
+Prompts with PROMPT.  Optional second arg DEFAULT is value to return if user
+enters an empty line.  If optional third arg REQUIRE-MATCH is non-nil,
+only existing buffer names are allowed.
+Fread-number
+Read a number from the minibuffer, prompting with PROMPT.
+If optional second argument INTEGERS-ONLY is non-nil, accept
+ only integer input.
+If DEFAULT-VALUE is non-nil, return that if user enters an empty
+ line.
+Fread-shell-command
+Just like read-string, but uses read-shell-command-map:
+\{read-shell-command-map}
+Fread-file-name
+Read file name, prompting with PROMPT and completing in directory DIR.
+This will prompt with a dialog box if appropriate, according to
+ `should-use-dialog-box-p'.
+Value is not expanded---you must call `expand-file-name' yourself.
+Value is subject to interpretation by `substitute-in-file-name' however.
+Default name to DEFAULT if user enters a null string.
+ (If DEFAULT is omitted, the visited file name is used,
+  except that if INITIAL-CONTENTS is specified, that combined with DIR is
+  used.)
+Fourth arg MUST-MATCH non-nil means require existing file's name.
+ Non-nil and non-t means also require confirmation after completion.
+Fifth arg INITIAL-CONTENTS specifies text to start with.  If this is not
+ specified, and `insert-default-directory' is non-nil, DIR or the current
+ directory will be used.
+Sixth arg HISTORY specifies the history list to use.  Default is
+ `file-name-history'.
+DIR defaults to current buffer's directory default.
+Fread-directory-name
+Read directory name, prompting with PROMPT and completing in directory DIR.
+This will prompt with a dialog box if appropriate, according to
+ `should-use-dialog-box-p'.
+Value is not expanded---you must call `expand-file-name' yourself.
+Value is subject to interpreted by substitute-in-file-name however.
+Default name to DEFAULT if user enters a null string.
+ (If DEFAULT is omitted, the current buffer's default directory is used.)
+Fourth arg MUST-MATCH non-nil means require existing directory's name.
+ Non-nil and non-t means also require confirmation after completion.
+Fifth arg INITIAL-CONTENTS specifies text to start with.
+Sixth arg HISTORY specifies the history list to use.  Default is
+ `file-name-history'.
+DIR defaults to current buffer's directory default.
+Fappend-expand-filename
+Append STRING to FILE-STRING differently depending on whether STRING
+is a username (~string), an environment variable ($string),
+or a filename (/string).  The resultant string is returned with the
+environment variable or username expanded and resolved to indicate
+whether it is a file(/result) or a directory (/result/).
+Fread-face
+Read the name of a face from the minibuffer and return it as a symbol.
+Vx-library-search-path
+Search path used by `read-color' to find rgb.txt.
+Fread-color
+Read the name of a color from the minibuffer.
+On X devices, this uses `x-library-search-path' to find rgb.txt in order
+ to build a completion table.
+On TTY devices, this uses `tty-color-list'.
+On mswindows devices, this uses `mswindows-color-list'.
+Fread-coding-system
+Read a coding-system (or nil) from the minibuffer.
+Prompting with string PROMPT.
+If the user enters null input, return second argument DEFAULT-CODING-SYSTEM.
+DEFAULT-CODING-SYSTEM can be a string, symbol, or coding-system object.
+Fread-non-nil-coding-system
+Read a non-nil coding-system from the minibuffer.
+Prompt with string PROMPT.
+Fshould-use-dialog-box-p
+If non-nil, questions should be asked with a dialog box instead of the
+minibuffer.  This looks at `last-command-event' to see if it was a mouse
+event, and checks whether dialog-support exists and the current device
+supports dialog boxes.
+
+The dialog box is totally disabled if the variable `use-dialog-box'
+is set to nil.
+Vlist-mode-map
+Local map for buffers containing lists of items.
+Vlist-mode-hook
+Normal hook run when entering List mode.
+Flist-mode
+Major mode for buffer containing lists of items.
+Vlist-mode-extent-old-point
+The value of point when pre-command-hook is called.
+Used to determine the direction of motion.
+Fset-list-mode-extent
+Move to the closest list item and set up the extent for it.
+This is called from `post-command-hook'.
+Fprevious-list-mode-item
+Move to the previous item in list-mode.
+Fnext-list-mode-item
+Move to the next item in list-mode.
+With prefix argument N, move N items (negative N means move backward).
+Fadd-list-mode-item
+Add a new list item in list-mode, from START to END in BUFFER.
+BUFFER defaults to the current buffer.
+This works by creating an extent for the span of text in question.
+If ACTIVATE-CALLBACK is non-nil, it should be a function of three
+  arguments (EVENT EXTENT USER-DATA) that will be called when button2
+  is pressed on the extent.  USER-DATA comes from the optional
+  USER-DATA argument.
+Vcompletion-highlight-first-word-only
+*Completion will only highlight the first blank delimited word if t.
+If the variable in not t or nil, the string is taken as a regexp to match for end
+of highlight
+Vcompletion-setup-hook
+Normal hook run at the end of setting up the text of a completion buffer.
+When run, the completion buffer is the current buffer.
+Vcompletion-default-help-string
+Form the evaluate to get a help string for completion lists.
+This string is inserted at the beginning of the buffer.
+See `display-completion-list'.
+Fdisplay-completion-list
+Display the list of completions, COMPLETIONS, using `standard-output'.
+Each element may be just a symbol or string or may be a list of two
+ strings to be printed as if concatenated.
+Frob a mousable extent onto each completion.  This extent has properties
+ 'mouse-face (so it highlights when the mouse passes over it) and
+ 'list-mode-item (so it can be located).
+
+Keywords:
+  :activate-callback (default is `default-choose-completion')
+    See `add-list-mode-item'.
+  :user-data
+    Value passed to activation callback.
+  :window-width
+    If non-nil, width to use in displaying the list, instead of the
+    actual window's width.
+  :window-height
+    If non-nil, use no more than this many lines, and extend line width as
+    necessary.
+  :help-string (default is the value of `completion-default-help-string')
+    Form to evaluate to get a string to insert at the beginning of
+    the completion list buffer.  This is evaluated when that buffer
+    is the current buffer and after it has been put into
+    completion-list-mode.
+  :reference-buffer (default is the current buffer)
+    This specifies the value of `completion-reference-buffer' in
+    the completion buffer.  This specifies the buffer (normally a
+    minibuffer) that `default-choose-completion' will insert the
+    completion into.
+
+At the end, run the normal hook `completion-setup-hook'.
+It can find the completion buffer in `standard-output'.
+If `completion-highlight-first-word-only' is non-nil, then only the start
+ of the string is highlighted.
+Vcompletion-display-completion-list-function
+Function to set up the list of completions in the completion buffer.
+The function is called with one argument, the sorted list of completions.
+Particular minibuffer interface functions (e.g. `read-file-name') may
+want to change this.  To do that, set a local value for this variable
+in the minibuffer; that ensures that other minibuffer invocations will
+not be affected.
+Fminibuffer-completion-help
+Display a list of possible completions of the current minibuffer contents.
+The list of completions is determined by calling `all-completions',
+passing it the current minibuffer contents, the value of
+`minibuffer-completion-table', and the value of
+`minibuffer-completion-predicate'.  The list is displayed by calling
+the value of `completion-display-completion-list-function' on the sorted
+list of completions, with the standard output set to the completion
+buffer.
+Fcompletion-list-mode
+Major mode for buffers showing lists of possible completions.
+\{completion-list-mode-map}
+Vcompletion-reference-buffer
+Record the buffer that was current when the completion list was requested.
+This is a local variable in the completion list buffer.
+Initial value is nil to avoid some compiler warnings.
+Vcompletion-base-size
+Number of chars at beginning of minibuffer not involved in completion.
+This is a local variable in the completion list buffer
+but it talks about the buffer in `completion-reference-buffer'.
+If this is nil, it means to compare text to determine which part
+of the tail end of the buffer's text is involved in completion.
+Fdelete-completion-window
+Delete the completion list window.
+Go to the window from which completion was requested.
+Fcompletion-switch-to-minibuffer
+Move from a completions buffer to the active minibuffer window.
+Fcompletion-list-mode-quit
+Abort any recursive edit and bury the completions buffer.
+Fdefault-choose-completion
+Click on an alternative in the `*Completions*' buffer to choose it.
+Fswitch-to-completions
+Select the completion list window.
+Fmouse-drag-modeline
+Resize a window by dragging its modeline.
+This command should be bound to a button-press event in modeline-map.
+Holding down a mouse button and moving the mouse up and down will
+make the clicked-on window taller or shorter.
+
+See also the variable `modeline-scrolling-method'.
+Fmodeline-swap-buffers
+Handle mouse clicks on modeline by switching buffers.
+If click on left half of a frame's modeline, bury current buffer.
+If click on right half of a frame's modeline, raise bottommost buffer.
+Arg EVENT is the button release event that occurred on the modeline.
+Vmodeline-map
+Keymap consulted for mouse-clicks on the modeline of a window.
+This variable may be buffer-local; its value will be looked up in
+the buffer of the window whose modeline was clicked upon.
+Vminor-mode-alist
+Alist saying how to show minor modes in the modeline.
+Each element looks like (VARIABLE STRING);
+STRING is included in the modeline iff VARIABLE's value is non-nil.
+
+Actually, STRING need not be a string; any possible modeline element
+is okay.  See `modeline-format'.
+Vminor-mode-map-alist
+Alist of keymaps to use for minor modes.
+Each element looks like (VARIABLE . KEYMAP); KEYMAP is used to read
+key sequences and look up bindings iff VARIABLE's value is non-nil.
+If two active keymaps bind the same key, the keymap appearing earlier
+in the list takes precedence.
+Vmodeline-mousable-minor-mode-extent
+Extent managing the mousable minor mode modeline strings.
+Fadd-minor-mode
+Add a minor mode to `minor-mode-alist' and `minor-mode-map-alist'.
+
+TOGGLE is a symbol whose value as a variable specifies whether the
+minor mode is active.
+
+NAME is the name that should appear in the modeline.  It should either
+be a string beginning with a space, or a symbol with a similar string
+as its value.
+
+KEYMAP is a keymap to make active when the minor mode is active.
+
+AFTER is the toggling symbol used for another minor mode.  If AFTER is
+non-nil, then it is used to position the new mode in the minor-mode
+alists.
+
+TOGGLE-FUN specifies an interactive function that is called to toggle
+the mode on and off; this affects what happens when button2 is pressed
+on the mode, and when button3 is pressed somewhere in the list of
+modes.  If TOGGLE-FUN is nil and TOGGLE names an interactive function,
+TOGGLE is used as the toggle function.
+
+Example: (add-minor-mode 'view-minor-mode " View" view-mode-map)
+Fmodeline-minor-mode-menu
+The menu that pops up when you press `button3' inside the
+parentheses on the modeline.
+Vmodeline-minor-mode-map
+Keymap consulted for mouse-clicks on the minor-mode modeline list.
+Vmodeline-minor-mode-extent
+Extent covering the minor mode modeline strings.
+Vmodeline-buffer-id-left-map
+Keymap consulted for mouse-clicks on the left half of the buffer-id string.
+Vmodeline-buffer-id-right-map
+Keymap consulted for mouse-clicks on the right half of the buffer-id string.
+Vmodeline-buffer-id-extent
+Extent covering the whole of the buffer-id string.
+Vmodeline-buffer-id-left-extent
+Extent covering the left half of the buffer-id string.
+Vmodeline-buffer-id-right-extent
+Extent covering the right half of the buffer-id string.
+Vmodeline-buffer-identification
+Modeline control for identifying the buffer being displayed.
+Its default value is
+
+  (list (cons modeline-buffer-id-left-extent "XEmacs%N:")
+	(cons modeline-buffer-id-right-extent " %17b")))
+
+Major modes that edit things other than ordinary files may change this
+(e.g. Info, Dired,...).
+Vmodeline-process
+Modeline control for displaying info on process status.
+Normally nil in most modes, since there is no process to display.
+Vmodeline-modified-map
+Keymap consulted for mouse-clicks on the modeline-modified string.
+Vmodeline-modified-extent
+Extent covering the modeline-modified string.
+Vmodeline-modified
+Modeline control for displaying whether current buffer is modified.
+Vmodeline-narrowed-map
+Keymap consulted for mouse-clicks on the modeline-narrowed string.
+Vmodeline-narrowed-extent
+Extent covering the modeline-narrowed string.
+Fmodeline-toggle-read-only
+Change whether this buffer is visiting its file read-only.
+With arg, set read-only iff arg is positive.
+This function is designed to be called when the read-only indicator on the
+modeline is clicked.  It will call `vc-toggle-read-only' if available,
+otherwise it will call the usual `toggle-read-only'.
+Vcustom-file-base
+Base of file name for storing customization information.
+Vcustom-file
+File used for storing customization information.
+If you change this from the default you need to
+explicitly load that file for the settings to take effect.
+Fmake-custom-file-name
+Construct the default custom file name from the init file name.
+If FORCE-NEW is non-nil, force post-migration location.
+Vcommand-line-processed
+t once command line has been processed
+Vinhibit-startup-message
+*Non-nil inhibits the initial startup message.
+This is for use in your personal init file, once you are familiar
+with the contents of the startup message.
+Vinhibit-default-init
+*Non-nil inhibits loading the `default' library.
+Vcommand-line-args-left
+List of command-line args not yet processed.
+Vcommand-line-default-directory
+Default directory to use for command line arguments.
+This is normally copied from `default-directory' when XEmacs starts.
+Vbefore-init-hook
+Functions to call after handling urgent options but before init files.
+The frame system uses this to open frames to display messages while
+XEmacs loads the user's initialization file.
+Vafter-init-hook
+*Functions to call after loading the init file.
+The call is not protected by a condition-case, so you can set `debug-on-error'
+in the init file, and put all the actual code on `after-init-hook'.
+Vterm-setup-hook
+*Functions to be called after loading terminal-specific Lisp code.
+See `run-hooks'.  This variable exists for users to set, so as to
+override the definitions made by the terminal-specific file.  XEmacs
+never sets this variable itself.
+Vkeyboard-type
+The brand of keyboard you are using.
+This variable is used to define the proper function and keypad keys
+for use under X.  It is used in a fashion analogous to the environment
+value TERM.
+Vwindow-setup-hook
+Normal hook run to initialize window system display.
+XEmacs runs this hook after processing the command line arguments and loading
+the user's init file.
+Vinitial-major-mode
+Major mode command symbol to use for the initial *scratch* buffer.
+Vemacs-roots
+List of plausible roots of the XEmacs hierarchy.
+Vuser-init-directory-base
+Base of directory where user-installed init files may go.
+Vuser-init-directory
+Directory where user-installed init files may go.
+Vuser-init-file-base
+Default name of the user init file if uncompiled.
+This should be used for migration purposes only.
+Vuser-init-file-base-list
+List of allowed init files in the user's init directory.
+The first one found takes precedence.
+Vuser-home-init-file-base-list
+List of allowed init files in the user's home directory.
+The first one found takes precedence.
+Vload-home-init-file
+Non-nil if XEmacs should load the init file from the home directory.
+Otherwise, XEmacs will offer migration to the init directory.
+Vload-user-init-file-p
+Non-nil if XEmacs should load the user's init file.
+Vsite-start-file
+File containing site-wide run-time initializations.
+This file is loaded at run-time before `.emacs'.  It
+contains inits that need to be in place for the entire site, but
+which, due to their higher incidence of change, don't make sense to
+load into XEmacs' dumped image.  Thus, the run-time load order is:
+
+  1. file described in this variable, if non-nil;
+  2. `.emacs';
+  3. `/path/to/xemacs/lisp/default.el'.
+
+Don't use the `site-start.el' file for things some users may not like.
+Put them in `default.el' instead, so that users can more easily
+override them.  Users can prevent loading `default.el' with the `-q'
+option or by setting `inhibit-default-init' in their own init files,
+but inhibiting `site-start.el' requires `--no-site-file', which
+is less convenient.
+Vinit-file-loaded
+True after the user's init file has been loaded (or suppressed with -q).
+This will be true when `after-init-hook' is run and at all times
+after, and will not be true at any time before.
+Vcommand-switch-alist
+Alist of command-line switches.
+Elements look like (SWITCH-STRING . HANDLER-FUNCTION).
+HANDLER-FUNCTION receives switch name as sole arg;
+remaining command-line args are in the variable `command-line-args-left'.
+Fcommand-line-do-help
+Print the XEmacs usage message and exit.
+Fcommand-line-do-funcall
+Invoke the named lisp function with no arguments.
+<function>
+Fcommand-line-do-eval
+Evaluate the lisp form.  Quote it carefully.
+<form>
+Fcommand-line-do-load
+Load the named file of Lisp code into XEmacs.
+<file>
+Fcommand-line-do-insert
+Insert file into the current buffer.
+<file>
+Fcommand-line-do-kill
+Exit XEmacs.
+Fcommand-line-do-version
+Print version info and exit.
+Fearly-error-handler
+You should probably not be using this.
+Vinitial-scratch-message
+Initial message displayed in *scratch* buffer at startup.
+If this is nil, no message will be displayed.
+Ffind-user-init-directory-init-file
+Determine the user's init file if in the init directory.
+Ffind-user-home-directory-init-file
+Determine the user's init file if in the home directory.
+Ffind-user-init-file
+Determine the user's init file.
+Fmaybe-migrate-user-init-file
+Ask user if she wants to migrate the init file(s) to new location.
+Fmaybe-create-compatibility-dot-emacs
+Ask user if she wants to create a .emacs compatibility file.
+Fmigrate-user-init-file
+Migrate the init file from the home directory.
+Fcreate-compatibility-dot-emacs
+Create .emacs compatibility file for migrated setup.
+Fmaybe-unmigrate-user-init-file
+Possibly unmigrate the user's init and custom files.
+Funmigrate-user-init-file
+Unmigrate the user's init and custom files.
+Fload-user-init-file
+This function actually reads the init file.
+Fload-options-file
+Load the file of saved options (from the Options menu) called FILENAME.
+Currently this does nothing but call `load', but it might be redefined
+in the future to support automatically converting older options files to
+a new format, when variables have changed, etc.
+Vstartup-presentation-hack-keymap
+Putting yesterday in the future tomorrow.
+Fstartup-setup-paths
+Setup all the various paths.
+ROOTS is a list of plausible roots of the XEmacs directory hierarchy.
+If INHIBIT-PACKAGES is non-NIL, don't do packages.
+If INHIBIT-SITE-LISP is non-NIL, don't do site-lisp.
+If DEBUG-PATHS is non-NIL, print paths as they are detected.
+It's idempotent, so call this as often as you like!
+Fcopy-from-above-command
+Copy characters from previous nonblank line, starting just above point.
+Copy ARG characters, but not past the end of that line.
+If no argument given, copy the entire rest of the line.
+The characters copied are inserted in the buffer before point.
+Vhelp-map
+Keymap for characters following the Help key.
+Fhelp-mode
+Major mode for viewing help text.
+Entry to this mode runs the normal hook `help-mode-hook'.
+Commands:
+\{help-mode-map}
+Fdescribe-function-at-point
+Describe directly the function at point in the other window.
+Fdescribe-variable-at-point
+Describe directly the variable at point in the other window.
+Fhelp-next-symbol
+Move point to the next quoted symbol.
+Fhelp-prev-symbol
+Move point to the previous quoted symbol.
+Fhelp-next-section
+Move point to the next quoted symbol.
+Fhelp-prev-section
+Move point to the previous quoted symbol.
+Fhelp-mode-bury
+Bury the help buffer, possibly restoring the previous window configuration.
+Fhelp-mode-quit
+Exit from help mode, possibly restoring the previous window configuration.
+If the optional argument BURY is non-nil, the help buffer is buried,
+otherwise it is killed.
+Fkey-or-menu-binding
+Return the command invoked by KEY.
+Like `key-binding', but handles menu events and toolbar presses correctly.
+KEY is any value returned by `next-command-event'.
+MENU-FLAG is a symbol that should be set to t if KEY is a menu event,
+ or nil otherwise.
+Fdescribe-key-briefly
+Print the name of the function KEY invokes.  KEY is a string.
+If INSERT (the prefix arg) is non-nil, insert the message in the buffer.
+Fprint-help-return-message
+Display or return message saying how to restore windows after help command.
+Computes a message and applies the optional argument FUNCTION to it.
+If FUNCTION is nil, applies `message' to it, thus printing it.
+Vhelp-buffer-list
+List of help buffers used by `help-register-and-maybe-prune-excess'
+Fhelp-register-and-maybe-prune-excess
+Register use of a help buffer and possibly kill any excess ones.
+Vhelp-buffer-prefix-string
+Initial string to use in constructing help buffer names.
+You should never set this directory, only let-bind it.
+Fhelp-buffer-name
+Return a name for a Help buffer using string NAME for context.
+Fwith-displaying-help-buffer
+Form which makes a help buffer with given NAME and evaluates BODY there.
+The actual name of the buffer is generated by the function `help-buffer-name'.
+Fdescribe-key
+Display documentation of the function invoked by KEY.
+KEY is a string, or vector of events.
+When called interactively, KEY may also be a menu selection.
+Fdescribe-mode
+Display documentation of current major mode and minor modes.
+For this to work correctly for a minor mode, the mode's indicator variable
+(listed in `minor-mode-alist') must also be a function whose documentation
+describes the minor mode.
+Fdescribe-distribution
+Display info on how to obtain the latest version of XEmacs.
+Fdescribe-beta
+Display info on how to deal with Beta versions of XEmacs.
+Fdescribe-copying
+Display info on how you may redistribute copies of XEmacs.
+Fdescribe-pointer
+Show a list of all defined mouse buttons, and their definitions.
+Fdescribe-project
+Display info on the GNU project.
+Fdescribe-no-warranty
+Display info on all the kinds of warranty XEmacs does NOT have.
+Fdescribe-bindings
+Show a list of all defined keys, and their definitions.
+The list is put in a buffer, which is displayed.
+If optional first argument PREFIX is supplied, only commands
+which start with that sequence of keys are described.
+If optional second argument MOUSE-ONLY-P (prefix arg, interactively)
+is non-nil then only the mouse bindings are displayed.
+Fdescribe-prefix-bindings
+Describe the bindings of the prefix used to reach this command.
+The prefix described consists of all but the last event
+of the key sequence that ran this command.
+Fdescribe-installation
+Display a buffer showing information about this XEmacs was compiled.
+Fview-emacs-news
+Display info on recent changes to XEmacs.
+Fxemacs-www-page
+Go to the XEmacs World Wide Web page.
+Fxemacs-www-faq
+View the latest and greatest XEmacs FAQ using the World Wide Web.
+Fxemacs-local-faq
+View the local copy of the XEmacs FAQ.
+If you have access to the World Wide Web, you should use `xemacs-www-faq'
+instead, to ensure that you get the most up-to-date information.
+Fview-sample-init-el
+Display the sample init.el file.
+Fprint-recent-messages
+Print N most recent messages to standard-output, most recent first.
+If N is nil, all messages will be printed.
+Fview-lossage
+Display recent input keystrokes and recent minibuffer messages.
+The number of keys shown is controlled by `view-lossage-key-count'.
+The number of messages shown is controlled by `view-lossage-message-count'.
+Fhelp-for-help
+Type a Help option:
+(Use SPC or DEL to scroll through this text.  Type \<help-map>\[help-quit] to exit the Help command.)
+
+Help on key bindings:
+
+\[describe-bindings]	Table of all key bindings.
+\[describe-key-briefly]	Type a key sequence or select a menu item;
+        it displays the corresponding command name.
+\[describe-key]	Type a key sequence or select a menu item;
+        it displays the documentation for the command bound to that key.
+	(Terser but more up-to-date than what's in the manual.)
+\[Info-goto-emacs-key-command-node]	Type a key sequence or select a menu item;
+	it jumps to the full documentation in the XEmacs User's Manual
+	for the corresponding command.
+\[view-lossage]	Recent input keystrokes and minibuffer messages.
+\[describe-mode]	Documentation of current major and minor modes.
+\[describe-pointer]	Table of all mouse-button bindings.
+\[where-is]	Type a command name; it displays which keystrokes invoke that command.
+
+Help on functions and variables:
+
+\[hyper-apropos]	Type a substring; it shows a hypertext list of
+        functions and variables that contain that substring.
+\[command-apropos]	Older version of apropos; superseded by previous command.
+\[apropos-documentation]	Type a substring; it shows a hypertext list of
+        functions and variables containing that substring anywhere
+        in their documentation.
+\[Info-goto-emacs-command-node]	Type a command name; it jumps to the full documentation
+	in the XEmacs User's Manual.
+\[describe-function]	Type a command or function name; it shows its documentation.
+	(Terser but more up-to-date than what's in the manual.)
+\[Info-elisp-ref]	Type a function name; it jumps to the full documentation
+	in the XEmacs Lisp Reference Manual.
+\[Info-search-index-in-xemacs-and-lispref]	Type a substring; it looks it up in the indices of both
+	the XEmacs User's Manual and the XEmacs Lisp Reference Manual.
+	It jumps to the first match (preferring an exact match); you
+	can use `\<Info-mode-map>\[Info-index-next]\<help-map>' to successively visit other matches.
+\[describe-variable]	Type a variable name; it displays its documentation and value.
+
+Miscellaneous:
+
+\[describe-beta]	Special considerations about running a beta version of XEmacs.
+
+\[customize]	Customize Emacs options.
+\[describe-distribution]	How to obtain XEmacs.
+\[describe-last-error]	Information about the most recent error.
+\[xemacs-local-faq]	Local copy of the XEmacs FAQ.
+\[info]	Info documentation reader.
+\[Info-query]	Type an Info file name; it displays it in Info reader.
+\[describe-copying]	XEmacs copying permission (General Public License).
+\[view-emacs-news]	News of recent XEmacs changes.
+\[finder-by-keyword]	Type a topic keyword; it finds matching packages.
+\[describe-syntax]	Contents of syntax table with explanations.
+\[view-sample-init-el]	View the sample init.el that comes with XEmacs.
+\[help-with-tutorial]	XEmacs learn-by-doing tutorial.
+\[describe-no-warranty]	Information on absence of warranty for XEmacs.
+Fwith-syntax-table
+Evaluate BODY with the SYNTAB as the current syntax table.
+Ffunction-called-at-point
+Return the function which is called by the list containing point.
+If that gives no function, return the function whose name is around point.
+If that doesn't give a function, return nil.
+Ffunction-at-point
+Return the function whose name is around point.
+If that gives no function, return the function which is called by the
+list containing point.  If that doesn't give a function, return nil.
+Ffunction-at-event
+Return the function whose name is around the position of EVENT.
+EVENT should be a mouse event.  When calling from a popup or context menu,
+use `last-popup-menu-event' to find out where the mouse was clicked.
+(You cannot use (interactive "e"), unfortunately.  This returns a
+misc-user event.)
+
+If the event contains no position, or the position is not over text, or
+there is no function around that point, nil is returned.
+Fdescribe-function
+Display the full documentation of FUNCTION (a symbol).
+When run interactively, it defaults to any function found by
+`function-at-point'.
+Ffunction-obsolete-p
+Return non-nil if FUNCTION is obsolete.
+Ffunction-obsoleteness-doc
+If FUNCTION is obsolete, return a string describing this.
+Ffunction-compatible-p
+Return non-nil if FUNCTION is present for Emacs compatibility.
+Ffunction-compatibility-doc
+If FUNCTION is Emacs compatible, return a string describing this.
+Ffunction-arglist
+Return a string giving the argument list of FUNCTION.
+For example:
+
+	(function-arglist 'function-arglist)
+	=> (function-arglist FUNCTION)
+
+This function is used by `describe-function-1' to list function
+arguments in the standard Lisp style.
+Ffunction-documentation
+Return a string giving the documentation for FUNCTION, if any.
+If the optional argument STRIP-ARGLIST is non-nil, remove the arglist
+part of the documentation of internal subroutines.
+Fdescribe-function-1
+This function does the work for `describe-function'.
+Fvariable-at-event
+Return the variable whose name is around the position of EVENT.
+EVENT should be a mouse event.  When calling from a popup or context menu,
+use `last-popup-menu-event' to find out where the mouse was clicked.
+(You cannot use (interactive "e"), unfortunately.  This returns a
+misc-user event.)
+
+If the event contains no position, or the position is not over text, or
+there is no variable around that point, nil is returned.
+Fvariable-obsolete-p
+Return non-nil if VARIABLE is obsolete.
+Fvariable-obsoleteness-doc
+If VARIABLE is obsolete, return a string describing this.
+Fvariable-compatible-p
+Return non-nil if VARIABLE is Emacs compatible.
+Fvariable-compatibility-doc
+If VARIABLE is Emacs compatible, return a string describing this.
+Fbuilt-in-variable-doc
+Return a string describing whether VARIABLE is built-in.
+Fdescribe-variable
+Display the full documentation of VARIABLE (a symbol).
+Fsorted-key-descriptions
+Sort and separate the key descriptions for KEYS.
+The sorting is done by length (shortest bindings first), and the bindings
+are separated with SEPARATOR (", " by default).
+Fwhere-is
+Print message listing key sequences that invoke specified command.
+Argument is a command definition, usually a symbol with a function definition.
+When run interactively, it defaults to any function found by
+`function-at-point'.
+If INSERT (the prefix arg) is non-nil, insert the message in the buffer.
+Fdescribe-syntax
+Describe the syntax specifications in the syntax table.
+The descriptions are inserted in a buffer, which is then displayed.
+Flist-processes
+Display a list of all processes.
+(Any processes listed as Exited or Signaled are actually eliminated
+after the listing is made.)
+Fhelp-keymap-with-help-key
+Return a copy of KEYMAP with an help-key binding according to help-char
+ invoking FORM like help-form.  An existing binding is not overridden.
+ If FORM is nil then no binding is made.
+Vbackup-inhibited
+Non-nil means don't make a backup, regardless of the other parameters.
+This variable is intended for use by making it local to a buffer.
+But it is local only if you make it local.
+Vbackup-enable-predicate
+Predicate that looks at a file name and decides whether to make backups.
+Called with an absolute file name as argument, it returns t to enable backup.
+Vbuffer-file-number
+The device number and file number of the file visited in the current buffer.
+The value is a list of the form (FILENUM DEVNUM).
+This pair of numbers uniquely identifies the file.
+If the buffer is visiting a new file, the value is nil.
+Vbuffer-file-numbers-unique
+Non-nil means that buffer-file-number uniquely identifies files.
+Vfind-file-not-found-hooks
+List of functions to be called for `find-file' on nonexistent file.
+These functions are called as soon as the error is detected.
+`buffer-file-name' is already set up.
+The functions are called in the order given until one of them returns non-nil.
+Vfind-file-hooks
+List of functions to be called after a buffer is loaded from a file.
+The buffer's local variables (if any) will have been processed before the
+functions are called.
+Vwrite-file-hooks
+List of functions to be called before writing out a buffer to a file.
+If one of them returns non-nil, the file is considered already written
+and the rest are not called.
+These hooks are considered to pertain to the visited file.
+So this list is cleared if you change the visited file name.
+See also `write-contents-hooks' and `continue-save-buffer'.
+Vlocal-write-file-hooks
+Just like `write-file-hooks', except intended for per-buffer use.
+The functions in this list are called before the ones in
+`write-file-hooks'.
+
+This variable is meant to be used for hooks that have to do with a
+particular visited file.  Therefore, it is a permanent local, so that
+changing the major mode does not clear it.  However, calling
+`set-visited-file-name' does clear it.
+Vafter-set-visited-file-name-hooks
+List of functions to be called after \[set-visited-file-name]
+or during \[write-file].
+You can use this hook to restore local values of `write-file-hooks',
+`after-save-hook', and `revert-buffer-function', which pertain
+to a specific file and therefore are normally killed by a rename.
+Put hooks pertaining to the buffer contents on `write-contents-hooks'
+and `revert-buffer-insert-file-contents-function'.
+Vwrite-contents-hooks
+List of functions to be called before writing out a buffer to a file.
+If one of them returns non-nil, the file is considered already written
+and the rest are not called.
+These hooks are considered to pertain to the buffer's contents,
+not to the particular visited file; thus, `set-visited-file-name' does
+not clear this variable, but changing the major mode does clear it.
+See also `write-file-hooks' and `continue-save-buffer'.
+Vwrite-file-data-hooks
+List of functions to be called to put the bytes on disk.
+These functions receive the name of the file to write to as argument.
+The default behavior is to call
+  (write-region (point-min) (point-max) filename nil t)
+If one of them returns non-nil, the file is considered already written
+and the rest are not called.
+These hooks are considered to pertain to the visited file.
+So this list is cleared if you change the visited file name.
+See also `write-file-hooks'.
+Fconvert-standard-filename
+Convert a standard file's name to something suitable for the current OS.
+Fpwd
+Show the current default directory.
+Vcd-path
+Value of the CDPATH environment variable, as a list.
+Not actually set up until the first time you use it.
+Vcdpath-previous
+Prior value of the CDPATH environment variable.
+Fparse-colon-path
+Explode a colon-separated search path into a list of directory names.
+
+If you think you want to use this, you probably don't.  This function
+is provided for backward compatibility.  A more robust implementation
+of the same functionality is available as `split-path', which see.
+Fcd-absolute
+Change current directory to given absolute file name DIR.
+Fcd
+Make DIR become the current buffer's default directory.
+If your environment includes a `CDPATH' variable, try each one of that
+colon-separated list of directories when resolving a relative directory name.
+Fload-file
+Load the Lisp file named FILE.
+Ffile-local-copy
+Copy the file FILE into a temporary file on this machine.
+Returns the name of the local copy, or nil, if FILE is directly
+accessible.
+Fcompute-buffer-file-truename
+Recompute BUFFER's value of `buffer-file-truename'
+based on the current value of `buffer-file-name'.
+BUFFER defaults to the current buffer if unspecified.
+Ffile-chase-links
+Chase links in FILENAME until a name that is not a link.
+Does not examine containing directories for links,
+unlike `file-truename'.
+Fswitch-to-other-buffer
+Switch to the previous buffer.  With a numeric arg, n, switch to the nth
+most recent buffer.  With an arg of 0, buries the current buffer at the
+bottom of the buffer stack.
+Fswitch-to-buffer-other-window
+Select buffer BUFFER in another window.
+Fswitch-to-buffer-other-frame
+Switch to buffer BUFFER in a newly-created frame.
+Ffind-file
+Edit file FILENAME.
+Switch to a buffer visiting file FILENAME,
+creating one if none already exists.
+Under XEmacs/Mule, optional second argument specifies the
+coding system to use when decoding the file.  Interactively,
+with a prefix argument, you will be prompted for the coding system.
+Ffind-file-other-window
+Edit file FILENAME, in another window.
+May create a new window, or reuse an existing one.
+See the function `display-buffer'.
+Under XEmacs/Mule, optional second argument specifies the
+coding system to use when decoding the file.  Interactively,
+with a prefix argument, you will be prompted for the coding system.
+Ffind-file-other-frame
+Edit file FILENAME, in a newly-created frame.
+Under XEmacs/Mule, optional second argument specifies the
+coding system to use when decoding the file.  Interactively,
+with a prefix argument, you will be prompted for the coding system.
+Ffind-file-read-only
+Edit file FILENAME but don't allow changes.
+Like \[find-file] but marks buffer as read-only.
+Use \[toggle-read-only] to permit editing.
+Under XEmacs/Mule, optional second argument specifies the
+coding system to use when decoding the file.  Interactively,
+with a prefix argument, you will be prompted for the coding system.
+Ffind-file-read-only-other-window
+Edit file FILENAME in another window but don't allow changes.
+Like \[find-file-other-window] but marks buffer as read-only.
+Use \[toggle-read-only] to permit editing.
+Under XEmacs/Mule, optional second argument specifies the
+coding system to use when decoding the file.  Interactively,
+with a prefix argument, you will be prompted for the coding system.
+Ffind-file-read-only-other-frame
+Edit file FILENAME in another frame but don't allow changes.
+Like \[find-file-other-frame] but marks buffer as read-only.
+Use \[toggle-read-only] to permit editing.
+Under XEmacs/Mule, optional second argument specifies the
+coding system to use when decoding the file.  Interactively,
+with a prefix argument, you will be prompted for the coding system.
+Ffind-alternate-file-other-window
+Find file FILENAME as a replacement for the file in the next window.
+This command does not select that window.
+Under XEmacs/Mule, optional second argument specifies the
+coding system to use when decoding the file.  Interactively,
+with a prefix argument, you will be prompted for the coding system.
+Ffind-alternate-file
+Find file FILENAME, select its buffer, kill previous buffer.
+If the current buffer now contains an empty file that you just visited
+(presumably by mistake), use this command to visit the file you really want.
+Under XEmacs/Mule, optional second argument specifies the
+coding system to use when decoding the file.  Interactively,
+with a prefix argument, you will be prompted for the coding system.
+Fcreate-file-buffer
+Create a suitably named buffer for visiting FILENAME, and return it.
+FILENAME (sans directory) is used unchanged if that name is free;
+otherwise a string <2> or <3> or ... is appended to get an unused name.
+Fgenerate-new-buffer
+Create and return a buffer with a name based on NAME.
+Choose the buffer's name using `generate-new-buffer-name'.
+Vabbreviated-home-dir
+The user's homedir abbreviated according to `directory-abbrev-alist'.
+Fabbreviate-file-name
+Return a version of FILENAME shortened using `directory-abbrev-alist'.
+See documentation of variable `directory-abbrev-alist' for more information.
+If optional argument HACK-HOMEDIR is non-nil, then this also substitutes
+"~" for the user's home directory.
+Ffind-buffer-visiting
+Return the buffer visiting file FILENAME (a string).
+This is like `get-file-buffer', except that it checks for any buffer
+visiting the same file, possibly under a different name.
+If there is no such live buffer, return nil.
+Finsert-file-contents-literally
+Like `insert-file-contents', q.v., but only reads in the file.
+A buffer may be modified in several ways after reading into the buffer due
+to advanced Emacs features, such as format decoding, character code
+conversion, find-file-hooks, automatic uncompression, etc.
+
+  This function ensures that none of these modifications will take place.
+Ffind-file-noselect
+Read file FILENAME into a buffer and return the buffer.
+If a buffer exists visiting FILENAME, return that one, but
+verify that the file has not changed since visited or saved.
+The buffer is not selected, just returned to the caller.
+If NOWARN is non-nil, warning messages will be suppressed.
+If RAWFILE is non-nil, the file is read literally.
+Fafter-find-file
+Called after finding a file and by the default revert function.
+Sets buffer mode, parses local variables.
+Optional args ERROR, WARN, and NOAUTO: ERROR non-nil means there was an
+error in reading the file.  WARN non-nil means warn if there
+exists an auto-save file more recent than the visited file.
+NOAUTO means don't mess with auto-save mode.
+Fourth arg AFTER-FIND-FILE-FROM-REVERT-BUFFER non-nil
+ means this call was from `revert-buffer'.
+Fifth arg NOMODES non-nil means don't alter the file's modes.
+Finishes by calling the functions in `find-file-hooks'.
+Fnormal-mode
+Choose the major mode for this buffer automatically.
+Also sets up any specified local variables of the file.
+Uses the visited file name, the -*- line, and the local variables spec.
+
+This function is called automatically from `find-file'.  In that case,
+we may set up specified local variables depending on the value of
+`enable-local-variables': if it is t, we do; if it is nil, we don't;
+otherwise, we query.  `enable-local-variables' is ignored if you
+run `normal-mode' explicitly.
+Vauto-mode-alist
+Alist of filename patterns vs. corresponding major mode functions.
+Each element looks like (REGEXP . FUNCTION) or (REGEXP FUNCTION NON-NIL).
+(NON-NIL stands for anything that is not nil; the value does not matter.)
+Visiting a file whose name matches REGEXP specifies FUNCTION as the
+mode function to use.  FUNCTION will be called, unless it is nil.
+
+If the element has the form (REGEXP FUNCTION NON-NIL), then after
+calling FUNCTION (if it's not nil), we delete the suffix that matched
+REGEXP and search the list again for another match.
+Vinterpreter-mode-alist
+Alist mapping interpreter names to major modes.
+This alist is used to guess the major mode of a file based on the
+contents of the first line.  This line often contains something like:
+#!/bin/sh
+but may contain something more imaginative like
+#! /bin/env python
+or
+eval 'exec perl -w -S $0 ${1+"$@"}'.
+
+Each alist element looks like (INTERPRETER . MODE).
+The car of each element is a regular expression which is compared
+with the name of the interpreter specified in the first line.
+If it matches, mode MODE is selected.
+Vbinary-file-regexps
+List of regexps of filenames containing binary (non-text) data.
+Vinhibit-first-line-modes-regexps
+List of regexps; if one matches a file name, don't look for `-*-'.
+Vinhibit-first-line-modes-suffixes
+List of regexps for what to ignore, for `inhibit-first-line-modes-regexps'.
+When checking `inhibit-first-line-modes-regexps', we first discard
+from the end of the file name anything that matches one of these regexps.
+Vuser-init-file
+File name including directory of user's initialization file.
+Fset-auto-mode
+Select major mode appropriate for current buffer.
+This checks for a -*- mode tag in the buffer's text,
+compares the filename against the entries in `auto-mode-alist',
+or checks the interpreter that runs this file against
+`interpreter-mode-alist'.
+
+It does not check for the `mode:' local variable in the
+Local Variables section of the file; for that, use `hack-local-variables'.
+
+If `enable-local-variables' is nil, this function does not check for a
+-*- mode tag.
+
+If the optional argument JUST-FROM-FILE-NAME is non-nil,
+then we do not set anything but the major mode,
+and we don't even do that unless it would come from the file name.
+Vhack-local-variables-hook
+Normal hook run after processing a file's local variables specs.
+Major modes can use this to examine user-specified local variables
+in order to initialize other data structure based on them.
+
+This hook runs even if there were no local variables or if their
+evaluation was suppressed.  See also `enable-local-variables' and
+`enable-local-eval'.
+Fhack-local-variables
+Parse, and bind or evaluate as appropriate, any local variables
+for current buffer.
+Vignored-local-variables
+Variables to be ignored in a file's local variable spec.
+Ffind-coding-system-magic-cookie-in-file
+Look for the coding-system magic cookie in FILE.
+The coding-system magic cookie is either the local variable specification
+-*- ... coding: ... -*- on the first line, or the exact string
+";;;###coding system: " somewhere within the first 3000 characters
+of the file.  If found, the coding system name (as a string) is returned;
+otherwise nil is returned.  Note that it is extremely unlikely that
+either such string would occur coincidentally as the result of encoding
+some characters in a non-ASCII charset, and that the spaces make it
+even less likely since the space character is not a valid octet in any
+ISO 2022 encoding of most non-ASCII charsets.
+Fset-visited-file-name
+Change name of file visited in current buffer to FILENAME.
+The next time the buffer is saved it will go in the newly specified file.
+nil or empty string as argument means make buffer not be visiting any file.
+Remember to delete the initial contents of the minibuffer
+if you wish to pass an empty string as the argument.
+
+The optional second argument NO-QUERY, if non-nil, inhibits asking for
+confirmation in the case where another buffer is already visiting FILENAME.
+
+The optional third argument ALONG-WITH-FILE, if non-nil, means that
+the old visited file has been renamed to the new name FILENAME.
+Fwrite-file
+Write current buffer into file FILENAME.
+Makes buffer visit that file, and marks it not modified.
+If the buffer is already visiting a file, you can specify
+a directory name as FILENAME, to write a file of the same
+old name in that directory.
+If optional second arg CONFIRM is non-nil,
+ask for confirmation for overwriting an existing file.
+Under XEmacs/Mule, optional third argument specifies the
+coding system to use when encoding the file.  Interactively,
+with a prefix argument, you will be prompted for the coding system.
+Fbackup-buffer
+Make a backup of the disk file visited by the current buffer, if appropriate.
+This is normally done before saving the buffer the first time.
+If the value is non-nil, it is the result of `file-modes' on the original file;
+this means that the caller, after saving the buffer, should change the modes
+of the new file to agree with the old modes.
+Ffile-name-sans-versions
+Return FILENAME sans backup versions or strings.
+This is a separate procedure so your site-init or startup file can
+redefine it.
+If the optional argument KEEP-BACKUP-VERSION is non-nil,
+we do not remove backup version numbers, only true file version numbers.
+Ffile-ownership-preserved-p
+Return t if deleting FILE and rewriting it would preserve the owner.
+Ffile-name-sans-extension
+Return FILENAME sans final "extension".
+The extension, in a file name, is the part that follows the last `.'.
+Ffile-name-extension
+Return FILENAME's final "extension".
+The extension, in a file name, is the part that follows the last `.'.
+Return nil for extensionless file names such as `foo'.
+Return the empty string for file names such as `foo.'.
+
+If PERIOD is non-nil, then the returned value includes the period
+that delimits the extension, and if FILENAME has no extension,
+the value is "".
+Fmake-backup-file-name
+Create the non-numeric backup file name for FILE.
+This is a separate function so you can redefine it for customization.
+Fbackup-file-name-p
+Return non-nil if FILE is a backup file name (numeric or not).
+This is a separate function so you can redefine it for customization.
+You may need to redefine `file-name-sans-versions' as well.
+Fbackup-extract-version
+Given the name of a numeric backup file, return the backup number.
+Uses the free variable `bv-length', whose value should be
+the index in the name where the version number begins.
+Ffind-backup-file-name
+Find a file name for a backup file, and suggestions for deletions.
+Value is a list whose car is the name for the backup file
+ and whose cdr is a list of old versions to consider deleting now.
+If the value is nil, don't make a backup.
+Ffile-nlinks
+Return number of names file FILENAME has.
+Ffile-relative-name
+Convert FILENAME to be relative to DIRECTORY (default: default-directory).
+This function returns a relative file name which is equivalent to FILENAME
+when used with that default directory as the default.
+If this is impossible (which can happen on MS Windows when the file name
+and directory use different drive names) then it returns FILENAME.
+Fsave-buffer
+Save current buffer in visited file if modified.  Versions described below.
+
+By default, makes the previous version into a backup file
+ if previously requested or if this is the first save.
+With 1 or 3 \[universal-argument]'s, marks this version
+ to become a backup when the next save is done.
+With 2 or 3 \[universal-argument]'s,
+ unconditionally makes the previous version into a backup file.
+With argument of 0, never makes the previous version into a backup file.
+
+If a file's name is FOO, the names of its numbered backup versions are
+ FOO.~i~ for various integers i.  A non-numbered backup file is called FOO~.
+Numeric backups (rather than FOO~) will be made if value of
+ `version-control' is not the atom `never' and either there are already
+ numeric versions of the file being backed up, or `version-control' is
+ non-nil.
+We don't want excessive versions piling up, so there are variables
+ `kept-old-versions', which tells XEmacs how many oldest versions to keep,
+ and `kept-new-versions', which tells how many newest versions to keep.
+ Defaults are 2 old versions and 2 new.
+`dired-kept-versions' controls dired's clean-directory (.) command.
+If `delete-old-versions' is nil, system will query user
+ before trimming versions.  Otherwise it does it silently.
+Fdelete-auto-save-file-if-necessary
+Delete auto-save file for current buffer if `delete-auto-save-files' is t.
+Normally delete only if the file was written by this XEmacs
+since the last real save, but optional arg FORCE non-nil means delete anyway.
+Vafter-save-hook
+Normal hook that is run after a buffer is saved to its file.
+These hooks are considered to pertain to the visited file.
+So this list is cleared if you change the visited file name.
+Fbasic-save-buffer
+Save the current buffer in its visited file, if it has been modified.
+After saving the buffer, run `after-save-hook'.
+Fcontinue-save-buffer
+Provide a clean way for a write-file-hook to wrap AROUND
+the execution of the remaining hooks and writing to disk.
+Do not call this function except from a functions
+on the `write-file-hooks' or `write-contents-hooks' list.
+A hook that calls this function must return non-nil,
+to signal completion to its caller.  `continue-save-buffer'
+always returns non-nil.
+Fsave-some-buffers
+Save some modified file-visiting buffers.  Asks user about each one.
+Optional argument (the prefix) non-nil means save all with no questions.
+Optional second argument EXITING means ask about certain non-file buffers
+ as well as about file buffers.
+Fnot-modified
+Mark current buffer as unmodified, not needing to be saved.
+With prefix arg, mark buffer as modified, so \[save-buffer] will save.
+
+It is not a good idea to use this function in Lisp programs, because it
+prints a message in the minibuffer.  Instead, use `set-buffer-modified-p'.
+Ftoggle-read-only
+Toggle the current buffer's read-only status.
+With arg, set read-only iff arg is positive.
+Finsert-file
+Insert contents of file FILENAME into buffer after point.
+Set mark after the inserted text.
+
+Under XEmacs/Mule, optional second argument specifies the
+coding system to use when decoding the file.  Interactively,
+with a prefix argument, you will be prompted for the coding system.
+
+This function is meant for the user to run interactively.
+Don't call it from programs!  Use `insert-file-contents' instead.
+(Its calling sequence is different; see its documentation).
+Fappend-to-file
+Append the contents of the region to the end of file FILENAME.
+When called from a function, expects three arguments,
+START, END and FILENAME.  START and END are buffer positions
+saying what text to write.
+Under XEmacs/Mule, optional fourth argument specifies the
+coding system to use when encoding the file.  Interactively,
+with a prefix argument, you will be prompted for the coding system.
+Ffile-newest-backup
+Return most recent backup file for FILENAME or nil if no backups exist.
+Frename-uniquely
+Rename current buffer to a similar name not already taken.
+This function is useful for creating multiple shell process buffers
+or multiple mail buffers, etc.
+Fmake-directory-path
+Create all the directories along path that don't exist yet.
+Fmake-directory
+Create the directory DIR and any nonexistent parent dirs.
+Interactively, the default choice of directory to create
+is the current default directory for file names.
+That is useful when you have visited a file in a nonexistent directory.
+
+Noninteractively, the second (optional) argument PARENTS says whether
+to create parent directories if they don't exist.
+Vrevert-buffer-function
+Function to use to revert this buffer, or nil to do the default.
+The function receives two arguments IGNORE-AUTO and NOCONFIRM,
+which are the arguments that `revert-buffer' received.
+Vrevert-buffer-insert-file-contents-function
+Function to use to insert contents when reverting this buffer.
+Gets two args, first the nominal file name to use,
+and second, t if reading the auto-save file.
+Vbefore-revert-hook
+Normal hook for `revert-buffer' to run before reverting.
+If `revert-buffer-function' is used to override the normal revert
+mechanism, this hook is not used.
+Vafter-revert-hook
+Normal hook for `revert-buffer' to run after reverting.
+Note that the hook value that it runs is the value that was in effect
+before reverting; that makes a difference if you have buffer-local
+hook functions.
+
+If `revert-buffer-function' is used to override the normal revert
+mechanism, this hook is not used.
+Vrevert-buffer-internal-hook
+Don't use this.
+Frevert-buffer
+Replace the buffer text with the text of the visited file on disk.
+This undoes all changes since the file was visited or saved.
+With a prefix argument, offer to revert from latest auto-save file, if
+that is more recent than the visited file.
+
+This command also works for special buffers that contain text which
+doesn't come from a file, but reflects some other data base instead:
+for example, Dired buffers and buffer-list buffers.  In these cases,
+it reconstructs the buffer contents from the appropriate data base.
+
+When called from Lisp, the first argument is IGNORE-AUTO; only offer
+to revert from the auto-save file when this is nil.  Note that the
+sense of this argument is the reverse of the prefix argument, for the
+sake of backward compatibility.  IGNORE-AUTO is optional, defaulting
+to nil.
+
+Optional second argument NOCONFIRM means don't ask for confirmation at
+all.
+
+Optional third argument PRESERVE-MODES non-nil means don't alter
+the files modes.  Normally we reinitialize them using `normal-mode'.
+
+If the value of `revert-buffer-function' is non-nil, it is called to
+do all the work for this command.  Otherwise, the hooks
+`before-revert-hook' and `after-revert-hook' are run at the beginning
+and the end, and if `revert-buffer-insert-file-contents-function' is
+non-nil, it is called instead of rereading visited file contents.
+Frecover-file
+Visit file FILE, but get contents from its last auto-save file.
+Frecover-session
+Recover auto save files from a previous Emacs session.
+This command first displays a Dired buffer showing you the
+previous sessions that you could recover from.
+To choose one, move point to the proper line and then type C-c C-c.
+Then you'll be asked about a number of files to recover.
+Frecover-session-finish
+Choose one saved session to recover auto-save files from.
+This command is used in the special Dired buffer created by
+\[recover-session].
+Fkill-some-buffers
+For each buffer in LIST, ask whether to kill it.
+LIST defaults to all existing live buffers.
+Fauto-save-mode
+Toggle auto-saving of contents of current buffer.
+With prefix argument ARG, turn auto-saving on if positive, else off.
+Frename-auto-save-file
+Adjust current buffer's auto save file name for current conditions.
+Also rename any existing auto save file, if it was made in this session.
+Fwildcard-to-regexp
+Given a shell file name pattern WILDCARD, return an equivalent regexp.
+The generated regexp will match a filename iff the filename
+matches that wildcard according to shell rules.  Only wildcards known
+by `sh' are supported.
+Flist-directory
+Display a list of files in or matching DIRNAME, a la `ls'.
+DIRNAME is globbed by the shell if necessary.
+Prefix arg (second arg if noninteractive) means supply -l switch to `ls'.
+Actions controlled by variables `list-directory-brief-switches'
+and `list-directory-verbose-switches'.
+Vinsert-directory-program
+Absolute or relative name of the `ls' program used by `insert-directory'.
+Finsert-directory
+Insert directory listing for FILE, formatted according to SWITCHES.
+Leaves point after the inserted text.
+SWITCHES may be a string of options, or a list of strings.
+Optional third arg WILDCARD means treat FILE as shell wildcard.
+Optional fourth arg FULL-DIRECTORY-P means file is a directory and
+switches do not contain `d', so that a full listing is expected.
+
+This works by running a directory listing program
+whose name is in the variable `insert-directory-program'.
+If WILDCARD, it also runs the shell specified by `shell-file-name'.
+Vkill-emacs-query-functions
+Functions to call with no arguments to query about killing XEmacs.
+If any of these functions returns nil, killing Emacs is cancelled.
+`save-buffers-kill-emacs' (\[save-buffers-kill-emacs]) calls these functions,
+but `kill-emacs', the low level primitive, does not.
+See also `kill-emacs-hook'.
+Fsave-buffers-kill-emacs
+Offer to save each buffer, then kill this XEmacs process.
+With prefix arg, silently save all file-visiting buffers, then kill.
+Fsymlink-expand-file-name
+If FILENAME is a symlink, return its non-symlink equivalent.
+Unlike `file-truename', this doesn't chase symlinks in directory
+components of the file or expand a relative pathname into an
+absolute one.
+Ffile-remote-p
+Test whether FILE-NAME is looked for on a remote system.
+Flibrary-all-completions
+Return all completions for FILE in any directory on SEARCH-PATH.
+If optional third argument FULL is non-nil, returned pathnames should be 
+  absolute rather than relative to some directory on the SEARCH-PATH.
+If optional fourth argument FAST is non-nil, don't sort the completions,
+  or remove duplicates.
+Fprogn-with-message
+(progn-with-message MESSAGE FORMS ...)
+Display MESSAGE and evaluate FORMS, returning value of the last one.
+Vlib-complete:cache
+Used within `read-library' and `read-library-internal' to prevent 
+costly repeated calls to `library-all-completions'.
+Format is a list of lists of the form
+
+    ([<path> <subdir>] <cache-record> <cache-record> ...)
+
+where each <cache-record> has the form
+
+   (<root> <modtimes> <completion-table>)
+Flib-complete:better-root
+Return non-nil if ROOT1 is a superset of ROOT2.
+Vlib-complete:max-cache-size
+*Maximum number of search paths which are cached.
+Fread-library-internal
+Don't call this.
+Fread-library
+Read library name, prompting with PROMPT and completing in directories
+from SEARCH-PATH.  A nil in the search path represents the current
+directory.  Completions for a given search-path are cached, with the
+cache being invalidated whenever one of the directories on the path changes.
+Default to DEFAULT if user enters a null string.
+Optional fourth arg MUST-MATCH non-nil means require existing file's name.
+  Non-nil and non-t means also require confirmation after completion.
+Optional fifth argument FULL non-nil causes a full pathname, rather than a 
+  relative pathname, to be returned.  Note that FULL implies MUST-MATCH.
+Optional sixth argument FILTER can be used to provide a function to
+  filter the completions.  This function is passed the filename, and should
+  return a transformed filename (possibly a null transformation) or nil, 
+  indicating that the filename should not be included in the completions.
+Fread-library-name
+PROMPTs for and returns an existing Elisp library name (without any suffix)
+or the empty string.
+Fload-library
+Load the library named LIBRARY.
+This is an interface to the function `load'.
+Ffind-library
+Find and display in the current window the source for the Elisp LIBRARY.
+LIBRARY should be a name without any path information and may include or omit
+the ".el" suffix.  Under XEmacs/Mule, the optional second argument CODESYS
+specifies the coding system to use when decoding the file.  Interactively,
+with a prefix argument, this prompts for the coding system.  Optional third
+argument DISPLAY-FUNCTION must take two arguments, the filename to display
+and CODESYS.  The default for DISPLAY-FUNCTION is `find-file'.
+
+This function searches `find-library-source-path' to find the library;
+if this is nil (the default), then `load-path' is searched.
+Ffind-library-other-window
+Find and display in another window the source for the Elisp LIBRARY.
+LIBRARY should be a name without any path information and may include or omit
+the ".el" suffix.  Under XEmacs/Mule, the optional second argument CODESYS
+specifies the coding system to use when decoding the file.  Interactively,
+with a prefix argument, this prompts for the coding system.
+Ffind-library-other-frame
+Find and display in another frame the source for the Elisp LIBRARY.
+LIBRARY should be a name without any path information and may include or omit
+the ".el" suffix.  Under XEmacs/Mule, the optional second argument CODESYS
+specifies the coding system to use when decoding the file.  Interactively,
+with a prefix argument, this prompts for the coding system.
+Vformat-alist
+List of information about understood file formats.
+Elements are of the form (NAME DOC-STR REGEXP FROM-FN TO-FN MODIFY MODE-FN).
+
+NAME    is a symbol, which is stored in `buffer-file-format'.
+
+DOC-STR should be a single line providing more information about the
+        format.  It is currently unused, but in the future will be shown to
+        the user if they ask for more information.
+
+REGEXP  is a regular expression to match against the beginning of the file;
+        it should match only files in that format.
+
+FROM-FN is called to decode files in that format; it gets two args, BEGIN
+        and END, and can make any modifications it likes, returning the new
+        end.  It must make sure that the beginning of the file no longer
+        matches REGEXP, or else it will get called again.
+	Alternatively, FROM-FN can be a string, which specifies a shell command
+	(including options) to be used as a filter to perform the conversion.
+
+TO-FN   is called to encode a region into that format; it is passed three
+        arguments: BEGIN, END, and BUFFER.  BUFFER is the original buffer that
+        the data being written came from, which the function could use, for
+        example, to find the values of local variables.  TO-FN should either
+        return a list of annotations like `write-region-annotate-functions',
+        or modify the region and return the new end.
+	Alternatively, TO-FN can be a string, which specifies a shell command
+	(including options) to be used as a filter to perform the conversion.
+
+MODIFY, if non-nil, means the TO-FN wants to modify the region.  If nil,
+        TO-FN will not make any changes but will instead return a list of
+        annotations.
+
+MODE-FN, if specified, is called when visiting a file with that format.
+Fformat-encode-run-method
+Translate using function or shell script METHOD the text from FROM to TO.
+If METHOD is a string, it is a shell command;
+otherwise, it should be a Lisp function.
+BUFFER should be the buffer that the output originally came from.
+Fformat-decode-run-method
+Decode using function or shell script METHOD the text from FROM to TO.
+If METHOD is a string, it is a shell command;
+otherwise, it should be a Lisp function.
+Fformat-annotate-function
+Return annotations for writing region as FORMAT.
+FORMAT is a symbol naming one of the formats defined in `format-alist',
+it must be a single symbol, not a list like `buffer-file-format'.
+FROM and TO delimit the region to be operated on in the current buffer.
+ORIG-BUF is the original buffer that the data came from.
+This function works like a function on `write-region-annotate-functions':
+it either returns a list of annotations, or returns with a different buffer
+current, which contains the modified text to write.
+
+For most purposes, consider using `format-encode-region' instead.
+Fformat-decode
+Decode text from any known FORMAT.
+FORMAT is a symbol appearing in `format-alist' or a list of such symbols,
+or nil, in which case this function tries to guess the format of the data by
+matching against the regular expressions in `format-alist'.  After a match is
+found and the region decoded, the alist is searched again from the beginning
+for another match.
+
+Second arg LENGTH is the number of characters following point to operate on.
+If optional third arg VISIT-FLAG is true, set `buffer-file-format'
+to the list of formats used, and call any mode functions defined for those
+formats.
+
+Returns the new length of the decoded region.
+
+For most purposes, consider using `format-decode-region' instead.
+
+This function is called by insert-file-contents whenever a file is read.
+Fformat-decode-buffer
+Translate the buffer from some FORMAT.
+If the format is not specified, this function attempts to guess.
+`buffer-file-format' is set to the format used, and any mode-functions
+for the format are called.
+Fformat-decode-region
+Decode the region from some format.
+Arg FORMAT is optional; if omitted the format will be determined by looking
+for identifying regular expressions at the beginning of the region.
+Fformat-encode-buffer
+Translate the buffer into FORMAT.
+FORMAT defaults to `buffer-file-format'.  It is a symbol naming one of the
+formats defined in `format-alist', or a list of such symbols.
+Fformat-encode-region
+Translate the region into some FORMAT.
+FORMAT defaults to `buffer-file-format', it is a symbol naming
+one of the formats defined in `format-alist', or a list of such symbols.
+Fformat-write-file
+Write current buffer into a FILE using some FORMAT.
+Makes buffer visit that file and sets the format as the default for future
+saves.  If the buffer is already visiting a file, you can specify a directory
+name as FILE, to write a file of the same old name in that directory.
+Fformat-find-file
+Find the file FILE using data format FORMAT.
+If FORMAT is nil then do not do any format conversion.
+Fformat-insert-file
+Insert the contents of file FILE using data format FORMAT.
+If FORMAT is nil then do not do any format conversion.
+The optional third and fourth arguments START and END specify
+the part of the file to read.
+
+The return value is like the value of `insert-file-contents':
+a list (ABSOLUTE-FILE-NAME . SIZE).
+Fformat-read
+Read and return the name of a format.
+Return value is a list, like `buffer-file-format'; it may be nil.
+Formats are defined in `format-alist'.  Optional arg is the PROMPT to use.
+Fformat-replace-strings
+Do multiple replacements on the buffer.
+ALIST is a list of (from . to) pairs, which should be proper arguments to
+`search-forward' and `replace-match' respectively.
+Optional 2nd arg REVERSE, if non-nil, means the pairs are (to . from), so that
+you can use the same list in both directions if it contains only literal
+strings.
+Optional args BEGIN and END specify a region of the buffer to operate on.
+Fformat-delq-cons
+Remove the given CONS from LIST by side effect,
+and return the new LIST.  Since CONS could be the first element
+of LIST, write `(setq foo (format-delq-cons element foo))' to be sure of
+changing the value of `foo'.
+Fformat-make-relatively-unique
+Delete common elements of lists A and B, return as pair.
+Compares using `equal'.
+Fformat-common-tail
+Given two lists that have a common tail, return it.
+Compares with `equal', and returns the part of A that is equal to the
+equivalent part of B.  If even the last items of the two are not equal,
+returns nil.
+Fformat-reorder
+Arrange ITEMS to following partial ORDER.
+Elements of ITEMS equal to elements of ORDER will be rearranged to follow the
+ORDER.  Unmatched items will go last.
+Fformat-deannotate-region
+Translate annotations in the region into text properties.
+This sets text properties between FROM to TO as directed by the
+TRANSLATIONS and NEXT-FN arguments.
+
+NEXT-FN is a function that searches forward from point for an annotation.
+It should return a list of 4 elements: (BEGIN END NAME POSITIVE).  BEGIN and
+END are buffer positions bounding the annotation, NAME is the name searched
+for in TRANSLATIONS, and POSITIVE should be non-nil if this annotation marks
+the beginning of a region with some property, or nil if it ends the region.
+NEXT-FN should return nil if there are no annotations after point.
+
+The basic format of the TRANSLATIONS argument is described in the
+documentation for the `format-annotate-region' function.  There are some
+additional things to keep in mind for decoding, though:
+
+When an annotation is found, the TRANSLATIONS list is searched for a
+text-property name and value that corresponds to that annotation.  If the
+text-property has several annotations associated with it, it will be used only
+if the other annotations are also in effect at that point.  The first match
+found whose annotations are all present is used.
+
+The text property thus determined is set to the value over the region between
+the opening and closing annotations.  However, if the text-property name has a
+non-nil `format-list-valued' property, then the value will be consed onto the
+surrounding value of the property, rather than replacing that value.
+
+There are some special symbols that can be used in the "property" slot of
+the TRANSLATIONS list: PARAMETER and FUNCTION (spelled in uppercase).
+Annotations listed under the pseudo-property PARAMETER are considered to be
+arguments of the immediately surrounding annotation; the text between the
+opening and closing parameter annotations is deleted from the buffer but saved
+as a string.  The surrounding annotation should be listed under the
+pseudo-property FUNCTION.  Instead of inserting a text-property for this
+annotation, the function listed in the VALUE slot is called to make whatever
+changes are appropriate.  The function's first two arguments are the START and
+END locations, and the rest of the arguments are any PARAMETERs found in that
+region.
+
+Any annotations that are found by NEXT-FN but not defined by TRANSLATIONS
+are saved as values of the `unknown' text-property (which is list-valued).
+The TRANSLATIONS list should usually contain an entry of the form
+    (unknown (nil format-annotate-value))
+to write these unknown annotations back into the file.
+Fformat-subtract-regions
+Remove the regions in SUBTRAHEND from the regions in MINUEND.  A region
+is a dotted pair (from . to).  Both parameters are lists of regions.  Each
+list must contain nonoverlapping, noncontiguous regions, in descending
+order.  The result is also nonoverlapping, noncontiguous, and in descending
+order.  The first element of MINUEND can have a cdr of nil, indicating that
+the end of that region is not yet known.
+Fformat-property-increment-region
+Increment property PROP over the region between FROM and TO by the
+amount DELTA (which may be negative).  If property PROP is nil anywhere
+in the region, it is treated as though it were DEFAULT.
+Fformat-insert-annotations
+Apply list of annotations to buffer as `write-region' would.
+Inserts each element of the given LIST of buffer annotations at its
+appropriate place.  Use second arg OFFSET if the annotations' locations are
+not relative to the beginning of the buffer: annotations will be inserted
+at their location-OFFSET+1 (ie, the offset is treated as the character number
+of the first character in the buffer).
+Fformat-annotate-value
+Return OLD and NEW as a (close . open) annotation pair.
+Useful as a default function for TRANSLATIONS alist when the value of the text
+property is the name of the annotation that you want to use, as it is for the
+`unknown' text property.
+Fformat-annotate-region
+Generate annotations for text properties in the region.
+Searches for changes between FROM and TO, and describes them with a list of
+annotations as defined by alist TRANSLATIONS and FORMAT-FN.  IGNORE lists text
+properties not to consider; any text properties that are neither ignored nor
+listed in TRANSLATIONS are warned about.
+If you actually want to modify the region, give the return value of this
+function to `format-insert-annotations'.
+
+Format of the TRANSLATIONS argument:
+
+Each element is a list whose car is a PROPERTY, and the following
+elements are VALUES of that property followed by the names of zero or more
+ANNOTATIONS.  Whenever the property takes on that value, the annotations
+(as formatted by FORMAT-FN) are inserted into the file.
+When the property stops having that value, the matching negated annotation
+will be inserted (it may actually be closed earlier and reopened, if
+necessary, to keep proper nesting).
+
+If the property's value is a list, then each element of the list is dealt with
+separately.
+
+If a VALUE is numeric, then it is assumed that there is a single annotation
+and each occurrence of it increments the value of the property by that number.
+Thus, given the entry (left-margin (4 "indent")), if the left margin
+changes from 4 to 12, two <indent> annotations will be generated.
+
+If the VALUE is nil, then instead of annotations, a function should be
+specified.  This function is used as a default: it is called for all
+transitions not explicitly listed in the table.  The function is called with
+two arguments, the OLD and NEW values of the property.  It should return
+lists of annotations like `format-annotate-location' does.
+
+    The same structure can be used in reverse for reading files.
+Fformat-annotate-location
+Return annotation(s) needed at LOCATION.
+This includes any properties that change between LOC-1 and LOC.
+If ALL is true, don't look at previous location, but generate annotations for
+all non-nil properties.
+Third argument IGNORE is a list of text-properties not to consider.
+
+Return value is a vector of 3 elements:
+1. List of names of the annotations to close
+2. List of the names of annotations to open.
+3. List of properties that were ignored or couldn't be annotated.
+Fformat-annotate-single-property-change
+Return annotations for PROPERTY changing from OLD to NEW.
+These are searched for in the TRANSLATIONS alist.
+If NEW does not appear in the list, but there is a default function, then that
+function is called.
+Annotations to open and to close are returned as a dotted pair.
+Fformat-annotate-atomic-property-change
+Internal function annotate a single property change.
+PROP-ALIST is the relevant segment of a TRANSLATIONS list.
+OLD and NEW are the values.
+Vstandard-indent
+Default number of columns for margin-changing functions to indent.
+Vindent-line-function
+Function to indent current line.
+Findent-according-to-mode
+Indent line in proper way for current major mode.
+Findent-for-tab-command
+Indent line in proper way for current major mode.
+Findent-rigidly
+Indent all lines starting in the region sideways by COUNT columns.
+Called from a program, takes three arguments, START, END and COUNT.
+Findent-line-to
+Indent current line to COLUMN.
+This function removes or adds spaces and tabs at beginning of line
+only if necessary.  It leaves point at end of indentation.
+Fcurrent-left-margin
+Return the left margin to use for this line.
+This is the value of the buffer-local variable `left-margin' plus the value
+of the `left-margin' text-property at the start of the line.
+Fmove-to-left-margin
+Move to the left margin of the current line.
+With optional argument, move forward N-1 lines first.
+The column moved to is the one given by the `current-left-margin' function.
+If the line's indentation appears to be wrong, and this command is called
+interactively or with optional argument FORCE, it will be fixed.
+Findent-to-left-margin
+Indent current line to the column given by `current-left-margin'.
+Fdelete-to-left-margin
+Remove left margin indentation from a region.
+The amount of indentation to delete is determined by calling the
+function `current-left-margin'.
+In no case will it delete non-whitespace.
+Args FROM and TO are optional; default is the whole buffer.
+Fset-left-margin
+Set the left margin of the region to WIDTH.
+If `auto-fill-mode' is active, re-fill the region to fit the new margin.
+Fset-right-margin
+Set the right margin of the region to WIDTH.
+If `auto-fill-mode' is active, re-fill the region to fit the new margin.
+Falter-text-property
+Programmatically change value of a text-property.
+For each region between FROM and TO that has a single value for PROPERTY,
+apply FUNCTION to that value and sets the property to the function's result.
+Optional fifth argument OBJECT specifies the string or buffer to operate on.
+Fincrease-left-margin
+Increase or decrease the left-margin of the region.
+With no prefix argument, this adds `standard-indent' of indentation.
+A prefix arg (optional third arg INC noninteractively) specifies the amount
+to change the margin by, in characters.
+If `auto-fill-mode' is active, re-fill the region to fit the new margin.
+Fdecrease-left-margin
+Make the left margin of the region smaller.
+With no prefix argument, decrease the indentation by `standard-indent'.
+A prefix arg (optional third arg INC noninteractively) specifies the amount
+to change the margin by, in characters.
+If `auto-fill-mode' is active, re-fill the region to fit the new margin.
+Fincrease-right-margin
+Increase the right-margin of the region.
+With no prefix argument, increase the right margin by `standard-indent'.
+A prefix arg (optional third arg INC noninteractively) specifies the amount
+to change the margin by, in characters.  A negative argument decreases
+the right margin width.
+If `auto-fill-mode' is active, re-fill the region to fit the new margin.
+Fdecrease-right-margin
+Make the right margin of the region smaller.
+With no prefix argument, decrease the right margin by `standard-indent'.
+A prefix arg (optional third arg INC noninteractively) specifies the amount
+of width to remove, in characters.  A negative argument increases
+the right margin width.
+If `auto-fill-mode' is active, re-fills region to fit in new margin.
+Fbeginning-of-line-text
+Move to the beginning of the text on this line.
+With optional argument, move forward N-1 lines first.
+From the beginning of the line, moves past the left-margin indentation, the
+fill-prefix, and any indentation used for centering or right-justifying the
+line, but does not move past any whitespace that was explicitly inserted
+(such as a tab used to indent the first line of a paragraph).
+Vindent-region-function
+Short cut function to indent region using `indent-according-to-mode'.
+A value of nil means really run `indent-according-to-mode' on each line.
+Findent-region
+Indent each nonblank line in the region.
+With no argument, indent each line using `indent-according-to-mode',
+or use `indent-region-function' to do the whole region if that's non-nil.
+If there is a fill prefix, make each line start with the fill prefix.
+With argument COLUMN, indent each line to that column.
+Called from a program, takes three args: START, END and COLUMN.
+Findent-relative-maybe
+Indent a new line like previous nonblank line.
+Findent-relative
+Space out to under next indent point in previous nonblank line.
+An indent point is a non-whitespace character following whitespace.
+If the previous nonblank line has no indent points beyond the
+column point starts at, `tab-to-tab-stop' is done instead.
+Vtab-stop-list
+*List of tab stop positions used by `tab-to-tab-stops'.
+This should be a list of integers, ordered from smallest to largest.
+Vedit-tab-stops-map
+Keymap used in `edit-tab-stops'.
+Vedit-tab-stops-buffer
+Buffer whose tab stops are being edited--in case
+the variable `tab-stop-list' is local in that buffer.
+Fedit-tab-stops
+Edit the tab stops used by `tab-to-tab-stop'.
+Creates a buffer *Tab Stops* containing text describing the tab stops.
+A colon indicates a column where there is a tab stop.
+You can add or remove colons and then do \<edit-tab-stops-map>\[edit-tab-stops-note-changes] to make changes take effect.
+Fedit-tab-stops-note-changes
+Put edited tab stops into effect.
+Ftab-to-tab-stop
+Insert spaces or tabs to next defined tab-stop column.
+The variable `tab-stop-list' is a list of columns at which there are tab stops.
+Use \[edit-tab-stops] to edit them interactively.
+Fmove-to-tab-stop
+Move point to next defined tab-stop column.
+The variable `tab-stop-list' is a list of columns at which there are tab stops.
+Use \[edit-tab-stops] to edit them interactively.
+Visearch-mode-hook
+Function(s) to call after starting up an incremental search.
+Visearch-mode-end-hook
+Function(s) to call after terminating an incremental search.
+Vsearch-ring
+List of search string sequences.
+Vregexp-search-ring
+List of regular expression search string sequences.
+Vsearch-ring-yank-pointer
+Index in `search-ring' of last string reused.
+nil if none yet.
+Vregexp-search-ring-yank-pointer
+Index in `regexp-search-ring' of last string reused.
+nil if none yet.
+Visearch-mode-map
+Keymap for isearch-mode.
+Vminibuffer-local-isearch-map
+Keymap for editing isearch strings in the minibuffer.
+Fisearch-forward
+Do incremental search forward.
+With a prefix argument, do an incremental regular expression search instead.
+\<isearch-mode-map>
+As you type characters, they add to the search string and are found.
+The following non-printing keys are bound in `isearch-mode-map'.
+
+Type \[isearch-delete-char] to cancel characters from end of search string.
+Type \[isearch-exit] to exit, leaving point at location found.
+Type LFD (C-j) to match end of line.
+Type \[isearch-repeat-forward] to search again forward, \[isearch-repeat-backward] to search again backward.
+Type \[isearch-yank-word] to yank word from buffer onto end of search string and search for it.
+Type \[isearch-yank-line] to yank rest of line onto end of search string and search for it.
+Type \[isearch-yank-kill] to yank last killed text onto end of search string and search for it.
+Type \[isearch-quote-char] to quote control character to search for it.
+Type \[isearch-whitespace-chars] to match all whitespace chars in regexp.
+\[isearch-abort] while searching or when search has failed cancels input back to what has
+ been found successfully.
+\[isearch-abort] when search is successful aborts and moves point to starting point.
+
+Also supported is a search ring of the previous 16 search strings.
+Type \[isearch-ring-advance] to search for the next item in the search ring.
+Type \[isearch-ring-retreat] to search for the previous item in the search ring.
+Type \[isearch-complete] to complete the search string using the search ring.
+
+The above keys are bound in the isearch-mode-map.  To change the keys which
+ are special to isearch-mode, simply change the bindings in that map.
+
+Other control and meta characters terminate the search
+ and are then executed normally (depending on `search-exit-option').
+
+If this function is called non-interactively, it does not return to
+the calling function until the search is done.
+
+The bindings, more precisely:
+\{isearch-mode-map}
+Fisearch-forward-regexp
+Do incremental search forward for regular expression.
+With a prefix argument, do a regular string search instead.
+Like ordinary incremental search except that your input
+is treated as a regexp.  See \[isearch-forward] for more info.
+Fisearch-backward
+Do incremental search backward.
+With a prefix argument, do a regular expression search instead.
+See \[isearch-forward] for more information.
+Fisearch-backward-regexp
+Do incremental search backward for regular expression.
+With a prefix argument, do a regular string search instead.
+Like ordinary incremental search except that your input
+is treated as a regexp.  See \[isearch-forward] for more info.
+Fisearch-mode
+Start isearch minor mode.  Called by `isearch-forward', etc.
+
+\{isearch-mode-map}
+Fisearch-update-ring
+Add STRING to the beginning of the search ring.
+REGEXP says which ring to use.
+Fisearch-exit
+Exit search normally.
+However, if this is the first command after starting incremental
+search and `search-nonincremental-instead' is non-nil, do a
+nonincremental search instead via `isearch-edit-string'.
+Fisearch-edit-string
+Edit the search string in the minibuffer.
+The following additional command keys are active while editing.
+\<minibuffer-local-isearch-map>
+\[exit-minibuffer] to resume incremental searching with the edited string.
+\[isearch-nonincremental-exit-minibuffer] to do one nonincremental search.
+\[isearch-forward-exit-minibuffer] to resume isearching forward.
+\[isearch-reverse-exit-minibuffer] to resume isearching backward.
+\[isearch-ring-advance-edit] to replace the search string with the next item in the search ring.
+\[isearch-ring-retreat-edit] to replace the search string with the previous item in the search ring.
+\[isearch-complete-edit] to complete the search string using the search ring.
+\<isearch-mode-map>
+If first char entered is \[isearch-yank-word], then do word search instead.
+Fisearch-cancel
+Terminate the search and go back to the starting point.
+Fisearch-abort
+Abort incremental search mode if searching is successful, signaling quit.
+Otherwise, revert to previous successful search and continue searching.
+Use `isearch-exit' to quit without signaling.
+Fisearch-repeat-forward
+Repeat incremental search forwards.
+Fisearch-repeat-backward
+Repeat incremental search backwards.
+Fisearch-toggle-regexp
+Toggle regexp searching on or off.
+Fisearch-toggle-case-fold
+Toggle case folding in searching on or off.
+Fisearch-delete-char
+Discard last input item and move point back.
+If no previous match was done, just beep.
+Fisearch-help-or-delete-char
+Show Isearch help or delete backward in the search string.
+Deletes when `delete-key-deletes-forward' is t and C-h is used for deleting
+backwards.
+Fisearch-yank-word
+Pull next word from buffer into search string.
+Fisearch-yank-line
+Pull rest of line from buffer into search string.
+Fisearch-yank-kill
+Pull rest of line from kill ring into search string.
+Fisearch-yank-sexp
+Pull next expression from buffer into search string.
+Fisearch-yank-selection
+Pull the current selection into the search string.
+Fisearch-yank-clipboard
+Pull the current clipboard selection into the search string.
+Fisearch-*-char
+Handle * and ? specially in regexps.
+Fisearch-|-char
+If in regexp search, jump to the barrier.
+Fisearch-quote-char
+Quote special characters for incremental search.
+Fisearch-return-char
+Convert return into newline for incremental search.
+Obsolete.
+Fisearch-printing-char
+Add this ordinary printing character to the search string and search.
+Fisearch-whitespace-chars
+Match all whitespace chars, if in regexp mode.
+Fisearch-ring-advance
+Advance to the next search string in the ring.
+Fisearch-ring-retreat
+Retreat to the previous search string in the ring.
+Fisearch-ring-advance-edit
+Insert the next element of the search history into the minibuffer.
+Fisearch-ring-retreat-edit
+Inserts the previous element of the search history into the minibuffer.
+Fisearch-complete
+Complete the search string from the strings on the search ring.
+The completed string is then editable in the minibuffer.
+If there is no completion possible, say so and continue searching.
+Fisearch-complete-edit
+Same as `isearch-complete' except in the minibuffer.
+Fisearch-range-invisible
+Return t if all the text from START to END is invisible.
+Before that, if search-invisible is `open', unhide the extents with an
+`isearch-open-invisible' property.
+Fisearch-no-upper-case-p
+Return t if there are no upper case chars in string.
+But upper case chars preceded by \ do not count since they
+have special meaning in a regexp.
+Fwith-caps-disable-folding
+Eval BODY with `case-fold-search' let to nil if STRING contains
+uppercase letters and `search-caps-disable-folding' is t.
+Fswitch-to-buffer
+Select buffer BUFNAME in the current window.
+BUFNAME may be a buffer or a buffer name and is created if it did not exist.
+Optional second arg NORECORD non-nil means do not put this buffer at the
+front of the list of recently selected ones.
+
+WARNING: This is NOT the way to work on another buffer temporarily
+within a Lisp program!  Use `set-buffer' instead.  That avoids messing with
+the window-buffer correspondences.
+Fpop-to-buffer
+Select buffer BUFNAME in some window, preferably a different one.
+If BUFNAME is nil, then some other buffer is chosen.
+If `pop-up-windows' is non-nil, windows can be split to do this.
+If optional second arg NOT-THIS-WINDOW-P is non-nil, insist on finding
+another window even if BUFNAME is already visible in the selected window.
+If optional third arg is non-nil, it is the frame to pop to this
+buffer on.
+If `focus-follows-mouse' is non-nil, keyboard focus is left unchanged.
+FBuffer-menu-mode
+Major mode for editing a list of buffers.
+Each line describes one of the buffers in Emacs.
+Letters do not insert themselves; instead, they are commands.
+\<Buffer-menu-mode-map>
+\[Buffer-menu-mouse-select] -- select buffer you click on, in place of the buffer menu.
+\[Buffer-menu-this-window] -- select current line's buffer in place of the buffer menu.
+\[Buffer-menu-other-window] -- select that buffer in another window,
+  so the buffer menu buffer remains visible in its window.
+\[Buffer-menu-switch-other-window] -- make another window display that buffer.
+\[Buffer-menu-mark] -- mark current line's buffer to be displayed.
+\[Buffer-menu-select] -- select current line's buffer.
+  Also show buffers marked with m, in other windows.
+\[Buffer-menu-1-window] -- select that buffer in full-frame window.
+\[Buffer-menu-2-window] -- select that buffer in one window,
+  together with buffer selected before this one in another window.
+\[Buffer-menu-visit-tags-table] -- visit-tags-table this buffer.
+\[Buffer-menu-not-modified] -- clear modified-flag on that buffer.
+\[Buffer-menu-save] -- mark that buffer to be saved, and move down.
+\[Buffer-menu-delete] -- mark that buffer to be deleted, and move down.
+\[Buffer-menu-delete-backwards] -- mark that buffer to be deleted, and move up.
+\[Buffer-menu-execute] -- delete or save marked buffers.
+\[Buffer-menu-unmark] -- remove all kinds of marks from current line.
+  With prefix argument, also move up one line.
+\[Buffer-menu-backup-unmark] -- back up a line and remove marks.
+\[Buffer-menu-toggle-read-only] -- toggle read-only status of buffer on this line.
+FBuffer-menu-buffer
+Return buffer described by this line of buffer menu.
+Fbuffer-menu
+Make a menu of buffers so you can save, delete or select them.
+With argument, show only buffers that are visiting files.
+Type ? after invocation to get help on commands available.
+Type q immediately to make the buffer menu go away.
+Fbuffer-menu-other-window
+Display a list of buffers in another window.
+With the buffer list buffer, you can save, delete or select the buffers.
+With argument, show only buffers that are visiting files.
+Type ? after invocation to get help on commands available.
+Type q immediately to make the buffer menu go away.
+FBuffer-menu-quit
+Quit the buffer menu.
+FBuffer-menu-mark
+Mark buffer on this line for being displayed by \<Buffer-menu-mode-map>\[Buffer-menu-select] command.
+FBuffer-menu-unmark
+Cancel all requested operations on buffer on this line and move down.
+Optional ARG means move up.
+FBuffer-menu-backup-unmark
+Move up and cancel all requested operations on buffer on line above.
+FBuffer-menu-delete
+Mark buffer on this line to be deleted by \<Buffer-menu-mode-map>\[Buffer-menu-execute] command.
+Prefix arg is how many buffers to delete.
+Negative arg means delete backwards.
+FBuffer-menu-delete-backwards
+Mark buffer on this line to be deleted by \<Buffer-menu-mode-map>\[Buffer-menu-execute] command
+and then move up one line.  Prefix arg means move that many lines.
+FBuffer-menu-save
+Mark buffer on this line to be saved by \<Buffer-menu-mode-map>\[Buffer-menu-execute] command.
+FBuffer-menu-not-modified
+Mark buffer on this line as unmodified (no changes to save).
+FBuffer-menu-execute
+Save and/or delete buffers marked with \<Buffer-menu-mode-map>\[Buffer-menu-save] or \<Buffer-menu-mode-map>\[Buffer-menu-delete] commands.
+FBuffer-menu-select
+Select this line's buffer; also display buffers marked with `>'.
+You can mark buffers with the \<Buffer-menu-mode-map>\[Buffer-menu-mark] command.
+This command deletes and replaces all the previously existing windows
+in the selected frame.
+FBuffer-menu-visit-tags-table
+Visit the tags table in the buffer on this line.  See `visit-tags-table'.
+FBuffer-menu-1-window
+Select this line's buffer, alone, in full frame.
+FBuffer-menu-mouse-select
+Select the buffer whose line you click on.
+FBuffer-menu-this-window
+Select this line's buffer in this window.
+FBuffer-menu-other-window
+Select this line's buffer in other window, leaving buffer menu visible.
+FBuffer-menu-switch-other-window
+Make the other window select this line's buffer.
+The current window remains selected.
+FBuffer-menu-2-window
+Select this line's buffer, with previous buffer in second window.
+FBuffer-menu-toggle-read-only
+Toggle read-only status of buffer on this line, perhaps via version control.
+Vlist-buffers-identification
+String used to identify this buffer, or a function of one argument
+to generate such a string.  This variable is always buffer-local.
+Flist-buffers
+Display a list of names of existing buffers.
+The list is displayed in a buffer named `*Buffer List*'.
+Note that buffers with names starting with spaces are omitted.
+Non-nil optional arg FILES-ONLY means mention only file buffers.
+
+The M column contains a * for buffers that are modified.
+The R column contains a % for buffers that are read-only.
+Flist-buffers-noselect
+Create and return a buffer with a list of names of existing buffers.
+The buffer is named `*Buffer List*'.
+Note that buffers with names starting with spaces are omitted.
+Non-nil optional arg FILES-ONLY means mention only file buffers.
+
+The M column contains a * for buffers that are modified.
+The R column contains a % for buffers that are read-only.
+Fbuffers-menu-omit-invisible-buffers
+For use as a value of `buffers-menu-omit-function'.
+Omits normally invisible buffers (those whose name begins with a space).
+Fone-window-p
+Return non-nil if the selected window is the only window (in its frame).
+Optional arg NOMINI non-nil means don't count the minibuffer
+even if it is active.
+
+By default, only the windows in the selected frame are considered.
+The optional argument WHICH-FRAMES changes this behavior:
+WHICH-FRAMES nil or omitted means count only the selected frame,
+plus the minibuffer it uses (which may be on another frame).
+WHICH-FRAMES = `visible' means include windows on all visible frames.
+WHICH-FRAMES = 0 means include windows on all visible and iconified frames.
+WHICH-FRAMES = t means include windows on all frames including invisible frames.
+If WHICH-FRAMES is any other value, count only the selected frame.
+
+The optional third argument WHICH-DEVICES further clarifies on which
+devices to search for frames as specified by WHICH-FRAMES.  This value
+is only meaningful if WHICH-FRAMES is non-nil.
+If nil or omitted, search all devices on the selected console.
+If a device, only search that device.
+If a console, search all devices on that console.
+If a device type, search all devices of that type.
+If `window-system', search all devices on window-system consoles.
+Any other non-nil value means search all devices.
+Fwalk-windows
+Cycle through all visible windows, calling FUNCTION for each one.
+FUNCTION is called with a window as argument.
+
+Optional second arg MINIBUF t means count the minibuffer window even
+if not active.  MINIBUF nil or omitted means count the minibuffer iff
+it is active.  MINIBUF neither t nor nil means not to count the
+minibuffer even if it is active.
+
+Several frames may share a single minibuffer; if the minibuffer
+counts, all windows on all frames that share that minibuffer count
+too.  Therefore, when a separate minibuffer frame is active,
+`walk-windows' includes the windows in the frame from which you
+entered the minibuffer, as well as the minibuffer window.  But if the
+minibuffer does not count, only the selected window counts.
+
+By default, only the windows in the selected frame are included.
+The optional argument WHICH-FRAMES changes this behavior:
+WHICH-FRAMES nil or omitted means cycle within the frames as specified above.
+WHICH-FRAMES = `visible' means include windows on all visible frames.
+WHICH-FRAMES = 0 means include windows on all visible and iconified frames.
+WHICH-FRAMES = t means include windows on all frames including invisible frames.
+Anything else means restrict to WINDOW's frame.
+
+The optional fourth argument WHICH-DEVICES further clarifies on which
+devices to search for frames as specified by WHICH-FRAMES.  This value
+is only meaningful if WHICH-FRAMES is non-nil.
+If nil or omitted, search all devices on the selected console.
+If a device, only search that device.
+If a console, search all devices on that console.
+If a device type, search all devices of that type.
+If `window-system', search all devices on window-system consoles.
+Any other non-nil value means search all devices.
+Fminibuffer-window-active-p
+Return t if WINDOW (a minibuffer window) is now active.
+Fsave-selected-window
+Execute BODY, then select the window that was selected before BODY.
+The value returned is the value of the last form in BODY.
+Fwith-selected-window
+Execute forms in BODY with WINDOW as the selected window.
+The value returned is the value of the last form in BODY.
+Fcount-windows
+Return the number of visible windows.
+Optional arg MINIBUF non-nil means count the minibuffer
+even if it is inactive.
+Fbalance-windows
+Make all visible windows the same height (approximately).
+Fsplit-window-vertically
+Split current window into two windows, one above the other.
+The uppermost window gets ARG lines and the other gets the rest.
+Negative arg means select the size of the lowermost window instead.
+With no argument, split equally or close to it.
+Both windows display the same buffer now current.
+
+If the variable split-window-keep-point is non-nil, both new windows
+will get the same value of point as the current window.  This is often
+more convenient for editing.
+
+Otherwise, we choose window starts so as to minimize the amount of
+redisplay; this is convenient on slow terminals.  The new selected
+window is the one that the current value of point appears in.  The
+value of point can change if the text around point is hidden by the
+new mode line.
+
+Programs should probably use split-window instead of this.
+Fsplit-window-horizontally
+Split current window into two windows side by side.
+This window becomes the leftmost of the two, and gets ARG columns.
+Negative arg means select the size of the rightmost window instead.
+No arg means split equally.
+Fenlarge-window-horizontally
+Make current window ARG columns wider.
+Fshrink-window-horizontally
+Make current window ARG columns narrower.
+Fshrink-window-if-larger-than-buffer
+Shrink the WINDOW to be as small as possible to display its contents.
+Do not shrink to less than `window-min-height' lines.
+Do nothing if the buffer contains more lines than the present window height,
+or if some of the window's contents are scrolled out of view,
+or if the window is not the full width of the frame,
+or if the window is the only window of its frame.
+Fkill-buffer-and-window
+Kill the current buffer and delete the selected window.
+Fwindow-list
+Return a list of existing windows.
+If the optional argument MINIBUF is non-nil, then include minibuffer
+windows in the result.
+
+By default, only the windows in the selected frame are returned.
+The optional argument WHICH-FRAMES changes this behavior:
+WHICH-FRAMES = `visible' means include windows on all visible frames.
+WHICH-FRAMES = 0 means include windows on all visible and iconified frames.
+WHICH-FRAMES = t means include windows on all frames including invisible frames.
+Anything else means restrict to the selected frame.
+
+The optional fourth argument WHICH-DEVICES further clarifies on which
+devices to search for frames as specified by WHICH-FRAMES.  This value
+is only meaningful if WHICH-FRAMES is non-nil.
+If nil or omitted, search all devices on the selected console.
+If a device, only search that device.
+If a console, search all devices on that console.
+If a device type, search all devices of that type.
+If `window-system', search all devices on window-system consoles.
+Any other non-nil value means search all devices.
+Frecenter
+Center point in WINDOW and redisplay frame.  With N, put point on line N.
+The desired position of point is always relative to the window.
+Just C-u as prefix means put point in the center of the window.
+No N (i.e., it is nil) erases the entire frame and then
+redraws with point in the center of the window.
+If WINDOW is nil, the selected window is used.
+Fbackward-other-window
+Select the COUNT'th different window on this frame, going backwards.
+This is just like calling `other-window' with COUNT negated.
+Fbuffer-in-multiple-windows-p
+Return t if BUFFER is in multiple windows.
+If BUFFER is not specified, the current buffer will be used.
+Fwindow-list
+Return a list of windows on FRAME, beginning with WINDOW.
+FRAME and WINDOW default to the selected ones.
+Optional second arg MINIBUF t means count the minibuffer window
+even if not active.  If MINIBUF is neither t nor nil it means
+not to count the minibuffer even if it is active.
+Fset-window-buffer-dedicated
+Make WINDOW display BUFFER and be dedicated to that buffer.
+Then Emacs will not automatically change which buffer appears in WINDOW.
+If BUFFER is nil, make WINDOW not be dedicated (but don't change which
+buffer appears in it currently).
+Fpush-window-configuration
+Push the current window configuration onto the window-config stack.
+If CONFIG is specified, push it instead of the current window configuration.
+Each frame has its own window-config stack.
+Fpop-window-configuration
+Pop the top window configuration off the window-config stack and set it.
+Before setting the new window configuration, the current window configuration
+ is pushed onto the "unpop" stack.
+`unpop-window-configuration' undoes what this function does.
+Each frame has its own window-config and "unpop" stack.
+Funpop-window-configuration
+Undo the effect of the most recent `pop-window-configuration'.
+This does exactly the inverse of what `pop-window-configuration' does:
+ i.e. it pops a window configuration off of the "unpop" stack and
+ pushes the current window configuration onto the window-config stack.
+Each frame has its own window-config and "unpop" stack.
+Fbuffer-dedicated-frame
+Return the frame dedicated to this BUFFER, or nil if there is none.
+No argument or nil as argument means use current buffer as BUFFER.
+Fset-buffer-dedicated-frame
+For this BUFFER, set the FRAME dedicated to it.
+FRAME must be a frame or nil.
+Vdisplay-buffer-function
+If non-nil, function to call to handle `display-buffer'.
+It will receive three args: the same as those to `display-buffer'.
+Vpre-display-buffer-function
+If non-nil, function that will be called from `display-buffer'
+as the first action.  It will receive three args: the same as those
+to `display-buffer'.
+This function may be used to select an appropriate frame for the buffer,
+for example.  See also the variable `display-buffer-function', which may
+be used to completely replace the `display-buffer' function.
+If the return value of this function is non-nil, it should be a frame,
+and that frame will be used to display the buffer.
+Vpop-up-frame-function
+Function to call to handle automatic new frame creation.
+It is called with no arguments and should return a newly created frame.
+
+A typical value might be `(lambda () (new-frame pop-up-frame-alist))'
+where `pop-up-frame-alist' would hold the default frame parameters.
+Vspecial-display-function
+Function to call to make a new frame for a special buffer.
+It is called with two arguments, the buffer and optional buffer specific
+data, and should return a window displaying that buffer.
+The default value makes a separate frame for the buffer,
+using `special-display-frame-alist' to specify the frame parameters.
+
+A buffer is special if its is listed in `special-display-buffer-names'
+or matches a regexp in `special-display-regexps'.
+Fdisplay-buffer
+Make BUFFER appear in some window on the current frame, but don't select it.
+BUFFER can be a buffer or a buffer name.
+If BUFFER is shown already in some window in the current frame,
+just uses that one, unless the window is the selected window and
+NOT-THIS-WINDOW-P is non-nil (interactively, with prefix arg).
+
+If BUFFER has a dedicated frame, display on that frame instead of
+the current frame, unless OVERRIDE-FRAME is non-nil.
+
+If OVERRIDE-FRAME is non-nil, display on that frame instead of
+the current frame (or the dedicated frame).
+
+If `pop-up-windows' is non-nil, always use the
+current frame and create a new window regardless of whether the
+buffer has a dedicated frame, and regardless of whether
+OVERRIDE-FRAME was specified.
+
+If `pop-up-frames' is non-nil, make a new frame if no window shows BUFFER.
+
+Returns the window displaying BUFFER.
+Fforward-sexp
+Move forward across one balanced expression (sexp).
+With argument, do it that many times.  Negative arg -N means
+move backward across N balanced expressions.
+Fbackward-sexp
+Move backward across one balanced expression (sexp).
+With argument, do it that many times.  Negative arg -N means
+move forward across N balanced expressions.
+Fmark-sexp
+Set mark ARG sexps from point.
+The place mark goes is the same place \[forward-sexp] would
+move to with the same argument.
+Repeat this command to mark more sexps in the same direction.
+Fforward-list
+Move forward across one balanced group of parentheses.
+With argument, do it that many times.
+Negative arg -N means move backward across N groups of parentheses.
+Fbackward-list
+Move backward across one balanced group of parentheses.
+With argument, do it that many times.
+Negative arg -N means move forward across N groups of parentheses.
+Fdown-list
+Move forward down one level of parentheses.
+With argument, do this that many times.
+A negative argument means move backward but still go down a level.
+Fbackward-up-list
+Move backward out of one level of parentheses.
+With argument, do this that many times.
+A negative argument means move forward but still to a less deep spot.
+Fup-list
+Move forward out of one level of parentheses.
+With argument, do this that many times.
+A negative argument means move backward but still to a less deep spot.
+In Lisp programs, an argument is required.
+Fkill-sexp
+Kill the sexp (balanced expression) following the cursor.
+With argument, kill that many sexps after the cursor.
+Negative arg -N means kill N sexps before the cursor.
+Fbackward-kill-sexp
+Kill the sexp (balanced expression) preceding the cursor.
+With argument, kill that many sexps before the cursor.
+Negative arg -N means kill N sexps after the cursor.
+Fbeginning-of-defun
+Move backward to the beginning of a defun.
+With argument, do it that many times.  Negative arg -N
+means move forward to Nth following beginning of defun.
+Returns t unless search stops due to beginning or end of buffer.
+
+Normally a defun starts when there is an char with open-parenthesis
+syntax at the beginning of a line.  If `defun-prompt-regexp' is
+non-nil, then a string which matches that regexp may precede the
+open-parenthesis, and point ends up at the beginning of the line.
+Fbeginning-of-defun-raw
+Move point to the character that starts a defun.
+This is identical to beginning-of-defun, except that point does not move
+to the beginning of the line when `defun-prompt-regexp' is non-nil.
+Fbuffer-end
+Return `point-max' of BUFFER if ARG is > 0; return `point-min' otherwise.
+BUFFER defaults to the current buffer if omitted.
+Fend-of-defun
+Move forward to next end of defun.  With argument, do it that many times.
+Negative argument -N means move back to Nth preceding end of defun.
+
+An end of a defun occurs right after the close-parenthesis that matches
+the open-parenthesis that starts a defun; see `beginning-of-defun'.
+Fmark-defun
+Put mark at end of this defun, point at beginning.
+The defun marked is the one that contains point or follows point.
+Fnarrow-to-defun
+Make text outside current defun invisible.
+The defun visible is the one that contains point or follows point.
+Finsert-parentheses
+Enclose following ARG sexps in parentheses.  Leave point after open-paren.
+A negative ARG encloses the preceding ARG sexps instead.
+No argument is equivalent to zero: just insert `()' and leave point between.
+If `parens-require-spaces' is non-nil, this command also inserts a space
+before and after, depending on the surrounding characters.
+Fmove-past-close-and-reindent
+Move past next `)', delete indentation before it, then indent after it.
+Flisp-complete-symbol
+Perform completion on Lisp symbol preceding point.
+Compare that symbol against the known Lisp symbols.
+
+The context determines which symbols are considered.
+If the symbol starts just after an open-parenthesis, only symbols
+with function definitions are considered.  Otherwise, all symbols with
+function definitions, values or properties are considered.
+Fforward-page
+Move forward to page boundary.  With arg, repeat, or go back if negative.
+A page boundary is any line whose beginning matches the regexp
+`page-delimiter'.
+Fbackward-page
+Move backward to page boundary.  With arg, repeat, or go fwd if negative.
+A page boundary is any line whose beginning matches the regexp
+`page-delimiter'.
+Fmark-page
+Put mark at end of page, point at beginning.
+A numeric arg specifies to move forward or backward by that many pages,
+thus marking a page other than the one point was originally in.
+Fnarrow-to-page
+Make text outside current page invisible.
+A numeric arg specifies to move forward or backward by that many pages,
+thus showing a page other than the one point was originally in.
+Fcount-lines-page
+Report number of lines on current page, and how many are before or after point.
+Fwhat-page
+Print page and line number of point.
+Vregister-alist
+Alist of elements (NAME . CONTENTS), one for each Emacs register.
+NAME is a character (a number).  CONTENTS is a string, number, marker or list.
+A list of strings represents a rectangle.
+A list of the form (file . NAME) represents the file named NAME.
+A list of the form (file-query NAME POSITION) represents position POSITION
+ in the file named NAME, but query before visiting it.
+A list of the form (WINDOW-CONFIGURATION POSITION)
+ represents a saved window configuration plus a saved value of point.
+A list of the form (FRAME-CONFIGURATION POSITION)
+ represents a saved frame configuration plus a saved value of point.
+Fget-register
+Return contents of Emacs register named REG, or nil if none.
+Fset-register
+Set contents of Emacs register named REGISTER to VALUE.  Returns VALUE.
+See the documentation of the variable `register-alist' for possible VALUE.
+Fpoint-to-register
+Store current location of point in register REGISTER.
+With prefix argument, store current frame configuration.
+Use \[jump-to-register] to go to that location or restore that configuration.
+Argument is a character, naming the register.
+Fwindow-configuration-to-register
+Store the window configuration of the selected frame in register REGISTER.
+Use \[jump-to-register] to restore the configuration.
+Argument is a character, naming the register.
+Fframe-configuration-to-register
+Store the window configuration of all frames in register REGISTER.
+Use \[jump-to-register] to restore the configuration.
+Argument is a character, naming the register.
+Fjump-to-register
+Move point to location stored in a register.
+If the register contains a file name, find that file.
+ (To put a file name in a register, you must use `set-register'.)
+If the register contains a window configuration (one frame) or a frame
+configuration (all frames), restore that frame or all frames accordingly.
+First argument is a character, naming the register.
+Optional second arg non-nil (interactively, prefix argument) says to
+delete any existing frames that the frame configuration doesn't mention.
+(Otherwise, these frames are iconified.)
+Fnumber-to-register
+Store a number in a register.
+Two args, NUMBER and REGISTER (a character, naming the register).
+If NUMBER is nil, a decimal number is read from the buffer starting
+at point, and point moves to the end of that number.
+Interactively, NUMBER is the prefix arg (none means nil).
+Fincrement-register
+Add NUMBER to the contents of register REGISTER.
+Interactively, NUMBER is the prefix arg.
+Fview-register
+Display what is contained in register named REGISTER.
+The Lisp value REGISTER is a character.
+Finsert-register
+Insert contents of register REGISTER.  (REGISTER is a character.)
+Normally puts point before and mark after the inserted text.
+If optional second arg is non-nil, puts mark before and point after.
+Interactively, second arg is non-nil if prefix arg is supplied.
+Fcopy-to-register
+Copy region into register REGISTER.  With prefix arg, delete as well.
+Called from program, takes four args: REGISTER, START, END and DELETE-FLAG.
+START and END are buffer positions indicating what to copy.
+Fappend-to-register
+Append region to text in register REGISTER.
+With prefix arg, delete as well.
+Called from program, takes four args: REGISTER, START, END and DELETE-FLAG.
+START and END are buffer positions indicating what to append.
+Fprepend-to-register
+Prepend region to text in register REGISTER.
+With prefix arg, delete as well.
+Called from program, takes four args: REGISTER, START, END and DELETE-FLAG.
+START and END are buffer positions indicating what to prepend.
+Fcopy-rectangle-to-register
+Copy rectangular region into register REGISTER.
+With prefix arg, delete as well.
+Called from program, takes four args: REGISTER, START, END and DELETE-FLAG.
+START and END are buffer positions giving two corners of rectangle.
+Viso8859/1-case-table
+The case table for ISO-8859/1 characters.
+Vuse-hard-newlines
+Non-nil means to distinguish hard and soft newlines.
+When this is non-nil, the functions `newline' and `open-line' add the
+text-property `hard' to newlines that they insert.  Also, a line is
+only considered as a candidate to match `paragraph-start' or
+`paragraph-separate' if it follows a hard newline.  Newlines not
+marked hard are called "soft", and are always internal to
+paragraphs.  The fill functions always insert soft newlines.
+
+Each buffer has its own value of this variable.
+Fuse-hard-newlines
+Minor mode to distinguish hard and soft newlines.
+When active, the functions `newline' and `open-line' add the
+text-property `hard' to newlines that they insert, and a line is
+only considered as a candidate to match `paragraph-start' or
+`paragraph-separate' if it follows a hard newline.
+
+Prefix argument says to turn mode on if positive, off if negative.
+When the mode is turned on, if there are newlines in the buffer but no hard
+newlines, ask the user whether to mark as hard any newlines preceding a 
+`paragraph-start' line.  From a program, second arg INSERT specifies whether
+to do this; it can be `never' to change nothing, t or `always' to force
+marking, `guess' to try to do the right thing with no questions, nil 
+or anything else to ask the user.
+
+Newlines not marked hard are called "soft", and are always internal
+to paragraphs.  The fill functions insert and delete only soft newlines.
+Vparagraph-start
+*Regexp for beginning of a line that starts OR separates paragraphs.
+This regexp should match lines that separate paragraphs
+and should also match lines that start a paragraph
+(and are part of that paragraph).
+
+This is matched against the text at the left margin, which is not necessarily
+the beginning of the line, so it should never use "^" as an anchor.  This
+ensures that the paragraph functions will work equally well within a region
+of text indented by a margin setting.
+
+The variable `paragraph-separate' specifies how to distinguish
+lines that start paragraphs from lines that separate them.
+
+If the variable `use-hard-newlines' is non-nil, then only lines following a
+hard newline are considered to match.
+Vparagraph-separate
+*Regexp for beginning of a line that separates paragraphs.
+If you change this, you may have to change `paragraph-start' also.
+
+A line matching this is not part of any paragraph.
+
+This is matched against the text at the left margin, which is not necessarily
+the beginning of the line, so it should not use "^" as an anchor.  This
+ensures that the paragraph functions will work equally within a region of
+text indented by a margin setting.
+Vsentence-end
+*Regexp describing the end of a sentence.
+All paragraph boundaries also end sentences, regardless.
+
+In order to be recognized as the end of a sentence, the ending period,
+question mark, or exclamation point must be followed by two spaces,
+unless it's inside some sort of quotes or parenthesis.
+Vpage-delimiter
+*Regexp describing line-beginnings that separate pages.
+Vparagraph-ignore-fill-prefix
+Non-nil means the paragraph commands are not affected by `fill-prefix'.
+This is desirable in modes where blank lines are the paragraph delimiters.
+Fforward-paragraph
+Move forward to end of paragraph.
+With arg N, do it N times; negative arg -N means move backward N paragraphs.
+
+A line which `paragraph-start' matches either separates paragraphs
+(if `paragraph-separate' matches it also) or is the first line of a paragraph.
+A paragraph end is the beginning of a line which is not part of the paragraph
+to which the end of the previous line belongs, or the end of the buffer.
+Fbackward-paragraph
+Move backward to start of paragraph.
+With arg N, do it N times; negative arg -N means move forward N paragraphs.
+
+A paragraph start is the beginning of a line which is a
+`first-line-of-paragraph' or which is ordinary text and follows a
+paragraph-separating line; except: if the first real line of a
+paragraph is preceded by a blank line, the paragraph starts at that
+blank line.
+
+See `forward-paragraph' for more information.
+Fmark-paragraph
+Put point at beginning of this paragraph, mark at end.
+The paragraph marked is the one that contains point or follows point.
+Fkill-paragraph
+Kill forward to end of paragraph.
+With arg N, kill forward to Nth end of paragraph;
+negative arg -N means kill backward to Nth start of paragraph.
+Fbackward-kill-paragraph
+Kill back to start of paragraph.
+With arg N, kill back to Nth start of paragraph;
+negative arg -N means kill forward to Nth end of paragraph.
+Ftranspose-paragraphs
+Interchange this (or next) paragraph with previous one.
+Fforward-sentence
+Move forward to next `sentence-end'.  With argument, repeat.
+With negative argument, move backward repeatedly to `sentence-beginning'.
+
+The variable `sentence-end' is a regular expression that matches ends of
+sentences.  A paragraph boundary also terminates a sentence.
+Fbackward-sentence
+Move backward to start of sentence.  With arg, do it arg times.
+See `forward-sentence' for more information.
+Fkill-sentence
+Kill from point to end of sentence.
+With arg, repeat; negative arg -N means kill back to Nth start of sentence.
+Fbackward-kill-sentence
+Kill back from point to start of sentence.
+With arg, repeat, or kill forward to Nth end of sentence if negative arg -N.
+Fmark-end-of-sentence
+Put mark at end of sentence.  Arg works as in `forward-sentence'.
+Fmark-end-of-line
+Put mark at end of line.  Arg works as in `end-of-line'.
+Ftranspose-sentences
+Interchange this (next) and previous sentence.
+Feasy-menu-define
+Define a menu bar submenu in maps MAPS, according to MENU.
+The arguments SYMBOL and DOC are ignored; they are present for
+compatibility only.  SYMBOL is not evaluated.  In other Emacs versions
+these arguments may be used as a variable to hold the menu data, and a
+doc string for that variable.
+
+The first element of MENU must be a string.  It is the menu bar item name.
+The rest of the elements are menu items.
+
+A menu item is usually a vector of three elements:  [NAME CALLBACK ENABLE]
+
+NAME is a string--the menu item name.
+
+CALLBACK is a command to run when the item is chosen,
+or a list to evaluate when the item is chosen.
+
+ENABLE is an expression; the item is enabled for selection
+whenever this expression's value is non-nil.
+
+Alternatively, a menu item may have the form:
+
+   [ NAME CALLBACK [ KEYWORD ARG ] ... ]
+
+Where KEYWORD is one of the symbol defined below.
+
+   :keys KEYS
+
+KEYS is a string; a complex keyboard equivalent to this menu item.
+
+   :active ENABLE
+
+ENABLE is an expression; the item is enabled for selection
+whenever this expression's value is non-nil.
+
+   :suffix NAME
+
+NAME is a string; the name of an argument to CALLBACK.
+
+   :style STYLE
+
+STYLE is a symbol describing the type of menu item.  The following are
+defined:
+
+toggle: A checkbox.
+        Currently just prepend the name with the string "Toggle ".
+radio: A radio button.
+nil: An ordinary menu item.
+
+   :selected SELECTED
+
+SELECTED is an expression; the checkbox or radio button is selected
+whenever this expression's value is non-nil.
+Currently just disable radio buttons, no effect on checkboxes.
+
+A menu item can be a string.  Then that string appears in the menu as
+unselectable text.  A string consisting solely of hyphens is displayed
+as a solid horizontal line.
+
+A menu item can be a list.  It is treated as a submenu.
+The first element should be the submenu name.  That's used as the
+menu item in the top-level menu.  The cdr of the submenu list
+is a list of menu items, as above.
+Feasy-menu-add
+Add MENU to the current menu bar.
+Feasy-menu-remove
+Remove MENU from the current menu bar.
+Feasy-menu-add-item
+At the end of the submenu of MENU with path PATH, add ITEM.
+If ITEM is already present in this submenu, then this item will be changed.
+otherwise ITEM will be added at the end of the submenu, unless the optional
+argument BEFORE is present, in which case ITEM will instead be added
+before the item named BEFORE.
+MENU is either a symbol, which have earlier been used as the first
+argument in a call to `easy-menu-define', or the value of such a symbol
+i.e. a menu, or nil, which stands for the current menubar.
+PATH is a list of strings for locating the submenu where ITEM is to be
+added.  If PATH is nil, MENU itself is used.  Otherwise, the first
+element should be the name of a submenu directly under MENU.  This
+submenu is then traversed recursively with the remaining elements of PATH.
+ITEM is either defined as in `easy-menu-define', a menu defined earlier
+by `easy-menu-define' or `easy-menu-create-menu' or an item returned
+from `easy-menu-item-present-p' or `easy-menu-remove-item'.
+Feasy-menu-item-present-p
+In submenu of MENU with path PATH, return true iff item NAME is present.
+MENU and PATH are defined as in `easy-menu-add-item'.
+NAME should be a string, the name of the element to be looked for.
+
+The return value can be used as an argument to `easy-menu-add-item'.
+Feasy-menu-remove-item
+From submenu of MENU with path PATH, remove item NAME.
+MENU and PATH are defined as in `easy-menu-add-item'.
+NAME should be a string, the name of the element to be removed.
+
+The return value can be used as an argument to `easy-menu-add-item'.
+Vlisp-imenu-generic-expression
+Imenu generic expression for Lisp mode.  See `imenu-generic-expression'.
+Vshared-lisp-mode-map
+Keymap for commands shared by all sorts of Lisp modes.
+Vemacs-lisp-mode-map
+Keymap for Emacs Lisp mode.
+All commands in `shared-lisp-mode-map' are inherited by this map.
+Femacs-lisp-byte-compile
+Byte compile the file containing the current buffer.
+Femacs-lisp-byte-compile-and-load
+Byte-compile the current file (if it has changed), then load compiled code.
+Femacs-lisp-mode
+Major mode for editing Lisp code to run in Emacs.
+Commands:
+Delete converts tabs to spaces as it moves back.
+Blank lines separate paragraphs.  Semicolons start comments.
+\{emacs-lisp-mode-map}
+Entry to this mode calls the value of `emacs-lisp-mode-hook'
+if that value is non-nil.
+Vlisp-mode-map
+Keymap for ordinary Lisp mode.
+All commands in `shared-lisp-mode-map' are inherited by this map.
+Flisp-mode
+Major mode for editing Lisp code for Lisps other than Emacs Lisp.
+Commands:
+Delete converts tabs to spaces as it moves back.
+Blank lines separate paragraphs.  Semicolons start comments.
+\{lisp-mode-map}
+Note that `run-lisp' may be used either to start an inferior Lisp job
+or to switch back to an existing one.
+
+Entry to this mode calls the value of `lisp-mode-hook'
+if that value is non-nil.
+Flisp-send-defun
+Send the current defun to the Lisp process made by \[run-lisp].
+Vlisp-interaction-mode-map
+Keymap for Lisp Interaction mode.
+All commands in `shared-lisp-mode-map' are inherited by this map.
+Flisp-interaction-mode
+Major mode for typing and evaluating Lisp forms.
+Like Lisp mode except that \[eval-print-last-sexp] evals the Lisp expression
+before point, and prints its value into the buffer, advancing point.
+
+Commands:
+Delete converts tabs to spaces as it moves back.
+Paragraphs are separated only by blank lines.
+Semicolons start comments.
+\{lisp-interaction-mode-map}
+Entry to this mode calls the value of `lisp-interaction-mode-hook'
+if that value is non-nil.
+Feval-print-last-sexp
+Evaluate sexp before point; print value into current buffer.
+Feval-interactive
+Like `eval' except that it transforms defvars to defconsts.
+The evaluation of defcustom forms is forced.
+Feval-last-sexp
+Evaluate sexp before point; print value in minibuffer.
+With argument, print output into current buffer.
+Feval-defun
+Evaluate defun that point is in or before.
+Print value in minibuffer.
+With argument, insert value in current buffer after the defun.
+Flisp-indent-for-comment
+Indent this line's comment appropriately, or insert an empty comment.
+If adding a new comment on a blank line, use `block-comment-start' instead
+of `comment-start' to open the comment.
+Flisp-indent-line
+Indent current line as Lisp code.
+With argument, indent any additional lines of the same expression
+rigidly along with this one.
+Fcalculate-lisp-indent
+Return appropriate indentation for current line as Lisp code.
+In usual case returns an integer: the column to indent to.
+Can instead return a list, whose car is the column to indent to.
+This means that following lines at the same level of indentation
+should not necessarily be indented the same way.
+The second element of the list is the buffer position
+of the start of the containing expression.
+Vlisp-body-indent
+Number of columns to indent the second line of a `(def...)' form.
+Findent-sexp
+Indent each line of the list starting just after point.
+If optional arg ENDPOS is given, indent each line, stopping when
+ENDPOS is encountered.
+Flisp-fill-paragraph
+Like \[fill-paragraph], but handle Emacs Lisp comments.
+If any of the current line is a comment, fill the comment or the
+paragraph of it that point is in, preserving the comment's indentation
+and initial semicolons.
+Findent-code-rigidly
+Indent all lines of code, starting in the region, sideways by ARG columns.
+Does not affect lines starting inside comments or strings, assuming that
+the start of the region is not inside them.
+
+Called from a program, takes args START, END, COLUMNS and NOCHANGE-REGEXP.
+The last is a regexp which, if matched at the beginning of a line,
+means don't indent that line.
+Vtext-mode-hook
+Normal hook run when entering Text mode and many related modes.
+Vtext-mode-variant
+Non-nil if this buffer's major mode is a variant of Text mode.
+Vtext-mode-syntax-table
+Syntax table used while in text mode.
+Vtext-mode-abbrev-table
+Abbrev table used while in text mode.
+Vtext-mode-map
+Keymap for Text mode.
+Many other modes, such as Mail mode, Outline mode and Indented Text mode,
+inherit all the commands defined in this map.
+Ftext-mode
+Major mode for editing text written for humans to read.
+In this mode, paragraphs are delimited only by blank or white lines.
+You can thus get the full benefit of adaptive filling
+ (see the variable `adaptive-fill-mode').
+\{text-mode-map}
+Turning on Text mode runs the normal hook `text-mode-hook'.
+Fparagraph-indent-text-mode
+Major mode for editing text, with leading spaces starting a paragraph.
+In this mode, you do not need blank lines between paragraphs
+when the first line of the following paragraph starts with whitespace.
+Special commands:
+\{text-mode-map}
+Turning on Paragraph-Indent Text mode runs the normal hooks
+`text-mode-hook' and `paragraph-indent-text-mode-hook'.
+Ftext-mode-hook-identify
+Mark that this mode has run `text-mode-hook'.
+This is how `toggle-text-mode-auto-fill' knows which buffers to operate on.
+Ftoggle-text-mode-auto-fill
+Toggle whether to use Auto Fill in Text mode and related modes.
+This command affects all buffers that use modes related to Text mode,
+both existing buffers and buffers that you subsequently create.
+Fcenter-paragraph
+Center each nonblank line in the paragraph at or after point.
+See `center-line' for more info.
+Fcenter-region
+Center each nonblank line starting in the region.
+See `center-line' for more info.
+Fcenter-line
+Center the line point is on, within the width specified by `fill-column'.
+This means adjusting the indentation so that it equals
+the distance between the end of the text and `fill-column'.
+The argument NLINES says how many lines to center.
+Vfill-paragraph-function
+Mode-specific function to fill a paragraph, or nil if there is none.
+If the function returns nil, then `fill-paragraph' does its normal work.
+Fset-fill-prefix
+Set the fill prefix to the current line up to point.
+Filling expects lines to start with the fill prefix and
+reinserts the fill prefix in each resulting line.
+Fcurrent-fill-column
+Return the fill-column to use for this line.
+The fill-column to use for a buffer is stored in the variable `fill-column',
+but can be locally modified by the `right-margin' text property, which is
+subtracted from `fill-column'.
+
+The fill column to use for a line is the first column at which the column
+number equals or exceeds the local fill-column - right-margin difference.
+Fcanonically-space-region
+Remove extra spaces between words in region.
+Leave one space between words, two at end of sentences or after colons
+(depending on values of `sentence-end-double-space' and `colon-double-space').
+Remove indentation from each line.
+Ffill-context-prefix
+Compute a fill prefix from the text between FROM and TO.
+This uses the variables `adaptive-fill-prefix' and `adaptive-fill-function'.
+If FIRST-LINE-REGEXP is non-nil, then when taking a prefix from the
+first line, insist it must match FIRST-LINE-REGEXP.
+Ffill-region-as-paragraph
+Fill the region as one paragraph.
+It removes any paragraph breaks in the region and extra newlines at the end,
+indents and fills lines between the margins given by the
+`current-left-margin' and `current-fill-column' functions.
+It leaves point at the beginning of the line following the paragraph.
+
+Normally performs justification according to the `current-justification'
+function, but with a prefix arg, does full justification instead.
+
+From a program, optional third arg JUSTIFY can specify any type of
+justification.  Fourth arg NOSQUEEZE non-nil means not to make spaces
+between words canonical before filling.  Fifth arg SQUEEZE-AFTER, if non-nil,
+means don't canonicalize spaces before that position.
+
+If `sentence-end-double-space' is non-nil, then period followed by one
+space does not end a sentence, so don't break a line there.
+Ffill-paragraph
+Fill paragraph at or after point.  Prefix arg means justify as well.
+If `sentence-end-double-space' is non-nil, then period followed by one
+space does not end a sentence, so don't break a line there.
+
+If `fill-paragraph-function' is non-nil, we call it (passing our
+argument to it), and if it returns non-nil, we simply return its value.
+Ffill-region
+Fill each of the paragraphs in the region.
+Prefix arg (non-nil third arg, if called from program) means justify as well.
+
+Noninteractively, fourth arg NOSQUEEZE non-nil means to leave
+whitespace other than line breaks untouched, and fifth arg TO-EOP
+non-nil means to keep filling to the end of the paragraph (or next
+hard newline, if `use-hard-newlines' is on).
+
+If `sentence-end-double-space' is non-nil, then period followed by one
+space does not end a sentence, so don't break a line there.
+Ffill-paragraph-or-region
+Fill the current region, if it's active; otherwise, fill the paragraph.
+See `fill-paragraph' and `fill-region' for more information.
+Vdefault-justification
+*Method of justifying text not otherwise specified.
+Possible values are `left', `right', `full', `center', or `none'.
+The requested kind of justification is done whenever lines are filled.
+The `justification' text-property  can locally override this variable.
+This variable automatically becomes buffer-local when set in any fashion.
+Fcurrent-justification
+How should we justify this line?
+This returns the value of the text-property `justification',
+or the variable `default-justification' if there is no text-property.
+However, it returns nil rather than `none' to mean "don't justify".
+Fset-justification
+Set the region's justification style.
+The kind of justification to use is prompted for.
+If the mark is not active, this command operates on the current paragraph.
+If the mark is active, the region is used.  However, if the beginning and end
+of the region are not at paragraph breaks, they are moved to the beginning and
+end of the paragraphs they are in.
+If `use-hard-newlines' is true, all hard newlines are taken to be paragraph
+breaks.
+
+When calling from a program, operates just on region between BEGIN and END,
+unless optional fourth arg WHOLE-PAR is non-nil.  In that case bounds are
+extended to include entire paragraphs as in the interactive command.
+Fset-justification-none
+Disable automatic filling for paragraphs in the region.
+If the mark is not active, this applies to the current paragraph.
+Fset-justification-left
+Make paragraphs in the region left-justified.
+This is usually the default, but see the variable `default-justification'.
+If the mark is not active, this applies to the current paragraph.
+Fset-justification-right
+Make paragraphs in the region right-justified:
+Flush at the right margin and ragged on the left.
+If the mark is not active, this applies to the current paragraph.
+Fset-justification-full
+Make paragraphs in the region fully justified:
+This makes lines flush on both margins by inserting spaces between words.
+If the mark is not active, this applies to the current paragraph.
+Fset-justification-center
+Make paragraphs in the region centered.
+If the mark is not active, this applies to the current paragraph.
+Ffind-space-insertable-point
+Search backward for a permissible point for inserting justification spaces.
+Fjustify-current-line
+Do some kind of justification on this line.
+Normally does full justification: adds spaces to the line to make it end at
+the column given by `current-fill-column'.
+Optional first argument HOW specifies alternate type of justification:
+it can be `left', `right', `full', `center', or `none'.
+If HOW is t, will justify however the `current-justification' function says to.
+If HOW is nil or missing, full justification is done by default.
+Second arg EOP non-nil means that this is the last line of the paragraph, so
+it will not be stretched by full justification.
+Third arg NOSQUEEZE non-nil means to leave interior whitespace unchanged,
+otherwise it is made canonical.
+Funjustify-current-line
+Remove justification whitespace from current line.
+If the line is centered or right-justified, this function removes any
+indentation past the left margin.  If the line is full-justified, it removes
+extra spaces between words.  It does nothing in other justification modes.
+Funjustify-region
+Remove justification whitespace from region.
+For centered or right-justified regions, this function removes any indentation
+past the left margin from each line.  For full-justified lines, it removes
+extra spaces between words.  It does nothing in other justification modes.
+Arguments BEGIN and END are optional; default is the whole buffer.
+Ffill-nonuniform-paragraphs
+Fill paragraphs within the region, allowing varying indentation within each.
+This command divides the region into "paragraphs",
+only at paragraph-separator lines, then fills each paragraph
+using as the fill prefix the smallest indentation of any line
+in the paragraph.
+
+When calling from a program, pass range to fill as first two arguments.
+
+Optional third and fourth arguments JUSTIFY and MAIL-FLAG:
+JUSTIFY to justify paragraphs (prefix arg),
+MAIL-FLAG for a mail message, i. e. don't fill header lines.
+Ffill-individual-paragraphs
+Fill paragraphs of uniform indentation within the region.
+This command divides the region into "paragraphs",
+treating every change in indentation level as a paragraph boundary,
+then fills each paragraph using its indentation level as the fill prefix.
+
+When calling from a program, pass range to fill as first two arguments.
+
+Optional third and fourth arguments JUSTIFY and MAIL-FLAG:
+JUSTIFY to justify paragraphs (prefix arg),
+MAIL-FLAG for a mail message, i. e. don't fill header lines.
+Vauto-save-version
+Version number of auto-save.
+Vauto-save-directory-fallback
+Directory used for local autosaving of remote files if
+both `auto-save-directory' and `efs-auto-save-remotely' are nil.
+Also used if a working directory to be used for autosaving is not writable.
+This *must* always be the name of directory that exists or can be
+created by you, never nil.
+Vauto-save-hash-directory
+If non-nil, directory used for hashed autosave filenames.
+Fauto-save-checked-directory
+Make sure the directory DIR exists and return it expanded if non-nil.
+Fmake-auto-save-file-name
+Return file name to use for auto-saves of current buffer.
+Does not consider `auto-save-visited-file-name'; that is checked
+before calling this function.
+
+Offers to autosave all files in the same `auto-save-directory'.  All
+autosave files can then be recovered at once with function
+`recover-all-files'.
+
+Takes care to make autosave files for files accessed through efs
+be local files if variable `efs-auto-save-remotely' is nil.
+
+Takes care of slashes in buffer names to prevent autosave errors.
+
+Takes care that autosave files for buffers not visiting any file (such
+as `*mail*') from two simultaneous Emacses don't collide by prepending
+the Emacs pid.
+
+Uses 14 character autosave names if `auto-save-hash-p' is true.
+
+Autosaves even if the current directory is not writable, using
+directory `auto-save-directory-fallback'.
+
+You can redefine this for customization (he he :-).
+See also function `auto-save-file-name-p'.
+Fauto-save-file-name-p
+Return non-nil if FILENAME can be yielded by `make-auto-save-file-name'.
+FILENAME should lack slashes.
+You can redefine this for customization.
+Fauto-save-original-name
+Reverse of `make-auto-save-file-name'.
+Returns nil if SAVENAME was not associated with a file (e.g., it came
+from an autosaved `*mail*' buffer) or does not appear to be an
+autosave file at all.
+Hashed files are not understood, see `auto-save-hash-p'.
+Vauto-save-reserved-chars
+List of characters disallowed (or potentially disallowed) in filenames.
+Includes everything that can get us into trouble under MS Windows or Unix.
+Fauto-save-escape-name
+Escape any evil nasty characters in a potential filename.
+Uses quoted-printable-style escaping -- e.g. the dreaded =3D.
+Does not use URL escaping (with %) because filenames beginning with #% are
+a special signal for non-file buffers.
+Fauto-save-unescape-name
+Undo any escaping of evil nasty characters in a file name.
+See `auto-save-escape-name'.
+Frecover-all-files
+Do recover-file for all autosave files which are current.
+Only works if you have a non-nil `auto-save-directory'.
+
+Optional prefix argument SILENT means to be silent about non-current
+autosave files.  This is useful if invoked automatically at Emacs
+startup.
+
+If `auto-save-offer-delete' is t, this function will offer to delete
+old or rejected autosave files.
+
+Hashed files (see `auto-save-hash-p') are not understood, use
+`recover-file' to recover them individually.
+Vmail-lock-method
+mail spool locking method used by this instance of XEmacs.
+This must be one of the symbols in MAIL-LOCK-METHODS.
+Fmove-mail-spool
+Move mail spool in file FROM to file TO.
+BUFFER is a buffer for error messages.
+POP-PASSWORD is a password for POP mailbox access.
+Vpi
+The value of Pi (3.1415926...)
+Ve
+The value of e (2.7182818...)
+Vdegrees-to-radians
+Degrees to radian conversion constant
+Vradians-to-degrees
+Radian to degree conversion constant
+Fdegrees-to-radians
+Convert ARG from degrees to radians.
+Fradians-to-degrees
+Convert ARG from radians to degrees.
+Vitimer-version
+Version number of the itimer package.
+Vitimer-list
+List of all active itimers.
+Vitimer-process
+Process that drives all itimers, if a subprocess is being used.
+Vitimer-timer
+Emacs internal timer that drives the itimer system, if a subprocess
+is not being used to drive the system.
+Vitimer-timer-last-wakeup
+The time the timer driver function last ran.
+Vitimer-short-interval
+Interval used for scheduling an event a very short time in the future.
+Used internally to make the scheduler wake up early.
+Unit is seconds.
+Vitimer-next-wakeup
+Itimer process will wakeup to service running itimers within this
+many seconds.
+Vitimer-edit-map
+Keymap used when in Itimer Edit mode.
+Fcheck-itimer
+If VAR is not bound to an itimer, signal `wrong-type-argument'.
+This is a macro.
+Fcheck-itimer-coerce-string
+If VAR is not bound to a string, look up the itimer that it names and
+bind VAR to it.  Otherwise, if VAR is not bound to an itimer, signal
+wrong-type-argument.  This is a macro.
+Fcheck-nonnegative-number
+If VAR is not bound to a number, signal `wrong-type-argument'.
+If VAR is not bound to a positive number, signal args-out-of-range.
+This is a macro.
+Fcheck-string
+If VAR is not bound to a string, signal `wrong-type-argument'.
+This is a macro.
+Fitimerp
+Return non-nil if OBJECT is an itimer.
+Fitimer-live-p
+Return non-nil if OBJECT is an itimer and is active.
+``Active'' means Emacs will run it when it expires.
+`activate-itimer' must be called on an itimer to make it active.
+Itimers started with `start-itimer' are automatically active.
+Fitimer-name
+Return the name of ITIMER.
+Fitimer-value
+Return the number of seconds until ITIMER expires.
+Fitimer-restart
+Return the value to which ITIMER will be set at restart.
+The value nil is returned if this itimer isn't set to restart.
+Fitimer-function
+Return the function of ITIMER.
+This function is called each time ITIMER expires.
+Fitimer-is-idle
+Return non-nil if ITIMER is an idle timer.
+Normal timers expire after a set interval.  Idle timers expire
+only after Emacs has been idle for a specific interval.  ``Idle''
+means no command events have occurred within the interval.
+Fitimer-uses-arguments
+Return non-nil if the function of ITIMER will be called with arguments.
+ITIMER's function is called with the arguments each time ITIMER expires.
+The arguments themselves are retrievable with `itimer-function-arguments'.
+Fitimer-function-arguments
+Return the function arguments of ITIMER as a list.
+ITIMER's function is called with these arguments each time ITIMER expires.
+Fset-itimer-value
+Set the timeout value of ITIMER to be VALUE.
+Itimer will expire in this many seconds.
+If your version of Emacs supports floating point numbers then
+VALUE can be a floating point number.  Otherwise it
+must be an integer.
+Returns VALUE.
+Fset-itimer-restart
+Set the restart value of ITIMER to be RESTART.
+If RESTART is nil, ITIMER will not restart when it expires.
+If your version of Emacs supports floating point numbers then
+RESTART can be a floating point number.  Otherwise it
+must be an integer.
+Returns RESTART.
+Fset-itimer-function
+Set the function of ITIMER to be FUNCTION.
+FUNCTION will be called when itimer expires.
+Returns FUNCTION.
+Fset-itimer-is-idle
+Set flag that says whether ITIMER is an idle timer.
+If FLAG is non-nil, then ITIMER will be considered an idle timer.
+Returns FLAG.
+Fset-itimer-uses-arguments
+Set flag that says whether the function of ITIMER is called with arguments.
+If FLAG is non-nil, then the function will be called with one argument,
+otherwise the function will be called with no arguments.
+Returns FLAG.
+Fset-itimer-function-arguments
+Set the function arguments of ITIMER to be ARGUMENTS.
+The function of ITIMER will be called with ARGUMENTS when itimer expires.
+Returns ARGUMENTS.
+Fget-itimer
+Return itimer named NAME, or nil if there is none.
+Fread-itimer
+Read the name of an itimer from the minibuffer and return the itimer
+associated with that name.  The user is prompted with PROMPT.
+Optional second arg INITIAL-INPUT non-nil is inserted into the
+minibuffer as initial user input.
+Fdelete-itimer
+Deletes ITIMER.  ITIMER may be an itimer or the name of one.
+Fstart-itimer
+Start an itimer.
+Arguments are
+  NAME, FUNCTION, VALUE &optional RESTART, IS-IDLE, WITH-ARGS, &rest FUNCTION-ARGUMENTS.
+NAME is an identifier for the itimer.  It must be a string.  If an itimer
+  already exists with this name, NAME will be modified slightly to make
+  it unique.
+FUNCTION should be a function (or symbol naming one).  It
+  will be called each time the itimer expires with arguments of
+  FUNCTION-ARGUMENTS.  The function can access the itimer that
+  invoked it through the variable `current-itimer'.  If WITH-ARGS
+  is nil then FUNCTION is called with no arguments.  This is for
+  backward compatibility with older versions of the itimer
+  package which always called FUNCTION with no arguments.
+VALUE is the number of seconds until this itimer expires.
+  If your version of Emacs supports floating point numbers then
+  VALUE can be a floating point number.  Otherwise it
+  must be an integer.
+Optional fourth arg RESTART non-nil means that this itimer should be
+  restarted automatically after its function is called.  Normally an itimer
+  is deleted at expiration after its function has returned.
+  If non-nil RESTART should be a number indicating the value at which the
+  itimer should be set at restart time.
+Optional fifth arg IS-IDLE specifies if this is an idle timer.
+  Normal timers expire after a set interval.  Idle timers expire
+  only after Emacs has been idle for specific interval.  ``Idle''
+  means no command events have occurred within the interval.
+Returns the newly created itimer.
+Fmake-itimer
+Create an unactivated itimer.
+The itimer will not begin running until activated with `activate-itimer'.
+Set the itimer's expire interval with `set-itimer-value'.
+Set the itimer's function interval with `set-itimer-function'.
+Once this is done, the timer can be activated.
+Factivate-itimer
+Activate ITIMER, which was previously created with `make-itimer'.
+ITIMER will be added to the global list of running itimers,
+its FUNCTION will be called when it expires, and so on.
+Flist-itimers
+Pop up a buffer containing a list of all itimers.
+The major mode of the buffer is Itimer Edit mode.  This major mode provides
+commands to manipulate itimers; see the documentation for
+`itimer-edit-mode' for more information.
+Fedit-itimers
+Display a list of all itimers and select it for editing.
+The major mode of the buffer containing the listing is Itimer Edit mode.
+This major mode provides commands to manipulate itimers; see the documentation
+for `itimer-edit-mode' for more information.
+Fitimer-edit-mode
+Major mode for manipulating itimers.
+Attributes of running itimers are changed by moving the cursor to the
+desired field and typing `s' to set that field.  The field will then be
+set to the value read from the minibuffer.
+
+Commands:
+TAB    move forward a field
+DEL    move backward a field
+s      set a field
+d      delete the selected itimer
+x      start a new itimer
+?      help
+Fitimer-edit-help
+Help function for Itimer Edit.
+Fitimer-edit-quit
+End Itimer Edit.
+Vauto-save-timeout
+*Number of seconds idle time before auto-save.
+Zero or nil means disable auto-saving due to idleness.
+
+The actual amount of idle time between auto-saves is logarithmically related
+to the size of the current buffer.  This variable is the number of seconds
+after which an auto-save will happen when the current buffer is 50k or less;
+the timeout will be 2 1/4 times this in a 200k buffer, 3 3/4 times this in a
+1000k buffer, and 4 1/2 times this in a 2000k buffer.
+
+See also the variable `auto-save-interval', which controls auto-saving based
+on the number of characters typed.
+Vauto-gc-threshold
+*GC when this many bytes have been consed since the last GC, 
+and the user has been idle for `auto-save-timeout' seconds.
+Fauto-save-itimer
+For use as a itimer callback function.
+Auto-saves and garbage-collects based on the size of the current buffer
+and the value of `auto-save-timeout', `auto-gc-threshold', and the current
+keyboard idle-time.
+FPrint-context-pageno
+
+Common Lisp lambda list:
+  (Print-context-pageno CL-X)
+
+
+FPrint-context-window
+
+Common Lisp lambda list:
+  (Print-context-window CL-X)
+
+
+FPrint-context-start-time
+
+Common Lisp lambda list:
+  (Print-context-start-time CL-X)
+
+
+FPrint-context-printer-name
+
+Common Lisp lambda list:
+  (Print-context-printer-name CL-X)
+
+
+FPrint-context-p
+
+Common Lisp lambda list:
+  (Print-context-p CL-X)
+
+
+Fmake-Print-context
+
+Common Lisp lambda list:
+  (make-Print-context &CL-DEFS (QUOTE (NIL (CL-TAG-SLOT) (PAGENO) (WINDOW) (START-TIME) (PRINTER-NAME))) &key PAGENO WINDOW START-TIME PRINTER-NAME)
+
+
+Fprint-context-property
+Return property PROP of PRINT-CONTEXT.
+
+Valid properties are
+
+print-buffer     Buffer being printed
+print-window     Window on printer device containing print buffer
+print-frame      Frame on printer device corresponding to current page
+print-device     Device referring to printer
+print-start-time Time current when printing started (`current-time' format)
+print-page       Current printout page number, 1-based
+printer-name     Name of printer being printed to
+short-file-name  File name only, no path
+long-file-name   File name with its path
+buffer-name      Buffer name
+date             Date current when printing started (as a string)
+time             Time current when printing started (as a string)
+page             Current printout page number, 1-based (as a string)
+user-id          User logon id (as a string)
+user-name        User full name
+Fgeneric-page-setup
+Display the Page Setup dialog box.
+Changes made are recorded internally.
+Fgeneric-print-buffer
+Print buffer BUFFER using a printing method appropriate to the O.S. being run.
+Under Unix, `lpr' is normally used to spool out a no-frills version of the
+buffer, or the `ps-print' package is used to pretty-print the buffer to a
+PostScript printer.  Under MS Windows, the built-in printing support is used.
+
+If DISPLAY-PRINT-DIALOG is t, the print dialog will first be
+displayed, allowing the user to select various printing settings
+(e.g. which printer to print to, the range of pages, number of copies,
+modes such landscape/portrait/2-up/4-up [2 or 4 (small!) logical pages
+per physical page], etc.).  At this point the user can cancel the printing
+operation using the dialog box, and `generic-print-buffer' will not print
+anything.  When called interactively, use a prefix arg to suppress the
+display of the print dialog box.
+
+If BUFFER is nil or omitted, the current buffer is used.
+Fgeneric-print-region
+Print region using a printing method appropriate to the O.S. being run.
+The region between START and END of BUFFER (defaults to the current
+buffer) is printed.
+
+Under Unix, `lpr' is normally used to spool out a no-frills version of the
+buffer, or the `ps-print' package is used to pretty-print the buffer to a
+PostScript printer.  Under MS Windows, the built-in printing support is used.
+
+Optional PRINT-DEVICE is a device, already created, to use to do the
+printing.  This is typically used when this function was invoked from
+`generic-print-buffer' and it displayed a dialog box.  That function created
+the device, and then the dialog box stuffed it with the user's selections
+of how the buffer should be printed.
+
+PROPS, if given, is typically the plist returned from the call to
+`make-dialog-box' that displayed the Print box.  It contains properties
+relevant to us when we print.  
+
+Recognized properties are the same as those in `make-dialog-box':
+
+  name       Printer device name.  If omitted, the current system-selected
+             printer will be used.
+  from-page  First page to print, 1-based. If omitted, printing starts from
+             the beginning.
+  to-page    Last page to print, inclusive, If omitted, printing ends at
+             the end.
+  copies     Number of copies to print.  If omitted, one copy is printed.
+Fmake-dialog-frame
+Create a frame suitable for use as a dialog box.
+The frame is made a child of PARENT (defaults to the selected frame),
+and has additional properties PROPS, as well as `dialog-frame-plist'.
+Normally it also has no modelines, menubars, or toolbars.
+Fgui-button-p
+True if OBJECT is a GUI button.
+Fmake-gui-button
+Make a GUI button whose label is STRING and whose action is ACTION.
+If the button is inserted in a buffer and then clicked on, and ACTION
+is non-nil, ACTION will be called with one argument, USER-DATA.
+When ACTION is called, the buffer containing the button is made current.
+Finsert-gui-button
+Insert GUI button BUTTON at POS in BUFFER.
+Vmouse-yank-function
+Function that is called upon by `mouse-yank' to actually insert text.
+Fmouse-consolidated-yank
+Insert the current selection or, if there is none under X insert
+the X cutbuffer.  A mark is pushed, so that the inserted text lies
+between point and mark.
+Finsert-selection
+Insert the current selection into buffer at point.
+Fmouse-select
+Select Emacs window the mouse is on.
+Fmouse-delete-window
+Delete the Emacs window the mouse is on.
+Fmouse-keep-one-window
+Select Emacs window mouse is on, then kill all other Emacs windows.
+Fmouse-select-and-split
+Select Emacs window mouse is on, then split it vertically in half.
+Fmouse-set-point
+Select Emacs window mouse is on, and move point to mouse position.
+Fmouse-yank
+Paste text with the mouse.
+If the variable `mouse-yank-at-point' is nil, then pasting occurs at the
+location of the click; otherwise, pasting occurs at the current cursor
+location.
+Fclick-inside-extent-p
+Return non-nil if the button event is within the primary selection-extent.
+Return nil otherwise.
+Fpoint-inside-extent-p
+Return t if point is within the bounds of the primary selection extent.
+Return t is point is at the end position of the extent.
+Return nil otherwise.
+Fmouse-begin-drag-n-drop
+Begin a drag-n-drop operation.
+EVENT should be the button event that initiated the drag.
+Returns whether a drag was begun.
+Fmouse-eval-sexp
+Evaluate the sexp under the mouse.  Usually, this is the last sexp before
+the click, but if you click on a left paren, then it is the sexp beginning
+with the paren that is evaluated.  Also, since strings evaluate to themselves,
+they're fed to `re-search-forward' and the matched region is highlighted until
+the mouse button is released.
+
+Perhaps the most useful thing about this function is that the evaluation of
+the expression which is clicked upon is relative not to the window where you
+click, but to the current window and the current position of point.  Thus,
+you can use `mouse-eval-sexp' to interactively test code that acts upon a
+buffer...something you cannot do with the standard `eval-last-sexp' function.
+It's also fantastic for debugging regular expressions.
+Fmouse-line-length
+Print the length of the line indicated by the pointer.
+Fmouse-set-mark
+Select Emacs window mouse is on, and set mark at mouse position.
+Display cursor at that position for a second.
+Fmouse-scroll
+Scroll point to the mouse position.
+Fmouse-del-char
+Delete the char pointed to by the mouse.
+Fmouse-kill-line
+Kill the line pointed to by the mouse.
+Fmouse-bury-buffer
+Bury the buffer pointed to by the mouse, thus selecting the next one.
+Fmouse-unbury-buffer
+Unbury and select the most recently buried buffer.
+Fnarrow-window-to-region
+Narrow window to region between point and last mark.
+Fmouse-window-to-region
+Narrow window to region between cursor and mouse pointer.
+Fmouse-ignore
+Don't do anything.
+Vdefault-mouse-track-normalize-point-function
+Function called to normalize position of point.
+Called with two arguments: TYPE depends on the number of times that the
+mouse has been clicked and is a member of `default-mouse-track-type-list',
+FORWARDP determines the direction in which the point should be moved.
+Vmouse-track-down-hook
+Function or functions called when the user presses the mouse.
+This hook is invoked by `mouse-track'; thus, it will not be called
+for any buttons with a different binding.  The functions will be
+called with two arguments: the button-press event and a click
+count (see `mouse-track-click-hook').
+
+If any function returns non-nil, the remaining functions will not be
+called.
+
+Note that most applications should take action when the mouse is
+released, not when it is pressed.'
+Vmouse-track-drag-hook
+Function or functions called when the user drags the mouse.
+This hook is invoked by `mouse-track'; thus, it will not be called
+for any buttons with a different binding.  The functions will be
+called with three arguments: the mouse-motion event, a click
+count (see `mouse-track-click-hook'), and whether the call to
+this hook occurred as a result of a drag timeout (see
+`mouse-track-scroll-delay').
+
+If any function returns non-nil, the remaining functions will not be
+called.
+
+Note that no calls to this function will be made until the user
+initiates a drag (i.e. moves the mouse more than a certain
+threshold in either the X or the Y direction, as defined by
+`mouse-track-x-threshold' and `mouse-track-y-threshold').
+
+See also `mouse-track-drag-up-hook'.
+Vmouse-track-drag-up-hook
+Function or functions called when the user finishes a drag.
+This hook is invoked by `mouse-track'; thus, it will not be called
+for any buttons with a different binding.  The functions will be
+called with two arguments: the button-press event and a click
+count (see `mouse-track-click-hook').
+
+If any function returns non-nil, the remaining functions will not be
+called.
+
+Note that this hook will not be invoked unless the user has
+initiated a drag, i.e. moved the mouse more than a certain threshold
+(see `mouse-track-drag-hook').  When this function is invoked,
+`mouse-track-drag-hook' will have been invoked at least once.
+
+See also `mouse-track-click-hook'.
+Vmouse-track-click-hook
+Function or functions called when the user clicks the mouse.
+`Clicking' means pressing and releasing the mouse without having
+initiated a drag (i.e. without having moved more than a certain
+threshold -- see `mouse-track-drag-hook').
+
+This hook is invoked by `mouse-track'; thus, it will not be called
+for any buttons with a different binding.  The functions will be
+called with two arguments: the button-release event and a click
+count, which specifies the number of times that the mouse has been
+clicked in a series of clicks, each of which is separated by at most
+`mouse-track-multi-click-time'.  This can be used to implement actions
+that are called on double clicks, triple clicks, etc.
+
+If any function returns non-nil, the remaining functions will not be
+called.
+
+See also `mouse-track-drag-up-hook.
+Vmouse-track-up-hook
+Function or functions called when the user releases the mouse.
+This hook is invoked by `mouse-track'; thus, it will not be called
+for any buttons with a different binding.  The functions will be
+called with two arguments: the button-release event and a click
+count (see `mouse-track-click-hook').
+
+For many applications, it is more appropriate to use one or both
+of `mouse-track-click-hook' and `mouse-track-drag-up-hook'.
+Vmouse-track-cleanup-hook
+Function or functions called when `mouse-track' terminates.
+This hook will be called in all circumstances, even upon a
+non-local exit out of `mouse-track', and so is useful for
+doing cleanup work such as removing extents that may have
+been created during the operation of `mouse-track'.
+
+Unlike all of the other mouse-track hooks, this is a "normal"
+hook: the hook functions are called with no arguments, and
+all hook functions are called regardless of their return
+values.
+
+This function is called with the buffer where the mouse was clicked
+set to the current buffer, unless that buffer was killed.
+Vmouse-track-x-threshold
+Minimum number of pixels in the X direction for a drag to be initiated.
+If the mouse is moved more than either the X or Y threshold while the
+button is held down (see also `mouse-track-y-threshold'), then a drag
+is initiated; otherwise the gesture is considered to be a click.
+See `mouse-track'.
+
+The value should be either a number or a form to be evaluated to
+produce a number.
+Vmouse-track-y-threshold
+Minimum number of pixels in the Y direction for a drag to be initiated.
+If the mouse is moved more than either the X or Y threshold while the
+button is held down (see also `mouse-track-x-threshold'), then a drag
+is initiated; otherwise the gesture is considered to be a click.
+See `mouse-track'.
+
+The value should be either a number of a form to be evaluated to
+produce a number.
+Fmouse-track-do-activate
+Execute the activate function under EVENT, if any.
+Return true if the function was activated.
+Fmouse-track
+Generalized mouse-button handler.  This should be bound to a mouse button.
+The behavior of this function is customizable using various hooks and
+variables: see `mouse-track-click-hook', `mouse-track-drag-hook',
+`mouse-track-drag-up-hook', `mouse-track-down-hook', `mouse-track-up-hook',
+`mouse-track-cleanup-hook', `mouse-track-multi-click-time',
+`mouse-track-scroll-delay', `mouse-track-x-threshold', and
+`mouse-track-y-threshold'.
+
+Default handlers are provided to implement standard selecting/positioning
+behavior.  You can explicitly request this default behavior, and override
+any custom-supplied handlers, by using the function `mouse-track-default'
+instead of `mouse-track'.
+
+(In general, you can override specific hooks by using the argument
+OVERRIDING-HOOKS, which should be a plist of alternating hook names
+and values.)
+
+Default behavior is as follows:
+
+If you click-and-drag, the selection will be set to the region between the
+point of the initial click and the point at which you release the button.
+These positions need not be ordered.
+
+If you click-and-release without moving the mouse, then the point is moved
+and the selection is disowned (there will be no selection owner).  The mark
+will be set to the previous position of point.
+
+If you double-click, the selection will extend by symbols instead of by
+characters.  If you triple-click, the selection will extend by lines.
+
+If you drag the mouse off the top or bottom of the window, you can select
+pieces of text which are larger than the visible part of the buffer; the
+buffer will scroll as necessary.
+
+The selected text becomes the current X Selection.  The point will be left
+at the position at which you released the button, and the mark will be left
+at the initial click position.
+Fmouse-track-default
+Invoke `mouse-track' with only the default handlers active.
+Fmouse-track-do-rectangle
+Like `mouse-track' but selects rectangles instead of regions.
+Fmouse-track-adjust
+Extend the existing selection.  This should be bound to a mouse button.
+The selection will be enlarged or shrunk so that the point of the mouse
+click is one of its endpoints.  This function in fact behaves fairly
+similarly to `mouse-track', but begins by extending the existing selection
+(or creating a new selection from the previous text cursor position to
+the current mouse position) instead of creating a new, empty selection.
+
+The mouse-track handlers are run from this command just like from
+`mouse-track'.  Therefore, do not call this command from a mouse-track
+handler!
+Fmouse-track-adjust-default
+Extend the existing selection, using only the default handlers.
+This is just like `mouse-track-adjust' but will override any
+custom mouse-track handlers that the user may have installed.
+Fmouse-track-insert
+Make a selection with the mouse and insert it at point.
+This is exactly the same as the `mouse-track' command on \[mouse-track],
+except that point is not moved; the selected text is immediately inserted
+after being selected; and the selection is immediately disowned afterwards.
+Fmouse-track-delete-and-insert
+Make a selection with the mouse and insert it at point.
+This is exactly the same as the `mouse-track' command on \[mouse-track],
+except that point is not moved; the selected text is immediately inserted
+after being selected; and the text of the selection is deleted.
+Vinhibit-help-echo
+Inhibits display of `help-echo' extent properties in the minibuffer.
+Fdefault-mouse-motion-handler
+For use as the value of `mouse-motion-handler'.
+This implements the various pointer-shape variables,
+as well as extent highlighting, help-echo, toolbar up/down,
+and `mode-motion-hook'.
+Fdrag-window-divider
+Handle resizing windows by dragging window dividers.
+This is an internal function, normally bound to button1 event in
+window-divider-map. You would not call it, but you may bind it to
+other mouse buttons.
+Vmode-motion-hook
+Function or functions which are called whenever the mouse moves.
+Each function must take a single argument of the motion event.
+You should normally use this rather than `mouse-motion-handler', which 
+does some additional window-system-dependent things.  This hook is local
+to every buffer, and should normally be set up by major-modes which want
+to use special highlighting.  Every time the mouse moves over a window,
+the mode-motion-hook of the buffer of that window is run.
+Vmode-motion-help-echo-string
+String to be added as the 'help-echo property of the mode-motion extent.
+In order for this to work, you need to add the hook function
+`mode-motion-add-help-echo' to the mode-motion hook.  If this is a function,
+it will be called with one argument (the event) and should return a string
+to be added.  This variable is local to every buffer.
+Fmode-motion-highlight-line
+For use as the value of `mode-motion-hook' -- highlight line under mouse.
+Fmode-motion-highlight-word
+For use as the value of `mode-motion-hook' -- highlight word under mouse.
+Fmode-motion-highlight-symbol
+For use as the value of `mode-motion-hook' -- highlight symbol under mouse.
+Fmode-motion-highlight-sexp
+For use as the value of `mode-motion-hook' -- highlight form under mouse.
+Fmode-motion-add-help-echo
+For use as the value of `mode-motion-hook' -- add a 'help-echo property.
+This causes the string in the 'help-echo property to be displayed when the
+mouse moves over the extent.  See `mode-motion-help-echo-string' for
+documentation on how to control the string that is added.
+Vtoolbar-help-enabled
+If non-nil help is echoed for toolbar buttons.
+Vtoolbar-icon-directory
+Location of standard toolbar icon bitmaps.
+Ftoolbar-make-button-list
+Call make-glyph on each arg and return a list of the results.
+Vtoolbar-map
+Keymap consulted for mouse-clicks over a toolbar.
+Vtoolbar-blank-press-function
+Function to call if a blank area of the toolbar is pressed.
+Fpress-toolbar-button
+Press a toolbar button.  This only changes its appearance.
+Call function stored in `toolbar-blank-press-function,' if any, with EVENT as
+an argument if press is over a blank area of the toolbar.
+Frelease-and-activate-toolbar-button
+Release a toolbar button and activate its callback.
+Call function stored in `toolbar-blank-release-function,' if any, with EVENT
+as an argument if release is over a blank area of the toolbar.
+Frelease-toolbar-button
+Release all pressed toolbar buttons.
+Fmake-toolbar-specifier
+Return a new `toolbar' specifier object with the given specification list.
+SPEC-LIST can be a list of specifications (each of which is a cons of a
+locale and a list of instantiators), a single instantiator, or a list
+of instantiators.  See `make-specifier' for more information about
+specifiers.
+
+Toolbar specifiers are used to specify the format of a toolbar.
+The values of the variables `default-toolbar', `top-toolbar',
+`left-toolbar', `right-toolbar', and `bottom-toolbar' are always
+toolbar specifiers.
+
+Valid toolbar instantiators are called "toolbar descriptors"
+and are lists of vectors.  See `default-toolbar' for a description
+of the exact format.
+Fscrollbar-char-left
+Function called when the char-left arrow on the scrollbar is clicked.
+This is the little arrow to the left of the scrollbar.  One argument is
+passed, the scrollbar's window.  You can advise this function to
+change the scrollbar behavior.
+Fscrollbar-char-right
+Function called when the char-right arrow on the scrollbar is clicked.
+This is the little arrow to the right of the scrollbar.  One argument is
+passed, the scrollbar's window.  You can advise this function to
+change the scrollbar behavior.
+Fscrollbar-page-left
+Function called when the user gives the "page-left" scrollbar action.
+(The way this is done can vary from scrollbar to scrollbar.) One argument is
+passed, the scrollbar's window.  You can advise this function to
+change the scrollbar behavior.
+Fscrollbar-page-right
+Function called when the user gives the "page-right" scrollbar action.
+(The way this is done can vary from scrollbar to scrollbar.) One argument is
+passed, the scrollbar's window.  You can advise this function to
+change the scrollbar behavior.
+Fscrollbar-to-left
+Function called when the user gives the "to-left" scrollbar action.
+(The way this is done can vary from scrollbar to scrollbar.). One argument is
+passed, the scrollbar's window.  You can advise this function to
+change the scrollbar behavior.
+Fscrollbar-to-right
+Function called when the user gives the "to-right" scrollbar action.
+(The way this is done can vary from scrollbar to scrollbar.). One argument is
+passed, the scrollbar's window.  You can advise this function to
+change the scrollbar behavior.
+Fscrollbar-horizontal-drag
+Function called when the user drags the horizontal scrollbar thumb.
+One argument is passed, a cons containing the scrollbar's window and a value
+representing how many columns the thumb is slid over.  You can advise
+this function to change the scrollbar behavior.
+Fkill-this-buffer
+Kill the current buffer.
+Fset-menubar-dirty-flag
+Tell XEmacs that the menubar has to be updated.
+NOTE: XEmacs now recognizes when you set a different value for
+`current-menubar'.  You *only* need to call this function if you
+destructively modify a part of the menubar and don't set `current-menubar'.
+Note that all the functions that modify a menu call this automatically.
+Fset-menubar
+Set the default menubar to be MENUBAR.
+See `current-menubar' for a description of the syntax of a menubar.
+Fset-buffer-menubar
+Set the buffer-local menubar to be MENUBAR.
+See `current-menubar' for a description of the syntax of a menubar.
+Ffind-menu-item
+Search MENUBAR for item given by ITEM-PATH-LIST starting from PARENT.
+Returns (ITEM . PARENT), where PARENT is the immediate parent of
+ the item found.
+If the item does not exist, the car of the returned value is nil.
+If some menu in the ITEM-PATH-LIST does not exist, an error is signalled.
+Fadd-menu-button
+Add a menu item to some menu, creating the menu first if necessary.
+If the named item exists already, it is changed.
+MENU-PATH identifies the menu under which the new menu item should be inserted.
+ It is a list of strings; for example, ("File") names the top-level "File"
+ menu.  ("File" "Foo") names a hypothetical submenu of "File".
+MENU-LEAF is a menubar leaf node.  See the documentation of `current-menubar'.
+BEFORE, if provided, is the name of a menu item before which this item should
+ be added, if this item is not on the menu already.  If the item is already
+ present, it will not be moved.
+IN-MENU, if provided, means use that instead of `current-menubar' as the
+ menu to change.
+Fadd-submenu
+Add a menu to the menubar or one of its submenus.
+If the named menu exists already, it is changed.
+MENU-PATH identifies the menu under which the new menu should be inserted.
+ It is a list of strings; for example, ("File") names the top-level "File"
+ menu.  ("File" "Foo") names a hypothetical submenu of "File".
+ If MENU-PATH is nil, then the menu will be added to the menubar itself.
+SUBMENU is the new menu to add.
+ See the documentation of `current-menubar' for the syntax.
+BEFORE, if provided, is the name of a menu before which this menu should
+ be added, if this menu is not on its parent already.  If the menu is already
+ present, it will not be moved.
+IN-MENU, if provided, means use that instead of `current-menubar' as the
+ menu to change.
+Fdelete-menu-item
+Remove the named menu item from the menu hierarchy.
+PATH is a list of strings which identify the position of the menu item
+in the menu hierarchy.  The documentation of `add-submenu' describes
+menu paths.
+FROM-MENU, if provided, means use that instead of `current-menubar'
+as the menu to change.
+Frelabel-menu-item
+Change the string of the specified menu item.
+PATH is a list of strings which identify the position of the menu item in
+the menu hierarchy.  ("File" "Save") means the menu item called "Save"
+under the toplevel "File" menu.  ("Menu" "Foo" "Item") means the
+menu item called "Item" under the "Foo" submenu of "Menu".
+NEW-NAME is the string that the menu item will be printed as from now on.
+Fenable-menu-item
+Make the named menu item be selectable.
+PATH is a list of strings which identify the position of the menu item in
+the menu hierarchy.  ("File" "Save") means the menu item called "Save"
+under the toplevel "File" menu.  ("Menu" "Foo" "Item") means the
+menu item called "Item" under the "Foo" submenu of "Menu".
+Fdisable-menu-item
+Make the named menu item be unselectable.
+PATH is a list of strings which identify the position of the menu item in
+the menu hierarchy.  ("File" "Save") means the menu item called "Save"
+under the toplevel "File" menu.  ("Menu" "Foo" "Item") means the
+menu item called "Item" under the "Foo" submenu of "Menu".
+Fselect-toggle-menu-item
+Make the named toggle- or radio-style menu item be in the `selected' state.
+PATH is a list of strings which identify the position of the menu item in
+the menu hierarchy.  ("File" "Save") means the menu item called "Save"
+under the toplevel "File" menu.  ("Menu" "Foo" "Item") means the
+menu item called "Item" under the "Foo" submenu of "Menu".
+Fdeselect-toggle-menu-item
+Make the named toggle- or radio-style menu item be in the `unselected' state.
+PATH is a list of strings which identify the position of the menu item in
+the menu hierarchy.  ("File" "Save") means the menu item called "Save"
+under the toplevel "File" menu.  ("Menu" "Foo" "Item") means the
+menu item called "Item" under the "Foo" submenu of "Menu".
+Vglobal-popup-menu
+The global popup menu.  This is present in all modes.
+See the function `popup-menu' for a description of menu syntax.
+Vmode-popup-menu
+The mode-specific popup menu.  Automatically buffer local.
+This is appended to the default items in `global-popup-menu'.
+See the function `popup-menu' for a description of menu syntax.
+Vactivate-popup-menu-hook
+Function or functions run before a mode-specific popup menu is made visible.
+These functions are called with no arguments, and should interrogate and
+modify the value of `global-popup-menu' or `mode-popup-menu' as desired.
+Note: this hook is only run if you use `popup-mode-menu' for activating the
+global and mode-specific commands; if you have your own binding for button3,
+this hook won't be run.
+Vlast-popup-menu-event
+The mouse event that invoked the last popup menu.
+NOTE: This is EXPERIMENTAL and may change at any time.
+Fpopup-mode-menu
+Pop up a menu of global and mode-specific commands.
+The menu is computed by combining `global-popup-menu' and `mode-popup-menu'
+with any items derived from the `context-menu' property of the extent where the
+button was clicked.
+Fpopup-buffer-menu
+Pop up a copy of the menubar Buffers menu where the mouse is clicked.
+Fpopup-menubar-menu
+Pop up a copy of menu that also appears in the menubar.
+Fmenu-call-at-event
+Call FORM while temporarily setting point to the position in EVENT.
+NOTE: This is EXPERIMENTAL and may change at any time.
+
+FORM is called the way forms in menu specs are: i.e. if a symbol, it's called
+with `call-interactively', otherwise with `eval'.  EVENT defaults to
+`last-popup-menu-event', making this function especially useful in popup
+menus.  The buffer and point are set temporarily within a `save-excursion'.
+If EVENT is not a mouse event, or was not over a buffer, nothing
+happens unless DEFAULT-BEHAVIOR-FALLBACK is non-nil, in which case the
+FORM is called normally.
+Fget-popup-menu-response
+Pop up the given menu and wait for a response.
+This blocks until the response is received, and returns the misc-user
+event that encapsulates the response.  To execute it, you can do
+  (funcall (event-function response) (event-object response))
+If no response was received, nil is returned.
+
+MENU-DESC and EVENT are as in the call to `popup-menu'.
+Fpopup-menu-and-execute-in-window
+Pop up the given menu and execute its response in EVENT's window.
+This blocks until the response is received, temporarily selects
+EVENT's window, and executes the command specified in the response.
+EVENT can also be a window.  See `popup-menu' for the semantics of
+MENU-DESC.
+Fyes-or-no-p-dialog-box
+Ask user a yes-or-no question with a popup dialog box.
+Return t if the answer is "yes".
+Takes one argument, which is the string to display to ask the question.
+Fget-dialog-box-response
+Pop up a dialog box and return user's selection.
+POSITION specifies which frame to use.
+This is normally an event or a window or frame.
+If POSITION is t or nil, it means to use the frame the mouse is on.
+The dialog box appears in the middle of the specified frame.
+
+CONTENTS specifies the alternatives to display in the dialog box.
+It is a list of the form (TITLE ITEM1 ITEM2...).
+Each ITEM is a cons cell (STRING . VALUE).
+The return value is VALUE from the chosen item.
+
+An ITEM may also be just a string--that makes a nonselectable item.
+An ITEM may also be nil--that means to put all preceding items
+on the left of the dialog box and all following items on the right.
+Fmessage-box
+Display a message, in a dialog box if possible.
+If the selected device has no dialog-box support, use the echo area.
+The arguments are the same as to `format'.
+
+If the only argument is nil, clear any existing message; let the
+minibuffer contents show.
+Fmessage-or-box
+Display a message in a dialog box or in the echo area.
+If this command was invoked with the mouse, use a dialog box.
+Otherwise, use the echo area.
+The arguments are the same as to `format'.
+
+If the only argument is nil, clear any existing message; let the
+minibuffer contents show.
+Fmake-dialog-box
+Pop up a dialog box.
+TYPE is a symbol, the type of dialog box.  Remaining arguments are
+keyword-value pairs, specifying the particular characteristics of the
+dialog box.  The allowed keywords are particular to each type, but
+some standard keywords are common to many types:
+
+:title
+  The title of the dialog box's window.
+
+:modal
+  If true, indicates that XEmacs will wait until the user is "done"
+  with the dialog box (usually, this means that a response has been
+  given).  Typically, the response is returned.  NOTE: Some dialog
+  boxes are always modal.  If the dialog box is modal, `make-dialog-box'
+  returns immediately.  The return value will be either nil or a
+  dialog box handle of some sort, e.g. a frame for type `general'.
+
+---------------------------------------------------------------------------
+
+Recognized types are
+
+general
+  A dialog box consisting of an XEmacs glyph, typically a `layout'
+  widget specifying a dialog box arrangement.  This is the most
+  general and powerful dialog box type, but requires more work than
+  the other types below.
+
+question
+  A simple dialog box that displays a question and contains one or
+  more user-defined buttons to specify possible responses. (This is
+  compatible with the old built-in dialog boxes formerly specified
+  using `popup-dialog-box'.)
+
+file
+  A file dialog box, of the type typically used in the window system
+  XEmacs is running on.
+
+color
+  A color picker.
+
+find
+  A find dialog box.
+
+font
+  A font chooser.
+
+print
+  A dialog box used when printing (e.g. number of pages, printer).
+
+page-setup
+  A dialog box for setting page options (e.g. margins) for printing.
+
+replace
+  A find/replace dialog box.
+
+mswindows-message
+  An MS Windows-specific standard dialog box type similar to `question'.
+
+---------------------------------------------------------------------------
+
+For type `general':
+
+This type creates a frame and puts the specified widget layout in it.
+(Currently this is done by eliminating all areas but the gutter and placing
+the layout there; but this is an implementation detail and may change.)
+
+The keywords allowed for `general' are
+
+:spec
+  The widget spec -- anything that can be passed to `make-glyph'.
+:title
+  The title of the frame.
+:parent
+  The frame is made a child of this frame (defaults to the selected frame).
+:properties
+  Additional properties of the frame, as well as `dialog-frame-plist'.
+
+---------------------------------------------------------------------------
+
+For type `question':
+
+The keywords allowed are
+
+:modal
+  t or nil.  When t, the dialog box callback should exit the dialog box
+  using the functions `dialog-box-finish' or `dialog-box-cancel'.
+:title
+  The title of the frame.
+:question
+  A string, the question.
+:buttons
+  A list, describing the buttons below the question.  Each of these is a
+  vector, the syntax of which is essentially the same as that of popup menu
+  items.  They may have any of the following forms:
+
+   [ "name" callback <active-p> ]
+   [ "name" callback <active-p> "suffix" ]
+   [ "name" callback :<keyword> <value>  :<keyword> <value> ... ]
+  
+  The name is the string to display on the button; it is filtered through the
+  resource database, so it is possible for resources to override what string
+  is actually displayed.
+  
+  Accelerators can be indicated in the string by putting the sequence
+  "%_" before the character corresponding to the key that will invoke
+  the button.  Uppercase and lowercase accelerators are equivalent.  The
+  sequence "%%" is also special, and is translated into a single %.
+  
+  If the `callback' of a button is a symbol, then it must name a command.
+  It will be invoked with `call-interactively'.  If it is a list, then it is
+  evaluated with `eval'.
+  
+  One (and only one) of the buttons may be `nil'.  This marker means that all
+  following buttons should be flushright instead of flushleft.
+  
+  Though the keyword/value syntax is supported for dialog boxes just as in
+  popup menus, the only keyword which is both meaningful and fully implemented
+  for dialog box buttons is `:active'.
+
+---------------------------------------------------------------------------
+
+For type `file':
+
+The keywords allowed are
+
+:initial-filename
+  The initial filename to be placed in the dialog box (defaults to nothing).
+:initial-directory
+  The initial directory to be selected in the dialog box (defaults to the
+  current buffer's `default-directory).
+:filter-list
+  A list of                     (filter-desc filter ...)
+:title
+  The title of the dialog box (defaults to "Open").
+:allow-multi-select             t or nil
+:create-prompt-on-nonexistent   t or nil
+:overwrite-prompt               t or nil
+:file-must-exist                t or nil
+:no-network-button              t or nil
+:no-read-only-return            t or nil
+
+---------------------------------------------------------------------------
+
+For type `print':
+
+This invokes the Windows standard Print dialog.
+This dialog is usually invoked when the user selects the Print command.
+After the user presses OK, the program should start actual printout.
+
+The keywords allowed are
+
+:device
+  An 'msprinter device.
+:print-settings
+  A printer settings object.
+:allow-selection
+  t or nil -- whether the "Selection" button is enabled (defaults to nil).
+:allow-pages
+  t or nil -- whether the "Pages" button and associated edit controls
+  are enabled (defaults to t).
+:selected-page-button
+  `all', `selection', or `pages' -- which page button is initially
+  selected.
+
+Exactly one of :device and :print-settings must be given.
+
+The function brings up the Print dialog, where the user can
+select a different printer and/or change printer options.  Connection
+name can change as a result of selecting a different printer device.  If
+a device is specified, then changes are stored into the settings object
+currently selected into that printer.  If a settings object is supplied,
+then changes are recorded into it, and, it is selected into a
+printer, then changes are propagated to that printer 
+too.
+
+Return value is nil if the user has canceled the dialog.  Otherwise, it
+is a new plist, with the following properties:
+  name                   Printer device name, even if unchanged by the user.
+  from-page              First page to print, 1-based.  Returned if
+                         `selected-page-button' is `pages'.
+                         user, then this value is not included in the plist.
+  to-page                Last page to print, inclusive, 1-based.  Returned if
+                         `selected-page-button' is `pages'.
+  copies                 Number of copies to print.  Always returned.
+  selected-page-button   Which page button was selected (`all', `selection',
+                         or `pages').
+
+The DEVICE is destroyed and an error is signaled in case of
+initialization problem with the new printer.
+
+See also the `page-setup' dialog box type.
+
+---------------------------------------------------------------------------
+
+For type `page-setup':
+
+This invokes the Windows standard Page Setup dialog.
+This dialog is usually invoked in response to the Page Setup command,
+and used to choose such parameters as page orientation, print margins
+etc.  Note that this dialog contains the "Printer" button, which
+invokes the Printer Setup dialog so that the user can update the
+printer options or even select a different printer as well.
+
+The keywords allowed are
+
+:device
+  An 'msprinter device.
+:print-settings
+  A printer settings object.
+:properties
+  A plist of job properties.
+
+Exactly one of these keywords must be given.
+
+The function brings up the Page Setup dialog, where the user
+can select a different printer and/or change printer options.
+Connection name can change as a result of selecting a different printer
+device.  If a device is specified, then changes are stored into the
+settings object currently selected into that printer.  If a settings
+object is supplied, then changes are recorded into it, and, it is
+selected into a printer, then changes are propagated to that printer
+too.
+
+:properties specifies a plist of job properties;
+see `default-msprinter-frame-plist' for the complete list.  The plist
+is used to initialize the dialog.
+
+Return value is nil if the user has canceled the dialog.  Otherwise,
+it is a new plist, containing the new list of properties.
+
+NOTE: The margin properties (returned by this function) are *NOT* stored
+into the print-settings or device object.
+
+The DEVICE is destroyed and an error is signaled in case of
+initialization problem with the new printer.
+
+See also the `print' dialog box type.
+
+---------------------------------------------------------------------------
+
+For type `mswindows-message':
+
+The keywords allowed are
+
+:title
+  The title of the dialog box.
+:message
+  The string to display.
+:flags
+  A symbol or list of symbols:
+
+    -- To specify the buttons in the message box:
+    
+    abortretryignore 
+      The message box contains three push buttons: Abort, Retry, and Ignore. 
+    ok 
+      The message box contains one push button: OK. This is the default. 
+    okcancel 
+      The message box contains two push buttons: OK and Cancel. 
+    retrycancel 
+      The message box contains two push buttons: Retry and Cancel. 
+    yesno 
+      The message box contains two push buttons: Yes and No. 
+    yesnocancel 
+      The message box contains three push buttons: Yes, No, and Cancel. 
+    
+    
+    -- To display an icon in the message box:
+     
+    iconexclamation, iconwarning
+      An exclamation-point icon appears in the message box. 
+    iconinformation, iconasterisk
+      An icon consisting of a lowercase letter i in a circle appears in
+      the message box. 
+    iconquestion
+      A question-mark icon appears in the message box. 
+    iconstop, iconerror, iconhand
+      A stop-sign icon appears in the message box. 
+    
+    
+    -- To indicate the default button: 
+    
+    defbutton1
+      The first button is the default button.  This is the default.
+    defbutton2
+      The second button is the default button. 
+    defbutton3
+      The third button is the default button. 
+    defbutton4
+      The fourth button is the default button. 
+    
+    
+    -- To indicate the modality of the dialog box:
+     
+    applmodal
+      The user must respond to the message box before continuing work in
+      the window identified by the hWnd parameter. However, the user can
+      move to the windows of other applications and work in those windows.
+      Depending on the hierarchy of windows in the application, the user
+      may be able to move to other windows within the application. All
+      child windows of the parent of the message box are automatically
+      disabled, but popup windows are not.  This is the default.
+    systemmodal
+      Same as applmodal except that the message box has the WS_EX_TOPMOST
+      style. Use system-modal message boxes to notify the user of serious,
+      potentially damaging errors that require immediate attention (for
+      example, running out of memory). This flag has no effect on the
+      user's ability to interact with windows other than those associated
+      with hWnd.
+    taskmodal
+      Same as applmodal except that all the top-level windows belonging to
+      the current task are disabled if the hWnd parameter is NULL. Use
+      this flag when the calling application or library does not have a
+      window handle available but still needs to prevent input to other
+      windows in the current application without suspending other
+      applications.
+    
+    
+    In addition, you can specify the following flags: 
+    
+    default-desktop-only 
+      The desktop currently receiving input must be a default desktop;
+      otherwise, the function fails. A default desktop is one an
+      application runs on after the user has logged on.
+    help 
+      Adds a Help button to the message box. Choosing the Help button or
+      pressing F1 generates a Help event.
+    right 
+      The text is right-justified. 
+    rtlreading 
+      Displays message and caption text using right-to-left reading order
+      on Hebrew and Arabic systems.
+    setforeground 
+      The message box becomes the foreground window. Internally, Windows
+      calls the SetForegroundWindow function for the message box.
+    topmost 
+      The message box is created with the WS_EX_TOPMOST window style. 
+    service-notification 
+      Windows NT only: The caller is a service notifying the user of an
+      event. The function displays a message box on the current active
+      desktop, even if there is no user logged on to the computer.  If
+      this flag is set, the hWnd parameter must be NULL. This is so the
+      message box can appear on a desktop other than the desktop
+      corresponding to the hWnd.
+    
+
+  The return value is one of the following menu-item values returned by
+  the dialog box:
+   
+  abort
+    Abort button was selected. 
+  cancel
+    Cancel button was selected. 
+  ignore
+    Ignore button was selected. 
+  no
+    No button was selected. 
+  ok
+    OK button was selected. 
+  retry
+    Retry button was selected. 
+  yes
+    Yes button was selected. 
+  
+  If a message box has a Cancel button, the function returns the
+  `cancel' value if either the ESC key is pressed or the Cancel button
+  is selected.  If the message box has no Cancel button, pressing ESC has
+  no effect.
+Fdialog-box-finish
+Exit a modal dialog box, returning RESULT.
+This is meant to be executed from a dialog box callback function.
+Fdialog-box-cancel
+Cancel a modal dialog box.
+This is meant to be executed from a dialog box callback function.
+Fpopup-dialog-box
+Obsolete equivalent of (make-dialog-box 'question ...).
+
+(popup-dialog-box (QUESTION BUTTONS ...)
+
+is equivalent to
+
+(make-dialog-box 'question :question QUESTION :buttons BUTTONS)
+Vdefault-gutter-position-changed-hook
+Function or functions to be called when the gutter position is changed.
+The value of this variable may be buffer-local.
+Vgutter-element-visibility-changed-hook
+Function or functions to be called when the visibility of an
+element in the gutter changes.  The value of this variable may be
+buffer-local. The gutter element symbol is passed as an argument to
+the hook, as is the visibility flag.
+Fset-gutter-element
+Set GUTTER-SPECIFIER gutter element PROP to VALUE in optional LOCALE.
+This is a convenience function for setting gutter elements.
+VALUE in general must be a string. If VALUE is a glyph then a string
+will be created to put the glyph into.
+Fremove-gutter-element
+Remove gutter element PROP from GUTTER-SPECIFIER in optional LOCALE.
+This is a convenience function for removing gutter elements.
+Fset-gutter-element-visible-p
+Change the visibility of gutter elements.
+Set the visibility of element PROP to VISIBLE-P for
+GUTTER-SPECIFIER-VISIBLE-P in optional LOCALE.
+This is a convenience function for hiding and showing gutter elements.
+Fgutter-element-visible-p
+Determine whether a gutter element is visible.
+Given GUTTER-VISIBLE-SPECIFIER-P and gutter element PROP, return
+non-nil if it is visible in optional DOMAIN.
+Fset-gutter-dirty-p
+Make GUTTER-OR-LOCATION dirty to force redisplay updates.
+Fmake-gutter-specifier
+Return a new `gutter' specifier object with the given specification list.
+SPEC-LIST can be a list of specifications (each of which is a cons of a
+locale and a list of instantiators), a single instantiator, or a list
+of instantiators.  See `make-specifier' for more information about
+specifiers.
+
+Gutter specifiers are used to specify the format of a gutter.
+The values of the variables `default-gutter', `top-gutter',
+`left-gutter', `right-gutter', and `bottom-gutter' are always
+gutter specifiers.
+
+Valid gutter instantiators are called "gutter descriptors" and are
+either strings or property-lists of strings.  See `default-gutter' for
+a description of the exact format.
+Fmake-gutter-size-specifier
+Return a new `gutter-size' specifier object with the given spec list.
+SPEC-LIST can be a list of specifications (each of which is a cons of a
+locale and a list of instantiators), a single instantiator, or a list
+of instantiators.  See `make-specifier' for more information about
+specifiers.
+
+Gutter-size specifiers are used to specify the size of a gutter.  The
+values of the variables `default-gutter-size', `top-gutter-size',
+`left-gutter-size', `right-gutter-size', and `bottom-gutter-size' are
+always gutter-size specifiers.
+
+Valid gutter-size instantiators are either integers or the special
+symbol 'autodetect. If a gutter-size is set to 'autodetect them the
+size of the gutter will be adjusted to just accommodate the gutters
+contents. 'autodetect only works for top and bottom gutters.
+Fmake-gutter-visible-specifier
+Return a new `gutter-visible' specifier object with the given spec list.
+SPEC-LIST can be a list of specifications (each of which is a cons of a
+locale and a list of instantiators), a single instantiator, or a list
+of instantiators.  See `make-specifier' for more information about
+specifiers.
+
+Gutter-visible specifiers are used to specify the visibility of a
+gutter.  The values of the variables `default-gutter-visible-p',
+`top-gutter-visible-p', `left-gutter-visible-p',
+`right-gutter-visible-p', and `bottom-gutter-visible-p' are always
+gutter-visible specifiers.
+
+Valid gutter-visible instantiators are t, nil or a list of symbols.
+If a gutter-visible instantiator is set to a list of symbols, and the
+corresponding gutter specification is a property-list strings, then
+elements of the gutter specification will only be visible if the
+corresponding symbol occurs in the gutter-visible instantiator.
+Vselected-text-type
+The type atom used to obtain selections from the X server.
+Can be either a valid X selection data type, or a list of such types.
+COMPOUND_TEXT and STRING are the most commonly used data types.
+If a list is provided, the types are tried in sequence until
+there is a successful conversion.
+Vselection-sets-clipboard
+Controls the selection's relationship to the clipboard.
+When non-nil, any operation that sets the primary selection will also
+set the clipboard.
+Fcopy-primary-selection
+Copy the selection to the Clipboard and the kill ring.
+Fkill-primary-selection
+Copy the selection to the Clipboard and the kill ring, then delete it.
+Fdelete-primary-selection
+Delete the selection without copying it to the Clipboard or the kill ring.
+Fyank-clipboard-selection
+Insert the current Clipboard selection at point.
+Fget-clipboard
+Return text pasted to the clipboard.
+Fget-cutbuffer
+Return the value of one of the cut buffers.
+This will do nothing under anything other than X.
+Fget-selection-no-error
+Return the value of a window-system selection.
+The argument TYPE (default `PRIMARY') says which selection,
+and the argument DATA-TYPE (default `STRING', or `COMPOUND_TEXT' under Mule)
+says how to convert the data. Returns NIL if there is no selection.
+Fget-selection
+Return the value of a window-system selection.
+The argument TYPE (default `PRIMARY') says which selection,
+and the argument DATA-TYPE (default `STRING', or `COMPOUND_TEXT' under Mule)
+says how to convert the data. If there is no selection an error is signalled.
+Fown-selection
+Make a window-system selection of type TYPE and value DATA.
+The argument TYPE (default `PRIMARY') says which selection,
+and DATA specifies the contents.  DATA may be any lisp data type
+that can be converted using the function corresponding to DATA-TYPE
+in `select-converter-alist'---strings are the usual choice, but
+other types may be permissible depending on the DATA-TYPE parameter
+(if DATA-TYPE is not supplied, the default behavior is window
+system specific, but strings are always accepted).
+HOW-TO-ADD may be any of the following:
+
+  'replace-all or nil -- replace all data in the selection.
+  'replace-existing   -- replace data for specified DATA-TYPE only.
+  'append or t        -- append data to existing DATA-TYPE data.
+
+DATA-TYPE is the window-system specific data type identifier
+(see `register-selection-data-type' for more information).
+
+The selection may also be a cons of two markers pointing to the same buffer,
+or an overlay.  In these cases, the selection is considered to be the text
+between the markers *at whatever time the selection is examined* (note
+that the window system clipboard does not necessarily duplicate this
+behavior - it doesn't on mswindows for example).
+Thus, editing done in the buffer after you specify the selection
+can alter the effective value of the selection.
+
+The data may also be a vector of valid non-vector selection values.
+
+Interactively, the text of the region is used as the selection value.
+Fdehilight-selection
+for use as a value of `lost-selection-hooks'.
+Fown-clipboard
+Paste the given string to the window system Clipboard.
+See `interprogram-cut-function' for more information.
+Fdisown-selection
+Assuming we own the selection, disown it.
+With an argument, discard the secondary selection instead of the
+primary selection.
+Vprimary-selection-extent
+The extent of the primary selection; don't use this.
+Vsecondary-selection-extent
+The extent of the secondary selection; don't use this.
+Fvalid-simple-selection-p
+An obsolete function that tests whether something was a valid simple
+selection using the old XEmacs selection support. You shouldn't use this
+any more, because just about anything could be a valid selection now.
+Fselect-convert-in
+Attempt to convert the specified external VALUE to the specified DATA-TYPE,
+for the specified SELECTION. Return nil if this is impossible, or a
+suitable internal representation otherwise.
+Fselect-convert-out
+Attempt to convert the specified internal VALUE for the specified DATA-TYPE
+and SELECTION. Return nil if this is impossible, or a suitable external
+representation otherwise.
+Fselect-coerce
+Attempt to convert the specified internal VALUE to a representation
+suitable for return from `get-selection' in the specified DATA-TYPE. Return
+nil if this is impossible, or a suitable representation otherwise.
+Fselect-convert-to-name
+xemacs
+Fsubmenu-generate-accelerator-spec
+Add auto-generated accelerator specifications to a submenu.
+This can be used to add accelerators to the return value of a menu filter
+function.  It correctly ignores unselectable items.  It will destructively
+modify the list passed to it.  If an item already has an auto-generated
+accelerator spec, this will be removed before the new one is added, making
+this function idempotent.
+
+If OMIT-CHARS-LIST is given, it should be a list of lowercase characters,
+which will not be used as accelerators.
+Fmenu-item-strip-accelerator-spec
+Strip an auto-generated accelerator spec off of ITEM.
+ITEM should be a string.  This removes specs added by
+`menu-item-generate-accelerator-spec' and `submenu-generate-accelerator-spec'.
+Fmenu-item-generate-accelerator-spec
+Return an accelerator specification for use with auto-generated menus.
+This should be concat'd onto the beginning of each menu line.  The spec
+allows the Nth line to be selected by the number N.  '0' is used for the
+10th line, and 'a' through 'z' are used for the following 26 lines.
+
+If OMIT-CHARS-LIST is given, it should be a list of lowercase characters,
+which will not be used as accelerators.
+Fmaybe-add-init-button
+Don't call this.
+Adds `Load .emacs' button to menubar when starting up with -q.
+Fsort-buffers-menu-alphabetically
+For use as a value of `buffers-menu-sort-function'.
+Sorts the buffers in alphabetical order by name, but puts buffers beginning
+with a star at the end of the list.
+Fsort-buffers-menu-by-mode-then-alphabetically
+For use as a value of `buffers-menu-sort-function'.
+Sorts first by major mode and then alphabetically by name, but puts buffers
+beginning with a star at the end of the list.
+Fslow-format-buffers-menu-line
+For use as a value of `buffers-menu-format-buffer-line-function'.
+This returns a string containing a bunch of info about the buffer.
+Fformat-buffers-menu-line
+For use as a value of `buffers-menu-format-buffer-line-function'.
+This just returns the buffer's name.
+Fgroup-buffers-menu-by-mode-then-alphabetically
+For use as a value of `buffers-menu-grouping-function'.
+This groups buffers by major mode.  It only really makes sense if
+`buffers-menu-sorting-function' is
+`sort-buffers-menu-by-mode-then-alphabetically'.
+Fbuffers-menu-filter
+This is the menu filter for the top-level buffers "Buffers" menu.
+It dynamically creates a list of buffers to use as the contents of the menu.
+Only the most-recently-used few buffers will be listed on the menu, for
+efficiency reasons.  You can control how many buffers will be shown by
+setting `buffers-menu-max-size'.  You can control the text of the menu
+items by redefining the function `format-buffers-menu-line'.
+Flanguage-environment-menu-filter
+This is the menu filter for the "Language Environment" submenu.
+Voptions-save-faces
+*Non-nil value means save-options will save information about faces.
+A nil value means save-options will not save face information.
+Set this non-nil only if you use M-x edit-faces to change face
+settings.  If you use M-x customize-face or the "Browse Faces..."
+menu entry, you will see a button in the Customize Face buffer that you
+can use to permanently save your face changes.
+
+M-x edit-faces is deprecated.  Support for it and this variable will
+be discontinued in a future release.
+Vsave-options-init-file
+File into which to save forms to load the options file (nil for .emacs).
+Normally this is nil, which means save into your .emacs file (the value
+of `user-init-file'.
+Vsave-options-file
+File to save options into.
+This file is loaded from your .emacs file.
+If this is a relative filename, it is put into the same directory as your
+.emacs file.
+Fxemacs-splash-buffer
+Redisplay XEmacs splash screen in a buffer.
+Vgutter-buffers-tab
+A tab widget in the gutter for displaying buffers.
+Do not set this. Use `set-glyph-image' to change the properties of the tab.
+Vgutter-buffers-tab-orientation
+Where the buffers tab currently is. Do not set this.
+Vbuffers-tab-default-buffer-line-length
+*Maximum length of text which may appear in a "Buffers" tab.
+This is a specifier, use set-specifier to modify it.
+Fbuffers-tab-switch-to-buffer
+For use as a value for `buffers-tab-switch-to-buffer-function'.
+Fselect-buffers-tab-buffers-by-mode
+For use as a value of `buffers-tab-selection-function'.
+This selects buffers by major mode `buffers-tab-grouping-regexp'.
+Fformat-buffers-tab-line
+For use as a value of `buffers-tab-format-buffer-line-function'.
+This just returns the buffer's name, optionally truncated.
+Fbuffers-tab-items
+Return a list of tab instantiators based on the current buffers list.
+This function is used as the tab filter for the top-level buffers
+"Buffers" tab.  It dynamically creates a list of tab instantiators
+to use as the contents of the tab.  The contents and order of the list
+is controlled by `buffers-tab-filter-functions' which by default
+groups buffers according to major mode and removes invisible buffers.
+You can control how many buffers will be shown by setting
+`buffers-tab-max-size'.  You can control the text of the tab items by
+redefining the function `format-buffers-menu-line'.
+Fadd-tab-to-gutter
+Put a tab control in the gutter area to hold the most recent buffers.
+Fupdate-tab-in-gutter
+Update the tab control in the gutter area.
+Vprogress-glyph-height
+Height of the progress gauge glyph.
+Vprogress-feedback-popup-period
+The time that the progress gauge should remain up after completion
+Vprogress-stack
+An alist of label/string pairs representing active progress gauges.
+The first element in the list is currently displayed in the gutter area.
+Do not modify this directly--use the `progress-feedback' or
+`display-progress-feedback'/`clear-progress-feedback' functions.
+Fprogress-feedback-displayed-p
+Return a non-nil value if a progress gauge is presently displayed in the
+gutter area.  If optional argument RETURN-STRING is non-nil,
+return a string containing the message, otherwise just return t.
+Fclear-progress-feedback
+Remove any progress gauge with LABEL from the progress gauge-stack,
+erasing it from the gutter area if it's currently displayed there.
+If a message remains at the head of the progress-stack and NO-RESTORE
+is nil, it will be displayed.  The string which remains in the gutter
+area will be returned, or nil if the progress-stack is now empty.
+If LABEL is nil, the entire progress-stack is cleared.
+
+Unless you need the return value or you need to specify a label,
+you should just use (progress nil).
+Fdisplay-progress-feedback
+Display a progress gauge and message in the bottom gutter area.
+ First argument LABEL is an identifier for this message.  MESSAGE is
+the string to display.  Use `clear-progress-feedback' to remove a labelled
+message.
+Fcurrent-progress-feedback
+Return the current progress gauge in the gutter area, or nil.
+The FRAME argument is currently unused.
+Fprogress-feedback
+Print a progress gauge and message in the bottom gutter area of the frame.
+The arguments are the same as to `format'.
+
+If the only argument is nil, clear any existing progress gauge.
+Fprogress-feedback-with-label
+Print a progress gauge and message in the bottom gutter area of the frame.
+First argument LABEL is an identifier for this progress gauge.  The rest of the
+arguments are the same as to `format'.
+Ftoolbar-ispell
+Intelligently spell the region or buffer.
+Ftoolbar-mail
+Run mail in a separate frame.
+Vtoolbar-info-frame
+The frame in which info is displayed.
+Ftoolbar-info
+Run info in a separate frame.
+Ftoolbar-compile
+Run compile without having to touch the keyboard.
+Vtoolbar-news-frame
+The frame in which news is displayed.
+Ftoolbar-gnus
+Run Gnus in a separate frame.
+Ftoolbar-news
+Run News.
+Vtoolbar-last-win-icon
+A `last-win' icon set.
+Vtoolbar-next-win-icon
+A `next-win' icon set.
+Vtoolbar-file-icon
+A `file' icon set.
+Vtoolbar-folder-icon
+A `folder' icon set
+Vtoolbar-disk-icon
+A `disk' icon set.
+Vtoolbar-printer-icon
+A `printer' icon set.
+Vtoolbar-cut-icon
+A `cut' icon set.
+Vtoolbar-copy-icon
+A `copy' icon set.
+Vtoolbar-paste-icon
+A `paste' icon set.
+Vtoolbar-undo-icon
+An `undo' icon set.
+Vtoolbar-spell-icon
+A `spell' icon set.
+Vtoolbar-replace-icon
+A `replace' icon set.
+Vtoolbar-mail-icon
+A `mail' icon set.
+Vtoolbar-info-icon
+An `info' icon set.
+Vtoolbar-compile-icon
+A `compile' icon set.
+Vtoolbar-debug-icon
+A `debugger' icon set.
+Vtoolbar-news-icon
+A `news' icon set.
+Vtoolbar-vector-open
+Define the vector for the "Open" toolbar button
+Vtoolbar-vector-dired
+Define the vector for the "Dired" toolbar button
+Vtoolbar-vector-save
+Define the vector for the "Save" toolbar button
+Vtoolbar-vector-print
+Define the vector for the "Printer" toolbar button
+Vtoolbar-vector-cut
+Define the vector for the "Cut" toolbar button
+Vtoolbar-vector-copy
+Define the vector for the "Copy" toolbar button
+Vtoolbar-vector-paste
+Define the vector for the "Paste" toolbar button
+Vtoolbar-vector-undo
+Define the vector for the "Undo" toolbar button
+Vtoolbar-vector-spell
+Define the vector for the "Spell" toolbar button
+Vtoolbar-vector-replace
+Define the vector for the "Replace" toolbar button
+Vtoolbar-vector-mail
+Define the vector for the "Mail" toolbar button
+Vtoolbar-vector-info
+Define the vector for the "Info" toolbar button
+Vtoolbar-vector-compile
+Define the vector for the "Compile" toolbar button
+Vtoolbar-vector-debug
+Define the vector for the "Debug" toolbar button
+Vtoolbar-vector-news
+Define the vector for the "News" toolbar button
+Vinitial-toolbar-spec
+The initial toolbar for a buffer.
+Fmake-search-dialog
+Popup a search dialog box.
+Vmodeline-multibyte-status
+Modeline control for showing multibyte extension status.
+Fmodify-coding-system-alist
+Modify one of look up tables for finding a coding system on I/O operation.
+There are three of such tables, `file-coding-system-alist',
+`process-coding-system-alist', and `network-coding-system-alist'.
+
+TARGET-TYPE specifies which of them to modify.
+If it is `file', it affects `file-coding-system-alist' (which see).
+If it is `process', it affects `process-coding-system-alist' (which see).
+If it is `network', it affects `network-coding-system-alist' (which see).
+
+REGEXP is a regular expression matching a target of I/O operation.
+The target is a file name if TARGET-TYPE is `file', a program name if
+TARGET-TYPE is `process', or a network service name or a port number
+to connect to if TARGET-TYPE is `network'.
+
+CODING-SYSTEM is a coding system to perform code conversion on the I/O
+operation, or a cons cell (DECODING . ENCODING) specifying the coding systems
+for decoding and encoding respectively,
+or a function symbol which, when called, returns such a cons cell.
+Fkeyboard-coding-system
+Return coding-system of what is sent from terminal keyboard.
+Fset-keyboard-coding-system
+Set the coding system used for TTY keyboard input. Currently broken.
+Fterminal-coding-system
+Return coding-system of your terminal.
+Fset-terminal-coding-system
+Set the coding system used for TTY display output. Currently broken.
+Fset-pathname-coding-system
+Set the coding system used for file system path names.
+Fwhat-coding-system
+Show the encoding of text in the region.
+This function is meant to be called interactively;
+from a Lisp program, use `detect-coding-region' instead.
+Fdecode-coding-string
+Decode the string STR which is encoded in CODING-SYSTEM.
+Does not modify STR.  Returns the decoded string on successful conversion.
+Fencode-coding-string
+Encode the string STR using CODING-SYSTEM.
+Does not modify STR.  Returns the encoded string on successful conversion.
+Fcoding-system-mnemonic
+Return the 'mnemonic property of CODING-SYSTEM.
+Fcoding-system-eol-type
+Return the 'eol-type property of CODING-SYSTEM.
+Fcoding-system-eol-lf
+Return the 'eol-lf property of CODING-SYSTEM.
+Fcoding-system-eol-crlf
+Return the 'eol-crlf property of CODING-SYSTEM.
+Fcoding-system-eol-cr
+Return the 'eol-cr property of CODING-SYSTEM.
+Fcoding-system-post-read-conversion
+Return the 'post-read-conversion property of CODING-SYSTEM.
+Fcoding-system-pre-write-conversion
+Return the 'pre-write-conversion property of CODING-SYSTEM.
+Fcoding-system-base
+Return the base coding system of CODING-SYSTEM.
+Fcoding-system-get
+Extract a value from CODING-SYSTEM's property list for property PROP.
+Fcoding-system-put
+Change value in CODING-SYSTEM's property list PROP to VALUE.
+Fcoding-system-category
+Return the coding category of CODING-SYSTEM.
+Vbuffer-file-coding-system-for-read
+Coding system used when reading a file.
+This provides coarse-grained control; for finer-grained control, use
+`file-coding-system-alist'.  From a Lisp program, if you wish to
+unilaterally specify the coding system used for one particular
+operation, you should bind the variable `coding-system-for-read'
+rather than setting this variable, which is intended to be used for
+global environment specification.
+Vfile-coding-system-alist
+Alist to decide a coding system to use for a file I/O operation.
+The format is ((PATTERN . VAL) ...),
+where PATTERN is a regular expression matching a file name,
+VAL is a coding system, a cons of coding systems, or a function symbol.
+If VAL is a coding system, it is used for both decoding and encoding
+the file contents.
+If VAL is a cons of coding systems, the car part is used for decoding,
+and the cdr part is used for encoding.
+If VAL is a function symbol, the function must return a coding system
+or a cons of coding systems which are used as above.
+
+This overrides the more general specification in
+`buffer-file-coding-system-for-read', but is overridden by
+`coding-system-for-read'.
+Fset-buffer-file-coding-system
+Set buffer-file-coding-system of the current buffer to CODING-SYSTEM.
+If optional argument FORCE (interactively, the prefix argument) is not
+given, attempt to match the EOL type of the new coding system to
+the current value of `buffer-file-coding-system'.
+Ftoggle-buffer-file-coding-system
+Set EOL type of buffer-file-coding-system of the current buffer to
+something other than what it is at the moment.
+Fset-buffer-file-coding-system-for-read
+Set the coding system used when reading in a file.
+This is equivalent to setting the variable
+`buffer-file-coding-system-for-read'.  You can also use
+`file-coding-system-alist' to specify the coding system for
+particular files.
+Fset-default-buffer-file-coding-system
+Set the default value of `buffer-file-coding-system' to CODING-SYSTEM.
+The default value is used both for buffers without associated files
+and for files with no apparent coding system (i.e. primarily ASCII).
+See `buffer-file-coding-system' for more information.
+Ffind-file-coding-system-for-read-from-filename
+Look up coding system to read a file in `file-coding-system-alist'.
+The return value will be nil (no applicable entry) or a coding system
+object (the entry specified a coding system).
+Ffind-file-coding-system-for-write-from-filename
+Look up coding system to write a file in `file-coding-system-alist'.
+The return value will be nil (no applicable entry) or a coding system
+object (the entry specified a coding system).
+Fload
+Execute a file of Lisp code named FILE.
+First tries FILE with .elc appended, then tries with .el,
+ then tries FILE unmodified.  Searches directories in load-path.
+If optional second arg NOERROR is non-nil,
+ report no error if FILE doesn't exist.
+Print messages at start and end of loading unless
+ optional third arg NOMESSAGE is non-nil.
+If optional fourth arg NOSUFFIX is non-nil, don't try adding
+ suffixes .elc or .el to the specified name FILE.
+Return t if file exists.
+Vinsert-file-contents-access-hook
+A hook to make a file accessible before reading it.
+`insert-file-contents' calls this hook before doing anything else.
+Called with two arguments: FILENAME and VISIT, the same as the
+corresponding arguments in the call to `insert-file-contents'.
+Vinsert-file-contents-pre-hook
+A special hook to decide the coding system used for reading in a file.
+
+Before reading a file, `insert-file-contents' calls the functions on
+this hook with arguments FILENAME and VISIT, the same as the
+corresponding arguments in the call to `insert-file-contents'.  In
+these functions, you may refer to the global variable
+`buffer-file-coding-system-for-read'.
+
+The return value of the functions should be either
+
+-- nil
+-- A coding system or a symbol denoting it, indicating the coding system
+   to be used for reading the file
+-- A list of two elements (absolute pathname and length of data inserted),
+   which is used as the return value to `insert-file-contents'.  In this
+   case, `insert-file-contents' assumes that the function has inserted
+   the file for itself and suppresses further reading.
+
+If any function returns non-nil, the remaining functions are not called.
+Vinsert-file-contents-error-hook
+A hook to set `buffer-file-coding-system' when a read error has occurred.
+
+When a file error (e.g. nonexistent file) occurs while read a file,
+`insert-file-contents' calls the functions on this hook with three
+arguments: FILENAME and VISIT (the same as the corresponding arguments
+in the call to `insert-file-contents') and a cons (SIGNALED-CONDITIONS
+. SIGNAL-DATA).
+
+After calling this hook, the error is signalled for real and
+propagates to the caller of `insert-file-contents'.
+Vinsert-file-contents-post-hook
+A hook to set `buffer-file-coding-system' for the current buffer.
+
+After successful reading, `insert-file-contents' calls the functions
+on this hook with four arguments: FILENAME and VISIT (the same as the
+corresponding arguments in the call to `insert-file-contents'),
+CODING-SYSTEM (the actual coding system used to decode the file), and
+a cons of absolute pathname and length of data inserted (the same
+thing as will be returned from `insert-file-contents').
+Finsert-file-contents
+Insert contents of file FILENAME after point.
+Returns list of absolute file name and length of data inserted.
+If second argument VISIT is non-nil, the buffer's visited filename
+and last save file modtime are set, and it is marked unmodified.
+If visiting and the file does not exist, visiting is completed
+before the error is signaled.
+
+The optional third and fourth arguments START and END
+specify what portion of the file to insert.
+If VISIT is non-nil, START and END must be nil.
+If optional fifth argument REPLACE is non-nil,
+it means replace the current buffer contents (in the accessible portion)
+with the file contents.  This is better than simply deleting and inserting
+the whole thing because (1) it preserves some marker positions
+and (2) it puts less data in the undo list.
+
+The coding system used for decoding the file is determined as follows:
+
+1. `coding-system-for-read', if non-nil.
+2. The result of `insert-file-contents-pre-hook', if non-nil.
+3. The matching value for this filename from
+   `file-coding-system-alist', if any.
+4. `buffer-file-coding-system-for-read', if non-nil.
+5. The coding system 'raw-text.
+
+If a local value for `buffer-file-coding-system' in the current buffer
+does not exist, it is set to the coding system which was actually used
+for reading.
+
+See also `insert-file-contents-access-hook',
+`insert-file-contents-pre-hook', `insert-file-contents-error-hook',
+and `insert-file-contents-post-hook'.
+Vwrite-region-pre-hook
+A special hook to decide the coding system used for writing out a file.
+
+Before writing a file, `write-region' calls the functions on this hook
+with arguments START, END, FILENAME, APPEND, VISIT, and CODING-SYSTEM,
+the same as the corresponding arguments in the call to
+`write-region'.
+
+The return value of the functions should be either
+
+-- nil
+-- A coding system or a symbol denoting it, indicating the coding system
+   to be used for reading the file
+-- A list of two elements (absolute pathname and length of data written),
+   which is used as the return value to `write-region'.  In this
+   case, `write-region' assumes that the function has written
+   the file for itself and suppresses further writing.
+
+If any function returns non-nil, the remaining functions are not called.
+Vwrite-region-post-hook
+A hook called by `write-region' after a file has been written out.
+
+The functions on this hook are called with arguments START, END,
+FILENAME, APPEND, VISIT, and CODING-SYSTEM, the same as the
+corresponding arguments in the call to `write-region'.
+Fwrite-region
+Write current region into specified file.
+By default the file's existing contents are replaced by the specified region.
+When called from a program, takes three arguments:
+START, END and FILENAME.  START and END are buffer positions.
+Optional fourth argument APPEND if non-nil means
+  append to existing file contents (if any).
+Optional fifth argument VISIT if t means
+  set last-save-file-modtime of buffer to this file's modtime
+  and mark buffer not modified.
+If VISIT is a string, it is a second file name;
+  the output goes to FILENAME, but the buffer is marked as visiting VISIT.
+  VISIT is also the file name to lock and unlock for clash detection.
+If VISIT is neither t nor nil nor a string,
+  that means do not print the "Wrote file" message.
+The optional sixth arg LOCKNAME, if non-nil, specifies the name to
+  use for locking and unlocking, overriding FILENAME and VISIT.
+Kludgy feature: if START is a string, then that string is written
+to the file, instead of any buffer contents, and END is ignored.
+Optional seventh argument CODING-SYSTEM specifies the coding system
+  used to encode the text when it is written out, and defaults to
+  the value of `buffer-file-coding-system' in the current buffer.
+  Interactively, with a prefix arg, you will be prompted for the
+  coding system.
+See also `write-region-pre-hook' and `write-region-post-hook'.
+Vprocess-coding-system-alist
+Alist to decide a coding system to use for a process I/O operation.
+The format is ((PATTERN . VAL) ...),
+where PATTERN is a regular expression matching a program name,
+VAL is a coding system, a cons of coding systems, or a function symbol.
+If VAL is a coding system, it is used for both decoding what received
+from the program and encoding what sent to the program.
+If VAL is a cons of coding systems, the car part is used for decoding,
+and the cdr part is used for encoding.
+If VAL is a function symbol, the function must return a coding system
+or a cons of coding systems which are used as above.
+Fcall-process
+Call PROGRAM synchronously in separate process.
+The program's input comes from file INFILE (nil means `/dev/null').
+Insert output in BUFFER before point; t means current buffer;
+ nil for BUFFER means discard it; 0 means discard and don't wait.
+BUFFER can also have the form (REAL-BUFFER STDERR-FILE); in that case,
+REAL-BUFFER says what to do with standard output, as above,
+while STDERR-FILE says what to do with standard error in the child.
+STDERR-FILE may be nil (discard standard error output),
+t (mix it with ordinary output), or a file name string.
+
+Fourth arg DISPLAYP non-nil means redisplay buffer as output is inserted.
+Remaining arguments are strings passed as command arguments to PROGRAM.
+
+If BUFFER is 0, `call-process' returns immediately with value nil.
+Otherwise it waits for PROGRAM to terminate and returns a numeric exit status
+ or a signal description string.
+If you quit, the process is killed with SIGINT, or SIGKILL if you
+ quit again.
+Fcall-process-region
+Send text from START to END to a synchronous process running PROGRAM.
+Delete the text if fourth arg DELETEP is non-nil.
+
+Insert output in BUFFER before point; t means current buffer;
+ nil for BUFFER means discard it; 0 means discard and don't wait.
+BUFFER can also have the form (REAL-BUFFER STDERR-FILE); in that case,
+REAL-BUFFER says what to do with standard output, as above,
+while STDERR-FILE says what to do with standard error in the child.
+STDERR-FILE may be nil (discard standard error output),
+t (mix it with ordinary output), or a file name string.
+
+Sixth arg DISPLAYP non-nil means redisplay buffer as output is inserted.
+Remaining args are passed to PROGRAM at startup as command args.
+
+If BUFFER is 0, returns immediately with value nil.
+Otherwise waits for PROGRAM to terminate
+and returns a numeric exit status or a signal description string.
+If you quit, the process is first killed with SIGINT, then with SIGKILL if
+you quit again before the process exits.
+Fstart-process
+Start a program in a subprocess.  Return the process object for it.
+Args are NAME BUFFER PROGRAM &rest PROGRAM-ARGS
+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.
+ Process output goes at end of that buffer, unless you specify
+ an output stream or filter function to handle the output.
+ BUFFER may be also nil, meaning that this process is not associated
+ with any buffer
+Third arg is program file name.  It is searched for as in the shell.
+Remaining arguments are strings to give program as arguments.
+INCODE and OUTCODE specify the coding-system objects used in input/output
+ from/to the process.
+Vnetwork-coding-system-alist
+Alist to decide a coding system to use for a network I/O operation.
+The format is ((PATTERN . VAL) ...),
+where PATTERN is a regular expression matching a network service name
+or is a port number to connect to,
+VAL is a coding system, a cons of coding systems, or a function symbol.
+If VAL is a coding system, it is used for both decoding what received
+from the network stream and encoding what sent to the network stream.
+If VAL is a cons of coding systems, the car part is used for decoding,
+and the cdr part is used for encoding.
+If VAL is a function symbol, the function must return a coding system
+or a cons of coding systems which are used as above.
+
+See also the function `find-operation-coding-system'.
+Fopen-network-stream
+Open a TCP connection for a service to a host.
+Return a process 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.
+ Process output goes at end of that buffer, unless you specify
+ an output stream or filter function to handle the output.
+ BUFFER may be also nil, meaning that this process is not associated
+ with any buffer
+Third arg is name of the host to connect to, or its IP address.
+Fourth arg SERVICE is name of the service desired, or an integer
+ specifying a port number to connect to.
+Fifth argument PROTOCOL is a network protocol.  Currently 'tcp
+ (Transmission Control Protocol) and 'udp (User Datagram Protocol) are
+ supported.  When omitted, 'tcp is assumed.
+
+Output via `process-send-string' and input via buffer or filter (see
+`set-process-filter') are stream-oriented.  That means UDP datagrams are
+not guaranteed to be sent and received in discrete packets. (But small
+datagrams around 500 bytes that are not truncated by `process-send-string'
+are usually fine.)  Note further that UDP protocol does not guard against 
+lost packets.
+Vcoding-keymap
+Keymap for Mule and Coding cystem specific commands.
+Fcoding-system-change-eol-conversion
+Return a coding system which differs from CODING-SYSTEM in eol conversion.
+The returned coding system converts end-of-line by EOL-TYPE
+but text as the same way as CODING-SYSTEM.
+EOL-TYPE should be `lf', `crlf', `cr' or nil.
+If EOL-TYPE is nil, the returned coding system detects
+how end-of-line is formatted automatically while decoding.
+
+EOL-TYPE can be specified by an symbol `unix', `dos' or `mac'.
+They means `lf', `crlf', and `cr' respectively.
+Funiversal-coding-system-argument
+Execute an I/O command using the specified coding system.
+Fset-default-coding-systems
+Set default value of various coding systems to CODING-SYSTEM.
+This sets the following coding systems:
+  o coding system of a newly created buffer
+  o default coding system for terminal output
+  o default coding system for keyboard input
+  o default coding system for subprocess I/O
+  o default coding system for converting file names.
+Fprefer-coding-system
+Add CODING-SYSTEM at the front of the priority list for automatic detection.
+This also sets the following coding systems:
+  o coding system of a newly created buffer
+  o default coding system for terminal output
+  o default coding system for keyboard input
+  o default coding system for converting file names.
+
+If CODING-SYSTEM specifies a certain type of EOL conversion, the coding
+systems set by this function will use that type of EOL conversion.
+
+This command does not change the default value of terminal coding system
+for MS-DOS terminal, because DOS terminals only support a single coding
+system, and Emacs automatically sets the default to that coding system at
+startup.
+Fset-buffer-process-coding-system
+Set coding systems for the process associated with the current buffer.
+DECODING is the coding system to be used to decode input from the process,
+ENCODING is the coding system to be used to encode output to the process.
+
+For a list of possible values of CODING-SYSTEM, use \[list-coding-systems].
+Fcharsets-in-region
+Return a list of the charsets in the region between START and END.
+BUFFER defaults to the current buffer if omitted.
+Fcharsets-in-string
+Return a list of the charsets in STRING.
+Fcharset-iso-graphic-plane
+Return the `graphic' property of CHARSET.
+See `make-charset'.
+Fcharset-iso-final-char
+Return the final byte of the ISO 2022 escape sequence designating CHARSET.
+Fcharset-chars
+Return the number of characters per dimension of CHARSET.
+Fcharset-width
+Return the number of display columns per character of CHARSET.
+This only applies to TTY mode (under X, the actual display width can
+be automatically determined).
+Fcharset-direction
+Return the display direction (0 for `l2r' or 1 for `r2l') of CHARSET.
+Only left-to-right is currently implemented.
+Fcharset-registry
+Return the registry of CHARSET.
+This is a regular expression matching the registry field of fonts
+that can display the characters in CHARSET.
+Fcharset-ccl-program
+Return the CCL program of CHARSET.
+See `make-charset'.
+Fcharset-bytes
+Useless in XEmacs, returns 1.
+Fcharset-after
+Return charset of a character in current buffer at position POS.
+If POS is nil, it defauls to the current point.
+If POS is out of range, the value is nil.
+Fdefine-charset
+Define CHARSET-ID as the identification number of CHARSET with INFO-VECTOR.
+If CHARSET-ID is nil, it is decided automatically, which means CHARSET is
+ treated as a private charset.
+INFO-VECTOR is a vector of the format:
+   [DIMENSION CHARS WIDTH DIRECTION ISO-FINAL-CHAR ISO-GRAPHIC-PLANE
+    SHORT-NAME LONG-NAME DESCRIPTION]
+The meanings of each elements is as follows:
+DIMENSION (integer) is the number of bytes to represent a character: 1 or 2.
+CHARS (integer) is the number of characters in a dimension: 94 or 96.
+WIDTH (integer) is the number of columns a character in the charset
+occupies on the screen: one of 0, 1, and 2.
+
+DIRECTION (integer) is the rendering direction of characters in the
+charset when rendering.  If 0, render from left to right, else
+render from right to left.
+
+ISO-FINAL-CHAR (character) is the final character of the
+corresponding ISO 2022 charset.
+
+ISO-GRAPHIC-PLANE (integer) is the graphic plane to be invoked
+while encoding to variants of ISO 2022 coding system, one of the
+following: 0/graphic-plane-left(GL), 1/graphic-plane-right(GR).
+
+
+SHORT-NAME (string) is the short name to refer to the charset.
+
+LONG-NAME (string) is the long name to refer to the charset.
+
+DESCRIPTION (string) is the description string of the charset.
+Fcoding-system-force-on-output
+Return the 'force-on-output property of CODING-SYSTEM for the specified REGISTER.
+Fcoding-system-short
+Return the 'short property of CODING-SYSTEM.
+Fcoding-system-no-ascii-eol
+Return the 'no-ascii-eol property of CODING-SYSTEM.
+Fcoding-system-no-ascii-cntl
+Return the 'no-ascii-cntl property of CODING-SYSTEM.
+Fcoding-system-seven
+Return the 'seven property of CODING-SYSTEM.
+Fcoding-system-lock-shift
+Return the 'lock-shift property of CODING-SYSTEM.
+Fcoding-system-charset
+Return the charset initially designated to REGISTER in CODING-SYSTEM.
+The allowable range of REGISTER is 0 through 3.
+Fcoding-system-no-iso6429
+Return the 'no-iso6429 property of CODING-SYSTEM.
+Fcoding-system-ccl-encode
+Return the CCL 'encode property of CODING-SYSTEM.
+Fcoding-system-ccl-decode
+Return the CCL 'decode property of CODING-SYSTEM.
+Fhelp-with-tutorial
+Select the XEmacs learn-by-doing tutorial.
+If there is a tutorial version written in the language
+of the selected language environment, that version is used.
+If there's no tutorial in that language, `TUTORIAL' is selected.
+With arg, you are asked to select which language.
+Fdefine-category
+Make a new category whose designator is DESIGNATOR.
+DESIGNATOR should be a visible letter of ' ' thru '~'.
+STRING is a doc string for the category.
+Letters of 'a' thru 'z' are already used or kept for the system.
+Fundefine-category
+Undefine DESIGNATOR as a designator for a category.
+Fdefined-category-p
+Return non-nil if DESIGNATOR is a designator for a defined category.
+Fdefined-category-list
+Return a list of the currently defined categories.
+Categories are given by their designators.
+Fundefined-category-designator
+Return an undefined category designator, or nil if there are none.
+Fcategory-doc-string
+Return the doc-string for the category denoted by DESIGNATOR.
+Fmodify-category-entry
+Add a category to the categories associated with CHAR-RANGE.
+CHAR-RANGE is a single character or a range of characters,
+ as per `put-char-table'.
+The category is given by a designator character.
+The changes are made in CATEGORY-TABLE, which defaults to the current
+ buffer's category table.
+If optional fourth argument RESET is non-nil, previous categories associated
+ with CHAR-RANGE are removed before adding the specified category.
+Fchar-category-list
+Return a list of the categories that CHARACTER is in.
+CATEGORY-TABLE defaults to the current buffer's category table.
+The categories are given by their designators.
+Fdescribe-category
+Describe the category specifications in the category table.
+The descriptions are inserted in a buffer, which is then displayed.
+Vpredefined-category-list
+List of predefined categories.
+Each element is a list of a charset, a designator, and maybe a doc string.
+Vword-across-newline
+Regular expression of such characters which can be a word across newline.
+Vccl-command-table
+Vector of CCL commands (symbols).
+Vccl-code-table
+Vector of CCL compiled codes (symbols).
+Vccl-extended-code-table
+Vector of CCL extended compiled codes (symbols).
+Vccl-register-table
+Vector of CCL registers (symbols).
+Vccl-arith-table
+Vector of CCL arithmetic/logical operators (symbols).
+Vccl-assign-arith-table
+Vector of CCL assignment operators (symbols).
+Vccl-program-vector
+Working vector of CCL codes produced by CCL compiler.
+Vccl-current-ic
+The current index for `ccl-program-vector'.
+Fccl-compile
+Return a compiled code of CCL-PROGRAM as a vector of integer.
+Fccl-dump
+Disassemble compiled CCL-CODE.
+Fdeclare-ccl-program
+Declare NAME as a name of CCL program.
+
+This macro exists for backward compatibility.  In the old version of
+Emacs, to compile a CCL program which calls another CCL program not
+yet defined, it must be declared as a CCL program in advance.  But,
+now CCL program names are resolved not at compile time but before
+execution.
+
+Optional arg VECTOR is a compiled CCL code of the CCL program.
+Fdefine-ccl-program
+Set NAME the compiled code of CCL-PROGRAM.
+
+CCL-PROGRAM has this form:
+	(BUFFER_MAGNIFICATION
+	 CCL_MAIN_CODE
+	 [ CCL_EOF_CODE ])
+
+BUFFER_MAGNIFICATION is an integer value specifying the approximate
+output buffer magnification size compared with the bytes of input data
+text.  If the value is zero, the CCL program can't execute `read' and
+`write' commands.
+
+CCL_MAIN_CODE and CCL_EOF_CODE are CCL program codes.  CCL_MAIN_CODE
+executed at first.  If there's no more input data when `read' command
+is executed in CCL_MAIN_CODE, CCL_EOF_CODE is executed.  If
+CCL_MAIN_CODE is terminated, CCL_EOF_CODE is not executed.
+
+Here's the syntax of CCL program code in BNF notation.  The lines
+starting by two semicolons (and optional leading spaces) describe the
+semantics.
+
+CCL_MAIN_CODE := CCL_BLOCK
+
+CCL_EOF_CODE := CCL_BLOCK
+
+CCL_BLOCK := STATEMENT | (STATEMENT [STATEMENT ...])
+
+STATEMENT :=
+	SET | IF | BRANCH | LOOP | REPEAT | BREAK | READ | WRITE | CALL
+	| TRANSLATE | END
+
+SET :=	(REG = EXPRESSION)
+	| (REG ASSIGNMENT_OPERATOR EXPRESSION)
+	;; The following form is the same as (r0 = integer).
+	| integer
+
+EXPRESSION := ARG | (EXPRESSION OPERATOR ARG)
+
+;; Evaluate EXPRESSION.  If the result is nonzeor, execute
+;; CCL_BLOCK_0.  Otherwise, execute CCL_BLOCK_1.
+IF :=	(if EXPRESSION CCL_BLOCK_0 CCL_BLOCK_1)
+
+;; Evaluate EXPRESSION.  Provided that the result is N, execute
+;; CCL_BLOCK_N.
+BRANCH := (branch EXPRESSION CCL_BLOCK_0 [CCL_BLOCK_1 ...])
+
+;; Execute STATEMENTs until (break) or (end) is executed.
+LOOP := (loop STATEMENT [STATEMENT ...])
+
+;; Terminate the most inner loop.
+BREAK := (break)
+
+REPEAT :=
+	;; Jump to the head of the most inner loop.
+	(repeat)
+	;; Same as: ((write [REG | integer | string])
+	;;	     (repeat))
+	| (write-repeat [REG | integer | string])
+	;; Same as: ((write REG [ARRAY])
+	;;	     (read REG)
+	;;	     (repeat))
+	| (write-read-repeat REG [ARRAY])
+	;; Same as: ((write integer)
+	;;	     (read REG)
+	;;	     (repeat))
+	| (write-read-repeat REG integer)
+
+READ := ;; Set REG_0 to a byte read from the input text, set REG_1
+	;; to the next byte read, and so on.
+	(read REG_0 [REG_1 ...])
+	;; Same as: ((read REG)
+	;;	     (if (REG OPERATOR ARG) CCL_BLOCK_0 CCL_BLOCK_1))
+	| (read-if (REG OPERATOR ARG) CCL_BLOCK_0 CCL_BLOCK_1)
+	;; Same as: ((read REG)
+	;;	     (branch REG CCL_BLOCK_0 [CCL_BLOCK_1 ...]))
+	| (read-branch REG CCL_BLOCK_0 [CCL_BLOCK_1 ...])
+	;; Read a character from the input text while parsing
+	;; multibyte representation, set REG_0 to the charset ID of
+	;; the character, set REG_1 to the code point of the
+	;; character.  If the dimension of charset is two, set REG_1
+	;; to ((CODE0 << 8) | CODE1), where CODE0 is the first code
+	;; point and CODE1 is the second code point.
+	| (read-multibyte-character REG_0 REG_1)
+
+WRITE :=
+	;; Write REG_0, REG_1, ... to the output buffer.  If REG_N is
+	;; a multibyte character, write the corresponding multibyte
+	;; representation.
+	(write REG_0 [REG_1 ...])
+	;; Same as: ((r7 = EXPRESSION)
+	;;	     (write r7))
+	| (write EXPRESSION)
+	;; Write the value of `integer' to the output buffer.  If it
+	;; is a multibyte character, write the corresponding multibyte
+	;; representation.
+	| (write integer)
+	;; Write the byte sequence of `string' as is to the output
+	;; buffer.  It is encoded by binary coding system, thus,
+        ;; by this operation, you cannot write multibyte string
+        ;; as it is.
+	| (write string)
+	;; Same as: (write string)
+	| string
+	;; Provided that the value of REG is N, write Nth element of
+	;; ARRAY to the output buffer.  If it is a multibyte
+	;; character, write the corresponding multibyte
+	;; representation.
+	| (write REG ARRAY)
+	;; Write a multibyte representation of a character whose
+	;; charset ID is REG_0 and code point is REG_1.  If the
+	;; dimension of the charset is two, REG_1 should be ((CODE0 <<
+	;; 8) | CODE1), where CODE0 is the first code point and CODE1
+	;; is the second code point of the character.
+	| (write-multibyte-character REG_0 REG_1)
+
+;; Call CCL program whose name is ccl-program-name.
+CALL := (call ccl-program-name)
+
+;; Terminate the CCL program.
+END := (end)
+
+;; CCL registers that can contain any integer value.  As r7 is also
+;; used by CCL interpreter, its value is changed unexpectedly.
+REG := r0 | r1 | r2 | r3 | r4 | r5 | r6 | r7
+
+ARG := REG | integer
+
+OPERATOR :=
+	;; Normal arithmethic operators (same meaning as C code).
+	+ | - | * | / | %
+
+	;; Bitwize operators (same meaning as C code)
+	| & | `|' | ^
+
+	;; Shifting operators (same meaning as C code)
+	| << | >>
+
+	;; (REG = ARG_0 <8 ARG_1) means:
+	;;	(REG = ((ARG_0 << 8) | ARG_1))
+	| <8
+
+	;; (REG = ARG_0 >8 ARG_1) means:
+	;;	((REG = (ARG_0 >> 8))
+	;;	 (r7 = (ARG_0 & 255)))
+	| >8
+
+	;; (REG = ARG_0 // ARG_1) means:
+	;;	((REG = (ARG_0 / ARG_1))
+	;;	 (r7 = (ARG_0 % ARG_1)))
+	| //
+
+	;; Normal comparing operators (same meaning as C code)
+	| < | > | == | <= | >= | !=
+
+	;; If ARG_0 and ARG_1 are higher and lower byte of Shift-JIS
+	;; code, and CHAR is the corresponding JISX0208 character,
+	;; (REG = ARG_0 de-sjis ARG_1) means:
+	;;	((REG = CODE0)
+	;;	 (r7 = CODE1))
+	;; where CODE0 is the first code point of CHAR, CODE1 is the
+	;; second code point of CHAR.
+	| de-sjis
+
+	;; If ARG_0 and ARG_1 are the first and second code point of
+	;; JISX0208 character CHAR, and SJIS is the correponding
+	;; Shift-JIS code,
+	;; (REG = ARG_0 en-sjis ARG_1) means:
+	;;	((REG = HIGH)
+	;;	 (r7 = LOW))
+	;; where HIGH is the higher byte of SJIS, LOW is the lower
+	;; byte of SJIS.
+	| en-sjis
+
+ASSIGNMENT_OPERATOR :=
+	;; Same meaning as C code
+	+= | -= | *= | /= | %= | &= | `|=' | ^= | <<= | >>=
+
+	;; (REG <8= ARG) is the same as:
+	;;	((REG <<= 8)
+	;;	 (REG |= ARG))
+	| <8= 
+
+	;; (REG >8= ARG) is the same as:
+	;;	((r7 = (REG & 255))
+	;;	 (REG >>= 8))
+
+	;; (REG //= ARG) is the same as:
+	;;	((r7 = (REG % ARG))
+	;;	 (REG /= ARG))
+	| //=
+
+ARRAY := `[' integer ... `]'
+
+
+TRANSLATE :=
+	(translate-character REG(table) REG(charset) REG(codepoint))
+	| (translate-character SYMBOL REG(charset) REG(codepoint))
+MAP :=
+     (iterate-multiple-map REG REG MAP-IDs)
+     | (map-multiple REG REG (MAP-SET))
+     | (map-single REG REG MAP-ID)
+MAP-IDs := MAP-ID ...
+MAP-SET := MAP-IDs | (MAP-IDs) MAP-SET
+MAP-ID := integer
+
+Fcheck-ccl-program
+Check validity of CCL-PROGRAM.
+If CCL-PROGRAM is a symbol denoting a CCL program, return
+CCL-PROGRAM, else return nil.
+If CCL-PROGRAM is a vector and optional arg NAME (symbol) is supplied,
+register CCL-PROGRAM by name NAME, and return NAME.
+Fccl-execute-with-args
+Execute CCL-PROGRAM with registers initialized by the remaining args.
+The return value is a vector of resulting CCL registers.
+
+See the documentation of `define-ccl-program' for the detail of CCL program.
+Vself-insert-after-hook
+Hook to run when extended self insertion command exits.  Should take
+two arguments START and END corresponding to character position.
+Fstring-width
+Return number of columns STRING occupies when displayed.
+Uses the charset-columns attribute of the characters in STRING,
+which may not accurately represent the actual display width when
+using a window system.
+Fdelete-text-in-column
+Delete the text between column FROM and TO (exclusive) of the current line.
+Nil of FORM or TO means the current column.
+
+If there's a character across the borders, the character is replaced
+with the same width of spaces before deleting.
+Fmc-normal-form-string
+�$(BJ8;zNs STR �$(B$N4A;zI8=`7AJ8;zNs$rJV$9!%
+Fstring-memq
+Returns non-nil if STR is an element of LIST.  Comparison done with string=.
+The value is actually the tail of LIST whose car is STR.
+If each element of LIST is not a string, it is converted to string
+ before comparison.
+Fcancel-undo-boundary
+Cancel undo boundary.
+Fchar-bytes
+Return number of bytes a CHARACTER occupies in a string or buffer.
+It always returns 1 in XEmacs.  It is for compatibility with MULE 2.3.
+Fchar-width
+Return number of columns a CHARACTER occupies when displayed.
+Ffind-non-ascii-charset-string
+Return a list of charsets in the STRING except ascii.
+It might be available for compatibility with Mule 2.3,
+because its `find-charset-string' ignores ASCII charset.
+Ffind-non-ascii-charset-region
+Return a list of charsets except ascii in the region between START and END.
+It might be available for compatibility with Mule 2.3,
+because its `find-charset-string' ignores ASCII charset.
+Fdefine-egg-environment
+Define a new language environment for egg, named by ENV-SYM.
+DOC-STRING should be a string describing the environment.
+ENABLE-FUNCTION should be a function of no arguments that will be called
+when the language environment is made current.
+Vkinsoku-ascii
+Do kinsoku-processing for ASCII.
+Vkinsoku-jis
+Do kinsoku-processing for JISX0208.
+Vkinsoku-gb
+Do kinsoku-processing for GB2312.
+Vkinsoku-big5
+Do kinsoku-processing for Big5..
+Vkinsoku-ascii-bol
+BOL kinsoku for ASCII.
+Vkinsoku-ascii-eol
+EOL kinsoku for ASCII.
+Vkinsoku-jis-bol
+BOL kinsoku for JISX0208.
+Vkinsoku-jis-eol
+EOL kinsoku for JISX0208.
+Vkinsoku-gb-bol
+BOL kinsoku for GB2312.
+Vkinsoku-gb-eol
+EOL kinsoku for GB2312.
+Vkinsoku-big5-bol
+BOL kinsoku for BIG5.
+Vkinsoku-big5-eol
+EOL kinsoku for BIG5.
+Fkinsoku-bol-p
+Check if point would break forbidden beginning-of-line rules
+Uses category 's' to check.
+point�$(B$G2~9T$9$k$H9TF,6XB'$K?($l$k$+$I$&$+$r$+$($9!#
+�$(B9TF,6XB'J8;z$O's'�$(B$Ncategory�$(B$G;XDj$9$k!#
+Fkinsoku-eol-p
+Check if point would break forbidden end-of-line rules
+Uses category 'e' to check.
+point�$(B$G2~9T$9$k$H9TKv6XB'$K?($l$k$+$I$&$+$r$+$($9!#
+�$(B9TKv6XB'J8;z$O's'�$(B$Ncategory�$(B$G;XDj$9$k!#
+Vkinsoku-extend-limit
+Defines how many characters kinsoku will search forward before giving up.
+A value of nil equates to infinity.
+�$(B6XB'=hM}$G9T$r?-$P$7$FNI$$H>3QJ8;z?t$r;XDj$9$k!#
+�$(BHsIi@0?t0J30$N>l9g$OL58BBg$r0UL#$9$k!#
+Fkinsoku-process
+Move to a point that will not break forbidden line break rules.
+�$(B6XB'$K?($l$J$$E@$X0F0$9$k!#
+point�$(B$,9TF,6XB'$K?($l$k>l9g$O9T$r?-$P$7$F!
+Fkinsoku-process-extend
+Move point forward to a permissable for line-breaking.
+�$(B9T$r?-$P$7$F6XB'$K?($l$J$$E@$X0F0$9$k!#
+Fkinsoku-process-shrink
+Move point backward to a point permissable for line-breaking.
+�$(B9T$r=L$a$F6XB'$K?($l$J$$E@$X0F0$9$k!#
+Fx-use-halfwidth-roman-font
+Maybe set charset registry of the 'ascii charset to ROMAN-REGISTRY.
+
+Do this only if:
+ - the current display is an X device
+ - the displayed width of FULLWIDTH-CHARSET is twice the displayed
+   width of the 'ascii charset, but only when using ROMAN-REGISTRY.
+
+Traditionally, Asian characters have been displayed so that they
+occupy exactly twice the screen space of ASCII (`halfwidth')
+characters.  On many systems, e.g. Sun CDE systems, this can only be
+achieved by using a national variant roman font to display ASCII.
+Finit-mule-x-win
+Initialize X Windows for MULE at startup.  Don't call this.
+Finit-mule-tty-win
+Initialize TTY for MULE at startup. Don't call this.
+Fcoding-system-change-eol-conversion
+Return a coding system which differs from CODING-SYSTEM in eol conversion.
+The returned coding system converts end-of-line by EOL-TYPE
+but text as the same way as CODING-SYSTEM.
+EOL-TYPE should be `lf', `crlf', `cr' or nil.
+If EOL-TYPE is nil, the returned coding system detects
+how end-of-line is formatted automatically while decoding.
+
+EOL-TYPE can be specified by an symbol `unix', `dos' or `mac'.
+They means `lf', `crlf', and `cr' respectively.
+Fview-hello-file
+Display the HELLO file which list up many languages and characters.
+Vlanguage-info-alist
+Alist of language environment definitions.
+Each element looks like:
+	(LANGUAGE-NAME . ((KEY . INFO) ...))
+where LANGUAGE-NAME is a string, the name of the language environment,
+KEY is a symbol denoting the kind of information, and
+INFO is the data associated with KEY.
+Meaningful values for KEY include
+
+  documentation      value is documentation of what this language environment
+			is meant for, and how to use it.
+  charset	     value is a list of the character sets used by this
+			language environment.
+  sample-text	     value is one line of text,
+			written using those character sets,
+			appropriate for this language environment.
+  setup-function     value is a function to call to switch to this
+			language environment.
+  exit-function      value is a function to call to leave this
+		        language environment.
+  coding-system      value is a list of coding systems that are good
+			for saving text written in this language environment.
+			This list serves as suggestions to the user;
+			in effect, as a kind of documentation.
+  coding-priority    value is a list of coding systems for this language
+			environment, in order of decreasing priority.
+			This is used to set up the coding system priority
+			list when you switch to this language environment.
+  input-method       value is a default input method for this language
+			environment.
+  features           value is a list of features requested in this
+			language environment.
+  tutorial           value is a tutorial file name written in the language.
+Fget-language-info
+Return information listed under KEY for language environment LANG-ENV.
+KEY is a symbol denoting the kind of information.
+For a list of useful values for KEY and their meanings,
+see `language-info-alist'.
+Fset-language-info
+Modify part of the definition of language environment LANG-ENV.
+Specifically, this stores the information INFO under KEY
+in the definition of this language environment.
+KEY is a symbol denoting the kind of information.
+INFO is the value for that information.
+
+For a list of useful values for KEY and their meanings,
+see `language-info-alist'.
+Fset-language-info-alist
+Store ALIST as the definition of language environment LANG-ENV.
+ALIST is an alist of KEY and INFO values.  See the documentation of
+`set-language-info' for the meanings of KEY and INFO.
+Fread-language-name
+Read a language environment name which has information for KEY.
+If KEY is nil, read any language environment.
+Prompt with PROMPT.  DEFAULT is the default choice of language environment.
+This returns a language environment name as a string.
+Vleim-list-file-name
+Name of LEIM list file.
+This file contains a list of libraries of Emacs input methods (LEIM)
+in the format of Lisp expression for registering each input method.
+Emacs loads this file at startup time.
+Vleim-list-header
+Header to be inserted in LEIM list file.
+Vleim-list-entry-regexp
+Regexp matching head of each entry in LEIM list file.
+See also the variable `leim-list-header'
+Vupdate-leim-list-functions
+List of functions to call to update LEIM list file.
+Each function is called with one arg, LEIM directory name.
+Fupdate-leim-list-file
+Update LEIM list file in directories DIRS.
+Vcurrent-input-method
+The current input method for multilingual text.
+If nil, that means no input method is activated now.
+Vcurrent-input-method-title
+Title string of the current input method shown in mode line.
+Vinput-method-history
+History list for some commands that read input methods.
+Vinactivate-current-input-method-function
+Function to call for inactivating the current input method.
+Every input method should set this to an appropriate value when activated.
+This function is called with no argument.
+
+This function should never change the value of `current-input-method'.
+It is set to nil by the function `inactivate-input-method'.
+Vdescribe-current-input-method-function
+Function to call for describing the current input method.
+This function is called with no argument.
+Vinput-method-alist
+Alist of input method names vs how to use them.
+Each element has the form:
+   (INPUT-METHOD LANGUAGE-ENV ACTIVATE-FUNC TITLE DESCRIPTION ARGS...)
+See the function `register-input-method' for the meanings of the elements.
+Fregister-input-method
+Register INPUT-METHOD as an input method for language environment ENV.
+INPUT-METHOD and LANG-ENV are symbols or strings.
+
+The remaining arguments are:
+	ACTIVATE-FUNC, TITLE, DESCRIPTION, and ARGS...
+ACTIVATE-FUNC is a function to call to activate this method.
+TITLE is a string to show in the mode line when this method is active.
+DESCRIPTION is a string describing this method and what it is good for.
+The ARGS, if any, are passed as arguments to ACTIVATE-FUNC.
+All told, the arguments to ACTIVATE-FUNC are INPUT-METHOD and the ARGS.
+
+This function is mainly used in the file "leim-list.el" which is
+created at building time of emacs, registering all quail input methods
+contained in the emacs distribution.
+
+In case you want to register a new quail input method by yourself, be
+careful to use the same input method title as given in the third
+parameter of `quail-define-package' (if the values are different, the
+string specified in this function takes precedence).
+
+The commands `describe-input-method' and `list-input-methods' need
+this duplicated values to show some information about input methods
+without loading the affected quail packages.
+Fread-input-method-name
+Read a name of input method from a minibuffer prompting with PROMPT.
+If DEFAULT is non-nil, use that as the default,
+  and substitute it into PROMPT at the first `%s'.
+If INHIBIT-NULL is non-nil, null input signals an error.
+
+The return value is a string.
+Factivate-input-method
+Switch to input method INPUT-METHOD for the current buffer.
+If some other input method is already active, turn it off first.
+If INPUT-METHOD is nil, deactivate any current input method.
+Finactivate-input-method
+Turn off the current input method.
+Fset-input-method
+Select and activate input method INPUT-METHOD for the current buffer.
+This also sets the default input method to the one you specify.
+Ftoggle-input-method
+Turn on or off a multilingual text input method for the current buffer.
+
+With no prefix argument, if an input method is currently activated,
+turn it off.  Otherwise, activate an input method -- the one most
+recently used, or the one specified in `default-input-method', or
+the one read from the minibuffer.
+
+With a prefix argument, read an input method from the minibuffer and
+turn it on.
+
+The default is to use the most recent input method specified
+(not including the currently active input method, if any).
+Fdescribe-input-method
+Describe input method INPUT-METHOD.
+Fdescribe-current-input-method
+Describe the input method currently in use.
+Fread-multilingual-string
+Read a multilingual string from minibuffer, prompting with string PROMPT.
+The input method selected last time is activated in minibuffer.
+If optional second arg INITIAL-INPUT is non-nil, insert it in the minibuffer
+initially.
+Optional 3rd argument INPUT-METHOD specifies the input method
+to be activated instead of the one selected last time.  It is a symbol
+or a string.
+Vinput-method-activate-hook
+Normal hook run just after an input method is activated.
+
+The variable `current-input-method' keeps the input method name
+just activated.
+Vinput-method-inactivate-hook
+Normal hook run just after an input method is inactivated.
+
+The variable `current-input-method' still keeps the input method name
+just inactivated.
+Vinput-method-after-insert-chunk-hook
+Normal hook run just after an input method insert some chunk of text.
+Vinput-method-exit-on-first-char
+This flag controls a timing when an input method returns.
+Usually, the input method does not return while there's a possibility
+that it may find a different translation if a user types another key.
+But, it this flag is non-nil, the input method returns as soon as
+the current key sequence gets long enough to have some valid translation.
+Vinput-method-use-echo-area
+This flag controls how an input method shows an intermediate key sequence.
+Usually, the input method inserts the intermediate key sequence,
+or candidate translations corresponding to the sequence,
+at point in the current buffer.
+But, if this flag is non-nil, it displays them in echo area instead.
+Vinput-method-exit-on-invalid-key
+This flag controls the behavior of an input method on invalid key input.
+Usually, when a user types a key which doesn't start any character
+handled by the input method, the key is handled by turning off the
+input method temporarily.  After that key, the input method is re-enabled.
+But, if this flag is non-nil, the input method is never back on.
+Vset-language-environment-hook
+Normal hook run after some language environment is set.
+
+When you set some hook function here, that effect usually should not
+be inherited to another language environment.  So, you had better set
+another function in `exit-language-environment-hook' (which see) to
+cancel the effect.
+Vexit-language-environment-hook
+Normal hook run after exiting from some language environment.
+When this hook is run, the variable `current-language-environment'
+is still bound to the language environment being exited.
+
+This hook is mainly used for canceling the effect of
+`set-language-environment-hook' (which-see).
+Fsetup-specified-language-environment
+Switch to a specified language environment.
+Freset-language-environment
+Reset multilingual environment of Emacs to the default status.
+
+The default status is as follows:
+
+  The default value of `buffer-file-coding-system' is nil.
+  The default coding system for process I/O is nil.
+  The default value for the command `set-terminal-coding-system' is nil.
+  The default value for the command `set-keyboard-coding-system' is nil.
+
+  The order of priorities of coding categories and the coding system
+  bound to each category are as follows
+	coding category		coding system
+	--------------------------------------------------
+	iso-7			iso-2022-7bit
+	no-conversion		raw-text
+	utf-8			utf-8
+	iso-8-1			iso-8859-1
+	iso-8-2			ctext (iso-8859-1 alias)
+	iso-8-designate		ctext (iso-8859-1 alias)
+	iso-lock-shift		iso-2022-lock
+	shift-jis		shift_jis
+	big5			big5
+	ucs-4			iso-10646-ucs-4
+
+Fset-language-environment
+Set up multi-lingual environment for using LANGUAGE-NAME.
+This sets the coding system priority and the default input method
+and sometimes other things.  LANGUAGE-NAME should be a string
+which is the name of a language environment.  For example, "Latin-1"
+specifies the character set for the major languages of Western Europe.
+Fset-language-environment-coding-systems
+Do various coding system setups for language environment LANGUAGE-NAME.
+
+The optional arg EOL-TYPE specifies the eol-type of the default value
+of buffer-file-coding-system set by this function.
+
+Note that `coding-priority-list' is not reset first; thus changing language
+environment allows recognition of coding systems from previously set language
+environments.  (This will not work if the desired coding systems are from the
+same category.  E.g., starting with a Hebrew language environment, ISO 8859-8
+will be recognized.  If you shift to Russian, ISO 8859-8 will be shadowed by
+ISO 8859-5, and cannot be automatically recognized without resetting the
+language environment to Hebrew.  However, if you shift from Japanese to
+Russian, ISO-2022-JP will continue to be automatically recognized, since
+ISO-8859-5 and ISO-2022-JP are different coding categories.)
+Fdescribe-specified-language-support
+Describe how Emacs supports the specified language environment.
+Fdescribe-language-environment
+Describe how Emacs supports language environment LANGUAGE-NAME.
+Vchar-code-property-table
+Char-table containing a property list of each character code.
+
+See also the documentation of `get-char-code-property' and
+`put-char-code-property'
+Fget-char-code-property
+Return the value of CHAR's PROPNAME property in `char-code-property-table'.
+Fput-char-code-property
+Store CHAR's PROPNAME property with VALUE in `char-code-property-table'.
+It can be retrieved with `(get-char-code-property CHAR PROPNAME)'.
+Vcyrillic-koi8-r-decode-table
+Cyrillic KOI8-R decoding table.
+Vcyrillic-koi8-r-encode-table
+Cyrillic KOI8-R encoding table.
+Vcyrillic-windows-1251-decode-table
+Cyrillic Windows-1251 decoding table.
+Vcyrillic-windows-1251-encode-table
+Cyrillic Windows-1251 encoding table.
+Vcyrillic-alternativnyj-decode-table
+Cyrillic ALTERNATIVNYJ decoding table.
+Vcyrillic-alternativnyj-encode-table
+Cyrillic ALTERNATIVNYJ encoding table.
+Fsetup-english-environment
+Reset multilingual environment of Emacs to the default status.
+See the function `reset-language-environment' for more detail.
+Fsetup-latin1-environment
+Set up multilingual environment (MULE) for European Latin-1 users.
+Fsetup-latin2-environment
+Set up multilingual environment (MULE) for European Latin-2 users.
+Fsetup-romanian-environment
+Setup multilingual environment (MULE) for Romanian.
+Fsetup-czech-environment
+Set up multilingual environment (MULE) for czech users.
+Fsetup-latin3-environment
+Set up multilingual environment (MULE) for European Latin-3 users.
+Fsetup-latin4-environment
+Set up multilingual environment (MULE) for European Latin-4 users.
+Fsetup-latin5-environment
+Set up multilingual environment (MULE) for European Latin-5 users.
+Fsetup-german-environment
+Set up multilingual environment (MULE) for German users.
+Fsetup-slovenian-environment
+Setup multilingual environment (MULE) for Slovenian.
+Fsetup-greek-environment
+Setup multilingual environment (MULE) for Greek.
+Fsetup-hebrew-environment
+Setup multilingual environment (MULE) for Hebrew.
+Note: right-to-left writing is not yet supported.
+Vjapanese-word-regexp
+Regular expression used to match a Japanese word.
+Vspace-insertable
+Regexp for finding points that can have spaces inserted into them for justification
+Fsetup-ipa-environment
+Setup multilingual environment (MULE) for IPA.
+Vviet-viscii-decode-table
+Vietnamese VISCII decoding table.
+Vviet-viscii-encode-table
+Vietnamese VISCII encoding table.
+Cons of tables for encoding lower-case chars and upper-case characters.
+Both tables are indexed by the position code of Vietnamese characters.
+Vviet-vscii-decode-table
+Vietnamese VSCII decoding table.
+Vviet-vscii-encode-table
+Vietnamese VSCII encoding table.
+Cons of tables for encoding lower-case chars and upper-case characters.
+Both tables are indexed by the position code of Vietnamese characters.
+Vauto-language-alist
+Alist of LANG patterns vs. corresponding language environment.
+Each element looks like (REGEXP . LANGUAGE-ENVIRONMENT).
+It the value of the environment variable LANG matches the regexp REGEXP,
+then `set-language-environment' is called with LANGUAGE-ENVIRONMENT.
+Finit-mule
+Initialize MULE environment at startup.  Don't call this.
+Fx-make-font-bold
+Given an X font specification, this attempts to make a `bold' font.
+If it fails, it returns nil.
+Fx-make-font-unbold
+Given an X font specification, this attempts to make a non-bold font.
+If it fails, it returns nil.
+Fx-make-font-italic
+Given an X font specification, this attempts to make an `italic' font.
+If it fails, it returns nil.
+Fx-make-font-unitalic
+Given an X font specification, this attempts to make a non-italic font.
+If it fails, it returns nil.
+Fx-make-font-bold-italic
+Given an X font specification, this attempts to make a `bold-italic' font.
+If it fails, it returns nil.
+Fx-font-size
+Return the nominal size of the given font.
+This is done by parsing its name, so it's likely to lose.
+X fonts can be specified (by the user) in either pixels or 10ths of points,
+ and this returns the first one it finds, so you have to decide which units
+ the returned value is measured in yourself...
+Fx-find-smaller-font
+Load a new, slightly smaller version of the given font (or font name).
+Returns the font if it succeeds, nil otherwise.
+If scalable fonts are available, this returns a font which is 1 point smaller.
+Otherwise, it returns the next smaller version of this font that is defined.
+Fx-find-larger-font
+Load a new, slightly larger version of the given font (or font name).
+Returns the font if it succeeds, nil otherwise.
+If scalable fonts are available, this returns a font which is 1 point larger.
+Otherwise, it returns the next larger version of this font that is defined.
+Viso8859/1-code-to-x-keysym-table
+Maps iso8859/1 to an X keysym name which corresponds to it.
+There may be more than one X name for this keycode; this returns the first one.
+Note that this is X specific; one should avoid using this table whenever 
+possible, in the interest of portability.
+Fx-mouse-kill
+Kill the text between the point and mouse and copy it to the clipboard and
+to the cut buffer.
+Fx-set-point-and-insert-selection
+Set point where clicked and insert the primary selection or the cut buffer.
+Fx-set-point-and-move-selection
+Set point where clicked and move the selected text to that location.
+Fmouse-track-and-copy-to-cutbuffer
+Make a selection like `mouse-track', but also copy it to the cutbuffer.
+Fx-init-pointer-shape
+Initialize the mouse-pointers of DEVICE from the X resource database.
+Fx-get-secondary-selection
+Return text selected from some X window.
+Fx-own-secondary-selection
+Make a secondary X Selection of the given argument.  The argument may be a
+string or a cons of two markers (in which case the selection is considered to
+be the text between those markers).
+Fx-notice-selection-requests
+for possible use as the value of `x-sent-selection-hooks'.
+Fx-notice-selection-failures
+for possible use as the value of `x-sent-selection-hooks'.
+Fx-get-cutbuffer
+Return the value of one of the 8 X server cut buffers.
+Optional arg WHICH-ONE should be a number from 0 to 7, defaulting to 0.
+Cut buffers are considered obsolete; you should use selections instead.
+This function does nothing if cut buffer support was not compiled in.
+Fx-store-cutbuffer
+Store STRING into the X server's primary cut buffer.
+If optional arg PUSH is non-nil, also rotate the cut buffers: this
+means the previous value of the primary cut buffer moves to the second
+cut buffer, and the second to the third, and so on (there are 8 buffers.)
+Cut buffers are considered obsolete; you should use selections instead.
+This function does nothing if cut buffer support was not compiled in.
+Fx-bogosity-check-resource
+Check for a bogus resource specification.
+Fx-init-specifier-from-resources
+Initialize a specifier from the resource database.
+LOCALE specifies the locale that is to be initialized and should be
+a frame, a device, or 'global.  TYPE is the type of the resource and
+should be one of 'string, 'boolean, 'integer, or 'natnum.  The
+remaining args should be conses of names and classes of resources
+to be examined.  The first resource with a value specified becomes
+the spec for SPECIFIER in LOCALE. (However, if SPECIFIER already
+has a spec in LOCALE, nothing is done.) Finally, if LOCALE is 'global,
+a check is done for bogus resource specifications.
+Fow-find
+Search forward the next occurrence of the text of the selection.
+Fow-find-backward
+Search backward for the previous occurrence of the text of the selection.
+Fx-initialize-compose
+Enable compose key and dead key processing.
+Fx-initialize-keyboard
+Perform X-Server-specific initializations.  Don't call this.
+Finit-pre-x-win
+Initialize X Windows at startup (pre).  Don't call this.
+Finit-x-win
+Initialize X Windows at startup.  Don't call this.
+Finit-post-x-win
+Initialize X Windows at startup (post).  Don't call this.
+Fmake-frame-on-display
+Create a frame on the X display named DISPLAY.
+DISPLAY should be a standard display string such as "unix:0",
+or nil for the display specified on the command line or in the
+DISPLAY environment variable.
+
+PROPS should be a plist of properties, as in the call to `make-frame'.
+
+This function opens a connection to the display or reuses an existing
+connection.
+
+This function is a trivial wrapper around `make-frame-on-device'.
+Finit-pre-tty-win
+Initialize TTY at startup (pre).  Don't call this.
+Finit-post-tty-win
+Initialize TTY at console creation time (post).  Don't call this.
+Finit-tty-win
+Initialize TTY at startup.  Don't call this.
+Fmake-frame-on-tty
+Create a frame on the TTY connection named TTY.
+TTY should be a TTY device name such as "/dev/ttyp3" (as returned by
+the `tty' command in that TTY), or nil for the standard input/output
+of the running XEmacs process.
+
+PROPS should be a plist of properties, as in the call to `make-frame'.
+
+This function opens a connection to the TTY or reuses an existing
+connection.
+
+This function is a trivial wrapper around `make-frame-on-device'.
+Ffont-lock-set-defaults
+Set fontification defaults appropriately for this mode.
+Sets `font-lock-keywords', `font-lock-keywords-only', `font-lock-syntax-table',
+`font-lock-beginning-of-syntax-function' and
+`font-lock-keywords-case-fold-search'.
+
+If `font-lock-defaults' is currently set, it is used.  Otherwise, the
+symbol naming the major mode is examined for a `font-lock-defaults'
+property.  If that is not present, but a variable `foo-mode-font-lock-keywords'
+is, the value of that variable is used as the default for
+`font-lock-keywords'.  Various other backward-compatible behaviors also
+exist -- if you're curious, look at the source.
+
+The value of `font-lock-maximum-decoration' is used to determine which
+set of keywords applies, if more than one exists.
+
+This will also put the buffer into Font Lock mode if any keywords exist
+and if auto-fontification is called for, as determined by
+`font-lock-auto-fontify', `font-lock-mode-enable-list', and
+`font-lock-mode-disable-list'.
+
+Calling this function multiple times in the same buffer is safe -- this
+function keeps track of whether it has already been called in this
+buffer, and does nothing if so.  This allows for multiple ways of getting
+Font Lock properly initialized in a buffer, to deal with existing major
+modes that do not call this function. (For example, Font Lock adds this
+function to `find-file-hooks'.)
+
+Major modes that have any font-lock defaults specified should call this
+function during their initialization process, after they have set
+the variable `major-mode'.
+
+If EXPLICIT-DEFAULTS is t, this function will not check whether it
+has already been run in this buffer, and will always do the full
+computation.
+
+If EXPLICIT-DEFAULTS is not nil and not t, it should be something
+that is allowable as a value for `font-lock-defaults' and will be
+used to initialize the Font Lock variables.
+Fauto-show-mode
+Turn automatic horizontal scroll mode on or off.
+With arg, turn auto scrolling on if arg is positive, off otherwise.
+This mode is enabled or disabled for each buffer individually.
+It takes effect only when `truncate-lines' is non-nil.
+Vauto-show-inhibiting-commands
+Commands that inhibit auto-show behavior.
+This normally includes the horizontal scrollbar commands.
+Fauto-show-make-region-visible
+Move point in such a way that the region (START, END) is visible.
+This only does anything if auto-show-mode is enabled, and it doesn't
+actually do any horizontal scrolling; rather, it just sets things up so
+that the region will be visible when `auto-show-make-point-visible'
+is next called (this happens after every command).
+Fauto-show-make-point-visible
+Scroll horizontally to make point visible, if that is enabled.
+This function only does something if `auto-show-mode' is non-nil
+and longlines are being truncated in the selected window.
+See also the command `auto-show-mode'.
+Fsymbol-file
+Return the input source from which SYM was loaded.
+This is a file name, or nil if the source was a buffer with no associated file.
+Ffeature-symbols
+Return the file and list of symbols associated with a given FEATURE.
+Ffeature-file
+Return the file name from which a given FEATURE was loaded.
+Actually, return the load argument, if any; this is sometimes the name of a
+Lisp file without an extension.  If the feature came from an eval-buffer on
+a buffer with no associated file, or an eval-region, return nil.
+Ffile-symbols
+Return the file and list of symbols associated with FILE.
+The file name in the returned list is the string used to load the file,
+and may not be the same string as FILE, but it will be equivalent.
+Ffile-provides
+Return the list of features provided by FILE.
+Ffile-requires
+Return the list of features required by FILE.
+Ffile-dependents
+Return the list of loaded libraries that depend on FILE.
+This can include FILE itself.
+Funload-feature
+Unload the library that provided FEATURE, restoring all its autoloads.
+If the feature is required by any other loaded code, and optional FORCE
+is nil, raise an error.
diff --text -u /dev/null 'xemacs-21.5.3/lib-src/GNUmakefile'
Index: ././lib-src/GNUmakefile
--- ././lib-src/GNUmakefile	Thu Jan  1 09:00:00 1970
+++ ././lib-src/GNUmakefile	Fri Sep  7 18:15:55 2001
@@ -0,0 +1,200 @@
+.SUFFIXES:
+.SUFFIXES: .c .h .o
+SHELL = /bin/sh
+RM = rm -f
+pwd = /bin/pwd
+CC=gcc
+CPP=gcc -E
+CFLAGS=-g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare
+CPPFLAGS=
+LDFLAGS=
+ALLOCA=
+LN_S=ln -s
+version=21.5-b3
+PROGNAME=xemacs
+prefix=/usr/local
+exec_prefix=${prefix}
+bindir=${exec_prefix}/bin
+libdir=${exec_prefix}/lib
+srcdir=/playpen/mozilla/XEmacs/xemacs-21.5.3/lib-src
+datadir=${prefix}/lib
+instvardir=${PROGNAME}-${version}
+top_srcdir=/playpen/mozilla/XEmacs/xemacs-21.5.3
+archlibdir=${datadir}/${instvardir}/${configuration}
+configuration=i686-pc-linux
+moduledir=${datadir}/${instvardir}/${configuration}/modules
+sitemoduledir=${datadir}/${inststaticdir}/site-modules
+INSTALL =  /usr/bin/install -c
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_DATA = ${INSTALL} -m 644
+PUBLIC_INSTALLABLE_EXES=\
+ gnuclient\
+ ellcc\
+ etags ctags b2m ootags
+PUBLIC_INSTALLABLE_SCRIPTS=\
+ gnudoit gnuattach\
+ rcs-checkin
+PUBLIC_INSTALLABLES = ${PUBLIC_INSTALLABLE_EXES} ${PUBLIC_INSTALLABLE_SCRIPTS}
+PRIVATE_INSTALLABLE_EXES=\
+ gnuserv\
+ fakemail\
+ wakeup profile make-docfile digest-doc\
+ sorted-doc movemail cvtmail yow hexl mmencode
+GEN_SCRIPTS = rcs2log vcdiff gzip-el.sh
+PKG_SCRIPTS = add-big-package.sh
+PRIVATE_INSTALLABLE_SCRIPTS = $(GEN_SCRIPTS) $(PKG_SCRIPTS)
+PRIVATE_INSTALLABLES = ${PRIVATE_INSTALLABLE_EXES} ${PRIVATE_INSTALLABLE_SCRIPTS}
+BUILD_UTILITIES = make-path make-dump-id
+EXES    = ${PUBLIC_INSTALLABLE_EXES} ${PRIVATE_INSTALLABLE_EXES} ${BUILD_UTILITIES}
+SCRIPTS = ${PUBLIC_INSTALLABLE_SCRIPTS} ${PRIVATE_INSTALLABLE_SCRIPTS}
+PROGS   = ${EXES} ${SCRIPTS}
+MOVE_FLAGS=
+MOVE_LIBS=
+vpath %.c /playpen/mozilla/XEmacs/xemacs-21.5.3/lib-src
+vpath %.h /playpen/mozilla/XEmacs/xemacs-21.5.3/lib-src
+c_switch_general=-DHAVE_CONFIG_H
+c_switch_all=-DHAVE_CONFIG_H -I/usr/X11R6/include
+ld_switch_general=
+ld_switch_all=-L/usr/X11R6/lib
+ld_libs_general=-ldb -lgpm -lncurses -L/usr/lib -lesd -laudiofile -lm -lpq -lm -lutil -lgcc -lc -lgcc /usr/lib/crtn.o
+cppflags = -I. -I../src -I$(srcdir) -I$(top_srcdir)/src $(CPPFLAGS)
+cflags   = $(CFLAGS) $(cppflags) $(c_switch_general)
+ldflags  = $(LDFLAGS) $(ld_switch_general) $(ld_libs_general)
+.c.o:
+	${CC} -c $(cflags) $<
+.PHONY : all maybe-blessmail install uninstall check
+all: ${PROGS}
+${SCRIPTS}:
+	for f in ${SCRIPTS}; do \
+		if test ! -r $$f; then ${LN_S} ${srcdir}/$$f $$f; fi; \
+	done
+blessmail = blessmail
+blessmail:
+	../src/xemacs -batch -l ../lisp/blessmail.el
+	chmod +x $@
+maybe-blessmail: $(blessmail)
+	@if test `wc -l <blessmail` != 2; then \
+	  dir=`sed -n -e 's/echo mail directory = \(.*\)/\1/p' blessmail`; \
+	  echo "*************************************************************";\
+	  echo "Assuming $$dir is really the mail spool directory, you should";\
+	  echo "run  lib-src/blessmail ${archlibdir}/movemail"; \
+	  echo "as root, to give  movemail  appropriate permissions."; \
+	  echo "Do that after running  make install."; \
+	  echo "You can also do  make blessmail. "; \
+	  echo "*************************************************************";\
+	fi
+do-blessmail: $(blessmail)
+	./blessmail ${archlibdir}/movemail
+${archlibdir}: all
+	@echo; echo "Installing utilities run internally by XEmacs."
+	./make-path ${archlibdir}
+	if test "`(cd ${archlibdir} && $(pwd))`" != "`$(pwd)`"; then \
+	  for f in ${PRIVATE_INSTALLABLE_EXES}; do \
+	    (cd .. && $(INSTALL_PROGRAM) lib-src/$$f ${archlibdir}/$$f) ; \
+	  done ; \
+	fi
+	if test "`(cd ${archlibdir} && $(pwd))`" \
+	     != "`(cd ${srcdir}     && $(pwd))`"; then \
+	  for f in ${PRIVATE_INSTALLABLE_SCRIPTS}; do \
+	    (cd .. && $(INSTALL_PROGRAM) ${srcdir}/$$f ${archlibdir}/$$f); \
+	  done ; \
+	fi
+install: ${archlibdir}
+	@echo; echo "Installing utilities for users to run."
+	for file in ${PUBLIC_INSTALLABLE_EXES} ; do \
+	  (cd .. && $(INSTALL_PROGRAM) lib-src/$${file} ${bindir}/$${file}) ; \
+	done
+	for file in ${PUBLIC_INSTALLABLE_SCRIPTS} ; do \
+	  (cd .. && $(INSTALL_PROGRAM) ${srcdir}/$${file} ${bindir}/$${file}) ; \
+	done
+uninstall:
+	cd ${bindir} && $(RM) ${PUBLIC_INSTALLABLES}
+	cd ${archlibdir} && $(RM) ${PRIVATE_INSTALLABLES}
+.PHONY: mostlyclean clean distclean realclean extraclean
+mostlyclean:
+	$(RM) *.o *.i core
+clean: mostlyclean
+	$(RM) ${EXES} *.exe
+distclean: clean
+	$(RM) DOC *.tab.c *.tab.h TAGS ellcc.h
+	$(RM) GNUmakefile Makefile Makefile.in blessmail config.values
+realclean: distclean
+extraclean: distclean
+	$(RM) *~ \#*
+check:
+	@echo "We don't have any tests for lib-src yet."
+TAGS: etags
+	etags *.[ch]
+GETOPTOBJS = getopt.o getopt1.o $(ALLOCA)
+GETOPTDEPS = $(GETOPTOBJS) ${srcdir}/getopt.h
+getopt.o: ${srcdir}/getopt.c ${srcdir}/getopt.h
+	${CC} -c $(cflags) ${srcdir}/getopt.c
+getopt1.o: ${srcdir}/getopt1.c ${srcdir}/getopt.h
+	${CC} -c $(cflags) ${srcdir}/getopt1.c
+alloca.o: ${top_srcdir}/src/alloca.c
+	${CC} -c $(cflags) ${srcdir}/../src/alloca.c
+regex.o: ${srcdir}/../src/regex.c ${top_srcdir}/src/regex.h
+	$(CC) -c $(cflags) \
+	-DINHIBIT_STRING_HEADER ${top_srcdir}/src/regex.c
+etags_args = $(cflags) -DVERSION='"${version}"' ${srcdir}/etags.c \
+	$(GETOPTOBJS) regex.o $(ldflags)
+etags_deps = ${srcdir}/etags.c $(GETOPTDEPS) regex.o ../src/config.h
+etags: ${etags_deps}
+	$(CC) ${etags_args} -o $@
+ellcc_args = $(cflags) ${srcdir}/ellcc.c $(ldflags)
+ellcc_deps = ${srcdir}/ellcc.c ellcc.h ../src/config.h
+ellcc: ${ellcc_deps}
+	$(CC) ${ellcc_args} -o $@
+ootags_args = $(cflags) -DVERSION='"${version}"' ${srcdir}/ootags.c \
+	$(GETOPTOBJS) regex.o $(ldflags)
+ootags_deps = ${srcdir}/ootags.c $(GETOPTDEPS) regex.o ../src/config.h
+ootags: ${ootags_deps}
+	$(CC) ${ootags_args} -o $@
+ctags: ${etags_deps} etags
+	$(CC) -DCTAGS ${etags_args} -o $@
+wakeup: ${srcdir}/wakeup.c
+	$(CC) $(cflags) ${srcdir}/wakeup.c $(ldflags) -o $@
+profile: ${srcdir}/profile.c
+	$(CC) $(cflags) ${srcdir}/profile.c $(ldflags) -o $@
+make-docfile: ${srcdir}/make-docfile.c
+	$(CC) $(cflags) ${srcdir}/make-docfile.c $(ldflags) -o $@
+digest-doc: ${srcdir}/digest-doc.c
+	$(CC) -Demacs $(cflags) ${srcdir}/digest-doc.c $(ldflags) -o $@
+sorted-doc: ${srcdir}/sorted-doc.c
+	$(CC) $(cflags) ${srcdir}/sorted-doc.c $(ldflags) -o $@
+b2m: ${srcdir}/b2m.c ../src/config.h
+	$(CC) $(cflags) ${srcdir}/b2m.c $(ldflags) -o $@
+movemail: ${srcdir}/movemail.c ${srcdir}/pop.c ${srcdir}/pop.h $(GETOPTDEPS) regex.o \
+	../src/config.h
+	$(CC) $(cflags) ${MOVE_FLAGS} ${srcdir}/movemail.c ${srcdir}/pop.c \
+	$(GETOPTOBJS) regex.o $(ldflags) ${MOVE_LIBS} -o $@
+cvtmail: ${srcdir}/cvtmail.c
+	$(CC) $(cflags) ${srcdir}/cvtmail.c $(ldflags) -o $@
+fakemail: ${srcdir}/fakemail.c ../src/config.h
+	$(CC) $(cflags) ${srcdir}/fakemail.c $(ldflags) -o $@
+yow: ${srcdir}/yow.c ../src/paths.h
+	$(CC) $(cflags) ${srcdir}/yow.c $(ldflags) -o $@
+i: ${srcdir}/i.c
+	$(CC) $(cflags) ${srcdir}/i.c $(ldflags) -o $@
+minitar: ${srcdir}/../nt/minitar.c
+	$(CC) $(cflags) ${srcdir}/../nt/minitar.c $(ldflags) -lz -o $@
+hexl: ${srcdir}/hexl.c
+	$(CC) $(cflags) ${srcdir}/hexl.c $(ldflags) -o $@
+make-msgfile: ${srcdir}/make-msgfile.c
+	$(CC) $(cflags) ${srcdir}/make-msgfile.c $(ldflags) -o $@
+make-po: ${srcdir}/make-po.c
+	$(CC) $(cflags) ${srcdir}/make-po.c $(ldflags) -o $@
+make-dump-id: ${srcdir}/make-dump-id.c
+	$(CC) $(cflags) ${srcdir}/make-dump-id.c $(ldflags) -o $@
+cflags_gnuserv  = $(CFLAGS) $(cppflags) $(c_switch_all)
+ldflags_gnuserv = $(LDFLAGS) $(ld_switch_all) -lXau -lXmu -lXt -lXext -lX11 -lSM -lICE $(ld_libs_general)
+gnuslib.o: ${srcdir}/gnuslib.c ${srcdir}/gnuserv.h ../src/config.h
+	$(CC) -c $(cflags_gnuserv) ${srcdir}/gnuslib.c
+gnuclient: ${srcdir}/gnuclient.c gnuslib.o ${srcdir}/gnuserv.h
+	$(CC) $(cflags_gnuserv) ${srcdir}/$@.c gnuslib.o ${ldflags_gnuserv} -o $@
+gnuserv: ${srcdir}/gnuserv.c gnuslib.o ${srcdir}/gnuserv.h
+	$(CC) $(cflags_gnuserv) ${srcdir}/$@.c gnuslib.o ${ldflags_gnuserv} -o $@
+mmencode : ${srcdir}/mmencode.c
+	$(CC) $(cflags) ${srcdir}/mmencode.c -o $@
+make-path: ${srcdir}/make-path.c ../src/config.h
+	$(CC) -Demacs $(cflags) ${srcdir}/make-path.c -o $@
diff --text -u /dev/null 'xemacs-21.5.3/lib-src/Makefile'
Index: ././lib-src/Makefile
--- ././lib-src/Makefile	Thu Jan  1 09:00:00 1970
+++ ././lib-src/Makefile	Fri Sep  7 18:15:55 2001
@@ -0,0 +1,199 @@
+.SUFFIXES:
+.SUFFIXES: .c .h .o
+SHELL = /bin/sh
+RM = rm -f
+pwd = /bin/pwd
+CC=gcc
+CPP=gcc -E
+CFLAGS=-g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare
+CPPFLAGS=
+LDFLAGS=
+ALLOCA=
+LN_S=ln -s
+version=21.5-b3
+PROGNAME=xemacs
+prefix=/usr/local
+exec_prefix=${prefix}
+bindir=${exec_prefix}/bin
+libdir=${exec_prefix}/lib
+srcdir=/playpen/mozilla/XEmacs/xemacs-21.5.3/lib-src
+datadir=${prefix}/lib
+instvardir=${PROGNAME}-${version}
+top_srcdir=/playpen/mozilla/XEmacs/xemacs-21.5.3
+archlibdir=${datadir}/${instvardir}/${configuration}
+configuration=i686-pc-linux
+moduledir=${datadir}/${instvardir}/${configuration}/modules
+sitemoduledir=${datadir}/${inststaticdir}/site-modules
+INSTALL =  /usr/bin/install -c
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_DATA = ${INSTALL} -m 644
+PUBLIC_INSTALLABLE_EXES=\
+ gnuclient\
+ ellcc\
+ etags ctags b2m ootags
+PUBLIC_INSTALLABLE_SCRIPTS=\
+ gnudoit gnuattach\
+ rcs-checkin
+PUBLIC_INSTALLABLES = ${PUBLIC_INSTALLABLE_EXES} ${PUBLIC_INSTALLABLE_SCRIPTS}
+PRIVATE_INSTALLABLE_EXES=\
+ gnuserv\
+ fakemail\
+ wakeup profile make-docfile digest-doc\
+ sorted-doc movemail cvtmail yow hexl mmencode
+GEN_SCRIPTS = rcs2log vcdiff gzip-el.sh
+PKG_SCRIPTS = add-big-package.sh
+PRIVATE_INSTALLABLE_SCRIPTS = $(GEN_SCRIPTS) $(PKG_SCRIPTS)
+PRIVATE_INSTALLABLES = ${PRIVATE_INSTALLABLE_EXES} ${PRIVATE_INSTALLABLE_SCRIPTS}
+BUILD_UTILITIES = make-path make-dump-id
+EXES    = ${PUBLIC_INSTALLABLE_EXES} ${PRIVATE_INSTALLABLE_EXES} ${BUILD_UTILITIES}
+SCRIPTS = ${PUBLIC_INSTALLABLE_SCRIPTS} ${PRIVATE_INSTALLABLE_SCRIPTS}
+PROGS   = ${EXES} ${SCRIPTS}
+MOVE_FLAGS=
+MOVE_LIBS=
+VPATH=/playpen/mozilla/XEmacs/xemacs-21.5.3/lib-src
+c_switch_general=-DHAVE_CONFIG_H
+c_switch_all=-DHAVE_CONFIG_H -I/usr/X11R6/include
+ld_switch_general=
+ld_switch_all=-L/usr/X11R6/lib
+ld_libs_general=-ldb -lgpm -lncurses -L/usr/lib -lesd -laudiofile -lm -lpq -lm -lutil -lgcc -lc -lgcc /usr/lib/crtn.o
+cppflags = -I. -I../src -I$(srcdir) -I$(top_srcdir)/src $(CPPFLAGS)
+cflags   = $(CFLAGS) $(cppflags) $(c_switch_general)
+ldflags  = $(LDFLAGS) $(ld_switch_general) $(ld_libs_general)
+.c.o:
+	${CC} -c $(cflags) $<
+.PHONY : all maybe-blessmail install uninstall check
+all: ${PROGS}
+${SCRIPTS}:
+	for f in ${SCRIPTS}; do \
+		if test ! -r $$f; then ${LN_S} ${srcdir}/$$f $$f; fi; \
+	done
+blessmail = blessmail
+blessmail:
+	../src/xemacs -batch -l ../lisp/blessmail.el
+	chmod +x $@
+maybe-blessmail: $(blessmail)
+	@if test `wc -l <blessmail` != 2; then \
+	  dir=`sed -n -e 's/echo mail directory = \(.*\)/\1/p' blessmail`; \
+	  echo "*************************************************************";\
+	  echo "Assuming $$dir is really the mail spool directory, you should";\
+	  echo "run  lib-src/blessmail ${archlibdir}/movemail"; \
+	  echo "as root, to give  movemail  appropriate permissions."; \
+	  echo "Do that after running  make install."; \
+	  echo "You can also do  make blessmail. "; \
+	  echo "*************************************************************";\
+	fi
+do-blessmail: $(blessmail)
+	./blessmail ${archlibdir}/movemail
+${archlibdir}: all
+	@echo; echo "Installing utilities run internally by XEmacs."
+	./make-path ${archlibdir}
+	if test "`(cd ${archlibdir} && $(pwd))`" != "`$(pwd)`"; then \
+	  for f in ${PRIVATE_INSTALLABLE_EXES}; do \
+	    (cd .. && $(INSTALL_PROGRAM) lib-src/$$f ${archlibdir}/$$f) ; \
+	  done ; \
+	fi
+	if test "`(cd ${archlibdir} && $(pwd))`" \
+	     != "`(cd ${srcdir}     && $(pwd))`"; then \
+	  for f in ${PRIVATE_INSTALLABLE_SCRIPTS}; do \
+	    (cd .. && $(INSTALL_PROGRAM) ${srcdir}/$$f ${archlibdir}/$$f); \
+	  done ; \
+	fi
+install: ${archlibdir}
+	@echo; echo "Installing utilities for users to run."
+	for file in ${PUBLIC_INSTALLABLE_EXES} ; do \
+	  (cd .. && $(INSTALL_PROGRAM) lib-src/$${file} ${bindir}/$${file}) ; \
+	done
+	for file in ${PUBLIC_INSTALLABLE_SCRIPTS} ; do \
+	  (cd .. && $(INSTALL_PROGRAM) ${srcdir}/$${file} ${bindir}/$${file}) ; \
+	done
+uninstall:
+	cd ${bindir} && $(RM) ${PUBLIC_INSTALLABLES}
+	cd ${archlibdir} && $(RM) ${PRIVATE_INSTALLABLES}
+.PHONY: mostlyclean clean distclean realclean extraclean
+mostlyclean:
+	$(RM) *.o *.i core
+clean: mostlyclean
+	$(RM) ${EXES} *.exe
+distclean: clean
+	$(RM) DOC *.tab.c *.tab.h TAGS ellcc.h
+	$(RM) GNUmakefile Makefile Makefile.in blessmail config.values
+realclean: distclean
+extraclean: distclean
+	$(RM) *~ \#*
+check:
+	@echo "We don't have any tests for lib-src yet."
+TAGS: etags
+	etags *.[ch]
+GETOPTOBJS = getopt.o getopt1.o $(ALLOCA)
+GETOPTDEPS = $(GETOPTOBJS) ${srcdir}/getopt.h
+getopt.o: ${srcdir}/getopt.c ${srcdir}/getopt.h
+	${CC} -c $(cflags) ${srcdir}/getopt.c
+getopt1.o: ${srcdir}/getopt1.c ${srcdir}/getopt.h
+	${CC} -c $(cflags) ${srcdir}/getopt1.c
+alloca.o: ${top_srcdir}/src/alloca.c
+	${CC} -c $(cflags) ${srcdir}/../src/alloca.c
+regex.o: ${srcdir}/../src/regex.c ${top_srcdir}/src/regex.h
+	$(CC) -c $(cflags) \
+	-DINHIBIT_STRING_HEADER ${top_srcdir}/src/regex.c
+etags_args = $(cflags) -DVERSION='"${version}"' ${srcdir}/etags.c \
+	$(GETOPTOBJS) regex.o $(ldflags)
+etags_deps = ${srcdir}/etags.c $(GETOPTDEPS) regex.o ../src/config.h
+etags: ${etags_deps}
+	$(CC) ${etags_args} -o $@
+ellcc_args = $(cflags) ${srcdir}/ellcc.c $(ldflags)
+ellcc_deps = ${srcdir}/ellcc.c ellcc.h ../src/config.h
+ellcc: ${ellcc_deps}
+	$(CC) ${ellcc_args} -o $@
+ootags_args = $(cflags) -DVERSION='"${version}"' ${srcdir}/ootags.c \
+	$(GETOPTOBJS) regex.o $(ldflags)
+ootags_deps = ${srcdir}/ootags.c $(GETOPTDEPS) regex.o ../src/config.h
+ootags: ${ootags_deps}
+	$(CC) ${ootags_args} -o $@
+ctags: ${etags_deps} etags
+	$(CC) -DCTAGS ${etags_args} -o $@
+wakeup: ${srcdir}/wakeup.c
+	$(CC) $(cflags) ${srcdir}/wakeup.c $(ldflags) -o $@
+profile: ${srcdir}/profile.c
+	$(CC) $(cflags) ${srcdir}/profile.c $(ldflags) -o $@
+make-docfile: ${srcdir}/make-docfile.c
+	$(CC) $(cflags) ${srcdir}/make-docfile.c $(ldflags) -o $@
+digest-doc: ${srcdir}/digest-doc.c
+	$(CC) -Demacs $(cflags) ${srcdir}/digest-doc.c $(ldflags) -o $@
+sorted-doc: ${srcdir}/sorted-doc.c
+	$(CC) $(cflags) ${srcdir}/sorted-doc.c $(ldflags) -o $@
+b2m: ${srcdir}/b2m.c ../src/config.h
+	$(CC) $(cflags) ${srcdir}/b2m.c $(ldflags) -o $@
+movemail: ${srcdir}/movemail.c ${srcdir}/pop.c ${srcdir}/pop.h $(GETOPTDEPS) regex.o \
+	../src/config.h
+	$(CC) $(cflags) ${MOVE_FLAGS} ${srcdir}/movemail.c ${srcdir}/pop.c \
+	$(GETOPTOBJS) regex.o $(ldflags) ${MOVE_LIBS} -o $@
+cvtmail: ${srcdir}/cvtmail.c
+	$(CC) $(cflags) ${srcdir}/cvtmail.c $(ldflags) -o $@
+fakemail: ${srcdir}/fakemail.c ../src/config.h
+	$(CC) $(cflags) ${srcdir}/fakemail.c $(ldflags) -o $@
+yow: ${srcdir}/yow.c ../src/paths.h
+	$(CC) $(cflags) ${srcdir}/yow.c $(ldflags) -o $@
+i: ${srcdir}/i.c
+	$(CC) $(cflags) ${srcdir}/i.c $(ldflags) -o $@
+minitar: ${srcdir}/../nt/minitar.c
+	$(CC) $(cflags) ${srcdir}/../nt/minitar.c $(ldflags) -lz -o $@
+hexl: ${srcdir}/hexl.c
+	$(CC) $(cflags) ${srcdir}/hexl.c $(ldflags) -o $@
+make-msgfile: ${srcdir}/make-msgfile.c
+	$(CC) $(cflags) ${srcdir}/make-msgfile.c $(ldflags) -o $@
+make-po: ${srcdir}/make-po.c
+	$(CC) $(cflags) ${srcdir}/make-po.c $(ldflags) -o $@
+make-dump-id: ${srcdir}/make-dump-id.c
+	$(CC) $(cflags) ${srcdir}/make-dump-id.c $(ldflags) -o $@
+cflags_gnuserv  = $(CFLAGS) $(cppflags) $(c_switch_all)
+ldflags_gnuserv = $(LDFLAGS) $(ld_switch_all) -lXau -lXmu -lXt -lXext -lX11 -lSM -lICE $(ld_libs_general)
+gnuslib.o: ${srcdir}/gnuslib.c ${srcdir}/gnuserv.h ../src/config.h
+	$(CC) -c $(cflags_gnuserv) ${srcdir}/gnuslib.c
+gnuclient: ${srcdir}/gnuclient.c gnuslib.o ${srcdir}/gnuserv.h
+	$(CC) $(cflags_gnuserv) ${srcdir}/$@.c gnuslib.o ${ldflags_gnuserv} -o $@
+gnuserv: ${srcdir}/gnuserv.c gnuslib.o ${srcdir}/gnuserv.h
+	$(CC) $(cflags_gnuserv) ${srcdir}/$@.c gnuslib.o ${ldflags_gnuserv} -o $@
+mmencode : ${srcdir}/mmencode.c
+	$(CC) $(cflags) ${srcdir}/mmencode.c -o $@
+make-path: ${srcdir}/make-path.c ../src/config.h
+	$(CC) -Demacs $(cflags) ${srcdir}/make-path.c -o $@
diff --text -u /dev/null 'xemacs-21.5.3/lib-src/Makefile.in'
Index: ././lib-src/Makefile.in
--- ././lib-src/Makefile.in	Thu Jan  1 09:00:00 1970
+++ ././lib-src/Makefile.in	Fri Sep  7 18:15:49 2001
@@ -0,0 +1,392 @@
+# Generated automatically from Makefile.in.in by configure.
+##   Makefile for lib-src subdirectory in XEmacs.
+##   Copyright (C) 1985, 1987, 1988, 1993, 1994 Free Software Foundation, Inc.
+##   Copyright (C) 1996, 1997 Sun Microsystems, Inc.
+
+## This file is part of XEmacs.
+
+## XEmacs 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.
+
+## XEmacs 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 XEmacs; see the file COPYING.  If not, write to
+## the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+## Boston, MA 02111-1307, USA.
+
+## Note: FSF Makefile.in.in does something weird so that the comments
+## above a certain point in this file are in shell format instead of
+## in C format.  How the hell is this supposed to work? */
+
+## For performance and consistency, no built-in rules
+.SUFFIXES:
+.SUFFIXES: .c .h .o
+## ==================== Things "configure" will edit ====================
+
+
+SHELL = /bin/sh
+RM = rm -f
+pwd = /bin/pwd
+
+CC=gcc
+CPP=gcc -E
+CFLAGS=-g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare
+CPPFLAGS=
+LDFLAGS=
+ALLOCA=
+LN_S=ln -s
+version=21.5-b3
+
+## This will be the name of the generated binary and is set automatically
+## by configure.
+PROGNAME=xemacs
+
+## ==================== Where To Install Things ====================
+
+prefix=/usr/local
+exec_prefix=${prefix}
+bindir=${exec_prefix}/bin
+libdir=${exec_prefix}/lib
+srcdir=/playpen/mozilla/XEmacs/xemacs-21.5.3/lib-src
+datadir=${prefix}/lib
+instvardir=${PROGNAME}-${version}
+top_srcdir=/playpen/mozilla/XEmacs/xemacs-21.5.3
+archlibdir=${datadir}/${instvardir}/${configuration}
+configuration=i686-pc-linux
+moduledir=${datadir}/${instvardir}/${configuration}/modules
+sitemoduledir=${datadir}/${inststaticdir}/site-modules
+
+## ==================== Utility Programs for the Build =================
+
+INSTALL =  /usr/bin/install -c
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_DATA = ${INSTALL} -m 644
+
+## ========================== Lists of Files ===========================
+
+#define NO_SHORTNAMES
+#define NOT_C_CODE
+#include "../src/config.h"
+
+#ifndef WIN32_NATIVE
+#define INSTALL_GNUSERV
+#endif
+
+## ----------------------------------------------------------------
+## Things that a user might actually run directly,
+## which should be installed in ${bindir}.
+
+PUBLIC_INSTALLABLE_EXES=\
+#ifdef INSTALL_GNUSERV
+ gnuclient\
+#endif
+#ifdef HAVE_SHLIB
+ ellcc\
+#endif
+ etags ctags b2m ootags
+
+PUBLIC_INSTALLABLE_SCRIPTS=\
+#ifdef INSTALL_GNUSERV
+ gnudoit gnuattach\
+#endif
+ rcs-checkin
+
+PUBLIC_INSTALLABLES = ${PUBLIC_INSTALLABLE_EXES} ${PUBLIC_INSTALLABLE_SCRIPTS}
+
+## ----------------------------------------------------------------
+## Things that XEmacs runs internally on the user's behalf,
+## which should be installed in ${archlibdir}.
+
+PRIVATE_INSTALLABLE_EXES=\
+#ifdef INSTALL_GNUSERV
+ gnuserv\
+#endif
+#ifdef WIN32_NATIVE
+ i minitar\
+#else
+ fakemail\
+#endif
+ wakeup profile make-docfile digest-doc\
+ sorted-doc movemail cvtmail yow hexl mmencode
+
+GEN_SCRIPTS = rcs2log vcdiff gzip-el.sh
+PKG_SCRIPTS = add-big-package.sh
+PRIVATE_INSTALLABLE_SCRIPTS = $(GEN_SCRIPTS) $(PKG_SCRIPTS)
+
+PRIVATE_INSTALLABLES = ${PRIVATE_INSTALLABLE_EXES} ${PRIVATE_INSTALLABLE_SCRIPTS}
+
+## These need to be conditional on I18N3: make-msgfile make-po
+
+## ----------------------------------------------------------------
+## Things that XEmacs uses during the build process itself.
+## Not installed.
+
+BUILD_UTILITIES = make-path make-dump-id
+
+EXES    = ${PUBLIC_INSTALLABLE_EXES} ${PRIVATE_INSTALLABLE_EXES} ${BUILD_UTILITIES}
+SCRIPTS = ${PUBLIC_INSTALLABLE_SCRIPTS} ${PRIVATE_INSTALLABLE_SCRIPTS}
+PROGS   = ${EXES} ${SCRIPTS}
+
+## Additional -D flags for movemail (add to MOVE_FLAGS if desired):
+## MAIL_USE_POP		Support mail retrieval from a POP mailbox.
+## MAIL_USE_MMDF		Support MMDF mailboxes.
+## MAIL_USE_FLOCK	Use flock for file locking (see the comments
+##			about locking in movemail.c)
+## MAIL_UNLINK_SPOOL	Unlink the user spool mailbox after reading
+##			it (instead of just emptying it).
+## KERBEROS		Support Kerberized POP.
+## KRB5			Support Kerberos Version 5 pop instead of
+##			Version 4 (define this in addition to
+##			KERBEROS).
+## HESIOD		Support Hesiod lookups of user mailboxes.
+## MAILHOST		A string, the host name of the default POP
+##			mail host for the site.
+
+MOVE_FLAGS=
+##
+## Additional libraries for movemail:
+## For KERBEROS
+## MOVE_LIBS= -lkrb -ldes -lcom_err
+## For KERBEROS + KRB5
+## MOVE_LIBS= -lkrb5 -lcrypto -lisode -lcom_err
+## Add "-lhesiod" if HESIOD is defined.
+
+MOVE_LIBS=
+
+## ========================== start of cpp stuff =======================
+
+#ifdef USE_GNU_MAKE
+vpath %.c /playpen/mozilla/XEmacs/xemacs-21.5.3/lib-src
+vpath %.h /playpen/mozilla/XEmacs/xemacs-21.5.3/lib-src
+#else
+VPATH=/playpen/mozilla/XEmacs/xemacs-21.5.3/lib-src
+#endif
+
+c_switch_general=-DHAVE_CONFIG_H
+c_switch_all=-DHAVE_CONFIG_H -I/usr/X11R6/include
+ld_switch_general=
+ld_switch_all=-L/usr/X11R6/lib
+ld_libs_general=-ldb -lgpm -lncurses -L/usr/lib -lesd -laudiofile -lm -lpq -lm -lutil -lgcc -lc -lgcc /usr/lib/crtn.o
+
+## We need to #define emacs to get the right versions of some files.
+
+## To understand the order of -I flags, consider what happens if you run
+## ./configure in the source tree, and then run
+## $(srcdir).2.26/configure in some other build tree.
+## Where will the generated files like config.h be included from?
+## This is also why you _must_ use <...> instead of "..." 
+## when #include'ing generated files.
+cppflags = -I. -I../src -I$(srcdir) -I$(top_srcdir)/src $(CPPFLAGS)
+cflags   = $(CFLAGS) $(cppflags) $(c_switch_general)
+ldflags  = $(LDFLAGS) $(ld_switch_general) $(ld_libs_general)
+
+## This is the default compilation command.
+## But we should never rely on it, because some make version
+## failed to find it for getopt.o.
+## Using an explicit command made it work.
+.c.o:
+	${CC} -c $(cflags) $<
+
+.PHONY : all maybe-blessmail install uninstall check
+
+all: ${PROGS}
+
+## Make symlinks for shell scripts if using --srcdir
+${SCRIPTS}:
+	for f in ${SCRIPTS}; do \
+		if test ! -r $$f; then ${LN_S} ${srcdir}/$$f $$f; fi; \
+	done
+
+#undef MOVEMAIL_NEEDS_BLESSING
+#if !defined (MAIL_USE_FLOCK) && ! defined (MAIL_USE_LOCKF)
+#define MOVEMAIL_NEEDS_BLESSING
+blessmail = blessmail
+blessmail:
+	../src/xemacs -batch -l ../lisp/blessmail.el
+	chmod +x $@
+#endif /* movemail needs blessing */
+
+maybe-blessmail: $(blessmail)
+#ifdef MOVEMAIL_NEEDS_BLESSING
+## Do not charge ahead and do it!  Let the installer decide.
+##	  ./blessmail ${archlibdir}/movemail
+	@if test `wc -l <blessmail` != 2; then \
+	  dir=`sed -n -e 's/echo mail directory = \(.*\)/\1/p' blessmail`; \
+	  echo "*************************************************************";\
+	  echo "Assuming $$dir is really the mail spool directory, you should";\
+	  echo "run  lib-src/blessmail ${archlibdir}/movemail"; \
+	  echo "as root, to give  movemail  appropriate permissions."; \
+	  echo "Do that after running  make install."; \
+	  echo "You can also do  make blessmail. "; \
+	  echo "*************************************************************";\
+	fi
+#endif
+
+do-blessmail: $(blessmail)
+#ifdef MOVEMAIL_NEEDS_BLESSING
+	./blessmail ${archlibdir}/movemail
+#endif
+
+## Install the internal utilities.  Until they are installed, we can
+## just run them directly from lib-src.
+${archlibdir}: all
+	@echo; echo "Installing utilities run internally by XEmacs."
+	./make-path ${archlibdir}
+	if test "`(cd ${archlibdir} && $(pwd))`" != "`$(pwd)`"; then \
+	  for f in ${PRIVATE_INSTALLABLE_EXES}; do \
+	    (cd .. && $(INSTALL_PROGRAM) lib-src/$$f ${archlibdir}/$$f) ; \
+	  done ; \
+	fi
+	if test "`(cd ${archlibdir} && $(pwd))`" \
+	     != "`(cd ${srcdir}     && $(pwd))`"; then \
+	  for f in ${PRIVATE_INSTALLABLE_SCRIPTS}; do \
+	    (cd .. && $(INSTALL_PROGRAM) ${srcdir}/$$f ${archlibdir}/$$f); \
+	  done ; \
+	fi
+
+install: ${archlibdir}
+	@echo; echo "Installing utilities for users to run."
+	for file in ${PUBLIC_INSTALLABLE_EXES} ; do \
+	  (cd .. && $(INSTALL_PROGRAM) lib-src/$${file} ${bindir}/$${file}) ; \
+	done
+	for file in ${PUBLIC_INSTALLABLE_SCRIPTS} ; do \
+	  (cd .. && $(INSTALL_PROGRAM) ${srcdir}/$${file} ${bindir}/$${file}) ; \
+	done
+
+uninstall:
+	cd ${bindir} && $(RM) ${PUBLIC_INSTALLABLES}
+	cd ${archlibdir} && $(RM) ${PRIVATE_INSTALLABLES}
+
+.PHONY: mostlyclean clean distclean realclean extraclean
+mostlyclean:
+	$(RM) *.o *.i core
+clean: mostlyclean
+	$(RM) ${EXES} *.exe
+distclean: clean
+	$(RM) DOC *.tab.c *.tab.h TAGS ellcc.h
+	$(RM) GNUmakefile Makefile Makefile.in blessmail config.values
+realclean: distclean
+extraclean: distclean
+	$(RM) *~ \#*
+
+## Test the contents of the directory.
+check:
+	@echo "We don't have any tests for lib-src yet."
+
+TAGS: etags
+	etags *.[ch]
+
+GETOPTOBJS = getopt.o getopt1.o $(ALLOCA)
+GETOPTDEPS = $(GETOPTOBJS) ${srcdir}/getopt.h
+getopt.o: ${srcdir}/getopt.c ${srcdir}/getopt.h
+	${CC} -c $(cflags) ${srcdir}/getopt.c
+getopt1.o: ${srcdir}/getopt1.c ${srcdir}/getopt.h
+	${CC} -c $(cflags) ${srcdir}/getopt1.c
+alloca.o: ${top_srcdir}/src/alloca.c
+	${CC} -c $(cflags) ${srcdir}/../src/alloca.c
+
+regex.o: ${srcdir}/../src/regex.c ${top_srcdir}/src/regex.h
+	$(CC) -c $(cflags) \
+	-DINHIBIT_STRING_HEADER ${top_srcdir}/src/regex.c
+
+etags_args = $(cflags) -DVERSION='"${version}"' ${srcdir}/etags.c \
+	$(GETOPTOBJS) regex.o $(ldflags)
+etags_deps = ${srcdir}/etags.c $(GETOPTDEPS) regex.o ../src/config.h
+
+etags: ${etags_deps}
+	$(CC) ${etags_args} -o $@
+
+ellcc_args = $(cflags) ${srcdir}/ellcc.c $(ldflags)
+ellcc_deps = ${srcdir}/ellcc.c ellcc.h ../src/config.h
+
+ellcc: ${ellcc_deps}
+	$(CC) ${ellcc_args} -o $@
+
+ootags_args = $(cflags) -DVERSION='"${version}"' ${srcdir}/ootags.c \
+	$(GETOPTOBJS) regex.o $(ldflags)
+ootags_deps = ${srcdir}/ootags.c $(GETOPTDEPS) regex.o ../src/config.h
+
+ootags: ${ootags_deps}
+	$(CC) ${ootags_args} -o $@
+
+## ctags depends on etags to assure that parallel makes do not write
+## two etags.o files on top of each other.
+ctags: ${etags_deps} etags
+	$(CC) -DCTAGS ${etags_args} -o $@
+
+wakeup: ${srcdir}/wakeup.c
+	$(CC) $(cflags) ${srcdir}/wakeup.c $(ldflags) -o $@
+
+profile: ${srcdir}/profile.c
+	$(CC) $(cflags) ${srcdir}/profile.c $(ldflags) -o $@
+
+make-docfile: ${srcdir}/make-docfile.c
+	$(CC) $(cflags) ${srcdir}/make-docfile.c $(ldflags) -o $@
+
+digest-doc: ${srcdir}/digest-doc.c
+	$(CC) -Demacs $(cflags) ${srcdir}/digest-doc.c $(ldflags) -o $@
+
+sorted-doc: ${srcdir}/sorted-doc.c
+	$(CC) $(cflags) ${srcdir}/sorted-doc.c $(ldflags) -o $@
+
+b2m: ${srcdir}/b2m.c ../src/config.h
+	$(CC) $(cflags) ${srcdir}/b2m.c $(ldflags) -o $@
+
+movemail: ${srcdir}/movemail.c ${srcdir}/pop.c ${srcdir}/pop.h $(GETOPTDEPS) regex.o \
+	../src/config.h
+	$(CC) $(cflags) ${MOVE_FLAGS} ${srcdir}/movemail.c ${srcdir}/pop.c \
+	$(GETOPTOBJS) regex.o $(ldflags) ${MOVE_LIBS} -o $@
+
+cvtmail: ${srcdir}/cvtmail.c
+	$(CC) $(cflags) ${srcdir}/cvtmail.c $(ldflags) -o $@
+
+fakemail: ${srcdir}/fakemail.c ../src/config.h
+	$(CC) $(cflags) ${srcdir}/fakemail.c $(ldflags) -o $@
+
+yow: ${srcdir}/yow.c ../src/paths.h
+	$(CC) $(cflags) ${srcdir}/yow.c $(ldflags) -o $@
+
+i: ${srcdir}/i.c
+	$(CC) $(cflags) ${srcdir}/i.c $(ldflags) -o $@
+
+minitar: ${srcdir}/../nt/minitar.c
+	$(CC) $(cflags) ${srcdir}/../nt/minitar.c $(ldflags) -lz -o $@
+
+hexl: ${srcdir}/hexl.c
+	$(CC) $(cflags) ${srcdir}/hexl.c $(ldflags) -o $@
+
+make-msgfile: ${srcdir}/make-msgfile.c
+	$(CC) $(cflags) ${srcdir}/make-msgfile.c $(ldflags) -o $@
+
+make-po: ${srcdir}/make-po.c
+	$(CC) $(cflags) ${srcdir}/make-po.c $(ldflags) -o $@
+
+make-dump-id: ${srcdir}/make-dump-id.c
+	$(CC) $(cflags) ${srcdir}/make-dump-id.c $(ldflags) -o $@
+
+cflags_gnuserv  = $(CFLAGS) $(cppflags) $(c_switch_all)
+ldflags_gnuserv = $(LDFLAGS) $(ld_switch_all) -lXau -lXmu -lXt -lXext -lX11 -lSM -lICE $(ld_libs_general)
+gnuslib.o: ${srcdir}/gnuslib.c ${srcdir}/gnuserv.h ../src/config.h
+	$(CC) -c $(cflags_gnuserv) ${srcdir}/gnuslib.c
+gnuclient: ${srcdir}/gnuclient.c gnuslib.o ${srcdir}/gnuserv.h
+	$(CC) $(cflags_gnuserv) ${srcdir}/$@.c gnuslib.o ${ldflags_gnuserv} -o $@
+gnuserv: ${srcdir}/gnuserv.c gnuslib.o ${srcdir}/gnuserv.h
+	$(CC) $(cflags_gnuserv) ${srcdir}/$@.c gnuslib.o ${ldflags_gnuserv} -o $@
+
+## mmencode binary is used by tm - but is really part of the metamail package
+## mmencode.c was merged copy of mmencode.c and codes.c of metamail
+mmencode : ${srcdir}/mmencode.c
+	$(CC) $(cflags) ${srcdir}/mmencode.c -o $@
+
+
+## The timer utility (timer.c, getdate.y) is not used in XEmacs
+## because XEmacs provides built-in timer facilities.
+
+make-path: ${srcdir}/make-path.c ../src/config.h
+	$(CC) -Demacs $(cflags) ${srcdir}/make-path.c -o $@
diff --text -u /dev/null 'xemacs-21.5.3/lib-src/config.values'
Index: ././lib-src/config.values
--- ././lib-src/config.values	Thu Jan  1 09:00:00 1970
+++ ././lib-src/config.values	Fri Sep  7 18:15:55 2001
@@ -0,0 +1,347 @@
+;;; Do not edit this file!
+;;; This file was automatically generated, by the config.values.sh script,
+;;; from configure, which was itself automatically generated from configure.in.
+;;;
+;;; See lisp/config.el for details on how this file is used.
+;;;
+;;; You are trapped in a twisty maze of strange-looking files, all autogenerated...
+
+;;; configure        is created, from configure.in,     by autoconf
+;;; config.values.in is created, from configure,        by config.values.sh
+;;; config.values    is created, from config.values.in, by configure
+;;; config.values    is read by lisp/config.el,
+;;;                  to create the (Lisp object) config-value-hash-table
+
+;;; Variables defined in configure by AC_SUBST follow:
+;;; (These are used in Makefiles)
+
+ALLOCA ""
+ARCHLIBDIR "/usr/local/lib/xemacs-21.5-b3/i686-pc-linux"
+ARCHLIBDIR_USER_DEFINED ""
+CC "gcc"
+CFLAGS "-g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare"
+CPP "gcc -E"
+CPPFLAGS ""
+CXXFLAGS ""
+DEFS "-DHAVE_CONFIG_H"
+DOCDIR "/usr/local/lib/xemacs-21.5-b3/i686-pc-linux"
+DOCDIR_USER_DEFINED ""
+ETCDIR "/usr/local/lib/xemacs-21.5-b3/etc"
+ETCDIR_USER_DEFINED ""
+EXEC_PREFIX "/usr/local"
+EXEC_PREFIX_USER_DEFINED ""
+FFLAGS ""
+GTK_CONFIG "no"
+INFODIR "/usr/local/lib/xemacs-21.5-b3/info"
+INFODIR_USER_DEFINED ""
+INFOPATH ""
+INFOPATH_USER_DEFINED ""
+INSTALL "/usr/bin/install -c"
+INSTALL_ARCH_DEP_SUBDIR " lib-src src"
+INSTALL_DATA "${INSTALL} -m 644"
+INSTALL_PROGRAM "${INSTALL}"
+INSTALL_SCRIPT "${INSTALL_PROGRAM}"
+LDFLAGS ""
+LIBS "-ldb -lgpm -lncurses -L/usr/lib -lesd -laudiofile -lm -lpq -lm "
+LISPDIR "/usr/local/lib/xemacs-21.5-b3/lisp"
+LISPDIR_USER_DEFINED ""
+LN_S "ln -s"
+MAKE_SUBDIR " lib-src lwlib src"
+MODULEDIR "/usr/local/lib/xemacs-21.5-b3/i686-pc-linux/modules"
+MODULEDIR_USER_DEFINED ""
+PACKAGE_PATH ""
+PACKAGE_PATH_USER_DEFINED ""
+PREFIX "/usr/local"
+PREFIX_USER_DEFINED ""
+PROGNAME "xemacs"
+RANLIB "ranlib"
+RECURSIVE_MAKE "$(MAKE) $(MFLAGS) CC='$(CC)' CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS)' CPPFLAGS='$(CPPFLAGS)'"
+SET_MAKE ""
+SHELL "/bin/sh"
+SITELISPDIR "/usr/local/lib/xemacs/site-lisp"
+SITELISPDIR_USER_DEFINED ""
+SITEMODULEDIR "/usr/local/lib/xemacs/site-modules"
+SITEMODULEDIR_USER_DEFINED ""
+SRC_SUBDIR_DEPS " lwlib"
+SUBDIR_MAKEFILES "lib-src/Makefile lib-src/GNUmakefile lwlib/Makefile lwlib/GNUmakefile src/Makefile src/GNUmakefile"
+XEMACS_CC "gcc"
+X_CFLAGS " -I/usr/X11R6/include"
+X_EXTRA_LIBS ""
+X_LIBS " -L/usr/X11R6/lib"
+X_PRE_LIBS " -lSM -lICE"
+YACC "bison -y"
+archlibdir "${datadir}/${instvardir}/${configuration}"
+bindir "${exec_prefix}/bin"
+bitmapdir ""
+blddir "/playpen/mozilla/XEmacs/xemacs-21.5.3"
+c_switch_all "-DHAVE_CONFIG_H -I/usr/X11R6/include"
+c_switch_general "-DHAVE_CONFIG_H"
+c_switch_window_system "-I/usr/X11R6/include"
+canonical "i686-pc-linux"
+configuration "i686-pc-linux"
+configure_input "Generated automatically from config.values.in by configure."
+datadir "${prefix}/lib"
+dll_cflags "-fPIC"
+dll_ld "gcc"
+dll_ldflags "-shared"
+dll_ldo "-o"
+dll_post ""
+dnd_objs ""
+docdir "${archlibdir}"
+dynodump_arch ""
+etcdir "${datadir}/${instvardir}/etc"
+exec_prefix "${prefix}"
+extra_includes ""
+extra_objs "debug.o tests.o filelock.o unexelf.o balloon_help.o balloon-x.o postgresql.o dgif_lib.o gif_io.o menubar.o scrollbar.o dialog.o toolbar.o menubar-x.o scrollbar-x.o dialog-x.o toolbar-x.o gui-x.o mule.o mule-ccl.o mule-charset.o file-coding.o input-method-xlib.o mule-wnnfns.o mule-canna.o realpath.o inline.o linuxplay.o nas.o esd.o miscplay.o console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o terminfo.o gpmevent.o event-unixoid.o database.o sysdll.o emodules.o process-unix.o"
+have_esd_config "yes"
+includedir ""
+infodir "${datadir}/${instvardir}/info"
+infopath ""
+install_pp ""
+inststaticdir "${PROGNAME}"
+instvardir "${PROGNAME}-${version}"
+internal_makefile_list "Makefile.in lib-src/Makefile.in lwlib/Makefile.in src/Makefile.in"
+ld "$(CC) -nostdlib"
+ld_dynamic_link_flags "-Wl,-export-dynamic"
+ld_libs_all "-laudio -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11 -lSM -lICE -ldb -lgpm -lncurses -L/usr/lib -lesd -laudiofile -lm -lpq -lm -lutil -lgcc -lc -lgcc /usr/lib/crtn.o"
+ld_libs_general "-ldb -lgpm -lncurses -L/usr/lib -lesd -laudiofile -lm -lpq -lm -lutil -lgcc -lc -lgcc /usr/lib/crtn.o"
+ld_libs_window_system "-laudio -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11 -lSM -lICE"
+ld_switch_all "-L/usr/X11R6/lib"
+ld_switch_general ""
+ld_switch_shared "-c"
+ld_switch_window_system "-L/usr/X11R6/lib"
+lib_gcc "`$(CC) $(C_SWITCH_X_SITE) -print-libgcc-file-name`"
+libdir "${exec_prefix}/lib"
+libexecdir ""
+libs_xauth "-lXau -lXmu -lXt -lXext -lX11 -lSM -lICE"
+lispdir "${datadir}/${instvardir}/lisp"
+localstatedir ""
+lwlib_objs " lwlib-Xm.o xlwmenu.o xlwscrollbar.o xlwtabs.o xlwgcs.o lwlib-Xlw.o"
+machfile "m/intel386.h"
+mandir "${prefix}/man/man1"
+moduledir "${datadir}/${instvardir}/${configuration}/modules"
+native_sound_lib ""
+oldincludedir ""
+opsysfile "s/linux.h"
+package_path ""
+pkgdir "${datadir}/${instvardir}/lisp"
+prefix "/usr/local"
+program_transform_name "s,x,x,"
+sbindir ""
+sharedstatedir ""
+sitelispdir "${datadir}/${inststaticdir}/site-lisp"
+sitemoduledir "${datadir}/${inststaticdir}/site-modules"
+sound_cflags ""
+srcdir "/playpen/mozilla/XEmacs/xemacs-21.5.3/lib-src"
+start_files "pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o"
+start_flags ""
+statedir "${prefix}/lib"
+sysconfdir ""
+top_srcdir "/playpen/mozilla/XEmacs/xemacs-21.5.3"
+version "21.5-b3"
+
+;;; Variables defined in configure by AC_DEFINE and AC_DEFINE_UNQUOTED follow:
+;;; (These are used in C code)
+
+EMACS_MAJOR_VERSION 21
+EMACS_MINOR_VERSION 5
+EMACS_BETA_VERSION 3
+XEMACS_CODENAME "asparagus"
+EMACS_VERSION "21.5-b3"
+EMACS_PROGNAME "xemacs"
+ERROR_CHECK_EXTENTS t
+ERROR_CHECK_TYPECHECK t
+ERROR_CHECK_BUFPOS t
+ERROR_CHECK_GC t
+ERROR_CHECK_MALLOC t
+ERROR_CHECK_BYTE_CODE t
+ERROR_CHECK_GLYPHS t
+DEBUG_XEMACS t
+USE_ASSERTIONS t
+MEMORY_USAGE_STATS t
+config_machfile "m/intel386.h"
+config_opsysfile "s/linux.h"
+STACK_TRACE_EYE_CATCHER xemacs_21_5_b3_i686_pc_linux
+CLASH_DETECTION t
+_GNU_SOURCE t
+_POSIX_C_SOURCE 199506L
+_XOPEN_SOURCE 500
+_XOPEN_SOURCE_EXTENDED t
+DOUG_LEA_MALLOC t
+HAVE_A_OUT_H t
+HAVE_ELF_H t
+HAVE_FCNTL_H t
+HAVE_INTTYPES_H t
+HAVE_LIBGEN_H t
+HAVE_LOCALE_H t
+HAVE_SYS_PARAM_H t
+HAVE_SYS_TIME_H t
+HAVE_SYS_TIMEB_H t
+HAVE_SYS_UN_H t
+HAVE_ULIMIT_H t
+HAVE_UNISTD_H t
+HAVE_SYS_WAIT_H t
+STDC_HEADERS t
+TIME_WITH_SYS_TIME t
+SYS_SIGLIST_DECLARED t
+HAVE_UTIME t
+RETSIGTYPE void
+HAVE_TIMEVAL t
+HAVE_TM_ZONE t
+SIZEOF_SHORT 2
+SIZEOF_INT 4
+SIZEOF_LONG 4
+SIZEOF_LONG_LONG 8
+SIZEOF_VOID_P 4
+HAVE_LONG_FILE_NAMES t
+HAVE_LIBM t
+LISP_FLOAT_TYPE t
+HAVE_INVERSE_HYPERBOLIC t
+HAVE_MKSTEMP t
+HAVE_LOCKF t
+HAVE_FLOCK t
+MAIL_LOCK_DOT t
+HAVE_X_WINDOWS t
+BITMAPDIR "/usr/X11R6/include/X11/bitmaps:/usr/X11R6/include/bitmaps"
+FUNCPROTO 15
+NARROWPROTO t
+linux t
+__i386__ t
+_POSIX_SOURCE t
+_BSD_SOURCE t
+_SVID_SOURCE t
+THIS_IS_X11R6 t
+HAVE_XCONVERTCASE t
+HAVE_X11_XLOCALE_H t
+HAVE_XREGISTERIMINSTANTIATECALLBACK t
+XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE t
+HAVE_XMU t
+HAVE_BALLOON_HELP t
+HAVE_WMCOMMAND t
+HAVE_XAUTH t
+HAVE_POSTGRESQL t
+HAVE_POSTGRESQLV7 t
+LIBPQ_FE_H_FILE "postgresql/libpq-fe.h"
+HAVE_XPM t
+HAVE_GIF t
+HAVE_JPEG t
+HAVE_PNG t
+HAVE_TIFF t
+LWLIB_USES_MOTIF t
+NEED_MOTIF t
+NEED_LUCID t
+LWLIB_TABS_LUCID t
+HAVE_MENUBARS t
+HAVE_SCROLLBARS t
+HAVE_DIALOGS t
+HAVE_TOOLBARS t
+HAVE_WIDGETS t
+LWLIB_MENUBARS_LUCID t
+LWLIB_SCROLLBARS_LUCID t
+LWLIB_DIALOGS_MOTIF t
+LWLIB_WIDGETS_MOTIF t
+MULE t
+FILE_CODING t
+HAVE_LIBINTL_H t
+HAVE_XIM t
+XIM_XLIB t
+HAVE_CRYPT t
+HAVE_WNN t
+HAVE_CANNA t
+HAVE_CBRT t
+HAVE_CLOSEDIR t
+HAVE_DUP2 t
+HAVE_FMOD t
+HAVE_FPATHCONF t
+HAVE_FREXP t
+HAVE_FTIME t
+HAVE_GETADDRINFO t
+HAVE_GETHOSTNAME t
+HAVE_GETNAMEINFO t
+HAVE_GETPAGESIZE t
+HAVE_GETTIMEOFDAY t
+HAVE_GETCWD t
+HAVE_GETWD t
+HAVE_LOGB t
+HAVE_LRAND48 t
+HAVE_MATHERR t
+HAVE_MKDIR t
+HAVE_MKTIME t
+HAVE_PERROR t
+HAVE_POLL t
+HAVE_RANDOM t
+HAVE_RENAME t
+HAVE_RINT t
+HAVE_RMDIR t
+HAVE_SELECT t
+HAVE_SETITIMER t
+HAVE_SETPGID t
+HAVE_SETLOCALE t
+HAVE_SETSID t
+HAVE_SIGBLOCK t
+HAVE_SIGHOLD t
+HAVE_SIGPROCMASK t
+HAVE_SNPRINTF t
+HAVE_STPCPY t
+HAVE_STRERROR t
+HAVE_TZSET t
+HAVE_ULIMIT t
+HAVE_USLEEP t
+HAVE_WAITPID t
+HAVE_VSNPRINTF t
+HAVE_FSYNC t
+HAVE_FTRUNCATE t
+HAVE_UMASK t
+HAVE_GETPT t
+HAVE_GRANTPT t
+HAVE_UNLOCKPT t
+HAVE_PTSNAME t
+HAVE_KILLPG t
+HAVE_TCGETPGRP t
+HAVE_OPENPTY t
+HAVE_PTY_H t
+HAVE_STROPTS_H t
+HAVE_ISASTREAM t
+HAVE_GETLOADAVG t
+HAVE_H_ERRNO t
+HAVE_SIGSETJMP t
+HAVE_ALLOCA_H t
+HAVE_ALLOCA t
+HAVE_STRCOLL t
+HAVE_GETPGRP t
+GETPGRP_VOID t
+HAVE_MMAP t
+HAVE_TERMIOS t
+SIGNALS_VIA_CHARACTERS t
+NO_TERMIO t
+HAVE_SOCKETS t
+HAVE_MULTICAST t
+HAVE_SYSVIPC t
+SYSV_SYSTEM_DIR t
+SOUNDCARD_H_FILE "sys/soundcard.h"
+HAVE_NATIVE_SOUND t
+HAVE_NAS_SOUND t
+HAVE_ESD_SOUND t
+HAVE_TTY t
+HAVE_NCURSES t
+CURSES_H_FILE "curses.h"
+TERM_H_FILE "term.h"
+HAVE_GPM t
+DB_H_FILE "db.h"
+HAVE_BERKELEY_DB t
+HAVE_DATABASE t
+HAVE_DLOPEN t
+HAVE_SHLIB t
+HAVE_DLERROR t
+HAVE_UNIX_PROCESSES t
+PREFIX_USER_DEFINED t
+INHIBIT_SITE_LISP t
+EMACS_CONFIGURATION "i686-pc-linux"
+EMACS_CONFIG_OPTIONS "--with-mule"
+LD_SWITCH_X_SITE ""
+LD_SWITCH_X_SITE_AUX ""
+C_SWITCH_X_SITE ""
+LD_SWITCH_SITE ""
+C_SWITCH_SITE ""
+GNU_MALLOC t
+USE_GCC t
diff --text -u /dev/null 'xemacs-21.5.3/lib-src/ellcc.h'
Index: ././lib-src/ellcc.h
--- ././lib-src/ellcc.h	Thu Jan  1 09:00:00 1970
+++ ././lib-src/ellcc.h	Fri Sep  7 18:15:50 2001
@@ -0,0 +1,33 @@
+/* DO NOT EDIT THIS FILE!!!! */
+
+/* Most of this is required due to a bug in the GCC compiler driver
+   which prevents us from passing this on the command line. It also
+   reduces the compiler command line length, which can be a problem
+   on some systems. */
+
+#ifndef ELLCC_HDR
+#define ELLCC_HDR
+
+#define ELLCC_CC            "gcc"
+#define ELLCC_CFLAGS        "-g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare"
+#define ELLCC_CPPFLAGS      ""
+#define ELLCC_LDFLAGS       ""
+#define ELLCC_CF_GENERAL    "-DHAVE_CONFIG_H"
+#define ELLCC_CF_ALL        "-DHAVE_CONFIG_H -I/usr/X11R6/include"
+#define ELLCC_LF_GENERAL    ""
+#define ELLCC_LF_ALL        "-L/usr/X11R6/lib"
+#define ELLCC_LIBS_GENERAL  "-ldb -lgpm -lncurses -L/usr/lib -lesd -laudiofile -lm -lpq -lm -lutil -lgcc -lc -lgcc /usr/lib/crtn.o"
+#define ELLCC_DLL_CFLAGS    "-fPIC"
+#define ELLCC_DLL_LDFLAGS   "-shared"
+#define ELLCC_DLL_POST      ""
+#define ELLCC_DLL_LD        "gcc"
+#define ELLCC_DLL_LDO       "-o"
+#define ELLCC_CONFIG        "i686-pc-linux"
+#define ELLCC_EMACS_VER     "21.5-b3"
+#define ELLCC_PROGNAME      "xemacs"
+#define ELLCC_ARCHDIR       "/usr/local/lib/xemacs-21.5-b3/i686-pc-linux"
+#define ELLCC_MODDIR        "/usr/local/lib/xemacs-21.5-b3/i686-pc-linux/modules"
+#define ELLCC_SITEMODS      "/usr/local/lib/xemacs/site-modules"
+
+#endif /* ELLCC_HDR */
+
diff --text -u 'xemacs-21.5.2/lib-src/gnuserv.c' 'xemacs-21.5.3/lib-src/gnuserv.c'
Index: ././lib-src/gnuserv.c
--- ././lib-src/gnuserv.c	Sun Jun 10 19:42:17 2001
+++ ././lib-src/gnuserv.c	Mon Aug 13 13:45:48 2001
@@ -485,17 +485,18 @@
 	   * doing magic cookie auth
 	   */
 
-	  if (timed_read(fd, buf, 10, AUTH_TIMEOUT, 1) <= 0)
+	  if (timed_read (fd, buf, 10, AUTH_TIMEOUT, 1) <= 0)
 	    return FALSE;
 
-	  auth_data_len = atoi(buf);
+	  auth_data_len = atoi (buf);
 
-	  if (auth_data_len <= 0 || auth_data_len > sizeof(buf))
+	  if (auth_data_len <= 0 || auth_data_len > (int) sizeof (buf))
 	      {
 		return FALSE;
 	      }
 
-	  if (timed_read(fd, buf, auth_data_len, AUTH_TIMEOUT, 0) != auth_data_len)
+	  if (timed_read (fd, buf, auth_data_len, AUTH_TIMEOUT, 0) !=
+	      auth_data_len)
 	    return FALSE;
 
 #ifdef AUTH_MAGIC_COOKIE
@@ -508,10 +509,12 @@
 	      ( auth_data_len ^
 		server_xauth->data_length );
 
-	    for(auth_data_pos=0; auth_data_pos < auth_data_len; ++auth_data_pos)
+	    for(auth_data_pos = 0; auth_data_pos < auth_data_len;
+		++auth_data_pos)
 	      auth_mismatches |=
 		( buf[auth_data_pos] ^
-		  server_xauth->data[auth_data_pos % server_xauth->data_length]);
+		  server_xauth->data[auth_data_pos %
+				     server_xauth->data_length]);
 
 	    if (auth_mismatches == 0)
 	      return TRUE;
@@ -604,7 +607,7 @@
 
   gethostname(hostname,HOSTNAMSZ);
 
-  if ((host_addr = internet_addr(hostname)) == -1)
+  if ((host_addr = internet_addr (hostname)) == (unsigned int) -1)
     {
       fprintf(stderr,"%s: unable to find %s in /etc/hosts or from YP",
 	      progname,hostname);
@@ -630,9 +633,10 @@
        (host_file = fopen(file_name,"r")) != NULL))	/* opened ok */
     {
       while ((fscanf(host_file,"%s",hostname) != EOF))	/* find a host */
-	if ((host_addr = internet_addr(hostname)) != -1)/* get its addr */
+	if ((host_addr = internet_addr(hostname)) != (unsigned int) -1)
+	  /* get its addr */
 	  {
-	    add_host(host_addr);				/* add the addr */
+	    add_host(host_addr);			/* add the addr */
 	    hosts++;
 	  }
       fclose(host_file);
diff --text -u 'xemacs-21.5.2/lib-src/gnuslib.c' 'xemacs-21.5.3/lib-src/gnuslib.c'
Index: ././lib-src/gnuslib.c
--- ././lib-src/gnuslib.c	Sun Jun 10 19:42:17 2001
+++ ././lib-src/gnuslib.c	Mon Aug 13 13:45:48 2001
@@ -327,11 +327,13 @@
   peeraddr_in.sin_family = AF_INET;
 
   /* look up the server host's internet address */
-  if ((peeraddr_in.sin_addr.s_addr = internet_addr(serverhost)) == -1) {
-    fprintf(stderr,"%s: unable to find %s in /etc/hosts or from YP\n",
-	    progname,serverhost);
-    exit(1);
-  }; /* if */
+  if ((peeraddr_in.sin_addr.s_addr = internet_addr (serverhost)) ==
+      (unsigned int) -1)
+    {
+      fprintf (stderr, "%s: unable to find %s in /etc/hosts or from YP\n",
+	       progname, serverhost);
+      exit(1);
+    }
   
   if (port == 0) {
     if ((sp = getservbyname ("gnuserv","tcp")) == NULL)
diff --text -u 'xemacs-21.5.2/lib-src/make-docfile.c' 'xemacs-21.5.3/lib-src/make-docfile.c'
Index: ././lib-src/make-docfile.c
--- ././lib-src/make-docfile.c	Fri Apr 13 03:21:02 2001
+++ ././lib-src/make-docfile.c	Mon Aug 13 13:45:48 2001
@@ -512,15 +512,15 @@
   int l = strlen (filename);
   char f[MAXPATHLEN];
 
-  if (l > sizeof (f))
-  {
+  if (l > (int) sizeof (f))
+    {
 #ifdef ENAMETOOLONG
-    errno = ENAMETOOLONG;
+      errno = ENAMETOOLONG;
 #else
-    errno = EINVAL;
+      errno = EINVAL;
 #endif
-    return (0);
-  }
+      return (0);
+    }
 
   strcpy (f, filename);
   if (f[l - 1] == 'o')
diff --text -u 'xemacs-21.5.2/lib-src/mmencode.c' 'xemacs-21.5.3/lib-src/mmencode.c'
Index: ././lib-src/mmencode.c
--- ././lib-src/mmencode.c	Fri Apr 13 03:21:03 2001
+++ ././lib-src/mmencode.c	Mon Aug 13 13:45:48 2001
@@ -349,7 +349,7 @@
 static void
 fromqp(FILE *infile, FILE *outfile, char **boundaries, int *boundaryct) 
 {
-    unsigned int c1, c2;
+    int c1, c2;
     int sawnewline = 1, neednewline = 0;
     /* The neednewline hack is necessary because the newline leading into 
       a multipart boundary is part of the boundary, not the data */
diff --text -u 'xemacs-21.5.2/lib-src/movemail.c' 'xemacs-21.5.3/lib-src/movemail.c'
Index: ././lib-src/movemail.c
--- ././lib-src/movemail.c	Thu May 24 20:21:33 2001
+++ ././lib-src/movemail.c	Mon Aug 13 13:45:48 2001
@@ -142,7 +142,7 @@
 static void pfatal_with_name (char *);
 static void pfatal_and_delete (char *);
 static char *concat (char *, char *, char *);
-static long *xmalloc (unsigned int);
+static long *xmalloc (int);
 #ifdef MAIL_USE_POP
 static int popmail (char *, char *, char *);
 static int pop_retr (popserver server, int msgno,
@@ -440,7 +440,7 @@
 		errno = saved_errno;
 		pfatal_with_name (outname);
 	      }
-	    if (nread < sizeof buf)
+	    if (nread < (int) sizeof (buf))
 	      break;
 	  }
       }
@@ -699,7 +699,7 @@
 /* Like malloc but get fatal error if memory is exhausted.  */
 
 static long *
-xmalloc (unsigned int size)
+xmalloc (int size)
 {
   long *result = (long *) malloc (size);
   if (!result)
diff --text -u 'xemacs-21.5.2/lib-src/ootags.c' 'xemacs-21.5.3/lib-src/ootags.c'
Index: ././lib-src/ootags.c
--- ././lib-src/ootags.c	Fri Apr 13 03:21:04 2001
+++ ././lib-src/ootags.c	Mon Aug 13 13:45:49 2001
@@ -4411,7 +4411,7 @@
 
       /* Save only the first clause. */
       if (last == NULL
-	  || len != strlen (last)
+	  || len != (int) strlen (last)
 	  || !strneq (s, last, len))
 	{
 	  pfnote ((CTAGS) ? savenstr (s, len) : NULL, TRUE,
@@ -4565,7 +4565,7 @@
   /* Save only the first clause. */
   if (s[pos++] == '('
       && (last == NULL
-	  || len != strlen (last)
+	  || len != (int) strlen (last)
 	  || !strneq (s, last, len)))
 	{
 	  pfnote ((CTAGS) ? savenstr (s, len) : NULL, TRUE,
diff --text -u 'xemacs-21.5.2/lib-src/yow.c' 'xemacs-21.5.3/lib-src/yow.c'
Index: ././lib-src/yow.c
--- ././lib-src/yow.c	Fri Apr 13 03:21:05 2001
+++ ././lib-src/yow.c	Mon Aug 13 13:45:49 2001
@@ -124,7 +124,7 @@
   long offset;
   int c, i = 0;
   char *buf;
-  unsigned int bufsize;
+  int bufsize;
 
   offset = rand() % len + header_len;
   if (fseek(fp, offset, 0) == -1) {
diff --text -u 'xemacs-21.5.2/lisp/ChangeLog' 'xemacs-21.5.3/lisp/ChangeLog'
Index: ././lisp/ChangeLog
--- ././lisp/ChangeLog	Sat Jul 28 16:48:22 2001
+++ ././lisp/ChangeLog	Fri Sep  7 18:13:26 2001
@@ -1,3 +1,74 @@
+2001-09-07  Stephen J. Turnbull  <stephen@xemacs.org>
+
+	* XEmacs 21.5.3 "asparagus" is released.
+
+2001-08-26  Stephen J. Turnbull  <stephen@xemacs.org>
+
+	* README:  Partial update.
+	
+2001-08-26  Stephen J. Turnbull  <stephen@xemacs.org>
+
+	* wid-edit.el (widget-specify-secret):
+	(widget-get):
+	(widget-default-get):
+	(widget-match-inline):
+	(widget-create):
+	(widget-create-child-and-convert):
+	(widget-create-child):
+	(widget-convert-text):
+	(widget-convert-button):
+	(widget-field-activate):
+	(widget-beginning-of-line):
+	(widget-end-of-line):
+	(widget-kill-line):
+	(widget-field-buffer):
+	(widget-field-start):
+	(widget-field-end):
+	(widget-field-find):
+	(widget-before-change):
+	(`group' Widget):
+	('list Widget):
+	('vector Widget):
+	Document usage conditions, fix typos.
+
+2001-06-19  Ben Wing  <ben@xemacs.org>
+
+	* term\AT386.el:
+	* term\AT386.el (AT386-keypad-map):
+	* term\AT386.el (AT386-keypad-map)): New.
+	Fix warnings.
+	
+	* term\linux.el:
+	* term\lk201.el:
+	* term\news.el:
+	* term\news.el (news-fkey-prefix)): New.
+	* term\vt100.el:
+	* term\vt100.el (vt100-wide-mode):
+	Sync with FSF 21.0.103.
+	Fix warnings.
+
+2001-06-19  Ben Wing  <ben@xemacs.org>
+
+	* dialog-gtk.el (popup-builtin-open-dialog): Fix warning.
+	* hyper-apropos.el: Fix problem with undefined face.
+	* update-elc.el (update-elc-files-to-compile): Compile in proper order.
+
+2001-08-08  Didier Verna  <didier@xemacs.org>
+
+	* autoload.el (make-autoload): handle the case of
+	`define-derived-mode'.
+
+2001-08-08  Didier Verna  <didier@xemacs.org>
+
+	* autoload.el (update-autoload-files): make defdir a file name,
+	not directory name.
+
+2001-08-06  Steve Youngs  <youngs@xemacs.org>
+
+	* menubar-items.el (default-menubar): Use 'report-xemacs-bug'.
+
+	* lisp-mnt.el (lm-report-bug): Use 'report-xemacs-bug-beta-address'.
+
 2001-07-28  Stephen J. Turnbull  <stephen@xemacs.org>
 
 	* XEmacs 21.5.2 "artichoke" is released.
@@ -96,7 +167,7 @@
 	* term\apollo.el (apollo-mouse-cancel-cut-copy-paste): Removed.
 	* term\apollo.el (install-apollo-dm-preemptive-key-bindings): Removed.
 	Kill kill kill.  Sync with FSF and remove most crap.
-	
+
 	* term\linux.el:
 	* term\linux.el (function-key-map): Removed.
 	Sync with FSF.  Don't define most defns, because they are
@@ -108,7 +179,7 @@
 
 	* term\cygwin.el:
 	New.  Load term/linux.
-	
+
 	* term\lk201.el:
 	* term\news.el:
 	* term\news.el (news-fkey-prefix)): New.
@@ -137,7 +208,7 @@
 2001-06-17  Ben Wing  <ben@xemacs.org>
 
 	For 21.4:
-	
+
 	* update-elc-2.el (do-update-elc-2):
 	* update-elc-2.el (batch-update-elc-2):
 	Correct misplaced parentheses, making lisp/mule not get
@@ -179,7 +250,7 @@
 	* simple.el (transpose-subr):
 	transpose-line-up/down will now move the region up or down by
 	a line if active.
-	
+
 2001-06-08  Mike Sperber <mike@xemacs.org>
 
 	* files.el (save-some-buffers-1): Don't zap the help window right
@@ -190,12 +261,12 @@
 	* process.el: comment about shell-command-switch.
 	* process.el (shell-quote-argument): Need to quote a null
 	argument, too.  From Dan Holmsand.
-	
+
 	* startup.el (normal-top-level): Delete some unused FSF junk.
 	* startup.el (command-line-early):
-	
+
 	* startup.el (command-line): Call MS Windows init function.
-	
+
 	* win32-native.el:
 	* win32-native.el (mswindows-system-shells): New.
 	* win32-native.el (mswindows-system-shell-p): New.
@@ -238,7 +309,7 @@
 	in the generated file.  Put in a comment at the top of the
 	generated file that it _IS_ auto-generated, and should not be
 	edited by hand.
-	
+
 
 	* gtk-widget-accessors.el (define-widget-accessors): Use
 	wtaerror() instead of signal_simple_error.
@@ -301,7 +372,7 @@
 
 	* autoload.el (batch-force-update-one-directory):
 	Oops, off by one argument.
-	
+
 	* mouse.el:
 	* mouse.el (Mouse-track-gensym): New.
 	* mouse.el (mouse-track-run-hook):
@@ -315,7 +386,7 @@
 	(let-binding doesn't work when the hooks have been made local.)
 	modify mouse-track-run-hook accordingly, and fix mouse-track-default
 	and mouse-track-insert to use the new functionality.
-	
+
 	* printer.el (generic-print-region):
 	Oops, off by one paren.
 
@@ -339,10 +410,10 @@
 
 	* find-paths.el (paths-find-recursive-path):
 	fix error with null EXCLUDE-REGEXP.
-	
+
 	* font-lock.el (font-lock-mode):
 	fix problem reported by hrvoje with buffers starting with a space.
-	
+
 	* lib-complete.el:
 	* lib-complete.el (find-library-source-path): New.
 	* lib-complete.el (find-library):
@@ -418,11 +489,11 @@
 	implement printing the selection when it's selected.
 
 	unrelated:
-	
+
 	* minibuf.el (input-error):
 	* subr.el (error):
 	a couple of error cleanups.
-	
+
 	* update-elc.el ((preloaded-file-list site-load-packages need-to-dump dumped-exe)):
 	* update-elc.el (update-elc-files-to-compile):
 	if bytecomp or byte-optimize need recompiling, then load
@@ -450,16 +521,16 @@
 	Implement Page Setup.  Handle errors properly.
 
 	unrelated:
-	
+
 	* gtk-init.el: Fix the warning properly.
 
-	
+
 2001-05-04  Ben Wing  <ben@xemacs.org>
 
 	* printer.el (generic-print-buffer):
 	* printer.el (generic-print-region):
 	Enable dialog boxes.  Apply workaround recommended by Kirill.
-	
+
 	* simple.el (kill-whole-line):
 	* simple.el (kill-line-1):
 	* simple.el (kill-entire-line):
@@ -735,7 +806,7 @@
 	rectangle, not register (more commonly used), and put rectangle
 	first.  Fix the Edit Init File entry to never load the .elc file.
 	Simplify the default-popup-menu.  Add Cmds->Tabs menu.
-	
+
 	* menubar.el (popup-buffer-menu): Doc fix.
 	* menubar.el ((boundp 'menu-accelerator-map)):
 	Use kp-left not kp_left, etc.
@@ -744,14 +815,14 @@
 
 	* bytecomp-runtime.el (byte-compiler-options):
 	Correct doc string.
-	
+
 	* easymenu.el (easy-menu-do-define): fix extra quote.
 
 	* fill.el (fill-paragraph-or-region):
 	Rewrite to be more correct -- use call-interactively so that
 	we always get exactly the same behavior as if the functions
 	were called directly.
-	
+
 	* font-lock.el (font-lock-fontify-pending-extents):
 	* gutter-items.el (clear-progress-feedback):
 	* gutter-items.el (abort-progress-feedback):
@@ -767,7 +838,7 @@
 
 	* keymap.el (key-sequence-list-description):
 	Clean up fun to always correctly canonicalize.
-	
+
 	* simple.el:
 	* simple.el (delete-forward-p):
 	* simple.el (comment-padding): New.
@@ -775,14 +846,14 @@
 	* simple.el (do-auto-fill):
 	* simple.el (indent-new-comment-line):
 	Clean up Kinsoku comments, synch comment-region with FSF 20.7.
-	
+
 	* simple.el (region-exists-p):
 	* simple.el (region-active-p):
 	Add comment about which one is correct to use in menu specs.
 
 	* sound.el (load-sound-file):
 	Minor code clean up.
-	
+
 	* startup.el:
 	* startup.el (command-line-early):
 	* startup.el (initial-scratch-message):
@@ -800,7 +871,7 @@
 
 	* hash-table.el: New file, useful utility functions.
 	* dumped-lisp.el (preloaded-file-list): Dump hash-table.el.
-	
+
 2001-05-03  Adrian Aichner  <adrian@xemacs.org>
 
 	* build-report.el: Remove CVS keywords since this file has been in
@@ -828,14 +899,14 @@
 	* about.el (about-personal-info):
 	* about.el (about-hacker-contribution):
 	More contributions.
-	
+
 	* simple.el (handle-post-motion-command):
 	Fix spurious setting of zmacs-region-stays to t after a non-shift
 	motion command.
 
 	* etags.el (find-tag-internal):
 	Sync up with FSF 20.7, to fix bugs handling some etags line formats.
-	
+
 	* gtk-init.el (init-post-gtk-win):
 	* msw-init.el (init-post-mswindows-win):
 	* x-init.el:
@@ -853,10 +924,10 @@
 	* toolbar.el:
 	Move non-window-system specific code that was duplicated in
 	all window systems into the generic code.
-	
+
 	* gutter.el:
 	* gutter.el (init-gutter): Removed. (unused)
-	
+
 	* mouse.el:
 	* mouse.el (default-mouse-track-maybe-own-selection):
 	* mouse.el (mouse-track-activate-rectangular-selection): New.
diff --text -u 'xemacs-21.5.2/lisp/README' 'xemacs-21.5.3/lisp/README'
Index: ././lisp/README
--- ././lisp/README	Sun Apr 19 08:25:11 1998
+++ ././lisp/README	Sun Aug 26 19:25:12 2001
@@ -1,3 +1,77 @@
+The files in this directory contain source code for the core XEmacs
+facilities written in Emacs Lisp.  *.el files are Elisp source, and
+*.elc files are byte-compiled versions of the corresponding *.el
+files.  Byte-compiled files are architecture-independent.
+
+Functions used only by files in this directory are considered
+"internal" and are subject to change at any time.  All commands, and
+most functions with docstrings, are part of the exported API.  In
+particular, it is considered good style to use the Common Lisp
+facilities provided in cl*.el.  (Yes, that's ambiguous.  Sorry, we
+don't have a full specification of the API, as the Lispref is
+chronically incomplete.  Anything described in the Lispref is part of
+the API, of course.)
+
+Libraries which implement applications and enhancements are placed in
+the "packages", which are distributed separately from the core
+sources.
+
+#### Someone please update this.
+#### Partially updated 2001-08-25 by sjt.  Needs more work.  Mike?
+
+When XEmacs starts up, it adds certain directories in various
+hierarchies containing Lisp libraries to `load-path' (the list of
+directories to be searched when loading files).  These are: this
+directory, its subdirectory ./mule (in Mule-enabled XEmacs only), the
+site-lisp directory (deprecated), and all the lisp/PACKAGE
+subdirectories of the xemacs-packages, mule-packages, and
+site-packages hierarchies.  See setup-paths.el.
+
+#### Is the following true or relevant any more?
+bogus> Directories whose names begin with "-" or "." are not added to
+bogus> the default load-path.
+
+Some files which you might reasonably want to alter when installing or
+customizing XEmacs at your site are:
+
+	paths.el	You may need to change the default pathnames here,
+			but probably not.  This is loaded before XEmacs is
+			dumped.
+
+	site-init.el	#### obsolete and removed?
+			To pre-load additional libraries into XEmacs and dump
+			them in the executable, load them from this file.
+			Read the instructions in this file for a description
+			of how to do this.
+
+	site-load.el	#### description is obsolete
+			This is like site-init.el, but if you want the 
+			docstrings of your preloaded libraries to be kept in
+			the DOC file instead of in the executable, you should
+			load them from this file instead.  To do this, you must
+			also cause them to be scanned when the DOC file is
+			generated by editing ../src/Makefile.in.in and
+			rerunning configure.
+			#### new semantics
+			This file will preload additional libraries listed in
+			../site-packages and dump them into XEmacs.
+
+	../site-packages  List of additional libraries read by site-load.el.
+
+	site-start.el	This is loaded each time XEmacs starts up, before the
+			user's .emacs file.  (Sysadmin must create.)  Can be
+			inhibited for a given invocation with `--no-site-file'.
+
+	default.el	This is loaded each time XEmacs starts up, after the
+			user's .emacs file, unless .emacs sets the variable
+			inhibit-default-init to t.  (Sysadmin must create.)
+			Can be inhibited for a given invocation with `-q'.
+
+	version.el	This contains the version information for XEmacs.
+
+========================================================================
+Original text follows:
+
 The files in this directory contain source code for the XEmacs
 facilities written in Emacs Lisp.  *.el files are Elisp source, and
 *.elc files are byte-compiled versions of the corresponding *.el
diff --text -u 'xemacs-21.5.2/lisp/auto-autoloads.el' 'xemacs-21.5.3/lisp/auto-autoloads.el'
Index: ././lisp/auto-autoloads.el
--- ././lisp/auto-autoloads.el	Sat Jul 28 17:00:06 2001
+++ ././lisp/auto-autoloads.el	Fri Sep  7 18:25:14 2001
@@ -1,5 +1,5 @@
 ;;; DO NOT MODIFY THIS FILE
-(if (featurep '-autoloads) (error "Already loaded"))
+(if (featurep 'src-autoloads) (error "Already loaded"))
 
 ;;;### (autoloads nil "abbrev" "lisp/abbrev.el")
 
@@ -1997,7 +1997,7 @@
 The current value is assumed to be VALUE, unless UNBOUND is non-nil." nil nil)
 
 (autoload 'widget-create "wid-edit" "\
-Create widget of TYPE.
+Create a widget of type TYPE.
 The optional ARGS are additional keyword arguments." nil nil)
 
 (autoload 'widget-delete "wid-edit" "\
@@ -2031,4 +2031,4 @@
 
 ;;;***
 
-(provide '-autoloads)
+(provide 'src-autoloads)
diff --text -u 'xemacs-21.5.2/lisp/autoload.el' 'xemacs-21.5.3/lisp/autoload.el'
Index: ././lisp/autoload.el
--- ././lisp/autoload.el	Sun Jun 10 19:42:21 2001
+++ ././lisp/autoload.el	Wed Aug  8 21:15:04 2001
@@ -43,21 +43,25 @@
   "Turn FORM, a defun or defmacro, into an autoload for source file FILE.
 Returns nil if FORM is not a defun, define-skeleton or defmacro."
   (let ((car (car-safe form)))
-    (if (memq car '(defun define-skeleton defmacro))
+    (if (memq car '(defun define-skeleton defmacro define-derived-mode))
 	(let ((macrop (eq car 'defmacro))
 	      name doc)
 	  (setq form (cdr form)
 		name (car form)
 		;; Ignore the arguments.
-		form (cdr (if (eq car 'define-skeleton)
-			      form
-			    (cdr form)))
+		form (cdr (cond ((eq car 'define-skeleton)
+				 form)
+				((eq car 'define-derived-mode)
+				 (cddr form))
+				(t
+				 (cdr form))))
 		doc (car form))
 	  (if (stringp doc)
 	      (setq form (cdr form))
 	    (setq doc nil))
 	  (list 'autoload (list 'quote name) file doc
 		(or (eq car 'define-skeleton)
+		    (eq car 'define-derived-mode)
 		    (eq (car-safe (car form)) 'interactive))
 		(if macrop (list 'quote 'macro) nil)))
       nil)))
@@ -530,7 +534,7 @@
 for all files and directories will go into that same file.
 
 If FORCE is non-nil, always save out the autoload files even if unchanged."
-  (let ((defdir default-directory)
+  (let ((defdir (directory-file-name default-directory))
 	(enable-local-eval nil))	; Don't query in batch mode.
     ;; (message "Updating autoloads in %s..." generated-autoload-file)
     (dolist (arg files-or-dirs)
diff --text -u 'xemacs-21.5.2/lisp/lisp-mnt.el' 'xemacs-21.5.3/lisp/lisp-mnt.el'
Index: ././lisp/lisp-mnt.el
--- ././lisp/lisp-mnt.el	Sat May  5 07:42:09 2001
+++ ././lisp/lisp-mnt.el	Mon Aug  6 13:40:54 2001
@@ -560,8 +560,8 @@
     (mail nil
 	  (if addr
 	      (concat (car addr) " <" (cdr addr) ">")
-	    (or (and (boundp 'report-emacs-bug-beta-address)
-		     (declare-boundp report-emacs-bug-beta-address))
+	    (or (and (boundp 'report-xemacs-bug-beta-address)
+		     (declare-boundp report-xemacs-bug-beta-address))
 		"<xemacs-beta@xemacs.org>"))
 	  topic)
     (goto-char (point-max))
diff --text -u 'xemacs-21.5.2/lisp/menubar-items.el' 'xemacs-21.5.3/lisp/menubar-items.el'
Index: ././lisp/menubar-items.el
--- ././lisp/menubar-items.el	Sun May  6 17:33:36 2001
+++ ././lisp/menubar-items.el	Mon Aug  6 13:40:54 2001
@@ -1515,8 +1515,8 @@
        ["%_Unix Manual..." manual-entry])
       "-----"
       ["%_Recent Messages" view-lossage]
-      ["Send %_Bug Report..." report-emacs-bug
-       :active (fboundp 'report-emacs-bug)])))
+      ["Send %_Bug Report..." report-xemacs-bug
+       :active (fboundp 'report-xemacs-bug)])))
 
 
 (defun maybe-add-init-button ()
diff --text -u 'xemacs-21.5.2/lisp/mule/auto-autoloads.el' 'xemacs-21.5.3/lisp/mule/auto-autoloads.el'
Index: ././lisp/mule/auto-autoloads.el
--- ././lisp/mule/auto-autoloads.el	Sat Jul 28 17:00:08 2001
+++ ././lisp/mule/auto-autoloads.el	Fri Sep  7 18:25:16 2001
@@ -1,5 +1,5 @@
 ;;; DO NOT MODIFY THIS FILE
-(if (featurep '-autoloads) (error "Already loaded"))
+(if (featurep 'src-autoloads) (error "Already loaded"))
 
 ;;;### (autoloads (ccl-execute-with-args check-ccl-program define-ccl-program declare-ccl-program ccl-dump ccl-compile) "mule-ccl" "mule/mule-ccl.el")
 
@@ -242,4 +242,4 @@
 
 ;;;***
 
-(provide '-autoloads)
+(provide 'src-autoloads)
diff --text -u 'xemacs-21.5.2/lisp/wid-edit.el' 'xemacs-21.5.3/lisp/wid-edit.el'
Index: ././lisp/wid-edit.el
--- ././lisp/wid-edit.el	Fri Apr 13 03:21:38 2001
+++ ././lisp/wid-edit.el	Sun Aug 26 19:25:12 2001
@@ -343,7 +343,10 @@
   (widget-specify-secret widget))
 
 (defun widget-specify-secret (field)
-  "Replace text in FIELD with value of `:secret', if non-nil."
+  "Replace text in FIELD with value of `:secret', if non-nil.
+
+It is an error to use this function after creating the widget but before
+invoking `widget-setup'."
   (let ((secret (widget-get field :secret))
 	(size (widget-get field :size)))
     (when secret
@@ -552,7 +555,7 @@
 	  widget-shadow-subrs)
   (defun widget-get (widget property)
     "In WIDGET, get the value of PROPERTY.
-The value could either be specified when the widget was created, or
+The value may have been specified when the widget was created, or
 later with `widget-put'."
     (let ((missing t)
 	  value tmp)
@@ -603,12 +606,12 @@
 					 :value-to-internal value)))
 
 (defun widget-default-get (widget)
-  "Extract the defaylt value of WIDGET."
+  "Extract the default value of WIDGET."
   (or (widget-get widget :value)
       (widget-apply widget :default-get)))
 
 (defun widget-match-inline (widget vals)
-  ;; In WIDGET, match the start of VALS.
+  "In WIDGET, match the start of VALS."
   (cond ((widget-get widget :inline)
 	 (widget-apply widget :match-inline vals))
 	((and (listp vals)
@@ -845,14 +848,14 @@
 
 ;;;###autoload
 (defun widget-create (type &rest args)
-  "Create widget of TYPE.
+  "Create a widget of type TYPE.
 The optional ARGS are additional keyword arguments."
   (let ((widget (apply 'widget-convert type args)))
     (widget-apply widget :create)
     widget))
 
 (defun widget-create-child-and-convert (parent type &rest args)
-  "As part of the widget PARENT, create a child widget TYPE.
+  "As a child of widget PARENT, create a widget of type TYPE.
 The child is converted, using the keyword arguments ARGS."
   (let ((widget (apply 'widget-convert type args)))
     (widget-put widget :parent parent)
@@ -864,7 +867,8 @@
     widget))
 
 (defun widget-create-child (parent type)
-  "Create widget of TYPE."
+  "As a child of widget PARENT, create a widget of type TYPE.
+The child is not converted."
   (let ((widget (copy-sequence type)))
     (widget-put widget :parent parent)
     (unless (widget-get widget :indent)
@@ -913,7 +917,7 @@
 	    (setq args (nthcdr 2 args))
 	  (widget-put widget :args args)
 	  (setq args nil))))
-    ;; Then Convert the widget.
+    ;; Then convert the widget.
     (setq type widget)
     (while type
       (let ((convert-widget (plist-get (cdr type) :convert-widget)))
@@ -946,11 +950,12 @@
 (defun widget-convert-text (type from to
 				 &optional button-from button-to
 				 &rest args)
-  "Return a widget of type TYPE with endpoint FROM TO.
-Optional ARGS are extra keyword arguments for TYPE.
-and TO will be used as the widgets end points. If optional arguments
-BUTTON-FROM and BUTTON-TO are given, these will be used as the widgets
-button end points.
+  "Return a widget of type TYPE with endpoints FROM and TO.
+No text will be inserted in the buffer.  Instead the positions FROM and TO
+will be used as the widget's end points.  The widget is ``wrapped around''
+the text between them.
+If optional arguments BUTTON-FROM and BUTTON-TO are given, these will be
+used as the widget's button end points.
 Optional ARGS are extra keyword arguments for TYPE."
   (let ((widget (apply 'widget-convert type :delete 'widget-leave-text args))
 	(from (copy-marker from))
@@ -964,11 +969,11 @@
     widget))
 
 (defun widget-convert-button (type from to &rest args)
-  "Return a widget of type TYPE with endpoint FROM TO.
+  "Return a widget of type TYPE with endpoints FROM and TO.
 Optional ARGS are extra keyword arguments for TYPE.
-No text will be inserted to the buffer, instead the text between FROM
-and TO will be used as the widgets end points, as well as the widgets
-button end points."
+No text will be inserted in the buffer.  Instead the positions FROM and TO
+will be used as the widget's end points, as well as the widget's button's
+end points.  The widget is ``wrapped around'' the text between them."
   (apply 'widget-convert-text type from to from to args))
 
 (defun widget-leave-text (widget)
@@ -1054,7 +1059,7 @@
 
 
 (defun widget-field-activate (pos &optional event)
-  "Invoke the ediable field at point."
+  "Invoke the editable field at point."
   (interactive "@d")
   (let ((field (widget-field-find pos)))
     (if field
@@ -1312,7 +1317,10 @@
   (widget-move (- arg)))
 
 (defun widget-beginning-of-line ()
-  "Go to beginning of field or beginning of line, whichever is first."
+  "Go to beginning of field or beginning of line, whichever is first.
+
+It is an error to use this function after creating the widget but before
+invoking `widget-setup'."
   (interactive "_")
   (let* ((field (widget-field-find (point)))
 	 (start (and field (widget-field-start field))))
@@ -1321,7 +1329,10 @@
       (call-interactively 'beginning-of-line))))
 
 (defun widget-end-of-line ()
-  "Go to end of field or end of line, whichever is first."
+  "Go to end of field or end of line, whichever is first.
+
+It is an error to use this function after creating the widget but before
+invoking `widget-setup'."
   (interactive "_")
   (let* ((field (widget-field-find (point)))
 	 (end (and field (widget-field-end field))))
@@ -1330,7 +1341,10 @@
       (call-interactively 'end-of-line))))
 
 (defun widget-kill-line ()
-  "Kill to end of field or end of line, whichever is first."
+  "Kill to end of field or end of line, whichever is first.
+
+It is an error to use this function after creating the widget but before
+invoking `widget-setup'."
   (interactive)
   (let* ((field (widget-field-find (point)))
 	 (newline (save-excursion (forward-line 1) (point)))
@@ -1425,17 +1439,26 @@
 (make-variable-buffer-local 'widget-field-was)
 
 (defun widget-field-buffer (widget)
-  "Return the start of WIDGET's editing field."
+  "Return the buffer containing WIDGET.
+
+It is an error to use this function after creating the widget but before
+invoking `widget-setup'."
   (let ((extent (widget-get widget :field-extent)))
     (and extent (extent-object extent))))
 
 (defun widget-field-start (widget)
-  "Return the start of WIDGET's editing field."
+  "Return the start of WIDGET's editing field.
+
+It is an error to use this function after creating the widget but before
+invoking `widget-setup'."
   (let ((extent (widget-get widget :field-extent)))
     (and extent (extent-start-position extent))))
 
 (defun widget-field-end (widget)
-  "Return the end of WIDGET's editing field."
+  "Return the end of WIDGET's editing field.
+
+It is an error to use this function after creating the widget but before
+invoking `widget-setup'."
   (let ((extent (widget-get widget :field-extent)))
     ;; Don't subtract one if local-map works at the end of the extent.
     (and extent (if (or widget-field-add-space
@@ -1445,7 +1468,10 @@
 
 (defun widget-field-find (pos)
   "Return the field at POS.
-Unlike (get-char-property POS 'field) this, works with empty fields too."
+Unlike (get-char-property POS 'field) this, works with empty fields too.
+
+Warning: using this function after creating the widget but before invoking
+`widget-setup' will always fail."
   (let ((field-extent (map-extents (lambda (extent ignore)
 				     extent)
 				   nil pos pos nil nil 'field)))
@@ -1467,6 +1493,8 @@
 ;	  (setq found field))))
 ;    found))
 
+;; Warning: using this function after creating the widget but before
+;; invoking `widget-setup' will always fail.
 (defun widget-before-change (from to)
   ;; Barf if the text changed is outside the editable fields.
   (unless inhibit-read-only
@@ -2966,7 +2994,7 @@
 ;;; The `group' Widget.
 
 (define-widget 'group 'default
-  "A widget which group other widgets inside."
+  "A widget which groups other widgets inside."
   :convert-widget 'widget-types-convert-widget
   :format "%v"
   :value-create 'widget-group-value-create
@@ -3518,12 +3546,12 @@
 	   (characterp value)))
 
 (define-widget 'list 'group
-  "A lisp list."
+  "A Lisp list."
   :tag "List"
   :format "%{%t%}:\n%v")
 
 (define-widget 'vector 'group
-  "A lisp vector."
+  "A Lisp vector."
   :tag "Vector"
   :format "%{%t%}:\n%v"
   :match 'widget-vector-match
diff --text -u 'xemacs-21.5.2/lwlib/ChangeLog' 'xemacs-21.5.3/lwlib/ChangeLog'
Index: ././lwlib/ChangeLog
--- ././lwlib/ChangeLog	Sat Jul 28 16:48:22 2001
+++ ././lwlib/ChangeLog	Fri Sep  7 18:13:26 2001
@@ -1,3 +1,19 @@
+2001-09-07  Stephen J. Turnbull  <stephen@xemacs.org>
+
+	* XEmacs 21.5.3 "asparagus" is released.
+
+2001-06-24  Ben Wing  <ben@xemacs.org>
+
+	* lwlib-Xlw.c (xlw_update_tab_control):
+	* lwlib-utils.c (XtApplyUntilToWidgets):
+	* xlwgauge.c (XawGaugeSetValue):
+	* xlwgauge.c (GaugeMercury):
+	* xlwmenu.c (close_to_reference_time):
+	* xlwtabs.c (TabsSetValues):
+	* xlwtabs.c (TabsSelect):
+	* xlwtabs.c (DrawTabs):
+	Fix unsigned warnings.  See src/ChangeLog for details.
+
 2001-07-28  Stephen J. Turnbull  <stephen@xemacs.org>
 
 	* XEmacs 21.5.2 "artichoke" is released.
diff --text -u /dev/null 'xemacs-21.5.3/lwlib/GNUmakefile'
Index: ././lwlib/GNUmakefile
--- ././lwlib/GNUmakefile	Thu Jan  1 09:00:00 1970
+++ ././lwlib/GNUmakefile	Fri Sep  7 18:15:55 2001
@@ -0,0 +1,52 @@
+.SUFFIXES:
+.SUFFIXES: .c .h .o .i .s
+srcdir=/playpen/mozilla/XEmacs/xemacs-21.5.3/lwlib
+SHELL=/bin/sh
+RM = rm -f
+AR = ar cq
+CC=gcc
+CPP=gcc -E
+CFLAGS=-g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare
+CPPFLAGS=
+RANLIB=ranlib
+vpath %.c /playpen/mozilla/XEmacs/xemacs-21.5.3/lwlib
+vpath %.h /playpen/mozilla/XEmacs/xemacs-21.5.3/lwlib
+objs = lwlib.o lwlib-utils.o  lwlib-Xm.o xlwmenu.o xlwscrollbar.o xlwtabs.o xlwgcs.o lwlib-Xlw.o
+all: liblw.a
+c_switch_all=-DHAVE_CONFIG_H -I/usr/X11R6/include
+cppflags = $(CPPFLAGS) -I. $(c_switch_all)
+cflags = $(CFLAGS) $(cppflags)
+.c.o:
+	$(CC) -c $(cflags) $<
+.c.i:
+	$(CC) -E $(cppflags) -o $@ $<
+.c.s:
+	$(CC) -S -c $(cflags) $<
+liblw.a: $(objs)
+	$(RM) $@
+	$(AR) $@ $(objs)
+	@-test -n "$(RANLIB)" && $(RANLIB) $@
+.PHONY: mostlyclean clean distclean realclean extraclean
+mostlyclean:
+	$(RM) liblw.a liblw_pure_*.a *.o *.i core
+clean: mostlyclean
+distclean: clean
+	$(RM) GNUmakefile Makefile Makefile.in config.h TAGS
+realclean: distclean
+extraclean: distclean
+	$(RM) *~ \#*
+CONFIG_H = ../src/config.h config.h
+lwlib-Xaw.o:	$(CONFIG_H) lwlib-Xaw.h lwlib-internal.h lwlib.h xlwmenu.h xlwradio.h \
+xlwgauge.h xlwcheckbox.h
+lwlib-Xlw.o:	$(CONFIG_H) lwlib-Xlw.h lwlib-internal.h lwlib.h xlwmenu.h xlwscrollbar.h \
+xlwtabs.h xlwgcs.h
+lwlib-Xm.o:	$(CONFIG_H) lwlib-Xm.h lwlib-internal.h lwlib-utils.h lwlib.h xlwmenu.h
+lwlib-utils.o:	$(CONFIG_H) lwlib-utils.h
+lwlib.o:	$(CONFIG_H) lwlib-Xaw.h lwlib-Xlw.h lwlib-Xm.h lwlib-internal.h lwlib-utils.h lwlib.h xlwmenu.h
+xlwmenu.o:	$(CONFIG_H) lwlib.h xlwmenu.h xlwmenuP.h
+xlwscrollbar.o:	$(CONFIG_H) xlwscrollbar.h xlwscrollbarP.h
+xlwtabs.o:	$(CONFIG_H) xlwtabs.h xlwtabsP.h
+xlwradio.o:	$(CONFIG_H) xlwradio.h xlwradioP.h
+xlwcheckbox.o:	$(CONFIG_H) xlwcheckbox.h xlwcheckboxP.h
+xlwgauge.o:	$(CONFIG_H) xlwgauge.h xlwgaugeP.h
+xlwgcs.o:	$(CONFIG_H) xlwgcs.h
diff --text -u /dev/null 'xemacs-21.5.3/lwlib/Makefile'
Index: ././lwlib/Makefile
--- ././lwlib/Makefile	Thu Jan  1 09:00:00 1970
+++ ././lwlib/Makefile	Fri Sep  7 18:15:55 2001
@@ -0,0 +1,51 @@
+.SUFFIXES:
+.SUFFIXES: .c .h .o .i .s
+srcdir=/playpen/mozilla/XEmacs/xemacs-21.5.3/lwlib
+SHELL=/bin/sh
+RM = rm -f
+AR = ar cq
+CC=gcc
+CPP=gcc -E
+CFLAGS=-g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare
+CPPFLAGS=
+RANLIB=ranlib
+VPATH=/playpen/mozilla/XEmacs/xemacs-21.5.3/lwlib
+objs = lwlib.o lwlib-utils.o  lwlib-Xm.o xlwmenu.o xlwscrollbar.o xlwtabs.o xlwgcs.o lwlib-Xlw.o
+all: liblw.a
+c_switch_all=-DHAVE_CONFIG_H -I/usr/X11R6/include
+cppflags = $(CPPFLAGS) -I. $(c_switch_all)
+cflags = $(CFLAGS) $(cppflags)
+.c.o:
+	$(CC) -c $(cflags) $<
+.c.i:
+	$(CC) -E $(cppflags) -o $@ $<
+.c.s:
+	$(CC) -S -c $(cflags) $<
+liblw.a: $(objs)
+	$(RM) $@
+	$(AR) $@ $(objs)
+	@-test -n "$(RANLIB)" && $(RANLIB) $@
+.PHONY: mostlyclean clean distclean realclean extraclean
+mostlyclean:
+	$(RM) liblw.a liblw_pure_*.a *.o *.i core
+clean: mostlyclean
+distclean: clean
+	$(RM) GNUmakefile Makefile Makefile.in config.h TAGS
+realclean: distclean
+extraclean: distclean
+	$(RM) *~ \#*
+CONFIG_H = ../src/config.h config.h
+lwlib-Xaw.o:	$(CONFIG_H) lwlib-Xaw.h lwlib-internal.h lwlib.h xlwmenu.h xlwradio.h \
+xlwgauge.h xlwcheckbox.h
+lwlib-Xlw.o:	$(CONFIG_H) lwlib-Xlw.h lwlib-internal.h lwlib.h xlwmenu.h xlwscrollbar.h \
+xlwtabs.h xlwgcs.h
+lwlib-Xm.o:	$(CONFIG_H) lwlib-Xm.h lwlib-internal.h lwlib-utils.h lwlib.h xlwmenu.h
+lwlib-utils.o:	$(CONFIG_H) lwlib-utils.h
+lwlib.o:	$(CONFIG_H) lwlib-Xaw.h lwlib-Xlw.h lwlib-Xm.h lwlib-internal.h lwlib-utils.h lwlib.h xlwmenu.h
+xlwmenu.o:	$(CONFIG_H) lwlib.h xlwmenu.h xlwmenuP.h
+xlwscrollbar.o:	$(CONFIG_H) xlwscrollbar.h xlwscrollbarP.h
+xlwtabs.o:	$(CONFIG_H) xlwtabs.h xlwtabsP.h
+xlwradio.o:	$(CONFIG_H) xlwradio.h xlwradioP.h
+xlwcheckbox.o:	$(CONFIG_H) xlwcheckbox.h xlwcheckboxP.h
+xlwgauge.o:	$(CONFIG_H) xlwgauge.h xlwgaugeP.h
+xlwgcs.o:	$(CONFIG_H) xlwgcs.h
diff --text -u /dev/null 'xemacs-21.5.3/lwlib/Makefile.in'
Index: ././lwlib/Makefile.in
--- ././lwlib/Makefile.in	Thu Jan  1 09:00:00 1970
+++ ././lwlib/Makefile.in	Fri Sep  7 18:15:49 2001
@@ -0,0 +1,112 @@
+# Generated automatically from Makefile.in.in by configure.
+##   Makefile for Lucid Widget Library
+##   Copyright (C) 1994 Lucid, Inc.
+##   Copyright (C) 1995 Tinker Systems and INS Engineering Corp.
+##   Copyright (C) 1994, 1995 Board of Trustees, University of Illinois
+##   Copyright (C) 1996, 1997 Sun Microsystems, Inc.
+
+## This file is part of the Lucid Widget Library.
+
+## The Lucid Widget Library 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.
+
+## The Lucid Widget Library 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 XEmacs; see the file COPYING.  If not, write to
+## the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+## Boston, MA 02111-1307, USA.
+
+## For performance and consistency, no built-in rules
+.SUFFIXES:
+.SUFFIXES: .c .h .o .i .s
+
+srcdir=/playpen/mozilla/XEmacs/xemacs-21.5.3/lwlib
+
+
+SHELL=/bin/sh
+RM = rm -f
+AR = ar cq
+
+CC=gcc
+CPP=gcc -E
+CFLAGS=-g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare
+CPPFLAGS=
+RANLIB=ranlib
+
+#define NOT_C_CODE
+#include "../src/config.h"
+
+#ifdef USE_GNU_MAKE
+vpath %.c /playpen/mozilla/XEmacs/xemacs-21.5.3/lwlib
+vpath %.h /playpen/mozilla/XEmacs/xemacs-21.5.3/lwlib
+#else
+VPATH=/playpen/mozilla/XEmacs/xemacs-21.5.3/lwlib
+#endif
+
+objs = lwlib.o lwlib-utils.o  lwlib-Xm.o xlwmenu.o xlwscrollbar.o xlwtabs.o xlwgcs.o lwlib-Xlw.o
+
+all: liblw.a
+
+c_switch_all=-DHAVE_CONFIG_H -I/usr/X11R6/include
+
+cppflags = $(CPPFLAGS) -I. $(c_switch_all)
+cflags = $(CFLAGS) $(cppflags)
+
+#ifdef SOLARIS2
+%.o : %.c
+#else
+.c.o:
+#endif
+	$(CC) -c $(cflags) $<
+
+## Create preprocessor output (debugging purposes only)
+.c.i:
+#ifdef __GNUC__
+	$(CC) -E $(cppflags) -o $@ $<
+#else /* works on Solaris; what about other systems? */
+	$(CC) -P $(cppflags) $<
+#endif /* compiler */
+
+## Create assembler output (debugging purposes only)
+.c.s:
+	$(CC) -S -c $(cflags) $<
+
+liblw.a: $(objs)
+	$(RM) $@
+	$(AR) $@ $(objs)
+	@-test -n "$(RANLIB)" && $(RANLIB) $@
+
+.PHONY: mostlyclean clean distclean realclean extraclean
+mostlyclean:
+	$(RM) liblw.a liblw_pure_*.a *.o *.i core
+clean: mostlyclean
+distclean: clean
+	$(RM) GNUmakefile Makefile Makefile.in config.h TAGS
+realclean: distclean
+extraclean: distclean
+	$(RM) *~ \#*
+
+CONFIG_H = ../src/config.h config.h
+
+## Following correct as of 19980312
+
+lwlib-Xaw.o:	$(CONFIG_H) lwlib-Xaw.h lwlib-internal.h lwlib.h xlwmenu.h xlwradio.h \
+xlwgauge.h xlwcheckbox.h
+lwlib-Xlw.o:	$(CONFIG_H) lwlib-Xlw.h lwlib-internal.h lwlib.h xlwmenu.h xlwscrollbar.h \
+xlwtabs.h xlwgcs.h
+lwlib-Xm.o:	$(CONFIG_H) lwlib-Xm.h lwlib-internal.h lwlib-utils.h lwlib.h xlwmenu.h
+lwlib-utils.o:	$(CONFIG_H) lwlib-utils.h
+lwlib.o:	$(CONFIG_H) lwlib-Xaw.h lwlib-Xlw.h lwlib-Xm.h lwlib-internal.h lwlib-utils.h lwlib.h xlwmenu.h
+xlwmenu.o:	$(CONFIG_H) lwlib.h xlwmenu.h xlwmenuP.h
+xlwscrollbar.o:	$(CONFIG_H) xlwscrollbar.h xlwscrollbarP.h
+xlwtabs.o:	$(CONFIG_H) xlwtabs.h xlwtabsP.h
+xlwradio.o:	$(CONFIG_H) xlwradio.h xlwradioP.h
+xlwcheckbox.o:	$(CONFIG_H) xlwcheckbox.h xlwcheckboxP.h
+xlwgauge.o:	$(CONFIG_H) xlwgauge.h xlwgaugeP.h
+xlwgcs.o:	$(CONFIG_H) xlwgcs.h
diff --text -u /dev/null 'xemacs-21.5.3/lwlib/config.h'
Index: ././lwlib/config.h
--- ././lwlib/config.h	Thu Jan  1 09:00:00 1970
+++ ././lwlib/config.h	Fri Sep  7 18:15:55 2001
@@ -0,0 +1,47 @@
+/* lwlib/config.h.  Generated automatically by configure.  */
+/* Lwlib site configuration template file.  -*- C -*-
+   Copyright (C) 1997 Sun Microsystems, Inc.
+
+This file is part of XEmacs.
+
+XEmacs 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.
+
+XEmacs 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 XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Not in FSF. */
+
+#ifndef _LWLIB_CONFIG_H_
+#define _LWLIB_CONFIG_H_
+
+#include "../src/config.h"
+
+#define NEED_MOTIF 1
+/* #undef NEED_ATHENA */
+#define NEED_LUCID 1
+
+/* The exact path to the Athena header files depends on which `flavor'
+   of Athena is being used - hence configure defines them for us. */
+
+/* #undef ATHENA_Scrollbar_h_ */
+/* #undef ATHENA_Dialog_h_ */
+/* #undef ATHENA_Form_h_ */
+/* #undef ATHENA_Command_h_ */
+/* #undef ATHENA_Label_h_ */
+/* #undef ATHENA_LabelP_h_ */
+/* #undef ATHENA_Toggle_h_ */
+/* #undef ATHENA_ToggleP_h_ */
+/* #undef ATHENA_AsciiText_h_ */
+/* #undef ATHENA_XawInit_h_ */
+
+#endif /* _LWLIB_CONFIG_H_ */
diff --text -u 'xemacs-21.5.2/lwlib/lwlib-Xlw.c' 'xemacs-21.5.3/lwlib/lwlib-Xlw.c'
Index: ././lwlib/lwlib-Xlw.c
--- ././lwlib/lwlib-Xlw.c	Sat Jul 28 14:08:58 2001
+++ ././lwlib/lwlib-Xlw.c	Mon Aug 13 13:45:57 2001
@@ -432,7 +432,7 @@
   children = XtCompositeChildren (widget, &num_children);
   if (children)
     {
-      for (i = 0, cur = val->contents; i < num_children; i++)
+      for (i = 0, cur = val->contents; i < (int) num_children; i++)
 	{
 	  if (!cur)
 	    abort ();
diff --text -u 'xemacs-21.5.2/lwlib/lwlib-utils.c' 'xemacs-21.5.3/lwlib/lwlib-utils.c'
Index: ././lwlib/lwlib-utils.c
--- ././lwlib/lwlib-utils.c	Sat Apr 28 16:48:42 2001
+++ ././lwlib/lwlib-utils.c	Mon Aug 13 13:45:57 2001
@@ -119,16 +119,17 @@
     {
       CompositeWidget cw = (CompositeWidget)w;
       int i;
-      for (i = 0; i < cw->composite.num_children; i++)
-	if (XtIsWidget (cw->composite.children [i])){
-	  result = proc (cw->composite.children [i], arg);
-	  if (result)
-	    return result;
-	  result = XtApplyUntilToWidgets (cw->composite.children [i], proc,
-					  arg);
-	  if (result)
-	    return result;
-	}
+      for (i = 0; i < (int) cw->composite.num_children; i++)
+	if (XtIsWidget (cw->composite.children[i]))
+	  {
+	    result = proc (cw->composite.children[i], arg);
+	    if (result)
+	      return result;
+	    result = XtApplyUntilToWidgets (cw->composite.children[i], proc,
+					    arg);
+	    if (result)
+	      return result;
+	  }
     }
   return NULL;
 }
diff --text -u 'xemacs-21.5.2/lwlib/xlwgauge.c' 'xemacs-21.5.3/lwlib/xlwgauge.c'
Index: ././lwlib/xlwgauge.c
--- ././lwlib/xlwgauge.c	Fri Apr 13 03:21:53 2001
+++ ././lwlib/xlwgauge.c	Mon Aug 13 13:45:57 2001
@@ -837,8 +837,8 @@
 	}
 
 	/* need to rescale? */
-	if(( gw->gauge.autoScaleUp && value > gw->gauge.v1) ||
-	   (gw->gauge.autoScaleDown && value < gw->gauge.v1/3 ))
+	if(( gw->gauge.autoScaleUp && (int) value > gw->gauge.v1) ||
+	   (gw->gauge.autoScaleDown && (int) value < gw->gauge.v1/3 ))
 	{
 	  XtVaSetValues(w, XtNvalue, value, 0) ;
 	  return ;
@@ -895,10 +895,10 @@
 
 	if( vd <= 0 ) vd = 1 ;
 
-	if( val0 < v0 ) val0 = v0 ;
-	else if( val0 > v1 ) val0 = v1 ;
-	if( val1 < v0 ) val1 = v0 ;
-	else if( val1 > v1 ) val1 = v1 ;
+	if( (int) val0 < v0 ) val0 = v0 ;
+	else if( (int) val0 > v1 ) val0 = v1 ;
+	if( (int) val1 < v0 ) val1 = v0 ;
+	else if( (int) val1 > v1 ) val1 = v1 ;
 
 	p0 = (val0-v0)*(e1-e0-1)/vd ;
 	p1 = (val1-v0)*(e1-e0-1)/vd ;
diff --text -u 'xemacs-21.5.2/lwlib/xlwmenu.c' 'xemacs-21.5.3/lwlib/xlwmenu.c'
Index: ././lwlib/xlwmenu.c
--- ././lwlib/xlwmenu.c	Fri Apr 13 03:21:54 2001
+++ ././lwlib/xlwmenu.c	Mon Aug 13 13:45:58 2001
@@ -348,7 +348,8 @@
 {
   return
     reference_time &&
-    (ev->xbutton.time - reference_time < XtGetMultiClickTime (XtDisplay (w)));
+    ((int) (ev->xbutton.time - reference_time) <
+     XtGetMultiClickTime (XtDisplay (w)));
 }
 
 /* Size code */
diff --text -u 'xemacs-21.5.2/lwlib/xlwtabs.c' 'xemacs-21.5.3/lwlib/xlwtabs.c'
Index: ././lwlib/xlwtabs.c
--- ././lwlib/xlwtabs.c	Fri Apr 13 03:21:56 2001
+++ ././lwlib/xlwtabs.c	Mon Aug 13 13:45:58 2001
@@ -626,7 +626,7 @@
 
 	  /* Tab size has changed.  Resize all tabs and request a new size */
 	  for(i=0, childP=tw->composite.children;
-		i < tw->composite.num_children;
+		i < (int) tw->composite.num_children;
 		++i, ++childP)
 	    if( XtIsManaged(*childP) )
 	      TabWidth(*childP) ;
@@ -667,7 +667,7 @@
 	    XtVaSetValues(w, XmNtraversalOn, True, 0) ;
 #endif
 
-	    if( tab->tabs.row != tw->tabs.numRows-1 )
+	    if( tab->tabs.row != (int) tw->tabs.numRows-1 )
 	      TabsShuffleRows(tw) ;
 
 	    needRedraw = True ;
@@ -1066,7 +1066,7 @@
 	 * widget to be top of stacking order with XawTabsSetTop().
 	 */
 	for(i=0, childP=tw->composite.children;
-	      i < TabsNumChildren (tw);
+	      i < (int) TabsNumChildren (tw);
 	      ++i, ++childP)
 	  if( TabVisible(*childP) )
 	  {
@@ -1392,7 +1392,7 @@
 	 */
 
 	y = tw->tabs.numRows == 1 ? TABDELTA : 0 ;
-	for(i=0; i<tw->tabs.numRows; ++i, y += th)
+	for(i=0; i < (int) tw->tabs.numRows; ++i, y += th)
 	{
  	  for( j=TabsNumChildren (tw), childP=tw->composite.children;
   	      --j >= 0; ++childP )
@@ -1402,7 +1402,7 @@
 	      if( tab->tabs.row == i && *childP != tw->tabs.topWidget )
 		DrawTab(tw, *childP, labels) ;
 	    }
-	  if( i != tw->tabs.numRows -1 )
+	  if( i != (int) tw->tabs.numRows -1 )
 	    DrawTrim(tw, 0,y+th, tw->core.width, th+s, False,False) ;
 	}
 
diff --text -u 'xemacs-21.5.2/man/ChangeLog' 'xemacs-21.5.3/man/ChangeLog'
Index: ././man/ChangeLog
--- ././man/ChangeLog	Sat Jul 28 16:48:22 2001
+++ ././man/ChangeLog	Fri Sep  7 18:13:26 2001
@@ -1,3 +1,12 @@
+2001-09-07  Stephen J. Turnbull  <stephen@xemacs.org>
+
+	* XEmacs 21.5.3 "asparagus" is released.
+
+2001-08-26  Stephen J. Turnbull  <stephen@xemacs.org>
+
+	* widget.texi (Basic Types, Defining New Widgets):
+	Distinguish between :action and :notify.
+
 2001-07-28  Stephen J. Turnbull  <stephen@xemacs.org>
 
 	* XEmacs 21.5.2 "artichoke" is released.
diff --text -u 'xemacs-21.5.2/man/widget.texi' 'xemacs-21.5.3/man/widget.texi'
Index: ././man/widget.texi
--- ././man/widget.texi	Fri Apr 13 03:22:04 2001
+++ ././man/widget.texi	Sun Aug 26 19:25:14 2001
@@ -542,7 +542,9 @@
 The function is called with two or three arguments.  The first argument
 is the widget itself, the second argument is the widget that was
 changed, and the third argument is the event leading to the change, if
-any. 
+any.  In editable fields, this includes all insertions, deletions,
+@emph{etc}.  To watch only for ``final'' actions, redefine the
+@code{:action} callback.
 
 @item :menu-tag
 Tag used in the menu when the widget is used as an option in a
@@ -1469,7 +1471,9 @@
 
 @item :action
 Function to handle user initiated events.  By default, @code{:notify}
-the parent. 
+the parent.  Actions normally do not include mere edits, but refer to
+things like invoking buttons or hitting enter in an editable field.  To
+watch for any change, redefine the @code{:notify} callback.
 
 The following predefined function can be used here:
 
diff --text -u 'xemacs-21.5.2/man/xemacs-faq.texi' 'xemacs-21.5.3/man/xemacs-faq.texi'
Index: ././man/xemacs-faq.texi
--- ././man/xemacs-faq.texi	Tue Jul  3 06:00:02 2001
+++ ././man/xemacs-faq.texi	Mon Aug 13 13:45:59 2001
@@ -7,7 +7,7 @@
 @finalout
 @titlepage
 @title XEmacs FAQ
-@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2001/07/02 21:00:02 $
+@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2001/08/13 04:45:59 $
 @sp 1
 @author Tony Rossini <rossini@@biostat.washington.edu>
 @author Ben Wing <ben@@xemacs.org>
diff --text -u 'xemacs-21.5.2/netinstall/ChangeLog' 'xemacs-21.5.3/netinstall/ChangeLog'
Index: ././netinstall/ChangeLog
--- ././netinstall/ChangeLog	Sat Jul 28 16:48:22 2001
+++ ././netinstall/ChangeLog	Fri Sep  7 18:13:26 2001
@@ -1,3 +1,7 @@
+2001-09-07  Stephen J. Turnbull  <stephen@xemacs.org>
+
+	* XEmacs 21.5.3 "asparagus" is released.
+
 2001-07-28  Stephen J. Turnbull  <stephen@xemacs.org>
 
 	* XEmacs 21.5.2 "artichoke" is released.
diff --text -u 'xemacs-21.5.2/nt/ChangeLog' 'xemacs-21.5.3/nt/ChangeLog'
Index: ././nt/ChangeLog
--- ././nt/ChangeLog	Sat Jul 28 16:48:22 2001
+++ ././nt/ChangeLog	Fri Sep  7 18:13:26 2001
@@ -1,3 +1,12 @@
+2001-09-07  Stephen J. Turnbull  <stephen@xemacs.org>
+
+	* XEmacs 21.5.3 "asparagus" is released.
+
+2001-06-24  Ben Wing  <ben@xemacs.org>
+
+	* config.h:
+	Turn sign-compare warnings back on.
+
 2001-07-28  Stephen J. Turnbull  <stephen@xemacs.org>
 
 	* XEmacs 21.5.2 "artichoke" is released.
diff --text -u 'xemacs-21.5.2/nt/config.h' 'xemacs-21.5.3/nt/config.h'
Index: ././nt/config.h
--- ././nt/config.h	Fri Apr 13 03:22:59 2001
+++ ././nt/config.h	Mon Aug 13 13:46:03 2001
@@ -609,7 +609,7 @@
 #if (_MSC_VER >= 800)
 
 /* 'expression' : signed/unsigned mismatch */
-#pragma warning ( disable : 4018 )
+/* #pragma warning ( disable : 4018 ) */
 /* unnamed type definition in parentheses
   (Martin added a pedantically correct definition of ALIGNOF, which
   generates temporary anonymous structures, and MSVC complains) */
diff --text -u 'xemacs-21.5.2/nt/installer/Wise/ChangeLog' 'xemacs-21.5.3/nt/installer/Wise/ChangeLog'
Index: ././nt/installer/Wise/ChangeLog
--- ././nt/installer/Wise/ChangeLog	Sat Jul 28 16:48:22 2001
+++ ././nt/installer/Wise/ChangeLog	Fri Sep  7 18:13:26 2001
@@ -1,3 +1,7 @@
+2001-09-07  Stephen J. Turnbull  <stephen@xemacs.org>
+
+	* XEmacs 21.5.3 "asparagus" is released.
+
 2001-07-28  Stephen J. Turnbull  <stephen@xemacs.org>
 
 	* XEmacs 21.5.2 "artichoke" is released.
diff --text -u 'xemacs-21.5.2/src/ChangeLog' 'xemacs-21.5.3/src/ChangeLog'
Index: ././src/ChangeLog
--- ././src/ChangeLog	Sat Jul 28 16:48:22 2001
+++ ././src/ChangeLog	Fri Sep  7 18:13:26 2001
@@ -1,3 +1,593 @@
+2001-09-07  Stephen J. Turnbull  <stephen@xemacs.org>
+
+	* XEmacs 21.5.3 "asparagus" is released.
+
+2001-04-19  Glynn Clements  <glynn.clements@virgin.net>
+
+	* input-method-motif.c (XIM_delete_frame): New callback.
+	(XIM_init_frame): Register it.
+
+2001-08-24  Stephen J. Turnbull  <stephen@xemacs.org>
+
+	* buffer.h (valid_char_p): Make negative integers invalid again.
+
+2001-08-13  Ben Wing  <ben@xemacs.org>
+
+	* regex.c: need to include stddef.h for ptrdiff_t on Solaris, when
+	regex.c is compiled as part of lib-src.
+
+2001-06-24  Ben Wing  <ben@xemacs.org>
+
+	* EmacsFrame.c (EmacsFrameSetValues):
+	* alloc.c:
+	* alloc.c (xmalloc):
+	* alloc.c (xcalloc):
+	* alloc.c (xmalloc_and_zero):
+	* alloc.c (xrealloc):
+	* alloc.c (deadbeef_memory):
+	* alloc.c (allocate_lisp_storage):
+	* alloc.c (alloc_lcrecord):
+	* alloc.c (Fmake_list):
+	* alloc.c (size_vector):
+	* alloc.c (vector_hash):
+	* alloc.c (make_vector_internal):
+	* alloc.c (make_vector):
+	* alloc.c (make_bit_vector_internal):
+	* alloc.c (make_bit_vector):
+	* alloc.c (make_bit_vector_from_byte_vector):
+	* alloc.c (Fmake_string):
+	* alloc.c (make_lcrecord_list):
+	* alloc.c (GC_CHECK_LHEADER_INVARIANTS):
+	* alloc.c (tick_lcrecord_stats):
+	* alloc.c (sweep_strings):
+	* alloc.c (UNMARK_string):
+	* alloc.c (ADDITIONAL_FREE_string):
+	* alloc.c (garbage_collect_1):
+	* alloc.c (Fgarbage_collect):
+	* alloc.c (malloced_storage_size):
+	* alloc.c (fixed_type_block_overhead):
+	* backtrace.h:
+	* backtrace.h (SPECPDL_RESERVE):
+	* blocktype.c (Blocktype_newf):
+	* blocktype.h:
+	* blocktype.h (Blocktype_declare):
+	* buffer.c:
+	* buffer.c (compute_buffer_text_usage):
+	* buffer.c (DEFVAR_BUFFER_LOCAL_1):
+	* buffer.h (struct buffer_text):
+	* buffer.h (MAP_INDIRECT_BUFFERS):
+	* buffer.h (valid_char_p):
+	* buffer.h (union):
+	* buffer.h (bufbyte_memcmp):
+	* bytecode.c (optimize_byte_code):
+	* bytecode.c (compiled_function_hash):
+	* callproc.c (Fold_call_process_internal):
+	* chartab.c (char_table_entry_hash):
+	* chartab.c (char_table_hash):
+	* chartab.c (check_category_char):
+	* chartab.c (Fcheck_category_at):
+	* chartab.c (Fchar_in_category_p):
+	* chartab.h:
+	* console-x.c (x_semi_canonicalize_console_connection):
+	* console.h (struct console_methods):
+	* data.c (Faref):
+	* data.c (Faset):
+	* data.c (weak_list_hash):
+	* device-msw.c (msprinter_init_device):
+	* device-msw.c (Fmsprinter_select_settings):
+	* device-msw.c (hash_devmode):
+	* device-msw.c (Fmswindows_printer_list):
+	* device-x.c (validify_resource_component):
+	* device-x.c (Fx_put_resource):
+	* dialog-msw.c:
+	* dialog-msw.c (dialog_proc):
+	* dialog-msw.c (button_width):
+	* dialog-msw.c (ALIGN_TEMPLATE):
+	* dialog-msw.c (handle_question_dialog_box):
+	* dired.c (struct user_name):
+	* dired.c (user_name_completion):
+	* doc.c (get_doc_string):
+	* doc.c (Fsnarf_documentation):
+	* doprnt.c (parse_off_posnum):
+	* doprnt.c (emacs_doprnt_1):
+	* dumper.c:
+	* dumper.c (struct):
+	* dumper.c (dump_add_opaque):
+	* dumper.c (pdump_align_stream):
+	* dumper.c (pdump_size_to_align):
+	* dumper.c (pdump_entry_list_elt):
+	* dumper.c (pdump_add_entry):
+	* dumper.c (pdump_get_indirect_count):
+	* dumper.c (pdump_register_sub):
+	* dumper.c (pdump_dump_data):
+	* dumper.c (pdump_reloc_one):
+	* dumper.c (pdump_allocate_offset):
+	* dumper.c (pdump_dump_root_struct_ptrs):
+	* dumper.c (pdump_dump_root_objects):
+	* dumper.c (pdump_load_finish):
+	* dumper.c (pdump_resource_get):
+	* dumper.c (pdump_file_get):
+	* dynarr.c (Dynarr_memory_usage):
+	* editfns.c (Fformat_time_string):
+	* editfns.c (Fcurrent_time_string):
+	* eldap.c (Fldap_add):
+	* eldap.c (Fldap_modify):
+	* elhash.c:
+	* elhash.c (struct Lisp_Hash_Table):
+	* elhash.c (lisp_string_hash):
+	* elhash.c (lisp_object_eql_hash):
+	* elhash.c (lisp_object_equal_hash):
+	* elhash.c (hash_table_hash):
+	* elhash.c (print_hash_table):
+	* elhash.c (compute_hash_table_derived_values):
+	* elhash.c (make_standard_lisp_hash_table):
+	* elhash.c (make_general_lisp_hash_table):
+	* elhash.c (make_lisp_hash_table):
+	* elhash.c (decode_hash_table_size):
+	* elhash.c (resize_hash_table):
+	* elhash.c (enlarge_hash_table):
+	* elhash.c (remhash_1):
+	* elhash.c (internal_array_hash):
+	* elhash.c (internal_hash):
+	* elhash.h:
+	* emacs.c:
+	* eval.c (grow_specpdl):
+	* event-Xt.c (x_event_to_emacs_event):
+	* event-msw.c:
+	* event-msw.c (ntpipe_slurp_reader):
+	* event-msw.c (ntpipe_shove_writer):
+	* event-msw.c (struct winsock_stream):
+	* event-msw.c (winsock_reader):
+	* event-msw.c (winsock_writer):
+	* event-msw.c (mswindows_need_event):
+	* event-msw.c (assert):
+	* event-msw.c (mswindows_current_layout_has_AltGr):
+	* event-msw.c (debug_output_mswin_message):
+	* events.c (event_hash):
+	* extents.c (extent_list_locate):
+	* faces.c (face_hash):
+	* file-coding.c:
+	* file-coding.c (detect_eol_type):
+	* file-coding.c (detect_coding_type):
+	* file-coding.c (determine_real_coding_system):
+	* file-coding.c (Fdetect_coding_region):
+	* file-coding.c (decoding_reader):
+	* file-coding.c (decoding_writer):
+	* file-coding.c (mule_decode):
+	* file-coding.c (Fdecode_coding_region):
+	* file-coding.c (encoding_reader):
+	* file-coding.c (encoding_writer):
+	* file-coding.c (mule_encode):
+	* file-coding.c (Fencode_coding_region):
+	* file-coding.c (detect_coding_sjis):
+	* file-coding.c (decode_coding_sjis):
+	* file-coding.c (encode_coding_sjis):
+	* file-coding.c (DECODE_BIG5):
+	* file-coding.c (ENCODE_BIG5):
+	* file-coding.c (detect_coding_big5):
+	* file-coding.c (decode_coding_big5):
+	* file-coding.c (encode_coding_big5):
+	* file-coding.c (Fset_ucs_char):
+	* file-coding.c (detect_coding_ucs4):
+	* file-coding.c (decode_coding_ucs4):
+	* file-coding.c (encode_coding_ucs4):
+	* file-coding.c (detect_coding_utf8):
+	* file-coding.c (decode_coding_utf8):
+	* file-coding.c (encode_coding_utf8):
+	* file-coding.c (detect_coding_iso2022):
+	* file-coding.c (decode_coding_iso2022):
+	* file-coding.c (iso2022_designate):
+	* file-coding.c (encode_coding_iso2022):
+	* file-coding.c (decode_coding_no_conversion):
+	* file-coding.c (encode_coding_no_conversion):
+	* fileio.c (read_allowing_quit):
+	* fileio.c (write_allowing_quit):
+	* filelock.c (struct):
+	* filelock.c (LOCK_PID_MAX):
+	* filelock.c (fill_in_lock_file_name):
+	* filelock.c (lock_file_1):
+	* filelock.c (lock_file):
+	* floatfns.c (float_hash):
+	* fns.c (print_bit_vector):
+	* fns.c (bit_vector_hash):
+	* fns.c (size_bit_vector):
+	* fns.c (Flength):
+	* fns.c (Fsafe_length):
+	* fns.c (copy_list):
+	* fns.c (Fnthcdr):
+	* fns.c (Ffillarray):
+	* fns.c (bytecode_nconc2):
+	* fns.c (Fnconc):
+	* fns.c (mapcar1):
+	* fns.c (Fmapcar):
+	* fns.c (Fmapvector):
+	* fns.c (XMALLOC_OR_ALLOCA):
+	* font-lock.c:
+	* font-lock.c (SYNTAX_END_STYLE):
+	* font-lock.c (SINGLE_SYNTAX_STYLE):
+	* font-lock.c (find_context):
+	* frame-x.c (x_set_initial_frame_size):
+	* frame-x.c (Fcde_start_drag_internal):
+	* frame-x.c (Foffix_start_drag_internal):
+	* frame.h (struct frame):
+	* getloadavg.c:
+	* getloadavg.c (getloadavg):
+	* gif_io.c (GifStdRead):
+	* gif_io.c (GifStdWrite):
+	* gif_io.c (GifRead):
+	* gif_io.c (GifWrite):
+	* gifrlib.h:
+	* glyphs-eimage.c (message):
+	* glyphs-eimage.c (our_skip_input_data):
+	* glyphs-eimage.c (jpeg_memory_src):
+	* glyphs-eimage.c (gif_instantiate_unwind):
+	* glyphs-eimage.c (gif_read_from_memory):
+	* glyphs-eimage.c (gif_memory_close):
+	* glyphs-eimage.c (gif_error_func):
+	* glyphs-eimage.c (png_read_from_memory):
+	* glyphs-eimage.c (tiff_memory_read):
+	* glyphs-eimage.c (tiff_memory_write):
+	* glyphs-eimage.c (tiff_memory_seek):
+	* glyphs-eimage.c (tiff_memory_close):
+	* glyphs-eimage.c (tiff_map_noop):
+	* glyphs-eimage.c (tiff_unmap_noop):
+	* glyphs-eimage.c (tiff_memory_size):
+	* glyphs-eimage.c (tiff_error_func):
+	* glyphs-eimage.c (tiff_warning_func):
+	* glyphs-msw.c (xpm_to_eimage):
+	* glyphs-msw.c (mswindows_resource_instantiate):
+	* glyphs-msw.c (xbm_create_bitmap_from_data):
+	* glyphs-msw.c (mswindows_image_instance_hash):
+	* glyphs-shared.c (read_bitmap_data):
+	* glyphs-shared.c (read_bitmap_data_from_file):
+	* glyphs-x.c (x_image_instance_hash):
+	* glyphs-x.c (write_lisp_string_to_temp_file):
+	* glyphs-x.c (check_pointer_sizes):
+	* glyphs-x.c (x_xpm_instantiate):
+	* glyphs-x.c (x_subwindow_instantiate):
+	* glyphs.c (image_instance_hash):
+	* glyphs.c (bitmap_to_lisp_data):
+	* glyphs.c (instantiator_eq_hash):
+	* glyphs.c (glyph_hash):
+	* glyphs.h:
+	* glyphs.h (INITIALIZE_DEVICE_IIFORMAT):
+	* glyphs.h (struct Lisp_Image_Instance):
+	* glyphs.h (struct expose_ignore):
+	* gmalloc.c (_free_internal):
+	* gpmevent.c (tty_get_foreign_selection):
+	* gui-x.c (add_accel_and_to_external):
+	* gui.c (gui_item_display_flush_left):
+	* gui.c (gui_item_display_flush_right):
+	* gui.c (gui_item_hash):
+	* gui.h:
+	* hash.c:
+	* hash.c (memory_hash):
+	* hash.c (string_hash):
+	* hash.c (hash_table_size):
+	* hash.c (gethash):
+	* hash.c (make_hash_table):
+	* hash.c (make_general_hash_table):
+	* hash.c (grow_hash_table):
+	* hash.c (puthash):
+	* hash.c (rehash):
+	* hash.c (remhash):
+	* hash.h:
+	* hash.h (struct hash_table):
+	* hftctl.c (RD_BUF):
+	* imgproc.c (build_EImage_quantable):
+	* insdel.c (bytecount_to_charcount):
+	* keymap.c:
+	* keymap.c (make_keymap):
+	* keymap.c (relevant_map_push):
+	* line-number.c (insert_invalidate_line_number_cache):
+	* linuxplay.c (linux_play_data_or_file):
+	* lisp.h:
+	* lisp.h (DO_REALLOC):
+	* lisp.h (struct Lisp_Bit_Vector):
+	* lisp.h (bit_vector_bit):
+	* lisp.h (set_bit_vector_bit):
+	* lisp.h (struct lcrecord_list):
+	* lisp.h (struct overhead_stats):
+	* lrecord.h:
+	* lrecord.h (struct lrecord_implementation):
+	* lrecord.h (lrecord_description_type):
+	* lrecord.h (struct lrecord_description):
+	* lrecord.h (struct struct_description):
+	* lrecord.h (MAKE_EXTERNAL_LRECORD_IMPLEMENTATION):
+	* lrecord.h (RECORD_TYPEP):
+	* lrecord.h (DECLARE_EXTERNAL_LRECORD):
+	* lstream.c:
+	* lstream.c (aligned_sizeof_lstream):
+	* lstream.c (sizeof_lstream):
+	* lstream.c (Lstream_flush_out):
+	* lstream.c (Lstream_adding):
+	* lstream.c (Lstream_write_1):
+	* lstream.c (Lstream_write):
+	* lstream.c (Lstream_raw_read):
+	* lstream.c (Lstream_read_more):
+	* lstream.c (Lstream_read):
+	* lstream.c (Lstream_unread):
+	* lstream.c (Lstream_fputc):
+	* lstream.c (stdio_reader):
+	* lstream.c (stdio_writer):
+	* lstream.c (filedesc_reader):
+	* lstream.c (filedesc_writer):
+	* lstream.c (lisp_string_reader):
+	* lstream.c (struct fixed_buffer_stream):
+	* lstream.c (make_fixed_buffer_input_stream):
+	* lstream.c (make_fixed_buffer_output_stream):
+	* lstream.c (fixed_buffer_reader):
+	* lstream.c (fixed_buffer_writer):
+	* lstream.c (struct resizing_buffer_stream):
+	* lstream.c (resizing_buffer_writer):
+	* lstream.c (dynarr_writer):
+	* lstream.c (lisp_buffer_reader):
+	* lstream.c (lisp_buffer_writer):
+	* lstream.h:
+	* lstream.h (lstream_implementation):
+	* lstream.h (struct lstream):
+	* malloc.c:
+	* malloc.c (malloc):
+	* malloc.c (free):
+	* malloc.c (realloc):
+	* md5.c (Fmd5):
+	* menubar-msw.c (displayable_menu_item):
+	* mule-ccl.c (ccl_driver):
+	* mule-charset.c (non_ascii_charptr_copy_char):
+	* mule-charset.c (Lstream_get_emchar_1):
+	* mule-charset.h (struct Lisp_Charset):
+	* mule-charset.h (CHARSET_BY_ATTRIBUTES):
+	* mule-wnnfns.c (m2w):
+	* ntheap.c (recreate_heap):
+	* ntproc.c (find_child_pid):
+	* objects-msw.c (mswindows_string_to_color):
+	* objects-msw.c (mswindows_initialize_color_instance):
+	* objects-msw.c (mswindows_valid_color_name_p):
+	* objects-x.c (x_initialize_font_instance):
+	* objects-x.c (truename_via_FONT_prop):
+	* objects-x.c (x_font_instance_properties):
+	* offix.c (DndDragButtons):
+	* offix.h:
+	* opaque.c (aligned_sizeof_opaque):
+	* opaque.c (sizeof_opaque):
+	* opaque.c (make_opaque):
+	* opaque.c (equal_opaque):
+	* opaque.c (reinit_opaque_once_early):
+	* opaque.h:
+	* opaque.h (Lisp_Opaque):
+	* postgresql.h (message):
+	* process-nt.c (alloc_process_memory):
+	* process-nt.c (run_in_other_process):
+	* process-nt.c (nt_send_process):
+	* process-unix.c (unix_send_process):
+	* rangetab.c (get_range_table):
+	* redisplay-msw.c (mswindows_output_cursor):
+	* redisplay-x.c (x_output_string):
+	* redisplay-x.c (x_output_vertical_divider):
+	* redisplay.c (add_hscroll_rune):
+	* redisplay.c (add_octal_runes):
+	* redisplay.c (add_control_char_runes):
+	* redisplay.c (add_propagation_runes):
+	* redisplay.c (redisplay_window):
+	* redisplay.c (point_in_line_start_cache):
+	* redisplay.c (glyph_to_pixel_translation):
+	* regex.c:
+	* regex.c (init_syntax_once):
+	* regex.c (print_fastmap):
+	* regex.c (print_double_string):
+	* regex.c (struct):
+	* regex.c (PUSH_FAILURE_POINT):
+	* regex.c (POP_FAILURE_POINT):
+	* regex.c (union):
+	* regex.c (SET_REGS_MATCHED):
+	* regex.c (GET_BUFFER_SPACE):
+	* regex.c (regex_compile):
+	* regex.c (compile_range):
+	* regex.c (re_compile_fastmap):
+	* regex.c (re_set_registers):
+	* regex.c (re_search_2):
+	* regex.c (re_match_2_internal):
+	* regex.c (regcomp):
+	* regex.c (regexec):
+	* regex.c (regerror):
+	* regex.h:
+	* regex.h (Element_Count):
+	* regex.h (struct re_pattern_buffer):
+	* regex.h (struct re_registers):
+	* search.c (skip_chars):
+	* select-gtk.c:
+	* select-gtk.c (symbol_to_gtk_atom):
+	* select-gtk.c (atom_to_symbol):
+	* select-gtk.c (PROCESSING_GTK_CODE):
+	* select-gtk.c (emacs_gtk_selection_handle):
+	* select-gtk.c (gtk_get_window_property):
+	* select-gtk.c (receive_incremental_selection):
+	* select-gtk.c (gtk_get_window_property_as_lisp_data):
+	* select-x.c:
+	* select-x.c (symbol_to_x_atom):
+	* select-x.c (PROCESSING_X_CODE):
+	* select-x.c (x_reply_selection_request):
+	* select-x.c (x_handle_selection_request):
+	* select-x.c (copy_multiple_data):
+	* select-x.c (x_get_window_property):
+	* select-x.c (receive_incremental_selection):
+	* select-x.c (x_get_window_property_as_lisp_data):
+	* select-x.c (Fx_get_cutbuffer_internal):
+	* select-x.c (Fx_store_cutbuffer_internal):
+	* sheap.c (report_sheap_usage):
+	* specifier.c (aligned_sizeof_specifier):
+	* specifier.c (sizeof_specifier):
+	* specifier.c (make_specifier_internal):
+	* symbols.c (defsymbol_massage_name_1):
+	* symbols.c (defkeyword_massage_name):
+	* symbols.c (deferror_massage_name_and_message):
+	* sysdep.c (get_eof_char):
+	* sysdep.c (tty_init_sys_modes_on_device):
+	* sysdep.c (init_system_name):
+	* sysdir.h (select):
+	* tests.c (Ftest_data_format_conversion):
+	* tparam.c:
+	* unexaix.c (copy_sym):
+	* unexconvex.c (sptr;):
+	* unexconvex.c (copy_sym):
+	* unexcw.c:
+	* unexcw.c (unexec):
+	* unexcw.c (ALLOC_MASK):
+	* unexcw.c (CHECK_AOUT_POS):
+	* unexcw.c (get_section_info):
+	* unexcw.c (copy_executable_and_dump_data_section):
+	* unexcw.c (dup_file_area):
+	* unexcw.c (write_int_to_bss):
+	* unexec.c (make_hdr):
+	* unexec.c (copy_sym):
+	* window.c (struct window_config):
+	* window.c (mark_window_config):
+	* window.c (sizeof_window_config_for_n_windows):
+	* window.c (sizeof_window_config):
+	* window.c (window_config_equal):
+	* window.c (free_window_configuration):
+	* window.c (Fset_window_configuration):
+	* window.c (count_windows):
+	* window.c (Fcurrent_window_configuration):
+	* window.c (reinit_vars_of_window):
+	* xgccache.c (gc_cache_hash):
+	* xmu.c (XmuCursorNameToIndex):
+	Create types Memory_Count, Element_Count, Hash_Code.  The first
+	two are EMACS_INT, the last EMACS_UINT.  Use them to replace
+	size_t, and to replace int/unsigned int where appropriate
+	(there are probably more such places).
+
+	Eliminate size_t and hashcode_t everywhere except in ancillary
+	code that is borrowed from elsewhere. (Use Memory_Count,
+	Element_Count, Hash_Code, Bytecount, Extcount, or EMACS_INT.)
+	Eliminate use of unsigned everywhere except in the same code, when
+	(a) it holds a simple count (rather than a bit flag and such); (b)
+	it refers to an int or long, not something smaller; (c) it's not
+	necessary specifically to call an external API with such a
+	parameter (we treat such parameters like Extbyte, and convert at
+	the point of entry/exit); and (d) there's no reasonable
+	possibility it will refer to a value greater than 2G, or if it
+	could, other things in XEmacs would break.
+	
+	Put parens around all sizeof args in case we decide to macro-ize
+	this. (I don't think it's necessary.  Now that we've turned
+	sign-compare warnings back on, we will get warnings wherever the
+	unsigned return value of sizeof might cause problems.  That's
+	what the warnings are for, after all.)
+
+	Eliminate dumper type XD_SIZE_T and replace with XD_MEMORY_COUNT,
+	XD_ELEMENT_COUNT, XD_HASH_CODE.
+
+	Rename Lstream_data_count to Lstream_Data_Count, following the
+	capitalization conventions used in other types.
+
+	* elhash.c (hash_table_size):
+	Hash table sizes are signed now, so comment out the two highest
+	(post-2G) numbers in the primes list.
+
+	* event-msw.c (mswindows_current_layout_has_AltGr):
+	Rewrite to be a bit more correct and fix unsigned problems.
+
+	* extents.c (extent_hash):
+	* extents.c (set_extent_glyph):
+	* extents.c (Fset_extent_begin_glyph_layout):
+	* extents.c (Fset_extent_end_glyph_layout):
+	* extents.h:
+	* extents.h (set_extent_normal_field):
+	* extents.h (extent_begin_glyph_layout):
+	To eliminate warnings, create set functions for the enum fields
+	in struct extent.
+
+	* filelock.c: Use pid_t instead of unsigned long to represent a pid.
+	(#### Perhaps a bad idea.  Generally using unknown types of this
+	sort is bad.)
+
+	* gif_io.c:
+	Include lisp.h.
+
+	* glyphs-eimage.c (jpeg_instantiate):
+	* glyphs-eimage.c (gif_memory_storage):
+	* glyphs-eimage.c (gif_instantiate):
+	* glyphs-eimage.c (struct png_memory_storage):
+	* glyphs-eimage.c (png_instantiate):
+	* glyphs-eimage.c (tiff_memory_storage):
+	* glyphs-eimage.c (tiff_instantiate):
+	Replace Extbyte with more correct UChar_Binary, Extcount with
+	Memory_Count.
+
+	* glyphs-shared.c (read_bitmap_data):
+	Replace char with Char_ASCII.
+
+	* gui-x.c:
+	Replace unsigned int with more correct LWLIB_ID for lwlib_id_tick.
+
+	* hftctl.c:
+	This was trying to include "lisp.h" to encapsulated file functions
+	(where they once were encapsulated, but no more); so include
+	sysfile.h.  This only affects read().
+
+	* imgproc.c (get_histogram):
+	replace unsigned char with UChar_Binary.
+
+	* lisp.h:
+	Move basic types to top of file since we need them in some
+	macros just below.
+
+	* redisplay-x.c:
+	Convert various variables that were declared as unsigned due to
+	return values from X functions to be signed, and create "external"
+	versions of the variables to retrieve the unsigned value, which is
+	then immediately converted to signed.
+
+	* tparam.c:
+	Eliminate useless non-#ifdef emacs code.
+
+	* select-common.h:
+	* select-gtk.c:
+	* select-x.c:
+	Abstract out hairy and duplicated code from select-x/gtk.c and
+	put into select-common.h.  Use ifdefs to handle the (small
+	number of) differences.
+
+	* select-x.c (x_reply_selection_request):
+	* select-x.c (x_handle_selection_request):
+	* select-x.c (copy_multiple_data):
+	* select-x.c (x_get_window_property):
+	* select-x.c (receive_incremental_selection):
+	* select-x.c (x_get_window_property_as_lisp_data):
+	* select-x.c (Fx_get_cutbuffer_internal):
+	* select-x.c (Fx_store_cutbuffer_internal):
+	Replace uses of `unsigned char' and `Extbyte' with UChar_Binary.
+
+	* sysdep.c (init_baud_rate):
+	Fix warning when HAVE_TTY not defined.
+
+	* glyphs-eimage.c:
+	* postgresql.h:
+	* sysdir.h:
+	Do some hackery to avoid shadowing warnings.
+
+	* s\esix.h: 
+	* m\tad68k.h:
+	Comment out redefinition of select (we don't have our own version
+	anyway, and we play preprocessor games with select in sysdir.h).
+
+2001-08-04  Adrian Aichner  <adrian@xemacs.org>
+
+	* console.c: Fix of compile error on darwin, as suggested by Toby
+	Smith.
+
+2001-07-30  Adrian Aichner  <adrian@xemacs.org>
+
+	* event-msw.c: Typo fix.
+	* event-msw.c (mswindows_wnd_proc): Set FRAME_VISIBLE_P after
+	magic XM_MAPFRAME event has been sent.
+	
+2001-07-30  Adrian Aichner  <adrian@xemacs.org>
+
+	* event-msw.c:
+	* event-msw.c (assert):
+
 2001-07-28  Stephen J. Turnbull  <stephen@xemacs.org>
 
 	* XEmacs 21.5.2 "artichoke" is released.
diff --text -u /dev/null 'xemacs-21.5.3/src/Emacs.ad.h'
Index: ././src/Emacs.ad.h
--- ././src/Emacs.ad.h	Thu Jan  1 09:00:00 1970
+++ ././src/Emacs.ad.h	Fri Sep  7 18:15:56 2001
@@ -0,0 +1,85 @@
+/*	Do not edit this file!
+  	Automatically generated from /playpen/mozilla/XEmacs/xemacs-21.5.3/etc/Emacs.ad
+ */
+"*menubar*Foreground:			Gray30",
+"*menubar*Background:			Gray80",
+"*menubar*buttonForeground:		Blue",
+"*XlwMenu*highlightForeground:		Red",
+"*XlwMenu*titleForeground:		Maroon",
+"*XlwMenu*selectColor:			ForestGreen",
+"*XmToggleButton*selectColor:		ForestGreen",
+"*popup*Foreground:			Black",
+"*popup*Background:			Gray80",
+"*dialog*Foreground:			Black",
+"*dialog*Background:			#A5C0C1",
+"*dialog*XmTextField*Background:		WhiteSmoke",
+"*dialog*XmText*Background:		WhiteSmoke",
+"*dialog*XmList*Background:		WhiteSmoke",
+"*dialog*Command*Background:		WhiteSmoke",
+"*XlwScrollBar*Foreground:		Gray30",
+"*XlwScrollBar*Background:		Gray80",
+"*XmScrollBar*Foreground:		Gray30",
+"*XmScrollBar*Background:		Gray80",
+"*toolBarShadowThickness:		2",
+"*menubar*Font: 			-*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*",
+"*popup*Font:			-*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*",
+"Emacs.gui-element.attributeFont:  -*-helvetica-medium-r-*-*-*-120-*-*-*-*-iso8859-*",
+"*XmDialogShell*FontList:	-*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*",
+"*XmTextField*FontList:		-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-*",
+"*XmText*FontList:		-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-*",
+"*XmList*FontList:		-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-*",
+"*Dialog*Font:			-*-helvetica-bold-r-*-*-*-140-*-*-*-*-iso8859-*",
+"*dialog*button1.accelerators:#override\
+<KeyPress>Return: ArmAndActivate()\\n\
+<KeyPress>KP_Enter: ArmAndActivate()\\n\
+Ctrl<KeyPress>m: ArmAndActivate()\\n",
+"*XmTextField*translations: #override\\n\
+	!<Key>osfBackSpace:	delete-previous-character()\\n\
+	!<Key>osfDelete:	delete-previous-character()\\n\
+	!Ctrl<Key>h: 		delete-previous-character()\\n\
+	!Ctrl<Key>d: 		delete-next-character()\\n\
+	!Meta<Key>osfDelete:	delete-previous-word()\\n\
+	!Meta<Key>osfBackSpace:	delete-previous-word()\\n\
+	!Meta<Key>d:		delete-next-word()\\n\
+	!Ctrl<Key>k:		delete-to-end-of-line()\\n\
+	!Ctrl<Key>g:		process-cancel()\\n\
+	!Ctrl<Key>b:		backward-character()\\n\
+	!<Key>osfLeft:		backward-character()\\n\
+	!Ctrl<Key>f:		forward-character()\\n\
+	!<Key>osfRight:		forward-character()\\n\
+	!Meta<Key>b:		backward-word()\\n\
+	!Meta<Key>osfLeft:	backward-word()\\n\
+	!Meta<Key>f:		forward-word()\\n\
+	!Meta<Key>osfRight:	forward-word()\\n\
+	!Ctrl<Key>e:		end-of-line()\\n\
+	!Ctrl<Key>a:		beginning-of-line()\\n\
+	!Ctrl<Key>w:		cut-clipboard()\\n\
+	!Meta<Key>w:		copy-clipboard()\\n\
+	<Btn2Up>:		copy-primary()\\n",
+"*dialog*XmPushButton*translations:#override\\n\
+    <Btn1Down>:         Arm()\\n\
+    <Btn1Down>,<Btn1Up>: Activate()\
+			Disarm()\\n\
+    <Btn1Down>(2+):     MultiArm()\\n\
+    <Btn1Up>(2+):       MultiActivate()\\n\
+    <Btn1Up>:           Activate()\
+		        Disarm()\\n\
+    <Key>osfSelect:  	ArmAndActivate()\\n\
+    <Key>osfActivate:   ArmAndActivate()\\n\
+    <Key>osfHelp:	Help()\\n\
+    ~Shift ~Meta ~Alt <Key>Return:	ArmAndActivate()\\n\
+    <EnterWindow>:      Enter()\\n\
+    <LeaveWindow>:      Leave()\\n",
+"Emacs*Text*translations: #override\\n\
+	<Btn1Down>:	widget-focus-in() select-start()\\n",
+"*ximStyles: XIMPreeditPosition|XIMStatusArea\
+            XIMPreeditPosition|XIMStatusNothing\
+            XIMPreeditPosition|XIMStatusNone\
+            XIMPreeditNothing|XIMStatusArea\
+            XIMPreeditNothing|XIMStatusNothing\
+            XIMPreeditNothing|XIMStatusNone\
+            XIMPreeditNone|XIMStatusArea\
+            XIMPreeditNone|XIMStatusNothing\
+            XIMPreeditNone|XIMStatusNone",
+"*EmacsFrame.ximForeground: black",
+"*EmacsFrame.ximBackground: white",
diff --text -u 'xemacs-21.5.2/src/EmacsFrame.c' 'xemacs-21.5.3/src/EmacsFrame.c'
Index: ././src/EmacsFrame.c
--- ././src/EmacsFrame.c	Fri Apr 13 03:23:22 2001
+++ ././src/EmacsFrame.c	Mon Aug 13 13:46:07 2001
@@ -518,7 +518,7 @@
       && cur->core.height == new->core.height)
     {
       int i;
-      for (i=0; i<*argc; i++)
+      for (i = 0; i < (int) *argc; i++)
 	if (strcmp (argv[i].name, XtNwidth) == 0
 	    || strcmp (argv[i].name, XtNheight) == 0)
 	  {
diff --text -u /dev/null 'xemacs-21.5.3/src/GNUmakefile'
Index: ././src/GNUmakefile
--- ././src/GNUmakefile	Thu Jan  1 09:00:00 1970
+++ ././src/GNUmakefile	Fri Sep  7 18:15:55 2001
@@ -0,0 +1,471 @@
+PROGNAME=xemacs
+DUMP_TARGET = ${PROGNAME}
+EXE_TARGET  = temacs
+all: ${DUMP_TARGET}
+.PHONY : all release dump-elc dump-elcs all-elc all-elcs lint
+.SUFFIXES:
+.SUFFIXES: .c .h .o .i .s .dep
+RECURSIVE_MAKE=$(MAKE)
+SHELL=/bin/sh
+RM = rm -f
+lispdir = ${srcdir}/../lisp/
+moduledir = ${srcdir}/../modules/
+libsrc = ../lib-src/
+etcdir = ../etc/
+prefix=/usr/local
+srcdir=/playpen/mozilla/XEmacs/xemacs-21.5.3/src
+blddir=/playpen/mozilla/XEmacs/xemacs-21.5.3
+version=21.5-b3
+CC=gcc
+CPP=gcc -E
+CFLAGS=-g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare
+CPPFLAGS=
+LDFLAGS=
+c_switch_all=-DHAVE_CONFIG_H -I/usr/X11R6/include
+ld_switch_all=-L/usr/X11R6/lib
+ld_libs_all=-laudio -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11 -lSM -lICE -ldb -lgpm -lncurses -L/usr/lib -lesd -laudiofile -lm -lpq -lm -lutil -lgcc -lc -lgcc /usr/lib/crtn.o
+ld_dynamic_link_flags=-Wl,-export-dynamic
+extra_objs=debug.o tests.o filelock.o unexelf.o balloon_help.o balloon-x.o postgresql.o dgif_lib.o gif_io.o menubar.o scrollbar.o dialog.o toolbar.o menubar-x.o scrollbar-x.o dialog-x.o toolbar-x.o gui-x.o mule.o mule-ccl.o mule-charset.o file-coding.o input-method-xlib.o mule-wnnfns.o mule-canna.o realpath.o inline.o linuxplay.o nas.o esd.o miscplay.o console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o terminfo.o gpmevent.o event-unixoid.o database.o sysdll.o emodules.o process-unix.o
+LN_S=ln -s
+ld_switch_shared=-c
+start_files=pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o
+start_flags=
+LD=$(CC) -nostdlib
+lib_gcc=`$(CC) $(C_SWITCH_X_SITE) -print-libgcc-file-name`
+vpath %.c /playpen/mozilla/XEmacs/xemacs-21.5.3/src
+vpath %.h /playpen/mozilla/XEmacs/xemacs-21.5.3/src
+vpath config.h
+vpath paths.h
+vpath Emacs.ad.h
+vpath sheap-adjust.h
+vpath dump-id.c
+RM = rm -f
+LWLIB_SRCDIR = ${srcdir}/../lwlib
+lwlib_libs = ../lwlib/liblw.a
+lwlib_deps = $(lwlib_libs)
+$(lwlib_libs) :
+	cd ../lwlib && $(RECURSIVE_MAKE)
+x_objs=console-x.o device-x.o event-Xt.o frame-x.o\
+ glyphs-x.o objects-x.o redisplay-x.o select-x.o xgccache.o
+X11_libs = $(LIBI18N)
+profile_objs=profile.o
+cppflags = $(CPPFLAGS) -Demacs -I. $(c_switch_all)
+cflags   = $(CFLAGS) $(cppflags)
+ldflags  = $(LDFLAGS) $(ld_switch_all) $(ld_dynamic_link_flags)
+.c.o:
+	$(CC) -c $(cflags) $<
+.c.i:
+	$(CC) -E $(cppflags) -o $@ $<
+.c.s:
+	$(CC) -S -c $(cflags) $<
+%.c.rtl : %.c
+	$(CC) -dr -c $(cflags) $<
+objs=\
+ abbrev.o alloc.o blocktype.o buffer.o bytecode.o\
+ callint.o callproc.o casefiddle.o casetab.o chartab.o\
+ cmdloop.o cmds.o console.o console-stream.o\
+ data.o device.o dired.o doc.o doprnt.o dynarr.o\
+ editfns.o elhash.o emacs.o\
+ eval.o events.o $(extra_objs)\
+ event-stream.o extents.o faces.o\
+ fileio.o $(LOCK_OBJ) filemode.o floatfns.o fns.o font-lock.o\
+ frame.o general.o glyphs.o glyphs-eimage.o glyphs-shared.o glyphs-widget.o\
+ gui.o gutter.o $(gui_objs) hash.o imgproc.o indent.o insdel.o intl.o\
+ keymap.o $(RTC_patch_objs) line-number.o lread.o lstream.o\
+ macros.o marker.o md5.o minibuf.o objects.o opaque.o\
+ print.o process.o $(profile_objs)\
+ rangetab.o redisplay.o redisplay-output.o regex.o\
+ search.o select.o $(sheap_objs) signal.o sound.o\
+ specifier.o strftime.o symbols.o syntax.o sysdep.o\
+ undo.o $(x_objs) widget.o window.o $(win32_objs)
+obj_rtl = $(objs:.o=.c.rtl)
+malloclib = $(libmcheck)
+mallocobjs = free-hook.o vm-limit.o
+mallocdocsrc = free-hook.c
+X11_objs =  EmacsFrame.o EmacsShell.o TopLevelEmacsShell.o TransientEmacsShell.o EmacsManager.o $(external_widget_objs) $(dnd_objs)
+otherobjs = lastfile.o $(mallocobjs) $(rallocobjs) $(X11_objs)
+otherrtls = $(otherobjs:.o=.c.rtl)
+othersrcs = $(otherobjs:.o=.c)
+LIBES = $(lwlib_libs) $(malloclib) $(ld_libs_all) $(lib_gcc)
+temacs_loadup = ./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/loadup.el
+dump_temacs   = ${temacs_loadup} dump
+run_temacs    = ${temacs_loadup} run-temacs
+debug_temacs = gdb ${EXE_TARGET}
+release: ${EXE_TARGET} ${libsrc}DOC $(mo_file) ${other_files}
+	-if [ -w ${srcdir}/../lisp ]; then \
+	  w=`pwd`; cd ${srcdir} && $${w}/${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/inc-vers; \
+	else true; fi
+	-./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/loadup.el dump
+	touch release
+${DUMP_TARGET}: ${EXE_TARGET} ${libsrc}DOC $(mo_file) ${other_files} update-elc.stamp
+	@$(RM) $@
+	${dump_temacs}
+	@echo "Testing for Lisp shadows ..."
+	@./${PROGNAME} -batch -vanilla -f list-load-path-shadows
+fastdump: ${EXE_TARGET}
+	@$(RM) ${DUMP_TARGET} && touch SATISFIED
+	-${dump_temacs}
+	@./${PROGNAME} -batch -vanilla -f list-load-path-shadows
+FRC.update-elc.stamp :
+update-elc.stamp : ${EXE_TARGET} FRC.update-elc.stamp
+	@touch NOBYTECOMPILE
+	./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/update-elc.el
+	@if test ! -f $@ -o -f NOBYTECOMPILE; then touch $@; fi; \
+	 $(RM) NOBYTECOMPILE
+obj_src = $(objs:.o=.c)
+dortl : $(obj_rtl) $(otherrtls)
+	echo "(defvar source-files '(" > ${srcdir}/../lisp/source-files.el
+	(for a in $(obj_src) $(othersrcs);do \
+	echo -n "\""$$a"\"" >> ${srcdir}/../lisp/source-files.el ;\
+	done)
+	echo "))" >> ${srcdir}/../lisp/source-files.el
+${libsrc}DOC: ${EXE_TARGET} update-elc.stamp
+	$(RM) ${libsrc}DOC; \
+	${DUMPENV} ./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/make-docfile.el -- \
+		-o ${libsrc}DOC -d ${srcdir} -i ${libsrc}../site-packages \
+		${obj_src} ${mallocdocsrc} ${rallocdocsrc} ${extra_doc_files}
+dump_elcs: dump-elcs
+dump-elcs: ${EXE_TARGET}
+	-${DUMPENV} ./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/update-elc.el
+all-elc all-elcs:
+	cd .. && $(RECURSIVE_MAKE) all-elc
+${libsrc}make-dump-id:
+	cd ${libsrc} && $(RECURSIVE_MAKE) make-dump-id
+${libsrc}make-docfile:
+	cd ${libsrc} && $(RECURSIVE_MAKE) make-docfile
+LINT.c=$(LINT) $(LINTFLAGS) $(LINTINCLUDES)
+LINTFILES= $(objs:.o=.ln)
+LINTINCLUDES = $(cppflags)
+LINTFLAGS= -fd -m -s -u -v -x
+lint: $(LINTFILES)
+	$(LINT.c) $(LINTFILES)
+link_deps=\
+ $(start_files) ${objs} ${otherobjs}\
+ $(lwlib_deps) $(dynodump_deps)
+temacs_deps = $(link_deps) ${DUMP_ID}
+temacs_link_args=\
+ ${start_flags} ${ldflags}\
+ -o $@ ${start_files} ${objs} ${otherobjs} ${DUMP_ID} ${LIBES}
+${EXE_TARGET}: $(temacs_deps)
+	$(LD) $(temacs_link_args)
+dump-id.c: ${libsrc}make-dump-id ${link_deps}
+	${libsrc}make-dump-id
+.PHONY : run-temacs
+run-temacs: ${EXE_TARGET}
+	-${run_temacs}
+testdir = ${srcdir}/../tests/automated
+batch_test_emacs = -batch -l ${testdir}/test-harness.el -f batch-test-emacs ${testdir}
+.PHONY: check check-temacs
+check:
+	./${PROGNAME} ${batch_test_emacs}
+check-temacs:
+	${run_temacs} ${batch_test_emacs}
+rtc_patch.o:
+	rtc_patch_area -o $@
+rtcmacs: $(temacs_deps) rtc_patch.o
+	$(RM) ${EXE_TARGET}; $(RECURSIVE_MAKE) ${EXE_TARGET} RTC_patch_objs=rtc_patch.o
+	mv ${EXE_TARGET} rtcmacs
+.PHONY: run-rtcmacs
+run-rtcmacs: rtcmacs
+	dbx -q -C -c \
+	'dbxenv rtc_error_log_file_name /dev/fd/1; \
+	dbxenv suppress_startup_message 5.0; \
+	ignore POLL; \
+	check -access; \
+	suppress rui; \
+	runargs -batch -l ${srcdir}/../lisp/loadup.el run-temacs -q; \
+	run' rtcmacs
+debug-temacs: ${EXE_TARGET}
+	-${debug_temacs}
+PURIFY_PROG  = purify
+PURIFY_LIBS  =
+PURIFY_FLAGS =\
+ -chain-length=32 -ignore-signals=SIGPOLL\
+ -cache-dir=${blddir}/purecache -always-use-cache-dir=yes
+puremacs: $(temacs_deps)
+	$(PURIFY_PROG) $(PURIFY_FLAGS) $(LD) $(temacs_link_args) $(PURIFY_LIBS)
+	cp $@ ${EXE_TARGET}
+PURECOV_PROG=purecov
+covmacs: $(temacs_deps)
+	$(PURECOV_PROG) $(LD) $(temacs_link_args)
+TopLevelEmacsShell.o : ${srcdir}/EmacsShell-sub.c config.h xintrinsicp.h EmacsShellP.h
+	$(CC) -c $(cflags) -DDEFINE_TOP_LEVEL_EMACS_SHELL ${srcdir}/EmacsShell-sub.c
+	mv EmacsShell-sub.o TopLevelEmacsShell.o
+TopLevelEmacsShell.c.rtl : ${srcdir}/EmacsShell-sub.c config.h xintrinsicp.h EmacsShellP.h
+	$(CC) -dr -c $(cflags) -DDEFINE_TOP_LEVEL_EMACS_SHELL ${srcdir}/EmacsShell-sub.c
+	mv EmacsShell-sub.c.rtl TopLevelEmacsShell.c.rtl
+TransientEmacsShell.o : ${srcdir}/EmacsShell-sub.c TopLevelEmacsShell.o config.h xintrinsicp.h EmacsShellP.h
+	$(CC) -c $(cflags) -DDEFINE_TRANSIENT_EMACS_SHELL ${srcdir}/EmacsShell-sub.c
+	mv EmacsShell-sub.o TransientEmacsShell.o
+TransientEmacsShell.c.rtl : ${srcdir}/EmacsShell-sub.c TopLevelEmacsShell.o config.h xintrinsicp.h EmacsShellP.h
+	$(CC) -dr -c $(cflags) -DDEFINE_TRANSIENT_EMACS_SHELL ${srcdir}/EmacsShell-sub.c
+	mv EmacsShell-sub.c.rtl TransientEmacsShell.c.rtl
+TransientEmacsShell.o : TopLevelEmacsShell.o
+TransientEmacsShell.c.rtl : TopLevelEmacsShell.c.rtl
+pic_arg = -fpic
+config.h: ${srcdir}/config.h.in
+Emacs.ad.h: ${srcdir}/${etcdir}Emacs.ad
+config.h sheap-adjust.h paths.h Emacs.ad.h :
+	@echo "The file $@ needs to be re-generated."
+	@echo "Please run a make in the top level directory."
+	@echo "Consult the file \`INSTALL' for instructions for building XEmacs."
+	@exit 1
+alloca.o : ${srcdir}/alloca.s config.h
+	$(CPP) $(cppflags) allocatem.c | \
+	sed -e 's///' -e 's/^#.*//' | \
+	sed -n -e '/^..*$$/p' > allocax.s
+	@$(RM) alloca.o
+	$(CC) -c allocax.s
+	mv allocax.o alloca.o
+	$(RM) allocax.s allocatem.c
+sound_cflags=
+sunplay.o: ${srcdir}/sunplay.c
+	$(CC) -c  $(sound_cflags) $(cflags) ${srcdir}/sunplay.c
+hpplay.o: ${srcdir}/hpplay.c
+	$(CC) -c -Demacs $(sound_cflags) $(cflags) ${srcdir}/hpplay.c
+xemacs_res.o: ${srcdir}/../nt/xemacs.rc
+	windres --include-dir ${srcdir}/../nt -i ${srcdir}/../nt/xemacs.rc -o $@
+.PHONY: mostlyclean clean distclean realclean versionclean extraclean
+mostlyclean:
+	$(RM) temacs puremacs quantmacs *.o *.i  \
+	  core temacs.exe sheap-adjust.h
+clean: mostlyclean versionclean
+	$(RM) libextcli* update-elc.stamp
+distclean: clean
+	$(RM) config.h paths.h Emacs.ad.h \
+	  GNUmakefile Makefile Makefile.in TAGS ${PROGNAME}.*
+realclean: distclean
+versionclean:
+	$(RM) ${EXE_TARGET} ${DUMP_TARGET} ${libsrc}DOC
+extraclean: realclean
+	$(RM) *~ \#* m/*~ m/\#* s/*~ s/\#*
+.PHONY : lock unlock
+SOURCES = *.[chm] *.pswm [sm]/* COPYING paths.h.in Makefile.in.in \
+	config.h.in README COPYING ChangeLog
+unlock:
+	chmod u+w $(SOURCES)
+relock:
+	chmod -w $(SOURCES)
+MAKEPATH=../lib-src/make-path
+install: ${PROGNAME}
+	${MAKEPATH} ${archlibdir}/include ${archlibdir}/include/m ${archlibdir}/include/s
+	-@echo "Copying include files for ellcc..."
+	-@hdir=`pwd`; \
+	cd ${srcdir}; hdrdir2=`pwd`; cd $$hdir; \
+	test "$$hdrdir2" != "$$hdir" && hdir="$$hdir $$hdrdir2"; \
+	(for thisdir in $$hdir; do \
+		cd $$thisdir && \
+		(hdrtars=; \
+		for hdrfile in *.h; do \
+			hdrtars="$$hdrtars $$hdrfile"; \
+		done; \
+		test -d s && hdrtars="$$hdrtars s/*"; \
+		test -d m && hdrtars="$$hdrtars m/*"; \
+		test -n "$$hdrtars" && (tar cf - $$hdrtars) | \
+			(cd ${archlibdir}/include && umask 022 && tar xf -); \
+		chmod 755 ${archlibdir}/include; \
+		test -d ${archlibdir}/include/s && \
+		  chmod 755 ${archlibdir}/include/s; \
+		test -d ${archlibdir}/include/m && \
+		  chmod 755 ${archlibdir}/include/s;) \
+	done)
+.PHONY: depend
+FRC.depend:
+depend: FRC.depend
+	cd ${srcdir} && $(RM) depend.tmp && \
+	perl ./make-src-depend > depend.tmp && \
+	if cmp -s depend depend.tmp; \
+	then $(RM) depend.tmp; \
+	else $(RM) depend && mv depend.tmp depend; \
+	fi
+LISP_UNION_H=lisp-disunion.h
+LISP_H=lisp.h config.h general-slots.h lrecord.h symeval.h symsinit.h $(LISP_UNION_H)
+balloon-x.o: $(LISP_H) balloon_help.h conslots.h console-x.h console.h device.h devslots.h xintrinsic.h
+console-x.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h mule-charset.h process.h redisplay.h xintrinsic.h
+device-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h elhash.h events.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mule-charset.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h sysfile.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmu.h
+dialog-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-x.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+frame-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h EmacsShell.h ExternalShell.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h dragdrop.h events.h extents.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h gutter.h mule-charset.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar-x.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
+glyphs-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h bitmaps.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h imgproc.h insdel.h lstream.h mule-charset.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h toolbar.h window.h winslots.h xintrinsic.h xmu.h
+gui-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+menubar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-x.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h keymap.h menubar.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+objects-x.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h insdel.h mule-charset.h objects-x.h objects.h specifier.h xintrinsic.h
+redisplay-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h debug.h device.h devslots.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h gutter.h mule-ccl.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysproc.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmprimitivep.h
+scrollbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h conslots.h console-x.h console.h device.h devslots.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h redisplay.h scrollbar-x.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h
+select-x.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h select-common.h select.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+toolbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h
+console-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h devslots.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systty.h toolbar.h window.h winslots.h
+device-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h devslots.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+event-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
+frame-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+objects-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h devslots.h insdel.h mule-charset.h objects-tty.h objects.h specifier.h syssignal.h systty.h
+redisplay-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-tty.h console.h device.h devslots.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h objects-tty.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+database.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h database.h mule-charset.h sysfile.h
+mule-canna.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h file-coding.h mule-charset.h
+mule-ccl.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h file-coding.h mule-ccl.h mule-charset.h
+mule-charset.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h faces.h lstream.h mule-ccl.h mule-charset.h
+mule-wnnfns.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h redisplay.h scrollbar.h sysdep.h window.h winslots.h
+mule.o: $(LISP_H) regex.h
+EmacsFrame.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
+EmacsManager.o: EmacsManager.h EmacsManagerP.h config.h xintrinsicp.h xmmanagerp.h
+EmacsShell-sub.o: EmacsShell.h EmacsShellP.h config.h xintrinsic.h xintrinsicp.h
+EmacsShell.o: EmacsShell.h ExternalShell.h config.h xintrinsicp.h
+abbrev.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h insdel.h mule-charset.h redisplay.h scrollbar.h syntax.h window.h winslots.h
+alloc.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console-stream.h console.h device.h devslots.h dumper.h elhash.h events.h extents.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h systime.h toolbar.h window.h winslots.h
+alloca.o: config.h
+balloon_help.o: balloon_help.h config.h xintrinsic.h
+blocktype.o: $(LISP_H) blocktype.h
+buffer.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h process.h redisplay.h scrollbar.h select.h specifier.h syntax.h sysdep.h sysfile.h toolbar.h window.h winslots.h
+bytecode.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h mule-charset.h opaque.h syntax.h
+callint.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h commands.h events.h insdel.h mule-charset.h redisplay.h scrollbar.h systime.h window.h winslots.h
+callproc.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h file-coding.h insdel.h lstream.h mule-charset.h nt.h process.h redisplay.h scrollbar.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswindows.h window.h winslots.h
+casefiddle.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h mule-charset.h syntax.h
+casetab.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h opaque.h
+chartab.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h syntax.h
+cm.o: $(LISP_H) conslots.h console-tty.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h syssignal.h systty.h toolbar.h window.h winslots.h
+cmdloop.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+cmds.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h insdel.h mule-charset.h syntax.h
+console-stream.o: $(LISP_H) conslots.h console-stream.h console-tty.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+console.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-tty.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+data.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h mule-charset.h sysfloat.h syssignal.h
+debug.o: $(LISP_H) bytecode.h debug.h
+device.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h events.h faces.h frame.h frameslots.h glyphs.h gui.h keymap.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h toolbar.h window.h winslots.h
+dgif_lib.o: $(LISP_H) gifrlib.h sysfile.h
+dialog.o: $(LISP_H) conslots.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+dired.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h elhash.h mule-charset.h ndir.h opaque.h regex.h syntax.h sysdep.h sysdir.h sysfile.h syspwd.h systime.h syswindows.h
+doc.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h insdel.h keymap.h mule-charset.h sysfile.h
+doprnt.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h lstream.h mule-charset.h
+dragdrop.o: $(LISP_H) dragdrop.h
+dumper.o: $(LISP_H) conslots.h console-stream.h console.h dumper.h elhash.h nt.h specifier.h sysfile.h systime.h syswindows.h
+dynarr.o: $(LISP_H)
+ecrt0.o: config.h
+editfns.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syspwd.h systime.h toolbar.h window.h winslots.h
+eldap.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h eldap.h mule-charset.h opaque.h sysdep.h
+elhash.o: $(LISP_H) bytecode.h elhash.h opaque.h
+emacs-marshals.o: hash.h
+emacs-widget-accessors.o: 
+emacs.o: $(LISP_H) backtrace.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h dumper.h frame.h frameslots.h glyphs.h gui.h mule-charset.h nt.h paths.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h sysfile.h syssignal.h systime.h systty.h syswindows.h toolbar.h window.h winslots.h
+emodules.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h emodules.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h toolbar.h window.h winslots.h
+esd.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h miscplay.h mule-charset.h sound.h sysfile.h
+eval.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h commands.h conslots.h console.h mule-charset.h opaque.h
+event-Xt.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h Emacs.ad.h EmacsFrame.h blocktype.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-tty.h console-x.h console.h device.h devslots.h dragdrop.h elhash.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h objects-x.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h
+event-stream.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h elhash.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h lstream.h macros.h menubar.h mule-charset.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h
+event-unixoid.o: $(LISP_H) conslots.h console-stream.h console-tty.h console.h device.h devslots.h events.h lstream.h mule-charset.h process.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h
+events.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console-tty.h console-x.h console.h device.h devslots.h events.h extents.h frame.h frameslots.h glyphs.h gui.h keymap.h mule-charset.h redisplay.h scrollbar.h specifier.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h
+extents.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h debug.h device.h devslots.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h keymap.h mule-charset.h opaque.h process.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+faces.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+file-coding.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h elhash.h file-coding.h insdel.h lstream.h mule-ccl.h mule-charset.h opaque.h
+fileio.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h ndir.h nt.h redisplay.h scrollbar.h specifier.h sysdep.h sysdir.h sysfile.h sysproc.h syspwd.h systime.h syswindows.h toolbar.h window.h winslots.h
+filelock.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h ndir.h paths.h sysdir.h sysfile.h syspwd.h syssignal.h
+filemode.o: $(LISP_H) sysfile.h
+floatfns.o: $(LISP_H) sysfloat.h syssignal.h
+fns.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console.h device.h devslots.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h systime.h toolbar.h window.h winslots.h
+font-lock.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h mule-charset.h syntax.h
+frame.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h events.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+free-hook.o: $(LISP_H) hash.h
+general.o: $(LISP_H)
+getloadavg.o: $(LISP_H) sysfile.h
+gif_io.o: $(LISP_H) gifrlib.h sysfile.h
+glade.o: bytecode.h
+glyphs-eimage.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h faces.h file-coding.h frame.h frameslots.h gifrlib.h glyphs.h gui.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h toolbar.h window.h winslots.h
+glyphs-shared.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h imgproc.h insdel.h lstream.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h toolbar.h window.h winslots.h
+glyphs-widget.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+glyphs.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h objects.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+gmalloc.o: config.h getpagesize.h
+gpmevent.o: $(LISP_H) commands.h conslots.h console-tty.h console.h device.h devslots.h events.h gpmevent.h lstream.h mule-charset.h process.h sysdep.h sysproc.h syssignal.h systime.h systty.h
+gtk-glue.o: 
+gtk-xemacs.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+gui.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h elhash.h gui.h mule-charset.h
+gutter.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+hash.o: $(LISP_H) hash.h
+hftctl.o: $(LISP_H) sysfile.h
+hpplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h sound.h
+imgproc.o: $(LISP_H) imgproc.h
+indent.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console-gtk.h console-msw.h console.h database.h device.h devslots.h eldap.h elhash.h events.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h keymap.h lstream.h mule-charset.h objects.h opaque.h postgresql.h process.h rangetab.h redisplay.h scrollbar.h specifier.h syntax.h syscommctrl.h sysdll.h systime.h syswindows.h toolbar.h tooltalk.h ui-gtk.h window.h winslots.h xintrinsic.h
+input-method-motif.o: $(LISP_H) EmacsFrame.h conslots.h console-x.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h
+input-method-xlib.o: $(LISP_H) EmacsFrame.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+insdel.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+intl.o: $(LISP_H) bytecode.h conslots.h console.h device.h devslots.h
+keymap.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+lastfile.o: config.h
+libsst.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h libsst.h mule-charset.h sound.h sysfile.h
+line-number.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h line-number.h mule-charset.h
+linuxplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h miscplay.h mule-charset.h sound.h sysfile.h syssignal.h systty.h
+lread.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h elhash.h file-coding.h lstream.h mule-charset.h opaque.h sysfile.h sysfloat.h
+lstream.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h lstream.h mule-charset.h sysfile.h
+macros.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h keymap.h macros.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+malloc.o: config.h getpagesize.h
+marker.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h
+md5.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h file-coding.h lstream.h mule-charset.h
+menubar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h keymap.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+minibuf.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-stream.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+miscplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h miscplay.h mule-charset.h sound.h sysfile.h syssignal.h
+nas.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h sound.h sysdep.h syssignal.h
+native-gtk-toolbar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+nt.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h ndir.h nt.h ntheap.h sysdir.h sysfile.h sysproc.h syspwd.h syssignal.h systime.h syswindows.h
+ntheap.o: $(LISP_H) ntheap.h syswindows.h
+ntplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h nt.h sound.h sysfile.h systime.h syswindows.h
+ntproc.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h mule-charset.h nt.h ntheap.h process.h syscommctrl.h sysfile.h sysproc.h syssignal.h systime.h syswait.h syswindows.h
+objects.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+offix.o: offix-cursors.h offix-types.h offix.h xintrinsic.h
+opaque.o: $(LISP_H) opaque.h
+postgresql.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h postgresql.h sysdep.h
+print.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console-msw.h console-stream.h console-tty.h console.h device.h devslots.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysfile.h syssignal.h systty.h syswindows.h toolbar.h window.h winslots.h
+process-nt.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h hash.h lstream.h mule-charset.h nt.h process.h procimpl.h syscommctrl.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h syswindows.h
+process-unix.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
+process.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h insdel.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
+profile.o: $(LISP_H) backtrace.h bytecode.h elhash.h hash.h syssignal.h systime.h
+ralloc.o: $(LISP_H) getpagesize.h
+rangetab.o: $(LISP_H) rangetab.h
+realpath.o: $(LISP_H) sysfile.h syswindows.h
+redisplay-output.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+redisplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-tty.h console.h debug.h device.h devslots.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h line-number.h menubar.h mule-charset.h objects.h process.h redisplay.h scrollbar.h specifier.h sysfile.h syssignal.h systty.h toolbar.h window.h winslots.h
+regex.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h regex.h syntax.h
+scrollbar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+search.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h mule-charset.h opaque.h regex.h syntax.h
+select.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h extents.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h toolbar.h window.h winslots.h
+sgiplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h libst.h mule-charset.h sound.h sysfile.h sysproc.h systime.h
+sheap.o: $(LISP_H) sheap-adjust.h
+signal.o: $(LISP_H) conslots.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h
+sound.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h mule-charset.h redisplay.h sound.h sysdep.h sysfile.h sysproc.h systime.h xintrinsic.h
+specifier.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+strcat.o: config.h
+strcmp.o: config.h
+strcpy.o: config.h
+strftime.o: $(LISP_H)
+sunOS-fix.o: config.h
+sunplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h sound.h sysdep.h sysfile.h syssignal.h
+sunpro.o: $(LISP_H)
+symbols.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h elhash.h mule-charset.h
+syntax.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h extents.h mule-charset.h syntax.h
+sysdep.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h ndir.h nt.h ntheap.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysdir.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h syswindows.h toolbar.h window.h winslots.h
+sysdll.o: config.h sysdll.h
+termcap.o: $(LISP_H) conslots.h console.h device.h devslots.h
+terminfo.o: config.h
+tests.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h elhash.h lstream.h mule-charset.h opaque.h
+toolbar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+tooltalk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h elhash.h mule-charset.h process.h syssignal.h tooltalk.h
+tparam.o: $(LISP_H)
+ui-byhand.o: gui.h
+undo.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h extents.h mule-charset.h
+unexaix.o: $(LISP_H) getpagesize.h
+unexalpha.o: config.h
+unexapollo.o: config.h
+unexconvex.o: config.h getpagesize.h
+unexcw.o: $(LISP_H) sysfile.h
+unexec.o: $(LISP_H) getpagesize.h
+unexelf.o: config.h
+unexelfsgi.o: config.h
+unexenix.o: config.h
+unexfreebsd.o: config.h
+unexhp9k3.o: config.h sysdep.h
+unexhp9k800.o: $(LISP_H)
+unexmips.o: config.h getpagesize.h
+unexnt.o: $(LISP_H) nt.h ntheap.h sysfile.h systime.h syswindows.h
+unexsunos4.o: config.h
+vm-limit.o: $(LISP_H) mem-limits.h
+widget.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h
+win32.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h syssignal.h systime.h syswindows.h
+window.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+xgccache.o: $(LISP_H) hash.h xgccache.h
+xmu.o: config.h
diff --text -u /dev/null 'xemacs-21.5.3/src/Makefile'
Index: ././src/Makefile
--- ././src/Makefile	Thu Jan  1 09:00:00 1970
+++ ././src/Makefile	Fri Sep  7 18:15:55 2001
@@ -0,0 +1,465 @@
+PROGNAME=xemacs
+DUMP_TARGET = ${PROGNAME}
+EXE_TARGET  = temacs
+all: ${DUMP_TARGET}
+.PHONY : all release dump-elc dump-elcs all-elc all-elcs lint
+.SUFFIXES:
+.SUFFIXES: .c .h .o .i .s .dep
+RECURSIVE_MAKE=$(MAKE) $(MFLAGS) CC='$(CC)' CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS)' CPPFLAGS='$(CPPFLAGS)'
+SHELL=/bin/sh
+RM = rm -f
+lispdir = ${srcdir}/../lisp/
+moduledir = ${srcdir}/../modules/
+libsrc = ../lib-src/
+etcdir = ../etc/
+prefix=/usr/local
+srcdir=/playpen/mozilla/XEmacs/xemacs-21.5.3/src
+blddir=/playpen/mozilla/XEmacs/xemacs-21.5.3
+version=21.5-b3
+CC=gcc
+CPP=gcc -E
+CFLAGS=-g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare
+CPPFLAGS=
+LDFLAGS=
+c_switch_all=-DHAVE_CONFIG_H -I/usr/X11R6/include
+ld_switch_all=-L/usr/X11R6/lib
+ld_libs_all=-laudio -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11 -lSM -lICE -ldb -lgpm -lncurses -L/usr/lib -lesd -laudiofile -lm -lpq -lm -lutil -lgcc -lc -lgcc /usr/lib/crtn.o
+ld_dynamic_link_flags=-Wl,-export-dynamic
+extra_objs=debug.o tests.o filelock.o unexelf.o balloon_help.o balloon-x.o postgresql.o dgif_lib.o gif_io.o menubar.o scrollbar.o dialog.o toolbar.o menubar-x.o scrollbar-x.o dialog-x.o toolbar-x.o gui-x.o mule.o mule-ccl.o mule-charset.o file-coding.o input-method-xlib.o mule-wnnfns.o mule-canna.o realpath.o inline.o linuxplay.o nas.o esd.o miscplay.o console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o terminfo.o gpmevent.o event-unixoid.o database.o sysdll.o emodules.o process-unix.o
+LN_S=ln -s
+ld_switch_shared=-c
+start_files=pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o
+start_flags=
+LD=$(CC) -nostdlib
+lib_gcc=`$(CC) $(C_SWITCH_X_SITE) -print-libgcc-file-name`
+VPATH=/playpen/mozilla/XEmacs/xemacs-21.5.3/src
+RM = rm -f
+LWLIB_SRCDIR = ${srcdir}/../lwlib
+lwlib_libs = ../lwlib/liblw.a
+lwlib_deps = $(lwlib_libs)
+$(lwlib_libs) :
+	cd ../lwlib && $(RECURSIVE_MAKE)
+x_objs=console-x.o device-x.o event-Xt.o frame-x.o\
+ glyphs-x.o objects-x.o redisplay-x.o select-x.o xgccache.o
+X11_libs = $(LIBI18N)
+profile_objs=profile.o
+cppflags = $(CPPFLAGS) -Demacs -I. $(c_switch_all)
+cflags   = $(CFLAGS) $(cppflags)
+ldflags  = $(LDFLAGS) $(ld_switch_all) $(ld_dynamic_link_flags)
+.c.o:
+	$(CC) -c $(cflags) $<
+.c.i:
+	$(CC) -E $(cppflags) -o $@ $<
+.c.s:
+	$(CC) -S -c $(cflags) $<
+%.c.rtl : %.c
+	$(CC) -dr -c $(cflags) $<
+objs=\
+ abbrev.o alloc.o blocktype.o buffer.o bytecode.o\
+ callint.o callproc.o casefiddle.o casetab.o chartab.o\
+ cmdloop.o cmds.o console.o console-stream.o\
+ data.o device.o dired.o doc.o doprnt.o dynarr.o\
+ editfns.o elhash.o emacs.o\
+ eval.o events.o $(extra_objs)\
+ event-stream.o extents.o faces.o\
+ fileio.o $(LOCK_OBJ) filemode.o floatfns.o fns.o font-lock.o\
+ frame.o general.o glyphs.o glyphs-eimage.o glyphs-shared.o glyphs-widget.o\
+ gui.o gutter.o $(gui_objs) hash.o imgproc.o indent.o insdel.o intl.o\
+ keymap.o $(RTC_patch_objs) line-number.o lread.o lstream.o\
+ macros.o marker.o md5.o minibuf.o objects.o opaque.o\
+ print.o process.o $(profile_objs)\
+ rangetab.o redisplay.o redisplay-output.o regex.o\
+ search.o select.o $(sheap_objs) signal.o sound.o\
+ specifier.o strftime.o symbols.o syntax.o sysdep.o\
+ undo.o $(x_objs) widget.o window.o $(win32_objs)
+obj_rtl = $(objs:.o=.c.rtl)
+malloclib = $(libmcheck)
+mallocobjs = free-hook.o vm-limit.o
+mallocdocsrc = free-hook.c
+X11_objs =  EmacsFrame.o EmacsShell.o TopLevelEmacsShell.o TransientEmacsShell.o EmacsManager.o $(external_widget_objs) $(dnd_objs)
+otherobjs = lastfile.o $(mallocobjs) $(rallocobjs) $(X11_objs)
+otherrtls = $(otherobjs:.o=.c.rtl)
+othersrcs = $(otherobjs:.o=.c)
+LIBES = $(lwlib_libs) $(malloclib) $(ld_libs_all) $(lib_gcc)
+temacs_loadup = ./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/loadup.el
+dump_temacs   = ${temacs_loadup} dump
+run_temacs    = ${temacs_loadup} run-temacs
+debug_temacs = gdb ${EXE_TARGET}
+release: ${EXE_TARGET} ${libsrc}DOC $(mo_file) ${other_files}
+	-if [ -w ${srcdir}/../lisp ]; then \
+	  w=`pwd`; cd ${srcdir} && $${w}/${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/inc-vers; \
+	else true; fi
+	-./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/loadup.el dump
+	touch release
+${DUMP_TARGET}: ${EXE_TARGET} ${libsrc}DOC $(mo_file) ${other_files} update-elc.stamp
+	@$(RM) $@
+	${dump_temacs}
+	@echo "Testing for Lisp shadows ..."
+	@./${PROGNAME} -batch -vanilla -f list-load-path-shadows
+fastdump: ${EXE_TARGET}
+	@$(RM) ${DUMP_TARGET} && touch SATISFIED
+	-${dump_temacs}
+	@./${PROGNAME} -batch -vanilla -f list-load-path-shadows
+FRC.update-elc.stamp :
+update-elc.stamp : ${EXE_TARGET} FRC.update-elc.stamp
+	@touch NOBYTECOMPILE
+	./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/update-elc.el
+	@if test ! -f $@ -o -f NOBYTECOMPILE; then touch $@; fi; \
+	 $(RM) NOBYTECOMPILE
+obj_src = $(objs:.o=.c)
+dortl : $(obj_rtl) $(otherrtls)
+	echo "(defvar source-files '(" > ${srcdir}/../lisp/source-files.el
+	(for a in $(obj_src) $(othersrcs);do \
+	echo -n "\""$$a"\"" >> ${srcdir}/../lisp/source-files.el ;\
+	done)
+	echo "))" >> ${srcdir}/../lisp/source-files.el
+${libsrc}DOC: ${EXE_TARGET} update-elc.stamp
+	$(RM) ${libsrc}DOC; \
+	${DUMPENV} ./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/make-docfile.el -- \
+		-o ${libsrc}DOC -d ${srcdir} -i ${libsrc}../site-packages \
+		${obj_src} ${mallocdocsrc} ${rallocdocsrc} ${extra_doc_files}
+dump_elcs: dump-elcs
+dump-elcs: ${EXE_TARGET}
+	-${DUMPENV} ./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/update-elc.el
+all-elc all-elcs:
+	cd .. && $(RECURSIVE_MAKE) all-elc
+${libsrc}make-dump-id:
+	cd ${libsrc} && $(RECURSIVE_MAKE) make-dump-id
+${libsrc}make-docfile:
+	cd ${libsrc} && $(RECURSIVE_MAKE) make-docfile
+LINT.c=$(LINT) $(LINTFLAGS) $(LINTINCLUDES)
+LINTFILES= $(objs:.o=.ln)
+LINTINCLUDES = $(cppflags)
+LINTFLAGS= -fd -m -s -u -v -x
+lint: $(LINTFILES)
+	$(LINT.c) $(LINTFILES)
+link_deps=\
+ $(start_files) ${objs} ${otherobjs}\
+ $(lwlib_deps) $(dynodump_deps)
+temacs_deps = $(link_deps) ${DUMP_ID}
+temacs_link_args=\
+ ${start_flags} ${ldflags}\
+ -o $@ ${start_files} ${objs} ${otherobjs} ${DUMP_ID} ${LIBES}
+${EXE_TARGET}: $(temacs_deps)
+	$(LD) $(temacs_link_args)
+dump-id.c: ${libsrc}make-dump-id ${link_deps}
+	${libsrc}make-dump-id
+.PHONY : run-temacs
+run-temacs: ${EXE_TARGET}
+	-${run_temacs}
+testdir = ${srcdir}/../tests/automated
+batch_test_emacs = -batch -l ${testdir}/test-harness.el -f batch-test-emacs ${testdir}
+.PHONY: check check-temacs
+check:
+	./${PROGNAME} ${batch_test_emacs}
+check-temacs:
+	${run_temacs} ${batch_test_emacs}
+rtc_patch.o:
+	rtc_patch_area -o $@
+rtcmacs: $(temacs_deps) rtc_patch.o
+	$(RM) ${EXE_TARGET}; $(RECURSIVE_MAKE) ${EXE_TARGET} RTC_patch_objs=rtc_patch.o
+	mv ${EXE_TARGET} rtcmacs
+.PHONY: run-rtcmacs
+run-rtcmacs: rtcmacs
+	dbx -q -C -c \
+	'dbxenv rtc_error_log_file_name /dev/fd/1; \
+	dbxenv suppress_startup_message 5.0; \
+	ignore POLL; \
+	check -access; \
+	suppress rui; \
+	runargs -batch -l ${srcdir}/../lisp/loadup.el run-temacs -q; \
+	run' rtcmacs
+debug-temacs: ${EXE_TARGET}
+	-${debug_temacs}
+PURIFY_PROG  = purify
+PURIFY_LIBS  =
+PURIFY_FLAGS =\
+ -chain-length=32 -ignore-signals=SIGPOLL\
+ -cache-dir=${blddir}/purecache -always-use-cache-dir=yes
+puremacs: $(temacs_deps)
+	$(PURIFY_PROG) $(PURIFY_FLAGS) $(LD) $(temacs_link_args) $(PURIFY_LIBS)
+	cp $@ ${EXE_TARGET}
+PURECOV_PROG=purecov
+covmacs: $(temacs_deps)
+	$(PURECOV_PROG) $(LD) $(temacs_link_args)
+TopLevelEmacsShell.o : ${srcdir}/EmacsShell-sub.c config.h xintrinsicp.h EmacsShellP.h
+	$(CC) -c $(cflags) -DDEFINE_TOP_LEVEL_EMACS_SHELL ${srcdir}/EmacsShell-sub.c
+	mv EmacsShell-sub.o TopLevelEmacsShell.o
+TopLevelEmacsShell.c.rtl : ${srcdir}/EmacsShell-sub.c config.h xintrinsicp.h EmacsShellP.h
+	$(CC) -dr -c $(cflags) -DDEFINE_TOP_LEVEL_EMACS_SHELL ${srcdir}/EmacsShell-sub.c
+	mv EmacsShell-sub.c.rtl TopLevelEmacsShell.c.rtl
+TransientEmacsShell.o : ${srcdir}/EmacsShell-sub.c TopLevelEmacsShell.o config.h xintrinsicp.h EmacsShellP.h
+	$(CC) -c $(cflags) -DDEFINE_TRANSIENT_EMACS_SHELL ${srcdir}/EmacsShell-sub.c
+	mv EmacsShell-sub.o TransientEmacsShell.o
+TransientEmacsShell.c.rtl : ${srcdir}/EmacsShell-sub.c TopLevelEmacsShell.o config.h xintrinsicp.h EmacsShellP.h
+	$(CC) -dr -c $(cflags) -DDEFINE_TRANSIENT_EMACS_SHELL ${srcdir}/EmacsShell-sub.c
+	mv EmacsShell-sub.c.rtl TransientEmacsShell.c.rtl
+TransientEmacsShell.o : TopLevelEmacsShell.o
+TransientEmacsShell.c.rtl : TopLevelEmacsShell.c.rtl
+pic_arg = -fpic
+config.h: ${srcdir}/config.h.in
+Emacs.ad.h: ${srcdir}/${etcdir}Emacs.ad
+config.h sheap-adjust.h paths.h Emacs.ad.h :
+	@echo "The file $@ needs to be re-generated."
+	@echo "Please run a make in the top level directory."
+	@echo "Consult the file \`INSTALL' for instructions for building XEmacs."
+	@exit 1
+alloca.o : ${srcdir}/alloca.s config.h
+	$(CPP) $(cppflags) allocatem.c | \
+	sed -e 's///' -e 's/^#.*//' | \
+	sed -n -e '/^..*$$/p' > allocax.s
+	@$(RM) alloca.o
+	$(CC) -c allocax.s
+	mv allocax.o alloca.o
+	$(RM) allocax.s allocatem.c
+sound_cflags=
+sunplay.o: ${srcdir}/sunplay.c
+	$(CC) -c  $(sound_cflags) $(cflags) ${srcdir}/sunplay.c
+hpplay.o: ${srcdir}/hpplay.c
+	$(CC) -c -Demacs $(sound_cflags) $(cflags) ${srcdir}/hpplay.c
+xemacs_res.o: ${srcdir}/../nt/xemacs.rc
+	windres --include-dir ${srcdir}/../nt -i ${srcdir}/../nt/xemacs.rc -o $@
+.PHONY: mostlyclean clean distclean realclean versionclean extraclean
+mostlyclean:
+	$(RM) temacs puremacs quantmacs *.o *.i  \
+	  core temacs.exe sheap-adjust.h
+clean: mostlyclean versionclean
+	$(RM) libextcli* update-elc.stamp
+distclean: clean
+	$(RM) config.h paths.h Emacs.ad.h \
+	  GNUmakefile Makefile Makefile.in TAGS ${PROGNAME}.*
+realclean: distclean
+versionclean:
+	$(RM) ${EXE_TARGET} ${DUMP_TARGET} ${libsrc}DOC
+extraclean: realclean
+	$(RM) *~ \#* m/*~ m/\#* s/*~ s/\#*
+.PHONY : lock unlock
+SOURCES = *.[chm] *.pswm [sm]/* COPYING paths.h.in Makefile.in.in \
+	config.h.in README COPYING ChangeLog
+unlock:
+	chmod u+w $(SOURCES)
+relock:
+	chmod -w $(SOURCES)
+MAKEPATH=../lib-src/make-path
+install: ${PROGNAME}
+	${MAKEPATH} ${archlibdir}/include ${archlibdir}/include/m ${archlibdir}/include/s
+	-@echo "Copying include files for ellcc..."
+	-@hdir=`pwd`; \
+	cd ${srcdir}; hdrdir2=`pwd`; cd $$hdir; \
+	test "$$hdrdir2" != "$$hdir" && hdir="$$hdir $$hdrdir2"; \
+	(for thisdir in $$hdir; do \
+		cd $$thisdir && \
+		(hdrtars=; \
+		for hdrfile in *.h; do \
+			hdrtars="$$hdrtars $$hdrfile"; \
+		done; \
+		test -d s && hdrtars="$$hdrtars s/*"; \
+		test -d m && hdrtars="$$hdrtars m/*"; \
+		test -n "$$hdrtars" && (tar cf - $$hdrtars) | \
+			(cd ${archlibdir}/include && umask 022 && tar xf -); \
+		chmod 755 ${archlibdir}/include; \
+		test -d ${archlibdir}/include/s && \
+		  chmod 755 ${archlibdir}/include/s; \
+		test -d ${archlibdir}/include/m && \
+		  chmod 755 ${archlibdir}/include/s;) \
+	done)
+.PHONY: depend
+FRC.depend:
+depend: FRC.depend
+	cd ${srcdir} && $(RM) depend.tmp && \
+	perl ./make-src-depend > depend.tmp && \
+	if cmp -s depend depend.tmp; \
+	then $(RM) depend.tmp; \
+	else $(RM) depend && mv depend.tmp depend; \
+	fi
+LISP_UNION_H=lisp-disunion.h
+LISP_H=lisp.h config.h general-slots.h lrecord.h symeval.h symsinit.h $(LISP_UNION_H)
+balloon-x.o: $(LISP_H) balloon_help.h conslots.h console-x.h console.h device.h devslots.h xintrinsic.h
+console-x.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h mule-charset.h process.h redisplay.h xintrinsic.h
+device-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h elhash.h events.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mule-charset.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h sysfile.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmu.h
+dialog-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-x.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+frame-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h EmacsShell.h ExternalShell.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h dragdrop.h events.h extents.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h gutter.h mule-charset.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar-x.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
+glyphs-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h bitmaps.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h imgproc.h insdel.h lstream.h mule-charset.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h toolbar.h window.h winslots.h xintrinsic.h xmu.h
+gui-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+menubar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-x.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h keymap.h menubar.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+objects-x.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h insdel.h mule-charset.h objects-x.h objects.h specifier.h xintrinsic.h
+redisplay-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h debug.h device.h devslots.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h gutter.h mule-ccl.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysproc.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmprimitivep.h
+scrollbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h conslots.h console-x.h console.h device.h devslots.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h redisplay.h scrollbar-x.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h
+select-x.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h select-common.h select.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+toolbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h
+console-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h devslots.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systty.h toolbar.h window.h winslots.h
+device-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h devslots.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+event-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
+frame-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+objects-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h devslots.h insdel.h mule-charset.h objects-tty.h objects.h specifier.h syssignal.h systty.h
+redisplay-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-tty.h console.h device.h devslots.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h objects-tty.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+database.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h database.h mule-charset.h sysfile.h
+mule-canna.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h file-coding.h mule-charset.h
+mule-ccl.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h file-coding.h mule-ccl.h mule-charset.h
+mule-charset.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h faces.h lstream.h mule-ccl.h mule-charset.h
+mule-wnnfns.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h redisplay.h scrollbar.h sysdep.h window.h winslots.h
+mule.o: $(LISP_H) regex.h
+EmacsFrame.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
+EmacsManager.o: EmacsManager.h EmacsManagerP.h config.h xintrinsicp.h xmmanagerp.h
+EmacsShell-sub.o: EmacsShell.h EmacsShellP.h config.h xintrinsic.h xintrinsicp.h
+EmacsShell.o: EmacsShell.h ExternalShell.h config.h xintrinsicp.h
+abbrev.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h insdel.h mule-charset.h redisplay.h scrollbar.h syntax.h window.h winslots.h
+alloc.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console-stream.h console.h device.h devslots.h dumper.h elhash.h events.h extents.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h systime.h toolbar.h window.h winslots.h
+alloca.o: config.h
+balloon_help.o: balloon_help.h config.h xintrinsic.h
+blocktype.o: $(LISP_H) blocktype.h
+buffer.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h process.h redisplay.h scrollbar.h select.h specifier.h syntax.h sysdep.h sysfile.h toolbar.h window.h winslots.h
+bytecode.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h mule-charset.h opaque.h syntax.h
+callint.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h commands.h events.h insdel.h mule-charset.h redisplay.h scrollbar.h systime.h window.h winslots.h
+callproc.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h file-coding.h insdel.h lstream.h mule-charset.h nt.h process.h redisplay.h scrollbar.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswindows.h window.h winslots.h
+casefiddle.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h mule-charset.h syntax.h
+casetab.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h opaque.h
+chartab.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h syntax.h
+cm.o: $(LISP_H) conslots.h console-tty.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h syssignal.h systty.h toolbar.h window.h winslots.h
+cmdloop.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+cmds.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h insdel.h mule-charset.h syntax.h
+console-stream.o: $(LISP_H) conslots.h console-stream.h console-tty.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+console.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-tty.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+data.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h mule-charset.h sysfloat.h syssignal.h
+debug.o: $(LISP_H) bytecode.h debug.h
+device.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h events.h faces.h frame.h frameslots.h glyphs.h gui.h keymap.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h toolbar.h window.h winslots.h
+dgif_lib.o: $(LISP_H) gifrlib.h sysfile.h
+dialog.o: $(LISP_H) conslots.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+dired.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h elhash.h mule-charset.h ndir.h opaque.h regex.h syntax.h sysdep.h sysdir.h sysfile.h syspwd.h systime.h syswindows.h
+doc.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h insdel.h keymap.h mule-charset.h sysfile.h
+doprnt.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h lstream.h mule-charset.h
+dragdrop.o: $(LISP_H) dragdrop.h
+dumper.o: $(LISP_H) conslots.h console-stream.h console.h dumper.h elhash.h nt.h specifier.h sysfile.h systime.h syswindows.h
+dynarr.o: $(LISP_H)
+ecrt0.o: config.h
+editfns.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syspwd.h systime.h toolbar.h window.h winslots.h
+eldap.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h eldap.h mule-charset.h opaque.h sysdep.h
+elhash.o: $(LISP_H) bytecode.h elhash.h opaque.h
+emacs-marshals.o: hash.h
+emacs-widget-accessors.o: 
+emacs.o: $(LISP_H) backtrace.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h dumper.h frame.h frameslots.h glyphs.h gui.h mule-charset.h nt.h paths.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h sysfile.h syssignal.h systime.h systty.h syswindows.h toolbar.h window.h winslots.h
+emodules.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h emodules.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h toolbar.h window.h winslots.h
+esd.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h miscplay.h mule-charset.h sound.h sysfile.h
+eval.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h commands.h conslots.h console.h mule-charset.h opaque.h
+event-Xt.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h Emacs.ad.h EmacsFrame.h blocktype.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-tty.h console-x.h console.h device.h devslots.h dragdrop.h elhash.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h objects-x.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h
+event-stream.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h elhash.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h lstream.h macros.h menubar.h mule-charset.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h
+event-unixoid.o: $(LISP_H) conslots.h console-stream.h console-tty.h console.h device.h devslots.h events.h lstream.h mule-charset.h process.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h
+events.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console-tty.h console-x.h console.h device.h devslots.h events.h extents.h frame.h frameslots.h glyphs.h gui.h keymap.h mule-charset.h redisplay.h scrollbar.h specifier.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h
+extents.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h debug.h device.h devslots.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h keymap.h mule-charset.h opaque.h process.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+faces.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+file-coding.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h elhash.h file-coding.h insdel.h lstream.h mule-ccl.h mule-charset.h opaque.h
+fileio.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h ndir.h nt.h redisplay.h scrollbar.h specifier.h sysdep.h sysdir.h sysfile.h sysproc.h syspwd.h systime.h syswindows.h toolbar.h window.h winslots.h
+filelock.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h ndir.h paths.h sysdir.h sysfile.h syspwd.h syssignal.h
+filemode.o: $(LISP_H) sysfile.h
+floatfns.o: $(LISP_H) sysfloat.h syssignal.h
+fns.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console.h device.h devslots.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h systime.h toolbar.h window.h winslots.h
+font-lock.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h mule-charset.h syntax.h
+frame.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h events.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+free-hook.o: $(LISP_H) hash.h
+general.o: $(LISP_H)
+getloadavg.o: $(LISP_H) sysfile.h
+gif_io.o: $(LISP_H) gifrlib.h sysfile.h
+glade.o: bytecode.h
+glyphs-eimage.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h faces.h file-coding.h frame.h frameslots.h gifrlib.h glyphs.h gui.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h toolbar.h window.h winslots.h
+glyphs-shared.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h imgproc.h insdel.h lstream.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h toolbar.h window.h winslots.h
+glyphs-widget.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+glyphs.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h objects.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+gmalloc.o: config.h getpagesize.h
+gpmevent.o: $(LISP_H) commands.h conslots.h console-tty.h console.h device.h devslots.h events.h gpmevent.h lstream.h mule-charset.h process.h sysdep.h sysproc.h syssignal.h systime.h systty.h
+gtk-glue.o: 
+gtk-xemacs.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+gui.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h elhash.h gui.h mule-charset.h
+gutter.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+hash.o: $(LISP_H) hash.h
+hftctl.o: $(LISP_H) sysfile.h
+hpplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h sound.h
+imgproc.o: $(LISP_H) imgproc.h
+indent.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console-gtk.h console-msw.h console.h database.h device.h devslots.h eldap.h elhash.h events.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h keymap.h lstream.h mule-charset.h objects.h opaque.h postgresql.h process.h rangetab.h redisplay.h scrollbar.h specifier.h syntax.h syscommctrl.h sysdll.h systime.h syswindows.h toolbar.h tooltalk.h ui-gtk.h window.h winslots.h xintrinsic.h
+input-method-motif.o: $(LISP_H) EmacsFrame.h conslots.h console-x.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h
+input-method-xlib.o: $(LISP_H) EmacsFrame.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+insdel.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+intl.o: $(LISP_H) bytecode.h conslots.h console.h device.h devslots.h
+keymap.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+lastfile.o: config.h
+libsst.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h libsst.h mule-charset.h sound.h sysfile.h
+line-number.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h line-number.h mule-charset.h
+linuxplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h miscplay.h mule-charset.h sound.h sysfile.h syssignal.h systty.h
+lread.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h elhash.h file-coding.h lstream.h mule-charset.h opaque.h sysfile.h sysfloat.h
+lstream.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h lstream.h mule-charset.h sysfile.h
+macros.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h keymap.h macros.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+malloc.o: config.h getpagesize.h
+marker.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h
+md5.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h file-coding.h lstream.h mule-charset.h
+menubar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h keymap.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+minibuf.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-stream.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+miscplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h miscplay.h mule-charset.h sound.h sysfile.h syssignal.h
+nas.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h sound.h sysdep.h syssignal.h
+native-gtk-toolbar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+nt.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h ndir.h nt.h ntheap.h sysdir.h sysfile.h sysproc.h syspwd.h syssignal.h systime.h syswindows.h
+ntheap.o: $(LISP_H) ntheap.h syswindows.h
+ntplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h nt.h sound.h sysfile.h systime.h syswindows.h
+ntproc.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h mule-charset.h nt.h ntheap.h process.h syscommctrl.h sysfile.h sysproc.h syssignal.h systime.h syswait.h syswindows.h
+objects.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+offix.o: offix-cursors.h offix-types.h offix.h xintrinsic.h
+opaque.o: $(LISP_H) opaque.h
+postgresql.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h postgresql.h sysdep.h
+print.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console-msw.h console-stream.h console-tty.h console.h device.h devslots.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysfile.h syssignal.h systty.h syswindows.h toolbar.h window.h winslots.h
+process-nt.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h hash.h lstream.h mule-charset.h nt.h process.h procimpl.h syscommctrl.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h syswindows.h
+process-unix.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
+process.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h insdel.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
+profile.o: $(LISP_H) backtrace.h bytecode.h elhash.h hash.h syssignal.h systime.h
+ralloc.o: $(LISP_H) getpagesize.h
+rangetab.o: $(LISP_H) rangetab.h
+realpath.o: $(LISP_H) sysfile.h syswindows.h
+redisplay-output.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+redisplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-tty.h console.h debug.h device.h devslots.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h line-number.h menubar.h mule-charset.h objects.h process.h redisplay.h scrollbar.h specifier.h sysfile.h syssignal.h systty.h toolbar.h window.h winslots.h
+regex.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h regex.h syntax.h
+scrollbar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+search.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h mule-charset.h opaque.h regex.h syntax.h
+select.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h extents.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h toolbar.h window.h winslots.h
+sgiplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h libst.h mule-charset.h sound.h sysfile.h sysproc.h systime.h
+sheap.o: $(LISP_H) sheap-adjust.h
+signal.o: $(LISP_H) conslots.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h
+sound.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h mule-charset.h redisplay.h sound.h sysdep.h sysfile.h sysproc.h systime.h xintrinsic.h
+specifier.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+strcat.o: config.h
+strcmp.o: config.h
+strcpy.o: config.h
+strftime.o: $(LISP_H)
+sunOS-fix.o: config.h
+sunplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h sound.h sysdep.h sysfile.h syssignal.h
+sunpro.o: $(LISP_H)
+symbols.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h elhash.h mule-charset.h
+syntax.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h extents.h mule-charset.h syntax.h
+sysdep.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h ndir.h nt.h ntheap.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysdir.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h syswindows.h toolbar.h window.h winslots.h
+sysdll.o: config.h sysdll.h
+termcap.o: $(LISP_H) conslots.h console.h device.h devslots.h
+terminfo.o: config.h
+tests.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h elhash.h lstream.h mule-charset.h opaque.h
+toolbar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+tooltalk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h elhash.h mule-charset.h process.h syssignal.h tooltalk.h
+tparam.o: $(LISP_H)
+ui-byhand.o: gui.h
+undo.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h extents.h mule-charset.h
+unexaix.o: $(LISP_H) getpagesize.h
+unexalpha.o: config.h
+unexapollo.o: config.h
+unexconvex.o: config.h getpagesize.h
+unexcw.o: $(LISP_H) sysfile.h
+unexec.o: $(LISP_H) getpagesize.h
+unexelf.o: config.h
+unexelfsgi.o: config.h
+unexenix.o: config.h
+unexfreebsd.o: config.h
+unexhp9k3.o: config.h sysdep.h
+unexhp9k800.o: $(LISP_H)
+unexmips.o: config.h getpagesize.h
+unexnt.o: $(LISP_H) nt.h ntheap.h sysfile.h systime.h syswindows.h
+unexsunos4.o: config.h
+vm-limit.o: $(LISP_H) mem-limits.h
+widget.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h
+win32.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h syssignal.h systime.h syswindows.h
+window.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+xgccache.o: $(LISP_H) hash.h xgccache.h
+xmu.o: config.h
diff --text -u /dev/null 'xemacs-21.5.3/src/Makefile.in'
Index: ././src/Makefile.in
--- ././src/Makefile.in	Thu Jan  1 09:00:00 1970
+++ ././src/Makefile.in	Fri Sep  7 18:15:50 2001
@@ -0,0 +1,1030 @@
+# Generated automatically from depend by configure.
+##   Makefile for src subdirectory in XEmacs.
+##   Copyright (C) 1985, 1987, 1988, 1993, 1994 Free Software Foundation, Inc.
+##   Copyright (C) 1994, 1995 Board of Trustees, University of Illinois
+##   Copyright (C) 1996, 1997 Sun Microsystems, Inc.
+##   Copyright (C) 1998, 1999 J. Kean Johnston.
+
+## This file is part of XEmacs.
+
+## XEmacs 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.
+
+## XEmacs 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 XEmacs; see the file COPYING.  If not, write to
+## the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+## Boston, MA 02111-1307, USA.
+
+## Synched up with: Not synched with FSF.
+
+PROGNAME=xemacs
+
+#define NOT_C_CODE
+#include "config.h"
+
+#ifdef PDUMP
+DUMP_TARGET = ${PROGNAME}.dmp
+EXE_TARGET  = ${PROGNAME}
+DUMP_ID     = dump-id.o
+#else
+DUMP_TARGET = ${PROGNAME}
+EXE_TARGET  = temacs
+#endif
+
+all: ${DUMP_TARGET}
+.PHONY : all release dump-elc dump-elcs all-elc all-elcs lint
+
+## For performance and consistency, no built-in rules.
+.SUFFIXES:
+.SUFFIXES: .c .h .o .i .s .dep
+
+#ifdef USE_GNU_MAKE
+RECURSIVE_MAKE=$(MAKE)
+#else
+
+RECURSIVE_MAKE=$(MAKE) $(MFLAGS) CC='$(CC)' CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS)' CPPFLAGS='$(CPPFLAGS)'
+#endif
+
+SHELL=/bin/sh
+RM = rm -f
+
+lispdir = ${srcdir}/../lisp/
+moduledir = ${srcdir}/../modules/
+libsrc = ../lib-src/
+etcdir = ../etc/
+
+## Here are the things that we expect ../configure to edit.
+prefix=/usr/local
+srcdir=/playpen/mozilla/XEmacs/xemacs-21.5.3/src
+blddir=/playpen/mozilla/XEmacs/xemacs-21.5.3
+version=21.5-b3
+CC=gcc
+CPP=gcc -E
+CFLAGS=-g -O3 -Wall -Wno-switch -Winline -Wmissing-prototypes -Wshadow -Wsign-compare
+CPPFLAGS=
+LDFLAGS=
+
+c_switch_all=-DHAVE_CONFIG_H -I/usr/X11R6/include
+ld_switch_all=-L/usr/X11R6/lib
+ld_libs_all=-laudio -lXm -lcanna -lRKC -lwnn -ltiff -lpng -ljpeg -lz -lXpm -lXmu -lXt -lXext -lX11 -lSM -lICE -ldb -lgpm -lncurses -L/usr/lib -lesd -laudiofile -lm -lpq -lm -lutil -lgcc -lc -lgcc /usr/lib/crtn.o
+ld_dynamic_link_flags=-Wl,-export-dynamic
+
+extra_objs=debug.o tests.o filelock.o unexelf.o balloon_help.o balloon-x.o postgresql.o dgif_lib.o gif_io.o menubar.o scrollbar.o dialog.o toolbar.o menubar-x.o scrollbar-x.o dialog-x.o toolbar-x.o gui-x.o mule.o mule-ccl.o mule-charset.o file-coding.o input-method-xlib.o mule-wnnfns.o mule-canna.o realpath.o inline.o linuxplay.o nas.o esd.o miscplay.o console-tty.o device-tty.o event-tty.o frame-tty.o objects-tty.o redisplay-tty.o cm.o terminfo.o gpmevent.o event-unixoid.o database.o sysdll.o emodules.o process-unix.o
+LN_S=ln -s
+
+ld_switch_shared=-c
+start_files=pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o
+start_flags=
+LD=$(CC) -nostdlib
+lib_gcc=`$(CC) $(C_SWITCH_X_SITE) -print-libgcc-file-name`
+##libmcheck=@libmcheck@
+
+
+## With the traditional VPATH setting, it is not possible to
+## simultaneously compile in-place and in another directory.  The
+## mistaken definition is that *all* dependencies are searched for in
+## the VPATH directory, rather than just the dependencies that are not
+## themselves targets.  Thus, if there is an up-to-date .o file in the
+## in-place location, it will not get recompiled in the not-in-place
+## location.
+
+## The GNU Make "vpath" directive continues this tradition, but at
+## least lets you restrict the classes of files that it applies to.
+## This allows us to kludge around the problem.
+
+#ifdef USE_GNU_MAKE
+vpath %.c /playpen/mozilla/XEmacs/xemacs-21.5.3/src
+vpath %.h /playpen/mozilla/XEmacs/xemacs-21.5.3/src
+## now list files that should NOT be searched in the srcdir.
+## This includes any .c or .h built from something else
+## (e.g. a .in file).
+vpath config.h
+vpath paths.h
+vpath Emacs.ad.h
+vpath sheap-adjust.h
+vpath dump-id.c
+#else
+VPATH=/playpen/mozilla/XEmacs/xemacs-21.5.3/src
+#endif
+
+RM = rm -f
+
+LWLIB_SRCDIR = ${srcdir}/../lwlib
+
+#ifdef HAVE_X_WINDOWS
+lwlib_libs = ../lwlib/liblw.a
+lwlib_deps = $(lwlib_libs)
+$(lwlib_libs) :
+	cd ../lwlib && $(RECURSIVE_MAKE)
+
+x_objs=console-x.o device-x.o event-Xt.o frame-x.o\
+ glyphs-x.o objects-x.o redisplay-x.o select-x.o xgccache.o
+
+#ifdef AIX4
+LIBI18N = -li18n
+#endif /* AIX4 */
+
+X11_libs = $(LIBI18N)
+#endif /* HAVE_X_WINDOWS */
+
+#if defined (HEAP_IN_DATA) && !defined (PDUMP)
+sheap_objs=sheap.o
+#endif
+
+#if defined (WIN32_NATIVE) || defined (CYGWIN)
+win32_objs=win32.o xemacs_res.o
+#endif
+
+#ifdef HAVE_SETITIMER
+profile_objs=profile.o
+#endif
+
+## -Demacs is needed to make some files produce the correct version
+## for use in Emacs.
+
+cppflags = $(CPPFLAGS) -Demacs -I. $(c_switch_all)
+cflags   = $(CFLAGS) $(cppflags)
+#if defined (WIN32_NATIVE) || defined (CYGWIN)
+ldflags  = $(LDFLAGS) -mwindows -e _mainCRTStartup $(ld_switch_all) $(ld_dynamic_link_flags)
+#else
+ldflags  = $(LDFLAGS) $(ld_switch_all) $(ld_dynamic_link_flags)
+#endif
+
+#ifdef SOLARIS2
+%.o : %.c
+#else
+.c.o:
+#endif
+	$(CC) -c $(cflags) $<
+
+## Create preprocessor output (debugging purposes only)
+.c.i:
+#ifdef __GNUC__
+	$(CC) -E $(cppflags) -o $@ $<
+#else /* works on Solaris; what about other systems? */
+	$(CC) -P $(cppflags) $<
+#endif /* compiler */
+
+## Create assembler output (debugging purposes only)
+.c.s:
+	$(CC) -S -c $(cflags) $<
+
+## Create RTL files
+%.c.rtl : %.c
+	$(CC) -dr -c $(cflags) $<
+
+## lastfile must follow all files whose initialized data areas should
+## be dumped as pure by dump-emacs.
+
+## NOTE: The last line cannot be all macros, because make will barf
+## if they all come out null.
+
+objs=\
+ abbrev.o alloc.o blocktype.o buffer.o bytecode.o\
+ callint.o callproc.o casefiddle.o casetab.o chartab.o\
+ cmdloop.o cmds.o console.o console-stream.o\
+ data.o device.o dired.o doc.o doprnt.o dynarr.o\
+ editfns.o elhash.o emacs.o\
+ eval.o events.o $(extra_objs)\
+ event-stream.o extents.o faces.o\
+ fileio.o $(LOCK_OBJ) filemode.o floatfns.o fns.o font-lock.o\
+ frame.o general.o glyphs.o glyphs-eimage.o glyphs-shared.o glyphs-widget.o\
+ gui.o gutter.o $(gui_objs) hash.o imgproc.o indent.o insdel.o intl.o\
+ keymap.o $(RTC_patch_objs) line-number.o lread.o lstream.o\
+ macros.o marker.o md5.o minibuf.o objects.o opaque.o\
+ print.o process.o $(profile_objs)\
+ rangetab.o redisplay.o redisplay-output.o regex.o\
+ search.o select.o $(sheap_objs) signal.o sound.o\
+ specifier.o strftime.o symbols.o syntax.o sysdep.o\
+ undo.o $(x_objs) widget.o window.o $(win32_objs)
+
+obj_rtl = $(objs:.o=.c.rtl)
+
+#ifdef REL_ALLOC
+rallocdocsrc = ralloc.c
+rallocobjs = ralloc.o
+#endif
+
+malloclib = $(libmcheck)
+#ifndef SYSTEM_MALLOC
+# ifdef GNU_MALLOC  /* GNU malloc */
+#  ifdef ERROR_CHECK_MALLOC
+#ifdef DOUG_LEA_MALLOC
+mallocobjs = free-hook.o vm-limit.o
+#else
+mallocobjs = gmalloc.o free-hook.o vm-limit.o
+#endif
+mallocdocsrc = free-hook.c
+#  else /* New GNU malloc, sans error checking */
+#ifdef DOUG_LEA_MALLOC
+mallocobjs = vm-limit.o
+#else
+mallocobjs = gmalloc.o vm-limit.o
+#endif
+mallocdocsrc =
+#  endif /* ERROR_CHECK_MALLOC */
+# else /* Older GNU malloc */
+mallocobjs = malloc.o
+mallocdocsrc =
+# endif /* Older GNU malloc */
+#else /* SYSTEM_MALLOC */
+mallocobjs =
+mallocdocsrc =
+#ifdef USE_DEBUG_MALLOC
+malloclib = -ldmalloc
+#endif /* USE_DEBUG_MALLOC */
+#endif /* SYSTEM_MALLOC */
+
+#ifdef HAVE_X_WINDOWS
+
+# ifdef EXTERNAL_WIDGET
+external_widget_objs = ExternalShell.o extw-Xt-nonshared.o extw-Xlib-nonshared.o
+
+## Now we try to figure out how to link a shared library.
+## If we cannot figure it out, leave EXTW_LINK undefined and a shared
+## library will not be created.
+
+# ifdef USE_GCC
+#  ifdef USG5
+#   define EXTW_LINK(objs, output) $(CC) -shared objs -Xlinker -z -Xlinker text -o output
+extw_link_beg = $(CC) -shared
+extw_link_mid = -Xlinker -z -Xlinker text -o
+extw_link_end =
+## I cannot figure out how to do shared a.out libraries, so just punt.
+#  elif !defined (LINUX) || defined (__ELF__)
+#   define EXTW_LINK(objs, output) $(CC) -shared objs -o output
+extw_link_beg = $(CC) -shared
+extw_link_mid = -o
+extw_link_end =
+#  endif
+# elif defined (USG5)
+#  if defined (IRIX)
+#   define EXTW_LINK(objs, output) $(LD) -shared -g -check_registry ${TOOLROOT}/usr/lib/so_locations objs -o output
+extw_link_beg = $(LD) -shared -g -check_registry ${TOOLROOT}/usr/lib/so_locations
+extw_link_mid =  -o
+extw_link_end =
+#  else /* not IRIX */
+#   define EXTW_LINK(objs, output) $(CC) -G objs -z text -o output
+extw_link_beg = $(CC) -G
+extw_link_mid = -z text -o
+extw_link_end =
+#  endif /* not IRIX */
+# else /* not USG5 */
+#  if defined (DEC_ALPHA) && defined (OSF1)
+#   define EXTW_LINK(objs, output) $(LD) $(ldflags) $(ld_switch_shared) -d objs -o output $(LIBES)
+extw_link_beg = $(LD) $(ldflags) $(ld_switch_shared) -d
+extw_link_mid = -o
+extw_link_end = $(LIBES)
+#  else /* !(DEC_ALPHA && OSF1) */
+#   define EXTW_LINK(objs, output) $(LD) -dc objs -assert pure-text -o output
+extw_link_beg = $(LD) -dc
+extw_link_mid = -assert pure-text -o
+extw_link_end =
+#  endif /* !(DEC_ALPHA && OSF1) */
+# endif /* not USG5 */
+
+#  ifdef LWLIB_USES_MOTIF
+#    ifdef EXTW_LINK
+motif_other_files = libextcli_Xm.a libextcli_Xm.so.1
+#    else
+motif_other_files = libextcli_Xm.a
+#    endif
+#endif /* LWLIB_USES_MOTIF */
+
+#  ifdef EXTW_LINK
+shared_other_files = libextcli_Xt.so.1 libextcli_Xlib.so.1
+#  endif
+other_files=\
+ ${motif_other_files}\
+ libextcli_Xt.a libextcli_Xlib.a\
+ ${shared_other_files}
+
+all: ${other_files}
+# endif /* EXTERNAL_WIDGET */
+
+# if defined (HAVE_OFFIX_DND) || defined (HAVE_CDE)
+dnd_objs = 
+# endif /* HAVE_OFFIX_DND || HAVE_CDE */
+
+X11_objs =  EmacsFrame.o EmacsShell.o TopLevelEmacsShell.o TransientEmacsShell.o EmacsManager.o $(external_widget_objs) $(dnd_objs)
+#endif /* HAVE_X_WINDOWS */
+
+## define otherobjs as list of object files that make-docfile
+## should not be told about.
+otherobjs = lastfile.o $(mallocobjs) $(rallocobjs) $(X11_objs)
+otherrtls = $(otherobjs:.o=.c.rtl)
+othersrcs = $(otherobjs:.o=.c)
+
+LIBES = $(lwlib_libs) $(malloclib) $(ld_libs_all) $(lib_gcc)
+
+#ifdef I18N3
+mo_dir = ${etcdir}
+mo_file = ${mo_dir}emacs.mo
+#endif
+
+temacs_loadup = ./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/loadup.el
+dump_temacs   = ${temacs_loadup} dump
+run_temacs    = ${temacs_loadup} run-temacs
+debug_temacs = gdb ${EXE_TARGET}
+
+release: ${EXE_TARGET} ${libsrc}DOC $(mo_file) ${other_files}
+#ifdef CANNOT_DUMP
+	ln ${EXE_TARGET} ${PROGNAME}
+#else
+	-if [ -w ${srcdir}/../lisp ]; then \
+	  w=`pwd`; cd ${srcdir} && $${w}/${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/inc-vers; \
+	else true; fi
+	-./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/loadup.el dump
+	touch release
+#endif /* ! defined (CANNOT_DUMP) */
+
+${DUMP_TARGET}: ${EXE_TARGET} ${libsrc}DOC $(mo_file) ${other_files} update-elc.stamp
+#ifdef HEAP_IN_DATA
+	@$(RM) $@ && touch SATISFIED
+	-${dump_temacs}
+	@if test -f $@;        then if test -f SATISFIED; then \
+		echo "Testing for Lisp shadows ..."; \
+		./${PROGNAME} -batch -vanilla -f list-load-path-shadows; fi; \
+		$(RM) SATISFIED; exit 0; fi; \
+	if test -f SATISFIED; then $(RM) SATISFIED; exit 1; fi; \
+	$(RM) $@; \
+	$(RECURSIVE_MAKE) $@;
+#else
+	@$(RM) $@
+	${dump_temacs}
+	@echo "Testing for Lisp shadows ..."
+	@./${PROGNAME} -batch -vanilla -f list-load-path-shadows
+#endif
+
+fastdump: ${EXE_TARGET}
+	@$(RM) ${DUMP_TARGET} && touch SATISFIED
+	-${dump_temacs}
+	@./${PROGNAME} -batch -vanilla -f list-load-path-shadows
+
+FRC.update-elc.stamp :
+
+update-elc.stamp : ${EXE_TARGET} FRC.update-elc.stamp
+	@touch NOBYTECOMPILE
+	./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/update-elc.el
+	@if test ! -f $@ -o -f NOBYTECOMPILE; then touch $@; fi; \
+	 $(RM) NOBYTECOMPILE
+
+obj_src = $(objs:.o=.c)
+
+dortl : $(obj_rtl) $(otherrtls)
+	echo "(defvar source-files '(" > ${srcdir}/../lisp/source-files.el
+	(for a in $(obj_src) $(othersrcs);do \
+	echo -n "\""$$a"\"" >> ${srcdir}/../lisp/source-files.el ;\
+	done)
+	echo "))" >> ${srcdir}/../lisp/source-files.el
+
+#ifdef DYNODUMP
+dynodump_deps = ../dynodump/dynodump.so
+../dynodump/dynodump.so:
+	cd ../dynodump && $(RECURSIVE_MAKE)
+#endif /* DYNODUMP */
+
+${libsrc}DOC: ${EXE_TARGET} update-elc.stamp
+	$(RM) ${libsrc}DOC; \
+	${DUMPENV} ./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/make-docfile.el -- \
+		-o ${libsrc}DOC -d ${srcdir} -i ${libsrc}../site-packages \
+		${obj_src} ${mallocdocsrc} ${rallocdocsrc} ${extra_doc_files}
+
+dump_elcs: dump-elcs
+
+dump-elcs: ${EXE_TARGET}
+	-${DUMPENV} ./${EXE_TARGET} -nd -batch -l ${srcdir}/../lisp/update-elc.el
+
+all-elc all-elcs:
+	cd .. && $(RECURSIVE_MAKE) all-elc
+
+#ifdef I18N3
+
+# if defined(SPARC) && !defined(USG)
+   xgettext=		 /usr/openwin/bin/xgettext
+   xgettext_args=	 -o emacs -m_X messages
+   msgfmt=		 /usr/openwin/bin/msgfmt
+# else
+   xgettext=		 xgettext
+   xgettext_args=	 -s -d emacs -M_X messages
+   msgfmt=		 msgfmt
+#endif
+
+${mo_dir}emacs.po: ${libsrc}make-msgfile ${libsrc}make-po ${objs}
+	${libsrc}make-msgfile -o ${libsrc}messages ${objs}
+	cd ${libsrc} && ${xgettext} ${xgettext_args}
+	$(RM) ${mo_dir}emacs.po
+	cd ${libsrc} && ${libsrc}make-po -a ${mo_dir}emacs.po DOC
+
+${mo_dir}emacs.mo: ${mo_dir}emacs.po
+	cd ${mo_dir} && ${msgfmt} -o emacs.mo emacs.po
+
+${libsrc}make-msgfile:
+	cd ${libsrc} && $(RECURSIVE_MAKE) make-msgfile
+
+${libsrc}make-po:
+	cd ${libsrc} && $(RECURSIVE_MAKE) make-po
+
+#endif /* I18N3 */
+
+${libsrc}make-dump-id:
+	cd ${libsrc} && $(RECURSIVE_MAKE) make-dump-id
+
+${libsrc}make-docfile:
+	cd ${libsrc} && $(RECURSIVE_MAKE) make-docfile
+
+## Lint Section
+LINT.c=$(LINT) $(LINTFLAGS) $(LINTINCLUDES)
+LINTFILES= $(objs:.o=.ln)
+LINTINCLUDES = $(cppflags)
+## LINTFLAGS= -fd -m -p -s -u -v -x
+LINTFLAGS= -fd -m -s -u -v -x
+lint: $(LINTFILES)
+	$(LINT.c) $(LINTFILES)
+## end of Lint Section
+
+link_deps=\
+ $(start_files) ${objs} ${otherobjs}\
+ $(lwlib_deps) $(dynodump_deps)
+
+temacs_deps = $(link_deps) ${DUMP_ID}
+
+temacs_link_args=\
+ ${start_flags} ${ldflags}\
+ -o $@ ${start_files} ${objs} ${otherobjs} ${DUMP_ID} ${LIBES}
+
+${EXE_TARGET}: $(temacs_deps)
+	$(LD) $(temacs_link_args)
+
+dump-id.c: ${libsrc}make-dump-id ${link_deps}
+	${libsrc}make-dump-id
+
+.PHONY : run-temacs
+
+run-temacs: ${EXE_TARGET}
+	-${run_temacs}
+
+## We have automated tests!!
+testdir = ${srcdir}/../tests/automated
+batch_test_emacs = -batch -l ${testdir}/test-harness.el -f batch-test-emacs ${testdir}
+
+.PHONY: check check-temacs
+check:
+	./${PROGNAME} ${batch_test_emacs}
+check-temacs:
+	${run_temacs} ${batch_test_emacs}
+
+## Debugging targets:
+##
+## None of the debugging products work with a dumped xemacs binary,
+## because it does unexpected things like free memory that has been
+## malloc'ed in a *different* process!!  So we need to run these on
+## temacs.
+
+## RTC is Sun WorkShop's Run Time Checking, integrated with dbx
+rtc_patch.o:
+	rtc_patch_area -o $@
+
+rtcmacs: $(temacs_deps) rtc_patch.o
+	$(RM) ${EXE_TARGET}; $(RECURSIVE_MAKE) ${EXE_TARGET} RTC_patch_objs=rtc_patch.o
+	mv ${EXE_TARGET} rtcmacs
+
+.PHONY: run-rtcmacs
+run-rtcmacs: rtcmacs
+	dbx -q -C -c \
+	'dbxenv rtc_error_log_file_name /dev/fd/1; \
+	dbxenv suppress_startup_message 5.0; \
+	ignore POLL; \
+	check -access; \
+	suppress rui; \
+	runargs -batch -l ${srcdir}/../lisp/loadup.el run-temacs -q; \
+	run' rtcmacs
+
+debug-temacs: ${EXE_TARGET}
+	-${debug_temacs}
+
+## Purify, Quantify, PureCoverage are software quality products from
+## Rational, formerly Pure Atria, formerly Pure Software.
+##
+## Purify
+PURIFY_PROG  = purify
+PURIFY_LIBS  =
+PURIFY_FLAGS =\
+#ifdef PDUMP
+ -search-mmaps=yes\
+#endif
+ -chain-length=32 -ignore-signals=SIGPOLL\
+ -cache-dir=${blddir}/purecache -always-use-cache-dir=yes
+
+puremacs: $(temacs_deps)
+	$(PURIFY_PROG) $(PURIFY_FLAGS) $(LD) $(temacs_link_args) $(PURIFY_LIBS)
+	cp $@ ${EXE_TARGET}
+
+## Quantify
+#ifdef  QUANTIFY
+QUANTIFY_PROG     = quantify
+QUANTIFY_HOME     = `$(QUANTIFY_PROG) -print-home-dir`
+QUANTIFY_FLAGS    = -cache-dir=./purecache -always-use-cache-dir=yes
+cppflags         += -I$(QUANTIFY_HOME)
+temacs_link_args += $(QUANTIFY_HOME)/quantify_stubs.a
+
+quantmacs: $(temacs_deps)
+	$(QUANTIFY_PROG) $(QUANTIFY_FLAGS) $(LD) $(temacs_link_args)
+	cp $@ ${EXE_TARGET}
+#endif /* QUANTIFY */
+
+
+PURECOV_PROG=purecov
+covmacs: $(temacs_deps)
+	$(PURECOV_PROG) $(LD) $(temacs_link_args)
+
+
+TopLevelEmacsShell.o : ${srcdir}/EmacsShell-sub.c config.h xintrinsicp.h EmacsShellP.h
+	$(CC) -c $(cflags) -DDEFINE_TOP_LEVEL_EMACS_SHELL ${srcdir}/EmacsShell-sub.c
+	mv EmacsShell-sub.o TopLevelEmacsShell.o
+
+TopLevelEmacsShell.c.rtl : ${srcdir}/EmacsShell-sub.c config.h xintrinsicp.h EmacsShellP.h
+	$(CC) -dr -c $(cflags) -DDEFINE_TOP_LEVEL_EMACS_SHELL ${srcdir}/EmacsShell-sub.c
+	mv EmacsShell-sub.c.rtl TopLevelEmacsShell.c.rtl
+
+TransientEmacsShell.o : ${srcdir}/EmacsShell-sub.c TopLevelEmacsShell.o config.h xintrinsicp.h EmacsShellP.h
+	$(CC) -c $(cflags) -DDEFINE_TRANSIENT_EMACS_SHELL ${srcdir}/EmacsShell-sub.c
+	mv EmacsShell-sub.o TransientEmacsShell.o
+
+TransientEmacsShell.c.rtl : ${srcdir}/EmacsShell-sub.c TopLevelEmacsShell.o config.h xintrinsicp.h EmacsShellP.h
+	$(CC) -dr -c $(cflags) -DDEFINE_TRANSIENT_EMACS_SHELL ${srcdir}/EmacsShell-sub.c
+	mv EmacsShell-sub.c.rtl TransientEmacsShell.c.rtl
+
+## The above rules are subject to a race condition if using a parallel make.
+TransientEmacsShell.o : TopLevelEmacsShell.o
+TransientEmacsShell.c.rtl : TopLevelEmacsShell.c.rtl
+
+## Position-independent code for shared library creation
+#if USE_GCC
+pic_arg = -fpic
+#elif defined (IRIX)
+pic_arg = -KPIC
+# else
+pic_arg = -K pic
+#endif
+
+#ifdef EXTERNAL_WIDGET
+
+external_client_motif_objs_shared    = ExternalClient-Xm-shared.o extw-Xt-shared.o extw-Xlib-shared.o
+external_client_xt_objs_shared       = ExternalClient-Xt-shared.o extw-Xt-shared.o extw-Xlib-shared.o
+external_client_xlib_objs_shared     = ExternalClient-Xlib-shared.o extw-Xlib-shared.o
+external_client_motif_objs_nonshared = ExternalClient-Xm-nonshared.o extw-Xt-nonshared.o extw-Xlib-nonshared.o
+external_client_xt_objs_nonshared    = ExternalClient-Xt-nonshared.o extw-Xt-nonshared.o extw-Xlib-nonshared.o
+external_client_xlib_objs_nonshared  = ExternalClient-Xlib-nonshared.o extw-Xlib-nonshared.o
+
+## Add dependencies so things work right with a parallel make
+ExternalClient-Xm-shared.o: ${srcdir}/ExternalClient.c ExternalClient-Xt-shared.o ExternalClient-Xm-nonshared.o
+	$(CC) -c $(pic_arg) $(cflags) -DEXTW_USES_MOTIF ${srcdir}/ExternalClient.c
+	mv ExternalClient.o ExternalClient-Xm-shared.o
+
+ExternalClient-Xt-shared.o: ${srcdir}/ExternalClient.c ExternalClient-Xt-nonshared.o
+	$(CC) -c $(pic_arg) $(cflags) ${srcdir}/ExternalClient.c
+	mv ExternalClient.o ExternalClient-Xt-shared.o
+
+ExternalClient-Xlib-shared.o: ${srcdir}/ExternalClient-Xlib.c ExternalClient-Xlib-nonshared.o
+	$(CC) -c $(pic_arg) $(cflags) ${srcdir}/ExternalClient-Xlib.c
+	mv ExternalClient-Xlib.o ExternalClient-Xlib-shared.o
+
+ExternalClient-Xm-nonshared.o: ${srcdir}/ExternalClient.c ExternalClient-Xt-nonshared.o
+	$(CC) -c $(cflags) -DEXTW_USES_MOTIF ${srcdir}/ExternalClient.c
+	mv ExternalClient.o ExternalClient-Xm-nonshared.o
+
+ExternalClient-Xt-nonshared.o: ${srcdir}/ExternalClient.c
+	$(CC) -c $(cflags) ${srcdir}/ExternalClient.c
+	mv ExternalClient.o ExternalClient-Xt-nonshared.o
+
+ExternalClient-Xlib-nonshared.o: ${srcdir}/ExternalClient-Xlib.c
+	$(CC) -c $(cflags) ${srcdir}/ExternalClient-Xlib.c
+	mv ExternalClient-Xlib.o ExternalClient-Xlib-nonshared.o
+
+## We compile the common files twice (once with PIC and once without)
+## because on some systems, compiling with PIC but not linking into
+## a shared library messes things up.
+
+extw-Xt-shared.o: ${srcdir}/extw-Xt.c extw-Xt-nonshared.o
+	$(CC) -c $(pic_arg) $(cflags) ${srcdir}/extw-Xt.c
+	mv extw-Xt.o extw-Xt-shared.o
+
+extw-Xlib-shared.o: ${srcdir}/extw-Xlib.c extw-Xlib-nonshared.o
+	$(CC) -c $(pic_arg) $(cflags) ${srcdir}/extw-Xlib.c
+	mv extw-Xlib.o extw-Xlib-shared.o
+
+extw-Xt-nonshared.o: ${srcdir}/extw-Xt.c
+	$(CC) -c $(cflags) ${srcdir}/extw-Xt.c
+	mv extw-Xt.o extw-Xt-nonshared.o
+
+extw-Xlib-nonshared.o: ${srcdir}/extw-Xlib.c
+	$(CC) -c $(cflags) ${srcdir}/extw-Xlib.c
+	mv extw-Xlib.o extw-Xlib-nonshared.o
+
+libextcli_Xm.a: ${external_client_motif_objs_nonshared}
+	ar r libextcli_Xm.a ${external_client_motif_objs_nonshared}
+
+libextcli_Xt.a: ${external_client_xt_objs_nonshared}
+	ar r libextcli_Xt.a ${external_client_xt_objs_nonshared}
+
+libextcli_Xlib.a: ${external_client_xlib_objs_nonshared}
+	ar r libextcli_Xlib.a ${external_client_xlib_objs_nonshared}
+
+#ifdef EXTW_LINK
+
+libextcli_Xm.so.1: ${external_client_motif_objs_shared}
+	${extw_link_beg} ${external_client_motif_objs_shared} ${extw_link_mid} libextcli_Xm.so.1 ${extw_link_end}
+
+libextcli_Xt.so.1: ${external_client_xt_objs_shared}
+	${extw_link_beg} ${external_client_xt_objs_shared} ${extw_link_mid} libextcli_Xt.so.1 ${extw_link_end}
+
+libextcli_Xlib.so.1: ${external_client_xlib_objs_shared}
+	${extw_link_beg} ${external_client_xlib_objs_shared} ${extw_link_mid} libextcli_Xlib.so.1 ${extw_link_end}
+
+#endif /* EXTW_LINK */
+
+#endif /* EXTERNAL_WIDGET */
+
+config.h: ${srcdir}/config.h.in
+Emacs.ad.h: ${srcdir}/${etcdir}Emacs.ad
+
+config.h sheap-adjust.h paths.h Emacs.ad.h :
+	@echo "The file $@ needs to be re-generated."
+	@echo "Please run a make in the top level directory."
+	@echo "Consult the file \`INSTALL' for instructions for building XEmacs."
+	@exit 1
+
+## Some machines have alloca built-in.
+## They should define HAVE_ALLOCA, or may just let alloca.s
+## be used but generate no code.
+## Some have it written in assembler in alloca.s.
+## Some use the C version in alloca.c (these define C_ALLOCA in config.h).
+
+
+#ifdef C_ALLOCA
+## We could put something in alloca.c to #define free and malloc
+## whenever emacs was #defined, but that's not appropriate for all
+## users of alloca in Emacs.  Check out ../lib-src/getopt.c.  */
+
+alloca.o : ${srcdir}/alloca.c
+	$(CC) -c -Dfree=xfree -Dmalloc=xmalloc $(cflags) ${srcdir}/alloca.c
+#else
+#ifndef HAVE_ALLOCA
+alloca.o : ${srcdir}/alloca.s config.h
+## $(CPP) is cc -E, which may get confused by filenames
+## that do not end in .c.  So copy file to a safe name.  */
+##	cp ${srcdir}/alloca.s allocatem.c
+## Remove any ^L, blank lines, and preprocessor comments,
+## since some assemblers barf on them.  Use a different basename for the
+## output file, since some stupid compilers (Green Hill) use that
+## name for the intermediate assembler file.
+	$(CPP) $(cppflags) allocatem.c | \
+	sed -e 's///' -e 's/^#.*//' | \
+	sed -n -e '/^..*$$/p' > allocax.s
+	@$(RM) alloca.o
+## Xenix, in particular, needs to run assembler via cc.
+	$(CC) -c allocax.s
+	mv allocax.o alloca.o
+	$(RM) allocax.s allocatem.c
+#endif /* HAVE_ALLOCA */
+#endif /* ! defined (C_ALLOCA) */
+
+#ifdef HAVE_NATIVE_SOUND
+sound_cflags=
+sunplay.o: ${srcdir}/sunplay.c
+	$(CC) -c  $(sound_cflags) $(cflags) ${srcdir}/sunplay.c
+hpplay.o: ${srcdir}/hpplay.c
+	$(CC) -c -Demacs $(sound_cflags) $(cflags) ${srcdir}/hpplay.c
+#endif /* HAVE_NATIVE_SOUND */
+
+#if defined(HAVE_GLADE_GLADE_H) || defined(HAVE_GLADE_H)
+glade_files=glade.c
+#endif
+
+#ifdef HAVE_GTK
+extra_doc_files=emacs-widget-accessors.c ui-byhand.c $(glade_files)
+#endif
+
+xemacs_res.o: ${srcdir}/../nt/xemacs.rc
+	windres --include-dir ${srcdir}/../nt -i ${srcdir}/../nt/xemacs.rc -o $@
+
+## System-specific programs to be made.
+## ${other_files}, $(objects_system) and $(objects_machine)
+## select which of these should be compiled.  */
+
+.PHONY: mostlyclean clean distclean realclean versionclean extraclean
+mostlyclean:
+	$(RM) temacs puremacs quantmacs *.o *.i  \
+	  core temacs.exe sheap-adjust.h
+clean: mostlyclean versionclean
+	$(RM) libextcli* update-elc.stamp
+## This is used in making a distribution.
+## Do not use it on development directories!
+distclean: clean
+	$(RM) config.h paths.h Emacs.ad.h \
+	  GNUmakefile Makefile Makefile.in TAGS ${PROGNAME}.*
+realclean: distclean
+versionclean:
+	$(RM) ${EXE_TARGET} ${DUMP_TARGET} ${libsrc}DOC
+extraclean: realclean
+	$(RM) *~ \#* m/*~ m/\#* s/*~ s/\#*
+
+.PHONY : lock unlock
+SOURCES = *.[chm] *.pswm [sm]/* COPYING paths.h.in Makefile.in.in \
+	config.h.in README COPYING ChangeLog
+unlock:
+	chmod u+w $(SOURCES)
+
+relock:
+	chmod -w $(SOURCES)
+
+## Header files for ellcc
+#ifdef HAVE_SHLIB
+MAKEPATH=../lib-src/make-path
+install: ${PROGNAME}
+	${MAKEPATH} ${archlibdir}/include ${archlibdir}/include/m ${archlibdir}/include/s
+	-@echo "Copying include files for ellcc..."
+	-@hdir=`pwd`; \
+	cd ${srcdir}; hdrdir2=`pwd`; cd $$hdir; \
+	test "$$hdrdir2" != "$$hdir" && hdir="$$hdir $$hdrdir2"; \
+	(for thisdir in $$hdir; do \
+		cd $$thisdir && \
+		(hdrtars=; \
+		for hdrfile in *.h; do \
+			hdrtars="$$hdrtars $$hdrfile"; \
+		done; \
+		test -d s && hdrtars="$$hdrtars s/*"; \
+		test -d m && hdrtars="$$hdrtars m/*"; \
+		test -n "$$hdrtars" && (tar cf - $$hdrtars) | \
+			(cd ${archlibdir}/include && umask 022 && tar xf -); \
+		chmod 755 ${archlibdir}/include; \
+		test -d ${archlibdir}/include/s && \
+		  chmod 755 ${archlibdir}/include/s; \
+		test -d ${archlibdir}/include/m && \
+		  chmod 755 ${archlibdir}/include/s;) \
+	done)
+#endif
+
+## Dependency processing using home-grown script, not makedepend
+.PHONY: depend
+FRC.depend:
+depend: FRC.depend
+	cd ${srcdir} && $(RM) depend.tmp && \
+	perl ./make-src-depend > depend.tmp && \
+	if cmp -s depend depend.tmp; \
+	then $(RM) depend.tmp; \
+	else $(RM) depend && mv depend.tmp depend; \
+	fi
+## This file is automatically generated by `make-src-depend'.  Do not modify.
+
+#if defined(USE_UNION_TYPE)
+LISP_UNION_H=lisp-union.h
+#else
+LISP_UNION_H=lisp-disunion.h
+#endif
+LISP_H=lisp.h config.h general-slots.h lrecord.h symeval.h symsinit.h $(LISP_UNION_H)
+#if defined(HAVE_MS_WINDOWS)
+console-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h events.h mule-charset.h opaque.h syscommctrl.h systime.h syswindows.h
+device-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console-stream.h console.h device.h devslots.h events.h faces.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysdep.h systime.h syswindows.h toolbar.h window.h winslots.h
+dialog-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h syscommctrl.h syswindows.h toolbar.h window.h winslots.h
+dired-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h ndir.h nt.h regex.h sysdir.h sysfile.h sysfloat.h sysproc.h systime.h syswindows.h
+event-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console-tty.h console.h device.h devslots.h dragdrop.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h menubar-msw.h menubar.h mule-charset.h objects-msw.h objects.h process.h redisplay.h scrollbar-msw.h scrollbar.h select.h specifier.h syscommctrl.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h syswindows.h toolbar.h window.h winslots.h
+frame-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h devslots.h elhash.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
+glyphs-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h devslots.h elhash.h faces.h file-coding.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h imgproc.h insdel.h lstream.h mule-charset.h objects-msw.h objects.h opaque.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysdep.h sysfile.h syswindows.h toolbar.h window.h winslots.h
+gui-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h devslots.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
+menubar-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-msw.h console.h device.h devslots.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h menubar-msw.h menubar.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
+objects-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h devslots.h hash.h insdel.h mule-charset.h objects-msw.h objects.h specifier.h syscommctrl.h syswindows.h
+redisplay-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h debug.h device.h devslots.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h gutter.h mule-ccl.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysdep.h systime.h syswindows.h toolbar.h window.h winslots.h
+scrollbar-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h devslots.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h opaque.h redisplay.h scrollbar-msw.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
+select-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h devslots.h file-coding.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h select.h specifier.h syscommctrl.h syswindows.h toolbar.h window.h winslots.h
+toolbar-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h devslots.h elhash.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h syscommctrl.h syswindows.h toolbar.h window.h winslots.h
+#endif
+#if defined(HAVE_X_WINDOWS)
+balloon-x.o: $(LISP_H) balloon_help.h conslots.h console-x.h console.h device.h devslots.h xintrinsic.h
+console-x.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h mule-charset.h process.h redisplay.h xintrinsic.h
+device-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h elhash.h events.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mule-charset.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h sysfile.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmu.h
+dialog-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-x.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+frame-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h EmacsShell.h ExternalShell.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h dragdrop.h events.h extents.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h gutter.h mule-charset.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar-x.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
+glyphs-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h bitmaps.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h imgproc.h insdel.h lstream.h mule-charset.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h toolbar.h window.h winslots.h xintrinsic.h xmu.h
+gui-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+menubar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-x.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h keymap.h menubar.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+objects-x.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h insdel.h mule-charset.h objects-x.h objects.h specifier.h xintrinsic.h
+redisplay-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h debug.h device.h devslots.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h gutter.h mule-ccl.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysproc.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmprimitivep.h
+scrollbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h conslots.h console-x.h console.h device.h devslots.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h redisplay.h scrollbar-x.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h
+select-x.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h select-common.h select.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+toolbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h
+#endif
+#if defined(HAVE_TTY)
+console-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h devslots.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systty.h toolbar.h window.h winslots.h
+device-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h devslots.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+event-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
+frame-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+objects-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h devslots.h insdel.h mule-charset.h objects-tty.h objects.h specifier.h syssignal.h systty.h
+redisplay-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-tty.h console.h device.h devslots.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h objects-tty.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+#endif
+#if defined(HAVE_GTK)
+console-gtk.o: $(LISP_H) conslots.h console-gtk.h console.h process.h redisplay.h
+device-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h elhash.h events.h faces.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h systime.h toolbar.h window.h winslots.h
+dialog-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-gtk.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+event-gtk.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-gtk.h console-tty.h console.h device.h devslots.h dragdrop.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gtk-xemacs.h gui.h lstream.h mule-charset.h objects-gtk.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h
+frame-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h dragdrop.h events.h extents.h faces.h frame.h frameslots.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h sysdll.h systime.h toolbar.h ui-gtk.h window.h winslots.h
+gccache-gtk.o: $(LISP_H) gccache-gtk.h hash.h
+glyphs-gtk.o: $(LISP_H) bitmaps.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h faces.h file-coding.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui-gtk.h gui.h imgproc.h insdel.h lstream.h mule-charset.h objects-gtk.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysdll.h sysfile.h toolbar.h ui-gtk.h window.h winslots.h
+gui-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+menubar-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-gtk.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysdll.h systime.h toolbar.h ui-gtk.h window.h winslots.h
+objects-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h insdel.h mule-charset.h objects-gtk.h objects.h specifier.h
+redisplay-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h debug.h device.h devslots.h faces.h file-coding.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gui.h gutter.h mule-ccl.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysproc.h systime.h toolbar.h window.h winslots.h
+scrollbar-gtk.o: $(LISP_H) conslots.h console-gtk.h console.h device.h devslots.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui-gtk.h gui.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+select-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h select-common.h select.h specifier.h systime.h toolbar.h window.h winslots.h
+toolbar-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h faces.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+ui-gtk.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h elhash.h emacs-marshals.c emacs-widget-accessors.c events.h faces.h glade.c glyphs-gtk.h glyphs.h gtk-glue.c gui-gtk.h gui.h hash.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdll.h systime.h ui-byhand.c ui-gtk.h window.h winslots.h
+#endif
+#if defined(HAVE_DATABASE)
+database.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h database.h mule-charset.h sysfile.h
+#endif
+#if defined(MULE)
+mule-canna.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h file-coding.h mule-charset.h
+mule-ccl.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h file-coding.h mule-ccl.h mule-charset.h
+mule-charset.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h faces.h lstream.h mule-ccl.h mule-charset.h
+mule-wnnfns.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h redisplay.h scrollbar.h sysdep.h window.h winslots.h
+mule.o: $(LISP_H) regex.h
+#endif
+#if defined(EXTERNAL_WIDGET)
+ExternalClient-Xlib.o: extw-Xlib.h
+ExternalClient.o: ExternalClient.h ExternalClientP.h config.h extw-Xlib.h extw-Xt.h xintrinsicp.h
+ExternalShell.o: ExternalShell.h ExternalShellP.h config.h extw-Xlib.h extw-Xt.h xintrinsic.h xintrinsicp.h
+extw-Xlib.o: config.h extw-Xlib.h
+extw-Xt.o: config.h extw-Xlib.h extw-Xt.h
+#endif
+EmacsFrame.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
+EmacsManager.o: EmacsManager.h EmacsManagerP.h config.h xintrinsicp.h xmmanagerp.h
+EmacsShell-sub.o: EmacsShell.h EmacsShellP.h config.h xintrinsic.h xintrinsicp.h
+EmacsShell.o: EmacsShell.h ExternalShell.h config.h xintrinsicp.h
+abbrev.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h insdel.h mule-charset.h redisplay.h scrollbar.h syntax.h window.h winslots.h
+alloc.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console-stream.h console.h device.h devslots.h dumper.h elhash.h events.h extents.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h systime.h toolbar.h window.h winslots.h
+alloca.o: config.h
+balloon_help.o: balloon_help.h config.h xintrinsic.h
+blocktype.o: $(LISP_H) blocktype.h
+buffer.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h process.h redisplay.h scrollbar.h select.h specifier.h syntax.h sysdep.h sysfile.h toolbar.h window.h winslots.h
+bytecode.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h mule-charset.h opaque.h syntax.h
+callint.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h commands.h events.h insdel.h mule-charset.h redisplay.h scrollbar.h systime.h window.h winslots.h
+callproc.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h file-coding.h insdel.h lstream.h mule-charset.h nt.h process.h redisplay.h scrollbar.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswindows.h window.h winslots.h
+casefiddle.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h mule-charset.h syntax.h
+casetab.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h opaque.h
+chartab.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h syntax.h
+cm.o: $(LISP_H) conslots.h console-tty.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h syssignal.h systty.h toolbar.h window.h winslots.h
+cmdloop.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+cmds.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h insdel.h mule-charset.h syntax.h
+console-stream.o: $(LISP_H) conslots.h console-stream.h console-tty.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+console.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-tty.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+data.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h mule-charset.h sysfloat.h syssignal.h
+debug.o: $(LISP_H) bytecode.h debug.h
+device.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h events.h faces.h frame.h frameslots.h glyphs.h gui.h keymap.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h toolbar.h window.h winslots.h
+dgif_lib.o: $(LISP_H) gifrlib.h sysfile.h
+dialog.o: $(LISP_H) conslots.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+dired.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h elhash.h mule-charset.h ndir.h opaque.h regex.h syntax.h sysdep.h sysdir.h sysfile.h syspwd.h systime.h syswindows.h
+doc.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h insdel.h keymap.h mule-charset.h sysfile.h
+doprnt.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h lstream.h mule-charset.h
+dragdrop.o: $(LISP_H) dragdrop.h
+dumper.o: $(LISP_H) conslots.h console-stream.h console.h dumper.h elhash.h nt.h specifier.h sysfile.h systime.h syswindows.h
+dynarr.o: $(LISP_H)
+ecrt0.o: config.h
+editfns.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syspwd.h systime.h toolbar.h window.h winslots.h
+eldap.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h eldap.h mule-charset.h opaque.h sysdep.h
+elhash.o: $(LISP_H) bytecode.h elhash.h opaque.h
+emacs-marshals.o: hash.h
+emacs-widget-accessors.o: 
+emacs.o: $(LISP_H) backtrace.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h dumper.h frame.h frameslots.h glyphs.h gui.h mule-charset.h nt.h paths.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h sysfile.h syssignal.h systime.h systty.h syswindows.h toolbar.h window.h winslots.h
+emodules.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h emodules.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h toolbar.h window.h winslots.h
+esd.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h miscplay.h mule-charset.h sound.h sysfile.h
+eval.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h commands.h conslots.h console.h mule-charset.h opaque.h
+event-Xt.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h Emacs.ad.h EmacsFrame.h blocktype.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-tty.h console-x.h console.h device.h devslots.h dragdrop.h elhash.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h objects-x.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h
+event-stream.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h elhash.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h lstream.h macros.h menubar.h mule-charset.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h
+event-unixoid.o: $(LISP_H) conslots.h console-stream.h console-tty.h console.h device.h devslots.h events.h lstream.h mule-charset.h process.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h
+events.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console-tty.h console-x.h console.h device.h devslots.h events.h extents.h frame.h frameslots.h glyphs.h gui.h keymap.h mule-charset.h redisplay.h scrollbar.h specifier.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h
+extents.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h debug.h device.h devslots.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h keymap.h mule-charset.h opaque.h process.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+faces.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+file-coding.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h elhash.h file-coding.h insdel.h lstream.h mule-ccl.h mule-charset.h opaque.h
+fileio.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h ndir.h nt.h redisplay.h scrollbar.h specifier.h sysdep.h sysdir.h sysfile.h sysproc.h syspwd.h systime.h syswindows.h toolbar.h window.h winslots.h
+filelock.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h ndir.h paths.h sysdir.h sysfile.h syspwd.h syssignal.h
+filemode.o: $(LISP_H) sysfile.h
+floatfns.o: $(LISP_H) sysfloat.h syssignal.h
+fns.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console.h device.h devslots.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h systime.h toolbar.h window.h winslots.h
+font-lock.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h mule-charset.h syntax.h
+frame.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h events.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+free-hook.o: $(LISP_H) hash.h
+general.o: $(LISP_H)
+getloadavg.o: $(LISP_H) sysfile.h
+gif_io.o: $(LISP_H) gifrlib.h sysfile.h
+glade.o: bytecode.h
+glyphs-eimage.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h faces.h file-coding.h frame.h frameslots.h gifrlib.h glyphs.h gui.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h toolbar.h window.h winslots.h
+glyphs-shared.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h imgproc.h insdel.h lstream.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h toolbar.h window.h winslots.h
+glyphs-widget.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+glyphs.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h objects.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+gmalloc.o: config.h getpagesize.h
+gpmevent.o: $(LISP_H) commands.h conslots.h console-tty.h console.h device.h devslots.h events.h gpmevent.h lstream.h mule-charset.h process.h sysdep.h sysproc.h syssignal.h systime.h systty.h
+gtk-glue.o: 
+gtk-xemacs.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+gui.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h elhash.h gui.h mule-charset.h
+gutter.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+hash.o: $(LISP_H) hash.h
+hftctl.o: $(LISP_H) sysfile.h
+hpplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h sound.h
+imgproc.o: $(LISP_H) imgproc.h
+indent.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console-gtk.h console-msw.h console.h database.h device.h devslots.h eldap.h elhash.h events.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h keymap.h lstream.h mule-charset.h objects.h opaque.h postgresql.h process.h rangetab.h redisplay.h scrollbar.h specifier.h syntax.h syscommctrl.h sysdll.h systime.h syswindows.h toolbar.h tooltalk.h ui-gtk.h window.h winslots.h xintrinsic.h
+input-method-motif.o: $(LISP_H) EmacsFrame.h conslots.h console-x.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h
+input-method-xlib.o: $(LISP_H) EmacsFrame.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+insdel.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+intl.o: $(LISP_H) bytecode.h conslots.h console.h device.h devslots.h
+keymap.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+lastfile.o: config.h
+libsst.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h libsst.h mule-charset.h sound.h sysfile.h
+line-number.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h line-number.h mule-charset.h
+linuxplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h miscplay.h mule-charset.h sound.h sysfile.h syssignal.h systty.h
+lread.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h elhash.h file-coding.h lstream.h mule-charset.h opaque.h sysfile.h sysfloat.h
+lstream.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h lstream.h mule-charset.h sysfile.h
+macros.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h keymap.h macros.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+malloc.o: config.h getpagesize.h
+marker.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h
+md5.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h file-coding.h lstream.h mule-charset.h
+menubar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h keymap.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+minibuf.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-stream.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+miscplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h miscplay.h mule-charset.h sound.h sysfile.h syssignal.h
+nas.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h sound.h sysdep.h syssignal.h
+native-gtk-toolbar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+nt.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h ndir.h nt.h ntheap.h sysdir.h sysfile.h sysproc.h syspwd.h syssignal.h systime.h syswindows.h
+ntheap.o: $(LISP_H) ntheap.h syswindows.h
+ntplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h nt.h sound.h sysfile.h systime.h syswindows.h
+ntproc.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h mule-charset.h nt.h ntheap.h process.h syscommctrl.h sysfile.h sysproc.h syssignal.h systime.h syswait.h syswindows.h
+objects.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+offix.o: offix-cursors.h offix-types.h offix.h xintrinsic.h
+opaque.o: $(LISP_H) opaque.h
+postgresql.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h postgresql.h sysdep.h
+print.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console-msw.h console-stream.h console-tty.h console.h device.h devslots.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysfile.h syssignal.h systty.h syswindows.h toolbar.h window.h winslots.h
+process-nt.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h hash.h lstream.h mule-charset.h nt.h process.h procimpl.h syscommctrl.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h syswindows.h
+process-unix.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
+process.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h insdel.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
+profile.o: $(LISP_H) backtrace.h bytecode.h elhash.h hash.h syssignal.h systime.h
+ralloc.o: $(LISP_H) getpagesize.h
+rangetab.o: $(LISP_H) rangetab.h
+realpath.o: $(LISP_H) sysfile.h syswindows.h
+redisplay-output.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+redisplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-tty.h console.h debug.h device.h devslots.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h line-number.h menubar.h mule-charset.h objects.h process.h redisplay.h scrollbar.h specifier.h sysfile.h syssignal.h systty.h toolbar.h window.h winslots.h
+regex.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h regex.h syntax.h
+scrollbar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+search.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h mule-charset.h opaque.h regex.h syntax.h
+select.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h extents.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h toolbar.h window.h winslots.h
+sgiplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h libst.h mule-charset.h sound.h sysfile.h sysproc.h systime.h
+sheap.o: $(LISP_H) sheap-adjust.h
+signal.o: $(LISP_H) conslots.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h
+sound.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h mule-charset.h redisplay.h sound.h sysdep.h sysfile.h sysproc.h systime.h xintrinsic.h
+specifier.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+strcat.o: config.h
+strcmp.o: config.h
+strcpy.o: config.h
+strftime.o: $(LISP_H)
+sunOS-fix.o: config.h
+sunplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h sound.h sysdep.h sysfile.h syssignal.h
+sunpro.o: $(LISP_H)
+symbols.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h elhash.h mule-charset.h
+syntax.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h extents.h mule-charset.h syntax.h
+sysdep.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h ndir.h nt.h ntheap.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysdir.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h syswindows.h toolbar.h window.h winslots.h
+sysdll.o: config.h sysdll.h
+termcap.o: $(LISP_H) conslots.h console.h device.h devslots.h
+terminfo.o: config.h
+tests.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h elhash.h lstream.h mule-charset.h opaque.h
+toolbar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+tooltalk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h elhash.h mule-charset.h process.h syssignal.h tooltalk.h
+tparam.o: $(LISP_H)
+ui-byhand.o: gui.h
+undo.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h extents.h mule-charset.h
+unexaix.o: $(LISP_H) getpagesize.h
+unexalpha.o: config.h
+unexapollo.o: config.h
+unexconvex.o: config.h getpagesize.h
+unexcw.o: $(LISP_H) sysfile.h
+unexec.o: $(LISP_H) getpagesize.h
+unexelf.o: config.h
+unexelfsgi.o: config.h
+unexenix.o: config.h
+unexfreebsd.o: config.h
+unexhp9k3.o: config.h sysdep.h
+unexhp9k800.o: $(LISP_H)
+unexmips.o: config.h getpagesize.h
+unexnt.o: $(LISP_H) nt.h ntheap.h sysfile.h systime.h syswindows.h
+unexsunos4.o: config.h
+vm-limit.o: $(LISP_H) mem-limits.h
+widget.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h
+win32.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h syssignal.h systime.h syswindows.h
+window.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+xgccache.o: $(LISP_H) hash.h xgccache.h
+xmu.o: config.h
diff --text -u 'xemacs-21.5.2/src/alloc.c' 'xemacs-21.5.3/src/alloc.c'
Index: ././src/alloc.c
--- ././src/alloc.c	Mon Jun 18 16:10:07 2001
+++ ././src/alloc.c	Mon Aug 13 13:46:07 2001
@@ -243,7 +243,7 @@
 
 #undef xmalloc
 void *
-xmalloc (size_t size)
+xmalloc (Memory_Count size)
 {
   void *val = malloc (size);
 
@@ -253,7 +253,7 @@
 
 #undef xcalloc
 static void *
-xcalloc (size_t nelem, size_t elsize)
+xcalloc (Element_Count nelem, Memory_Count elsize)
 {
   void *val = calloc (nelem, elsize);
 
@@ -262,14 +262,14 @@
 }
 
 void *
-xmalloc_and_zero (size_t size)
+xmalloc_and_zero (Memory_Count size)
 {
   return xcalloc (size, sizeof (char));
 }
 
 #undef xrealloc
 void *
-xrealloc (void *block, size_t size)
+xrealloc (void *block, Memory_Count size)
 {
   block = realloc (block, size);
 
@@ -307,10 +307,10 @@
 #endif
 
 static void
-deadbeef_memory (void *ptr, size_t size)
+deadbeef_memory (void *ptr, Memory_Count size)
 {
   four_byte_t *ptr4 = (four_byte_t *) ptr;
-  size_t beefs = size >> 2;
+  Memory_Count beefs = size >> 2;
 
   /* In practice, size will always be a multiple of four.  */
   while (beefs--)
@@ -345,7 +345,7 @@
 
 
 static void *
-allocate_lisp_storage (size_t size)
+allocate_lisp_storage (Memory_Count size)
 {
   return xmalloc (size);
 }
@@ -357,7 +357,7 @@
 static struct lcrecord_header *all_lcrecords;
 
 void *
-alloc_lcrecord (size_t size, const struct lrecord_implementation *implementation)
+alloc_lcrecord (Memory_Count size, const struct lrecord_implementation *implementation)
 {
   struct lcrecord_header *lcheader;
 
@@ -997,7 +997,7 @@
 
   {
     Lisp_Object val = Qnil;
-    size_t size = XINT (length);
+    EMACS_INT size = XINT (length);
 
     while (size--)
       val = Fcons (object, val);
@@ -1052,7 +1052,7 @@
   return (len > 0) ? ptr->contents[len - 1] : Qnil;
 }
 
-static size_t
+static Memory_Count
 size_vector (const void *lheader)
 {
   return FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Vector, Lisp_Object, contents,
@@ -1076,7 +1076,7 @@
   return 1;
 }
 
-static hashcode_t
+static Hash_Code
 vector_hash (Lisp_Object obj, int depth)
 {
   return HASH2 (XVECTOR_LENGTH (obj),
@@ -1100,10 +1100,10 @@
 
 /* #### should allocate `small' vectors from a frob-block */
 static Lisp_Vector *
-make_vector_internal (size_t sizei)
+make_vector_internal (Element_Count sizei)
 {
   /* no vector_next */
-  size_t sizem = FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Vector, Lisp_Object,
+  Memory_Count sizem = FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Vector, Lisp_Object,
 					       contents, sizei);
   Lisp_Vector *p = (Lisp_Vector *) alloc_lcrecord (sizem, &lrecord_vector);
 
@@ -1112,7 +1112,7 @@
 }
 
 Lisp_Object
-make_vector (size_t length, Lisp_Object object)
+make_vector (Element_Count length, Lisp_Object object)
 {
   Lisp_Vector *vecp = make_vector_internal (length);
   Lisp_Object *p = vector_data (vecp);
@@ -1264,11 +1264,12 @@
 
 /* #### should allocate `small' bit vectors from a frob-block */
 static Lisp_Bit_Vector *
-make_bit_vector_internal (size_t sizei)
+make_bit_vector_internal (Element_Count sizei)
 {
-  size_t num_longs = BIT_VECTOR_LONG_STORAGE (sizei);
-  size_t sizem = FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Bit_Vector, unsigned long,
-					       bits, num_longs);
+  Element_Count num_longs = BIT_VECTOR_LONG_STORAGE (sizei);
+  Memory_Count sizem = FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Bit_Vector,
+						     unsigned long,
+						     bits, num_longs);
   Lisp_Bit_Vector *p = (Lisp_Bit_Vector *) allocate_lisp_storage (sizem);
   set_lheader_implementation (&p->lheader, &lrecord_bit_vector);
 
@@ -1284,10 +1285,10 @@
 }
 
 Lisp_Object
-make_bit_vector (size_t length, Lisp_Object bit)
+make_bit_vector (Element_Count length, Lisp_Object bit)
 {
   Lisp_Bit_Vector *p = make_bit_vector_internal (length);
-  size_t num_longs = BIT_VECTOR_LONG_STORAGE (length);
+  Element_Count num_longs = BIT_VECTOR_LONG_STORAGE (length);
 
   CHECK_BIT (bit);
 
@@ -1295,7 +1296,7 @@
     memset (p->bits, 0, num_longs * sizeof (long));
   else
     {
-      size_t bits_in_last = length & (LONGBITS_POWER_OF_2 - 1);
+      Element_Count bits_in_last = length & (LONGBITS_POWER_OF_2 - 1);
       memset (p->bits, ~0, num_longs * sizeof (long));
       /* But we have to make sure that the unused bits in the
 	 last long are 0, so that equal/hash is easy. */
@@ -1311,9 +1312,9 @@
 }
 
 Lisp_Object
-make_bit_vector_from_byte_vector (unsigned char *bytevec, size_t length)
+make_bit_vector_from_byte_vector (unsigned char *bytevec, Element_Count length)
 {
-  size_t i;
+  Element_Count i;
   Lisp_Bit_Vector *p = make_bit_vector_internal (length);
 
   for (i = 0; i < length; i++)
@@ -2041,7 +2042,7 @@
       memset (XSTRING_DATA (val), XCHAR (character), XSTRING_LENGTH (val));
     else
       {
-	size_t i;
+	EMACS_INT i;
 	Bufbyte *ptr = XSTRING_DATA (val);
 
 	for (i = XINT (length); i; i--)
@@ -2226,7 +2227,7 @@
 			       mark_lcrecord_list, internal_object_printer,
 			       0, 0, 0, 0, struct lcrecord_list);
 Lisp_Object
-make_lcrecord_list (size_t size,
+make_lcrecord_list (Element_Count size,
 		    const struct lrecord_implementation *implementation)
 {
   struct lcrecord_list *p = alloc_lcrecord_type (struct lcrecord_list,
@@ -2326,8 +2327,8 @@
 /* All the built-in lisp object types are enumerated in `enum lrecord_type'.
    Additional ones may be defined by a module (none yet).  We leave some
    room in `lrecord_implementations_table' for such new lisp object types. */
-const struct lrecord_implementation *lrecord_implementations_table[(unsigned int)lrecord_type_last_built_in_type + MODULE_DEFINABLE_TYPE_COUNT];
-unsigned int lrecord_type_count = (unsigned int)lrecord_type_last_built_in_type;
+const struct lrecord_implementation *lrecord_implementations_table[(int)lrecord_type_last_built_in_type + MODULE_DEFINABLE_TYPE_COUNT];
+int lrecord_type_count = lrecord_type_last_built_in_type;
 /* Object marker functions are in the lrecord_implementation structure.
    But copying them to a parallel array is much more cache-friendly.
    This hack speeds up (garbage-collect) by about 5%. */
@@ -2382,7 +2383,7 @@
 #define GC_CHECK_LHEADER_INVARIANTS(lheader) do {		\
   struct lrecord_header * GCLI_lh = (lheader);			\
   assert (GCLI_lh != 0);					\
-  assert (GCLI_lh->type < lrecord_type_count);			\
+  assert (GCLI_lh->type < (unsigned int) lrecord_type_count);	\
   assert (! C_READONLY_RECORD_HEADER_P (GCLI_lh) ||		\
 	  (MARKED_RECORD_HEADER_P (GCLI_lh) &&			\
 	   LISP_READONLY_RECORD_HEADER_P (GCLI_lh)));		\
@@ -2456,8 +2457,8 @@
 static int gc_count_num_bit_vector_used, gc_count_bit_vector_total_size;
 static int gc_count_bit_vector_storage;
 static int gc_count_num_short_string_in_use;
-static int gc_count_string_total_size;
-static int gc_count_short_string_total_size;
+static Bytecount gc_count_string_total_size;
+static Bytecount gc_count_short_string_total_size;
 
 /* static int gc_count_total_records_used, gc_count_records_total_size; */
 
@@ -2476,7 +2477,7 @@
 static void
 tick_lcrecord_stats (const struct lrecord_header *h, int free_p)
 {
-  unsigned int type_index = h->type;
+  int type_index = h->type;
 
   if (((struct lcrecord_header *) h)->free)
     {
@@ -2488,7 +2489,7 @@
       const struct lrecord_implementation *implementation =
 	LHEADER_IMPLEMENTATION (h);
 
-      size_t sz = (implementation->size_in_bytes_method ?
+      Memory_Count sz = (implementation->size_in_bytes_method ?
 		   implementation->size_in_bytes_method (h) :
 		   implementation->static_size);
       if (free_p)
@@ -3055,12 +3056,13 @@
 static void
 sweep_strings (void)
 {
-  int num_small_used = 0, num_small_bytes = 0, num_bytes = 0;
+  int num_small_used = 0;
+  Bytecount num_small_bytes = 0, num_bytes = 0;
   int debug = debug_string_purity;
 
 #define UNMARK_string(ptr) do {			\
     Lisp_String *p = (ptr);			\
-    size_t size = string_length (p);		\
+    Bytecount size = string_length (p);		\
     UNMARK_RECORD_HEADER (&(p->lheader));	\
     num_bytes += size;				\
     if (!BIG_STRING_SIZE_P (size))		\
@@ -3072,7 +3074,7 @@
       debug_string_purity_print (p);		\
   } while (0)
 #define ADDITIONAL_FREE_string(ptr) do {	\
-    size_t size = string_length (ptr);		\
+    Bytecount size = string_length (ptr);	\
     if (BIG_STRING_SIZE_P (size))		\
       xfree (ptr->data);			\
   } while (0)
@@ -3394,10 +3396,10 @@
     {
       /* Static buffer in which we save a copy of the C stack at each GC.  */
       static char *stack_copy;
-      static size_t stack_copy_size;
+      static Memory_Count stack_copy_size;
 
       ptrdiff_t stack_diff = &stack_top_variable - stack_bottom;
-      size_t stack_size = (stack_diff > 0 ? stack_diff : -stack_diff);
+      Memory_Count stack_size = (stack_diff > 0 ? stack_diff : -stack_diff);
       if (stack_size < MAX_SAVE_STACK)
 	{
 	  if (stack_copy_size < stack_size)
@@ -3422,14 +3424,14 @@
 
   { /* staticpro() */
     Lisp_Object **p = Dynarr_begin (staticpros);
-    size_t count;
+    Element_Count count;
     for (count = Dynarr_length (staticpros); count; count--)
       mark_object (**p++);
   }
 
   { /* staticpro_nodump() */
     Lisp_Object **p = Dynarr_begin (staticpros_nodump);
-    size_t count;
+    Element_Count count;
     for (count = Dynarr_length (staticpros_nodump); count; count--)
       mark_object (**p++);
   }
@@ -3587,7 +3589,7 @@
        ())
 {
   Lisp_Object pl = Qnil;
-  unsigned int i;
+  int i;
   int gc_count_vector_total_size = 0;
 
   garbage_collect_1 ();
@@ -3762,15 +3764,14 @@
        blocks are allocated in the minimum required size except
        that some minimum block size is imposed (e.g. 16 bytes). */
 
-size_t
-malloced_storage_size (void *ptr, size_t claimed_size,
+Memory_Count
+malloced_storage_size (void *ptr, Memory_Count claimed_size,
 		       struct overhead_stats *stats)
 {
-  size_t orig_claimed_size = claimed_size;
+  Memory_Count orig_claimed_size = claimed_size;
 
 #ifdef GNU_MALLOC
-
-  if (claimed_size < 2 * sizeof (void *))
+  if (claimed_size < (Memory_Count) (2 * sizeof (void *)))
     claimed_size = 2 * sizeof (void *);
 # ifdef SUNOS_LOCALTIME_BUG
   if (claimed_size < 16)
@@ -3795,7 +3796,7 @@
         }
       /* We have to come up with some average about the amount of
 	 blocks used. */
-      if ((size_t) (rand () & 4095) < claimed_size)
+      if ((Memory_Count) (rand () & 4095) < claimed_size)
 	claimed_size += 3 * sizeof (void *);
     }
   else
@@ -3846,12 +3847,12 @@
   return claimed_size;
 }
 
-size_t
-fixed_type_block_overhead (size_t size)
+Memory_Count
+fixed_type_block_overhead (Memory_Count size)
 {
-  size_t per_block = TYPE_ALLOC_SIZE (cons, unsigned char);
-  size_t overhead = 0;
-  size_t storage_size = malloced_storage_size (0, per_block, 0);
+  Memory_Count per_block = TYPE_ALLOC_SIZE (cons, unsigned char);
+  Memory_Count overhead = 0;
+  Memory_Count storage_size = malloced_storage_size (0, per_block, 0);
   while (size >= per_block)
     {
       size -= per_block;
diff --text -u 'xemacs-21.5.2/src/backtrace.h' 'xemacs-21.5.3/src/backtrace.h'
Index: ././src/backtrace.h
--- ././src/backtrace.h	Mon Jun 18 16:10:09 2001
+++ ././src/backtrace.h	Mon Aug 13 13:46:08 2001
@@ -151,7 +151,7 @@
 /* Most callers should simply use specbind() and unbind_to(), but if
    speed is REALLY IMPORTANT, you can use the faster macros below */
 void specbind_magic (Lisp_Object, Lisp_Object);
-void grow_specpdl (size_t reserved);
+void grow_specpdl (EMACS_INT reserved);
 void unbind_to_hairy (int);
 extern int specpdl_size;
 
@@ -219,7 +219,7 @@
 
 /* Request enough room for SIZE future entries on special binding stack */
 #define SPECPDL_RESERVE(size) do {			\
-  size_t SR_size = (size);				\
+  EMACS_INT SR_size = (size);				\
   if (specpdl_depth() + SR_size >= specpdl_size)	\
     grow_specpdl (SR_size);				\
 } while (0)
diff --text -u 'xemacs-21.5.2/src/blocktype.c' 'xemacs-21.5.3/src/blocktype.c'
Index: ././src/blocktype.c
--- ././src/blocktype.c	Wed Apr  1 05:11:24 1998
+++ ././src/blocktype.c	Mon Aug 13 13:46:09 2001
@@ -77,10 +77,10 @@
 };
 
 void *
-Blocktype_newf (size_t elsize)
+Blocktype_newf (Memory_Count elsize)
 {
   Blocktype *b = xnew (Blocktype);
-  b->elsize = max (elsize, sizeof (void *));
+  b->elsize = max (elsize, (Memory_Count) sizeof (void *));
   b->free = 0;
   return (void *) b;
 }
diff --text -u 'xemacs-21.5.2/src/blocktype.h' 'xemacs-21.5.3/src/blocktype.h'
Index: ././src/blocktype.h
--- ././src/blocktype.h	Fri Apr 13 03:23:25 2001
+++ ././src/blocktype.h	Mon Aug 13 13:46:09 2001
@@ -31,10 +31,10 @@
 
 #define Blocktype_declare(type)                                      \
   type *free;                                                        \
-  int elsize;                                                        \
+  Memory_Count elsize;                                               \
   type *tempel
 
-void *Blocktype_newf (size_t elsize);
+void *Blocktype_newf (Memory_Count elsize);
 void Blocktype_allocf (void *b);
 void Blocktype_free (void *bbb, void *el);
 
diff --text -u 'xemacs-21.5.2/src/buffer.c' 'xemacs-21.5.3/src/buffer.c'
Index: ././src/buffer.c
--- ././src/buffer.c	Mon Jun 18 16:10:09 2001
+++ ././src/buffer.c	Mon Aug 13 13:46:09 2001
@@ -1672,12 +1672,12 @@
   int other;
 };
 
-static size_t
+static Memory_Count
 compute_buffer_text_usage (struct buffer *b, struct overhead_stats *ovstats)
 {
   int was_requested = b->text->z - 1;
-  size_t gap = b->text->gap_size + b->text->end_gap_size;
-  size_t malloc_use = malloced_storage_size (b->text->beg, was_requested + gap, 0);
+  Memory_Count gap = b->text->gap_size + b->text->end_gap_size;
+  Memory_Count malloc_use = malloced_storage_size (b->text->beg, was_requested + gap, 0);
 
   ovstats->gap_overhead    += gap;
   ovstats->was_requested   += was_requested;
@@ -1913,7 +1913,7 @@
 
       while (1)
         {
-          Lstream_data_count size_in_bytes;
+          Lstream_Data_Count size_in_bytes;
 	  char tempbuf[1024]; /* some random amount */
 
 	  size_in_bytes = Lstream_read (reader, tempbuf, sizeof (tempbuf));
@@ -2051,7 +2051,7 @@
 
       while (1)
         {
-          Lstream_data_count size_in_bytes;
+          Lstream_Data_Count size_in_bytes;
 	  char tempbuf[1024]; /* some random amount */
 
 	  size_in_bytes = Lstream_read (reader, tempbuf, sizeof (tempbuf));
@@ -2321,35 +2321,35 @@
 
 /* Renamed from DEFVAR_PER_BUFFER because FSFmacs D_P_B takes
    a bogus extra arg, which confuses an otherwise identical make-docfile.c */
-#define DEFVAR_BUFFER_LOCAL_1(lname, field_name, forward_type, magicfun) do {	\
-  static const struct symbol_value_forward I_hate_C =				\
-  { /* struct symbol_value_forward */						\
-    { /* struct symbol_value_magic */						\
-      { /* struct lcrecord_header */						\
-	{ /* struct lrecord_header */						\
-	  lrecord_type_symbol_value_forward, /* lrecord_type_index */		\
-	  1, /* mark bit */							\
-	  1, /* c_readonly bit */						\
-	  1  /* lisp_readonly bit */						\
-	},									\
-	0, /* next */								\
-	0, /* uid  */								\
-	0  /* free */								\
-      },									\
-      &(buffer_local_flags.field_name),						\
-      forward_type								\
-    },										\
-    magicfun									\
-  };										\
-										\
-  {										\
-    int offset = ((char *)symbol_value_forward_forward (&I_hate_C) -		\
-		  (char *)&buffer_local_flags);					\
-    defvar_magic (lname, &I_hate_C);						\
-										\
-    *((Lisp_Object *)(offset + (char *)XBUFFER (Vbuffer_local_symbols)))	\
-      = intern (lname);								\
-  }										\
+#define DEFVAR_BUFFER_LOCAL_1(lname, field_name, forward_type, magicfun) do { \
+  static const struct symbol_value_forward I_hate_C =			      \
+  { /* struct symbol_value_forward */					      \
+    { /* struct symbol_value_magic */					      \
+      { /* struct lcrecord_header */					      \
+	{ /* struct lrecord_header */					      \
+	  lrecord_type_symbol_value_forward, /* lrecord_type_index */	      \
+	  1, /* mark bit */						      \
+	  1, /* c_readonly bit */					      \
+	  1  /* lisp_readonly bit */					      \
+	},								      \
+	0, /* next */							      \
+	0, /* uid  */							      \
+	0  /* free */							      \
+      },								      \
+      &(buffer_local_flags.field_name),					      \
+      forward_type							      \
+    },									      \
+    magicfun								      \
+  };									      \
+									      \
+  {									      \
+    int offset = ((char *)symbol_value_forward_forward (&I_hate_C) -	      \
+		  (char *)&buffer_local_flags);				      \
+    defvar_magic (lname, &I_hate_C);					      \
+									      \
+    *((Lisp_Object *)(offset + (char *)XBUFFER (Vbuffer_local_symbols)))      \
+      = intern (lname);							      \
+  }									      \
 } while (0)
 
 #define DEFVAR_BUFFER_LOCAL_MAGIC(lname, field_name, magicfun)		\
diff --text -u 'xemacs-21.5.2/src/buffer.h' 'xemacs-21.5.3/src/buffer.h'
Index: ././src/buffer.h
--- ././src/buffer.h	Mon Jun 18 16:10:10 2001
+++ ././src/buffer.h	Fri Aug 24 17:52:09 2001
@@ -83,8 +83,8 @@
   Bytind gpt;		/* Index of gap in buffer. */
   Bytind z;		/* Index of end of buffer. */
   Bufpos bufz;		/* Equivalent as a Bufpos. */
-  int gap_size;		/* Size of buffer's gap */
-  int end_gap_size;	/* Size of buffer's end gap */
+  Memory_Count gap_size;/* Size of buffer's gap */
+  Memory_Count end_gap_size;/* Size of buffer's end gap */
   long modiff;		/* This counts buffer-modification events
 			   for this buffer.  It is incremented for
 			   each such event, and never otherwise
@@ -250,15 +250,15 @@
    variable that gets the buffer values (beginning with the base
    buffer, then the children), and MPS_BUFCONS should be a temporary
    Lisp_Object variable.  */
-#define MAP_INDIRECT_BUFFERS(mps_buf, mps_bufvar, mps_bufcons)			\
-for (mps_bufcons = Qunbound,							\
-     mps_bufvar = BUFFER_BASE_BUFFER (mps_buf);					\
-     UNBOUNDP (mps_bufcons) ?							\
-	(mps_bufcons = mps_bufvar->indirect_children,				\
-	1)									\
-       : (!NILP (mps_bufcons)							\
-	  && (mps_bufvar = XBUFFER (XCAR (mps_bufcons)), 1)			\
-	  && (mps_bufcons = XCDR (mps_bufcons), 1));				\
+#define MAP_INDIRECT_BUFFERS(mps_buf, mps_bufvar, mps_bufcons)	\
+for (mps_bufcons = Qunbound,					\
+     mps_bufvar = BUFFER_BASE_BUFFER (mps_buf);			\
+     UNBOUNDP (mps_bufcons) ?					\
+	(mps_bufcons = mps_bufvar->indirect_children,		\
+	1)							\
+       : (!NILP (mps_bufcons)					\
+	  && (mps_bufvar = XBUFFER (XCAR (mps_bufcons)), 1)	\
+	  && (mps_bufcons = XCDR (mps_bufcons), 1));		\
      )
 
 
@@ -553,12 +553,12 @@
 INLINE_HEADER int
 valid_char_p (Emchar ch)
 {
-  return ((unsigned int) (ch) <= 0xff) || non_ascii_valid_char_p (ch);
+  return (! (ch & ~0xFF)) || non_ascii_valid_char_p (ch);
 }
 
 #else /* not MULE */
 
-#define valid_char_p(ch) ((unsigned int) (ch) <= 0xff)
+#define valid_char_p(ch) (! (ch & ~0xFF))
 
 #endif /* not MULE */
 
@@ -1169,7 +1169,7 @@
 
 typedef union
 {
-  struct { const void *ptr; size_t len; } data;
+  struct { const void *ptr; Memory_Count len; } data;
   Lisp_Object lisp_object;
 } dfc_conversion_data;
 
@@ -1802,9 +1802,9 @@
 /* Like memcmp, except first arg points at internally formatted data,
    while the second points at a string of only ASCII chars. */
 INLINE_HEADER int
-bufbyte_memcmp (const Bufbyte *bp, const char *ascii_string, size_t len);
+bufbyte_memcmp (const Bufbyte *bp, const char *ascii_string, Memory_Count len);
 INLINE_HEADER int
-bufbyte_memcmp (const Bufbyte *bp, const char *ascii_string, size_t len)
+bufbyte_memcmp (const Bufbyte *bp, const char *ascii_string, Memory_Count len)
 {
 #ifdef MULE
   while (len--)
diff --text -u 'xemacs-21.5.2/src/bytecode.c' 'xemacs-21.5.3/src/bytecode.c'
Index: ././src/bytecode.c
--- ././src/bytecode.c	Wed Jun  6 21:34:44 2001
+++ ././src/bytecode.c	Mon Aug 13 13:46:09 2001
@@ -1599,8 +1599,8 @@
 		    int * const program_length,
 		    int * const varbind_count)
 {
-  size_t instructions_length = XSTRING_LENGTH (instructions);
-  size_t comfy_size = 2 * instructions_length;
+  Bytecount instructions_length = XSTRING_LENGTH (instructions);
+  Element_Count comfy_size = (Element_Count) (2 * instructions_length);
 
   int * const icounts = alloca_array (int, comfy_size);
   int * icounts_ptr = icounts;
@@ -1996,7 +1996,7 @@
 		     f2->doc_and_interactive, depth + 1));
 }
 
-static unsigned long
+static Hash_Code
 compiled_function_hash (Lisp_Object obj, int depth)
 {
   Lisp_Compiled_Function *f = XCOMPILED_FUNCTION (obj);
diff --text -u 'xemacs-21.5.2/src/callproc.c' 'xemacs-21.5.3/src/callproc.c'
Index: ././src/callproc.c
--- ././src/callproc.c	Fri Jun  8 21:21:22 2001
+++ ././src/callproc.c	Mon Aug 13 13:46:10 2001
@@ -478,7 +478,7 @@
 	nread = 0;
 	while (nread < bufsize - 1024)
 	  {
-	    Lstream_data_count this_read
+	    Lstream_Data_Count this_read
 	      = Lstream_read (XLSTREAM (instream), bufptr + nread,
 			      bufsize - nread);
 
diff --text -u 'xemacs-21.5.2/src/chartab.c' 'xemacs-21.5.3/src/chartab.c'
Index: ././src/chartab.c
--- ././src/chartab.c	Fri May 25 20:26:52 2001
+++ ././src/chartab.c	Mon Aug 13 13:46:10 2001
@@ -121,7 +121,7 @@
   return 1;
 }
 
-static unsigned long
+static Hash_Code
 char_table_entry_hash (Lisp_Object obj, int depth)
 {
   Lisp_Char_Table_Entry *cte = XCHAR_TABLE_ENTRY (obj);
@@ -413,12 +413,12 @@
   return 1;
 }
 
-static unsigned long
+static Hash_Code
 char_table_hash (Lisp_Object obj, int depth)
 {
   Lisp_Char_Table *ct = XCHAR_TABLE (obj);
-  unsigned long hashval = internal_array_hash (ct->ascii, NUM_ASCII_CHARS,
-					       depth);
+  Hash_Code hashval = internal_array_hash (ct->ascii, NUM_ASCII_CHARS,
+					   depth);
 #ifdef MULE
   hashval = HASH2 (hashval,
 		   internal_array_hash (ct->level1, NUM_LEADING_BYTES, depth));
@@ -1612,7 +1612,7 @@
 
 int
 check_category_char (Emchar ch, Lisp_Object table,
-		     unsigned int designator, unsigned int not_p)
+		     int designator, int not_p)
 {
   REGISTER Lisp_Object temp;
   Lisp_Char_Table *ctbl;
@@ -1640,7 +1640,7 @@
 {
   Lisp_Object ctbl;
   Emchar ch;
-  unsigned int des;
+  int des;
   struct buffer *buf = decode_buffer (buffer, 0);
 
   CHECK_INT (position);
@@ -1660,7 +1660,7 @@
 {
   Lisp_Object ctbl;
   Emchar ch;
-  unsigned int des;
+  int des;
 
   CHECK_CATEGORY_DESIGNATOR (designator);
   des = XCHAR (designator);
diff --text -u 'xemacs-21.5.2/src/chartab.h' 'xemacs-21.5.3/src/chartab.h'
Index: ././src/chartab.h
--- ././src/chartab.h	Mon Jun 18 16:10:11 2001
+++ ././src/chartab.h	Mon Aug 13 13:46:10 2001
@@ -203,7 +203,7 @@
 
 #ifdef MULE
 int check_category_char(Emchar ch, Lisp_Object ctbl,
-		        unsigned int designator, unsigned int not_p);
+		        int designator, int not_p);
 
 extern Lisp_Object Vstandard_category_table;
 
diff --text -u /dev/null 'xemacs-21.5.3/src/config.h'
Index: ././src/config.h
--- ././src/config.h	Thu Jan  1 09:00:00 1970
+++ ././src/config.h	Fri Sep  7 18:15:54 2001
@@ -0,0 +1,910 @@
+/* src/config.h.  Generated automatically by configure.  */
+/* XEmacs site configuration template file.  -*- C -*-
+   Copyright (C) 1986, 1991-1994, 1998, 1999 Free Software Foundation, Inc.
+
+This file is part of XEmacs.
+
+XEmacs 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.
+
+XEmacs 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 XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Significantly divergent from FSF. */
+
+/* No code in XEmacs #includes config.h twice, but some of the code
+   intended to work with other packages as well (like gmalloc.c)
+   think they can include it as many times as they like.  */
+#ifndef _SRC_CONFIG_H_
+#define _SRC_CONFIG_H_
+
+/* Use this to add code in a structured way to FSF-maintained source
+   files so as to make it obvious where XEmacs changes are. */
+#define XEMACS 1
+
+/* Program name */
+#define EMACS_PROGNAME "xemacs"
+
+/* Allow s&m files to differentiate OS versions without having
+   multiple files to maintain. */
+/* #undef OS_RELEASE */
+
+/* The configuration name.  This is used as the install directory name
+   for the lib-src programs. */
+#define EMACS_CONFIGURATION "i686-pc-linux"
+
+/* The configuration options.  This is exported to Lisp. */
+#define EMACS_CONFIG_OPTIONS "--with-mule"
+
+/* The version info from version.sh. Used in #pragma ident in emacs.c */
+#define EMACS_MAJOR_VERSION 21
+#define EMACS_MINOR_VERSION 5
+/* #undef EMACS_PATCH_LEVEL */
+#define EMACS_BETA_VERSION 3
+#define EMACS_VERSION "21.5-b3"
+#define XEMACS_CODENAME "asparagus"
+/* InfoDock versions, not used with XEmacs */
+/* #undef INFODOCK_MAJOR_VERSION */
+/* #undef INFODOCK_MINOR_VERSION */
+/* #undef INFODOCK_BUILD_VERSION */
+
+/* Make functions from IEEE Stds 1003.[123] available. */
+#define _POSIX_C_SOURCE 199506L
+
+/* Make some functions from Unix98 available. */
+#define _XOPEN_SOURCE 500
+
+/* Make "extensions" from Unix98 available. */
+#define _XOPEN_SOURCE_EXTENDED 1
+
+/* Make all functions available on AIX.  See AC_AIX. */
+/* #undef _ALL_SOURCE */
+
+/* Make all functions available on GNU libc systems.  See features.h. */
+#define _GNU_SOURCE 1
+
+/* Make all functions available on Solaris 2 systems. */
+/* #undef __EXTENSIONS__ */
+
+/* Used to identify the XEmacs version in stack traces. */
+#define STACK_TRACE_EYE_CATCHER xemacs_21_5_b3_i686_pc_linux
+
+/* Allow the configurer to specify if she wants site-lisp. */
+#define INHIBIT_SITE_LISP 1
+
+/* Allow the configurer to specify if she wants site-modules. */
+/* #undef INHIBIT_SITE_MODULES */
+
+/* This will be removed in 19.15. */
+/* Hah!  Try 20.3 ... */
+/* Hah!  Try never ... */
+/* If at first you don't succeed, try, try again. */
+/* #define LOSING_BYTECODE */
+
+/* Undefine on systems which don't have processes */
+#define HAVE_UNIX_PROCESSES 1
+
+/* Does XEmacs support floating-point numbers? */
+#define LISP_FLOAT_TYPE 1
+
+/* Define GNU_MALLOC if you want to use the GNU memory allocator. */
+#define GNU_MALLOC 1
+
+/* Define if you are using the GNU C Library. -- experimental. */
+#define DOUG_LEA_MALLOC 1
+
+/* Define if you are using libmcheck.a from the GNU C Library. */
+/* #undef HAVE_LIBMCHECK */
+
+/* Define if you are using dlmalloc from the Linux C library. */
+/* #undef _NO_MALLOC_WARNING_ */
+
+/* Use the system malloc? */
+/* #undef USE_SYSTEM_MALLOC */
+
+/* Use a debugging malloc? -- experimental */
+/* #undef USE_DEBUG_MALLOC */
+
+/* Compile in TTY support? */
+#define HAVE_TTY 1
+
+/* Compile in support for MS windows? */
+/* #undef HAVE_MS_WINDOWS */
+
+/* special cygwin process handling? */
+/* #undef HAVE_MSG_SELECT */
+
+/* Compile in support for the X window system? */
+#define HAVE_X_WINDOWS 1
+
+/* Defines for building X applications */
+#ifdef HAVE_X_WINDOWS
+/* The following will be defined if xmkmf thinks they are necessary */
+/* #undef SVR4 */
+/* #undef SYSV */
+/* #undef AIXV3 */
+#define _POSIX_SOURCE 1
+#define _BSD_SOURCE 1
+#define _SVID_SOURCE 1
+/* #undef X_LOCALE */
+#define NARROWPROTO 1
+/* The following should always be defined, no matter what xmkmf thinks. */
+#ifndef NeedFunctionPrototypes
+#define NeedFunctionPrototypes 1
+#endif
+#ifndef FUNCPROTO
+#define FUNCPROTO 15
+#endif
+#endif /* HAVE_X_WINDOWS */
+
+/* Defines for building Gtk applications */
+/* #undef HAVE_GNOME */
+/* #undef HAVE_GTK */
+/* #undef HAVE_GDK_IMLIB_INIT */
+/* #undef HAVE_GLADE_GLADE_H */
+/* #undef HAVE_GLADE_H */
+/* #undef LIBGLADE_XML_TXTDOMAIN */
+
+/* Define HAVE_WINDOW_SYSTEM if any windowing system is available. */
+#if defined (HAVE_GTK) || defined (HAVE_X_WINDOWS) || defined(HAVE_MS_WINDOWS) /* || defined (HAVE_NEXTSTEP) */
+#define HAVE_WINDOW_SYSTEM
+#endif
+
+/* Define HAVE_UNIXOID_EVENT_LOOP if we use select() to wait for events. */
+#if defined (HAVE_X_WINDOWS) || defined (HAVE_TTY) || defined(HAVE_MSG_SELECT)
+#define HAVE_UNIXOID_EVENT_LOOP
+#endif
+
+/* XFree86 has a different prototype for this function */
+#define HAVE_XREGISTERIMINSTANTIATECALLBACK 1
+#define XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE 1
+
+/* #undef THIS_IS_X11R4 */
+/* #undef THIS_IS_X11R5 */
+#define THIS_IS_X11R6 1
+
+#define HAVE_XCONVERTCASE 1
+
+#define HAVE_BALLOON_HELP 1
+
+/* Where do we find bitmaps? */
+#define BITMAPDIR "/usr/X11R6/include/X11/bitmaps:/usr/X11R6/include/bitmaps"
+
+/* USER_FULL_NAME returns a string that is the user's full name.
+   It can assume that the variable `pw' points to the password file
+   entry for this user.
+
+   At some sites, the pw_gecos field contains the user's full name.
+   If neither this nor any other field contains the right thing, use
+   pw_name, giving the user's login name, since that is better than
+   nothing. */
+#define USER_FULL_NAME pw->pw_gecos
+
+/* Define AMPERSAND_FULL_NAME if you use the convention
+   that & in the full name stands for the login id. */
+/* #undef AMPERSAND_FULL_NAME */
+
+/* Some things figured out by the configure script, grouped as they are in
+   configure.in. */
+/* #undef HAVE_MCHECK_H */
+#define HAVE_A_OUT_H 1
+#define HAVE_ELF_H 1
+/* #undef HAVE_CYGWIN_VERSION_H */
+#define HAVE_FCNTL_H 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_LIBGEN_H 1
+#define HAVE_LOCALE_H 1
+/* #undef HAVE_MACH_MACH_H */
+#define HAVE_SYS_PARAM_H 1
+/* #undef HAVE_SYS_PSTAT_H */
+#define HAVE_SYS_TIME_H 1
+#define HAVE_SYS_TIMEB_H 1
+#define HAVE_SYS_UN_H 1
+#define HAVE_ULIMIT_H 1
+#define HAVE_UNISTD_H 1
+
+#define HAVE_SYS_WAIT_H 1
+#define HAVE_LIBINTL_H 1
+#define HAVE_X11_XLOCALE_H 1
+#define STDC_HEADERS 1
+#define TIME_WITH_SYS_TIME 1
+/* #undef WORDS_BIGENDIAN */
+/* #undef HAVE_VFORK_H */
+/* #undef vfork */
+
+#define HAVE_LONG_FILE_NAMES 1
+
+/* Use lock files to detect multiple edits of the same file? */
+#define CLASH_DETECTION 1
+
+/* Have shared library support */
+#define HAVE_DLOPEN 1
+#define HAVE_DLERROR 1
+/* #undef HAVE__DLERROR */
+/* #undef HAVE_SHL_LOAD */
+/* #undef HAVE_DLD_INIT */
+#define HAVE_SHLIB 1
+
+/* #undef HAVE_LIBINTL */
+/* #undef HAVE_LIBDNET */
+/* #undef HAVE_LIBRESOLV */
+
+/* Is `sys_siglist' declared by <signal.h>? */
+#define SYS_SIGLIST_DECLARED 1
+
+/* Is `struct timeval' declared by <sys/time.h>? */
+#define HAVE_TIMEVAL 1
+
+
+/* #undef TM_IN_SYS_TIME */
+#define HAVE_TM_ZONE 1
+/* #undef HAVE_TZNAME */
+
+/* For `getloadavg' provided by system */
+#define HAVE_GETLOADAVG 1
+/* #undef HAVE_SYS_LOADAVG_H */
+/* For implementing `getloadavg' ourselves */
+/* #undef HAVE_LIBKSTAT */
+/* #undef HAVE_KSTAT_H */
+
+/* Is `h_errno' declared by <netdb.h>? */
+#define HAVE_H_ERRNO 1
+
+/* Does `localtime' cache TZ? */
+/* #undef LOCALTIME_CACHE */
+
+/* Can `gettimeofday' accept two arguments? */
+/* #undef GETTIMEOFDAY_ONE_ARGUMENT */
+
+#define HAVE_MMAP 1
+#define HAVE_STRCOLL 1
+#define HAVE_GETPGRP 1
+#define GETPGRP_VOID 1
+
+#define HAVE_INVERSE_HYPERBOLIC 1
+
+#define HAVE_CBRT 1
+#define HAVE_CLOSEDIR 1
+#define HAVE_DUP2 1
+/* #undef HAVE_EACCESS */
+#define HAVE_FMOD 1
+#define HAVE_FPATHCONF 1
+#define HAVE_FREXP 1
+#define HAVE_FTIME 1
+#define HAVE_GETADDRINFO 1
+#define HAVE_GETHOSTNAME 1
+#define HAVE_GETNAMEINFO 1
+#define HAVE_GETPAGESIZE 1
+#define HAVE_GETTIMEOFDAY 1
+#define HAVE_GETWD 1
+#define HAVE_GETCWD 1
+#define HAVE_LOGB 1
+#define HAVE_LRAND48 1
+#define HAVE_MATHERR 1
+#define HAVE_MKDIR 1
+#define HAVE_MKTIME 1
+#define HAVE_PERROR 1
+#define HAVE_POLL 1
+#define HAVE_RANDOM 1
+/* #undef HAVE_REALPATH */
+#define HAVE_RENAME 1
+/* #undef HAVE_RES_INIT */
+#define HAVE_RINT 1
+#define HAVE_RMDIR 1
+#define HAVE_SELECT 1
+#define HAVE_SETITIMER 1
+#define HAVE_SETPGID 1
+#define HAVE_SETSID 1
+#define HAVE_SIGBLOCK 1
+#define HAVE_SIGHOLD 1
+#define HAVE_SIGPROCMASK 1
+#define HAVE_SIGSETJMP 1
+#define HAVE_SNPRINTF 1
+#define HAVE_STPCPY 1
+#define HAVE_STRERROR 1
+#define HAVE_TZSET 1
+#define HAVE_ULIMIT 1
+#define HAVE_USLEEP 1
+#define HAVE_UTIME 1
+/* #undef HAVE_UTIMES */
+#define HAVE_WAITPID 1
+#define HAVE_VSNPRINTF 1
+
+/* Many flavors of PTY support */
+#define HAVE_GETPT 1	/* glibc's easy pty allocation function */
+/* #undef HAVE__GETPTY */	/*   SGI's easy pty allocation function */
+#define HAVE_OPENPTY 1	/*   BSD's easy pty allocation function */
+#define HAVE_GRANTPT 1	/* Unix98 */
+#define HAVE_UNLOCKPT 1	/* Unix98 */
+#define HAVE_PTSNAME 1	/* Unix98 */
+#define HAVE_KILLPG 1	/* BSD */
+#define HAVE_TCGETPGRP 1	/* Posix 1 */
+#define HAVE_ISASTREAM 1	/* SysV streams */
+/* #undef HAVE_SYS_PTY_H */	/* AIX */
+/* #undef HAVE_SYS_PTYIO_H */	/* HP-UX */
+#define HAVE_PTY_H 1	/* Linux, Tru64 */
+/* #undef HAVE_LIBUTIL_H */	/* BSD openpty */
+/* #undef HAVE_UTIL_H */	/* NetBSD openpty */
+#define HAVE_STROPTS_H 1	/* SysV streams */
+/* #undef HAVE_STRTIO_H */	/* SysV streams TIOCSIGNAL */
+
+#define HAVE_SOCKETS 1
+/* #undef HAVE_SOCKADDR_SUN_LEN */
+#define HAVE_MULTICAST 1
+#define HAVE_SYSVIPC 1
+#define HAVE_LOCKF 1
+#define HAVE_FLOCK 1
+#define HAVE_FSYNC 1
+#define HAVE_FTRUNCATE 1
+#define HAVE_UMASK 1
+
+#define SYSV_SYSTEM_DIR 1
+/* #undef NONSYSTEM_DIR_LIBRARY */
+
+#define HAVE_TERMIOS 1
+/* #undef HAVE_TERMIO */
+#define NO_TERMIO 1
+#define SIGNALS_VIA_CHARACTERS 1
+
+/* #undef NLIST_STRUCT */
+
+/* Compile in support for SOCKS? */
+/* #undef HAVE_SOCKS */
+
+/* Compile in support for X pixmaps via the `xpm' library? */
+#define HAVE_XPM 1
+/* #undef FOR_MSW */
+
+/* Compile in support for "X faces" via the `compface' library?
+   This enables graphical display of X-face headers in mail/news messages */
+/* #undef HAVE_XFACE */
+
+/* Compile in support for JPEG images */
+#define HAVE_JPEG 1
+
+/* Compile in support for TIFF images */
+#define HAVE_TIFF 1
+
+/* Compile in support for GIF images */
+#define HAVE_GIF 1
+
+/* Compile in support for PNG images */
+#define HAVE_PNG 1
+
+/* Do you have the Xmu library?
+   This should always be the case except on losing HP-UX systems. */
+#define HAVE_XMU 1
+
+/* Compile in support for DBM databases?  May require libgdbm or libdbm. */
+/* #undef HAVE_DBM */
+
+/* Compile in support for Berkeley DB style databases?  May require libdb. */
+#define HAVE_BERKELEY_DB 1
+/* Full #include file path for Berkeley DB's db.h */
+#define DB_H_FILE "db.h"
+
+/* Do we have either DBM or Berkeley DB database support? */
+#define HAVE_DATABASE 1
+
+/* Do we have LDAP support? */
+/* #undef HAVE_LDAP */
+/* Does the library define ldap_set_option () ? */
+/* #undef HAVE_LDAP_SET_OPTION */
+/* Does the library define ldap_get_lderrno () ? */
+/* #undef HAVE_LDAP_GET_LDERRNO */
+/* Does the library define ldap_result2error () ? */
+/* #undef HAVE_LDAP_RESULT2ERROR */
+/* Does the library define ldap_parse_result () ? */
+/* #undef HAVE_LDAP_PARSE_RESULT */
+
+/* Do we have PostgreSQL RDBMS support? */
+#define HAVE_POSTGRESQL 1
+#define HAVE_POSTGRESQLV7 1
+#define LIBPQ_FE_H_FILE "postgresql/libpq-fe.h" /* main PostgreSQL header file */
+
+/* Do you have the Xauth library present?  This will add some extra
+   functionality to gnuserv. */
+#define HAVE_XAUTH 1
+
+/* Compile in support for gpm (General Purpose Mouse)?  */
+#define HAVE_GPM 1
+
+/* Compile in support for ncurses?  */
+#define HAVE_NCURSES 1
+/* Full #include file paths for ncurses' curses.h and term.h. */
+#define CURSES_H_FILE "curses.h"
+#define TERM_H_FILE "term.h"
+
+/* Define USE_ASSERTIONS if you want the abort() to be changed to assert().
+   If the assertion fails, assert_failed() will be called.  This is
+   recommended for general use because it gives more info about the crash
+   than just the abort() message.  Too many people "Can't find the corefile"
+   or have limit-ed core dumps out of existence. */
+#define USE_ASSERTIONS 1
+
+/* Define one or more of the following if you want lots of extra checks
+   (e.g. structure validation) compiled in.  These should be turned
+   on during the beta-test cycle. */
+
+/* Check the entire extent structure of a buffer each time an extent
+   change is done, and do other extent-related checks. */
+#define ERROR_CHECK_EXTENTS 1
+
+/* Make sure that all X... macros are dereferencing the correct type,
+   and that all XSET... macros (as much as possible) are setting the
+   correct type of structure.  Highly recommended for all
+   development work. */
+#define ERROR_CHECK_TYPECHECK 1
+#ifdef ERROR_CHECK_TYPECHECK
+#define type_checking_assert(assertion) assert (assertion)
+#else
+#define type_checking_assert(assertion)
+#endif
+
+/* Make sure valid buffer positions are passed to BUF_* macros. */
+#define ERROR_CHECK_BUFPOS 1
+#ifdef ERROR_CHECK_BUFPOS
+#define bufpos_checking_assert(assertion) assert (assertion)
+#else
+#define bufpos_checking_assert(assertion)
+#endif
+
+/* Attempt to catch bugs related to garbage collection (e.g. not GCPRO'ing). */
+#define ERROR_CHECK_GC 1
+#ifdef ERROR_CHECK_GC
+#define gc_checking_assert(assertion) assert (assertion)
+#else
+#define gc_checking_assert(assertion)
+#endif
+
+/* Attempt to catch freeing of a non-malloc()ed block, heap corruption, etc. */
+#define ERROR_CHECK_MALLOC 1
+
+/* Minor sanity checking of the bytecode interpreter.  Useful for
+   debugging the byte compiler.  */
+#define ERROR_CHECK_BYTE_CODE 1
+
+/* Minor sanity checking of glyphs, especially subwindows and
+   widgets. */
+#define ERROR_CHECK_GLYPHS 1
+
+/* Define DEBUG_XEMACS if you want extra debugging code compiled in.
+   This is mainly intended for use by developers. */
+#define DEBUG_XEMACS 1
+
+/* Define MEMORY_USAGE_STATS if you want extra code compiled in to
+   determine where XEmacs' memory is going. */
+#define MEMORY_USAGE_STATS 1
+
+/* Define QUANTIFY if using Quantify from Rational Software.
+   This adds some additional calls to control data collection.
+   It is only intended for use by the developers. */
+/* #undef QUANTIFY */
+
+/* Define PURIFY if using Purify from Rational Software.
+   It is only intended for use by the developers. */
+/* #undef PURIFY */
+
+#if (defined (QUANTIFY) || defined (PURIFY)) && !defined (XLIB_ILLEGAL_ACCESS)
+#define XLIB_ILLEGAL_ACCESS 1
+#endif
+
+/* Define EXTERNAL_WIDGET to compile support for using the editor as a
+   widget within another program. */
+/* #undef EXTERNAL_WIDGET */
+
+/* There are some special-case defines for gcc and lcc. */
+#define USE_GCC 1
+/* #undef USE_LCC */
+
+/* Define this if you want level 2 internationalization compliance
+   (localized collation and formatting).  Generally this should be
+   defined, unless your system doesn't have the strcoll() and
+   setlocale() library routines.  This really should be (NOT! -mrb)
+   defined in the appropriate s/ or m/ file. */
+/* #undef I18N2 */
+
+/* Define this if you want level 3 internationalization compliance
+   (localized messaging).  This will cause a small runtime performance
+   penalty, as the strings are read from the message catalog(s).
+   For this you need the gettext() and dgetext() library routines.
+   WARNING, this code is under construction. */
+/* #undef I18N3 */
+
+/* Compile in support for CDE (Common Desktop Environment) drag and drop?
+   Requires libDtSvc, which typically must be present at runtime.  */
+/* #undef HAVE_CDE */
+
+/* Compile in support for OffiX Drag and Drop? */
+/* #undef HAVE_OFFIX_DND */
+
+/* Compile in generic Drag'n'Drop API */
+/* #undef HAVE_DRAGNDROP */
+
+/* Compile in support for proper handling of WM_COMMAND. */
+#define HAVE_WMCOMMAND 1
+
+/* Define this if you want Mule support (multi-byte character support).
+   There may be some performance penalty, although it should be small
+   if you're working with ASCII files. */
+#define MULE 1
+
+/* Define this if you want file coding support */
+#define FILE_CODING 1
+
+/* Do we want to use X window input methods for use with Mule? (requires X11R5)
+   If so, use raw Xlib or higher level Motif interface? */
+#define HAVE_XIM 1
+#define XIM_XLIB 1
+/* #undef XIM_MOTIF */
+/* #undef USE_XFONTSET */
+
+/* Non-XIM input methods for use with Mule. */
+#define HAVE_CANNA 1
+#define HAVE_WNN 1
+/* #undef WNN6 */
+
+/* Enable special GNU Make features in the Makefiles. */
+/* #undef USE_GNU_MAKE */
+
+/* Debugging development option: Remove inessential but time consuming
+   actions from happening during build.  This saves a lot of time when
+   you're repeatedly compiling-running-crashing.  This (1) doesn't
+   garbage-collect after loading each file during dumping, and (2)
+   doesn't automatically rebuild the DOC file. (Remove it by hand to
+   get it rebuilt.)
+ */
+/* #undef QUICK_BUILD */
+
+/* Defined by AC_C_CONST in configure.in */
+/* #undef const */
+
+/* Allow the source to use standard types. Include these before the
+ s&m files so that they can use them. */
+/* #undef ssize_t */
+/* #undef size_t */
+/* #undef pid_t */
+/* #undef mode_t */
+/* #undef off_t */
+/* #undef uid_t */
+/* #undef gid_t */
+/* #undef socklen_t */
+
+/* If defined, use unions instead of ints.  A few systems (DEC Alpha)
+   seem to require this, probably because something with the int
+   definitions isn't right with 64-bit systems.  */
+/* #undef USE_UNION_TYPE */
+
+/* alloca twiddling.
+   Because we might be #including alloca.h here, feature test macros
+   such as _XOPEN_SOURCE must be defined above. */
+#define HAVE_ALLOCA_H 1
+#ifndef NOT_C_CODE
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#elif defined __DECC
+#include <alloca.h>
+#pragma intrinsic(alloca)
+#elif defined HAVE_ALLOCA_H
+#include <alloca.h>
+#elif defined(_AIX)
+/* AIX requires this before any "real" code in the translation unit.  */
+#pragma alloca
+#elif ! defined (alloca)
+void *alloca ();
+#endif
+#endif /* C code */
+
+/* The configuration script may define `opsysfile' to be the name of
+   the s/...h file that describes your operating system.
+   The file name is chosen based on the configuration name. */
+
+#if defined (__cplusplus) && !defined (NOT_C_CODE)
+extern "C" {
+#endif
+
+#define config_opsysfile "s/linux.h"
+#ifdef config_opsysfile
+#include config_opsysfile
+#endif
+
+/* The configuration script may define `machfile' to be the name of
+   the m/...h file that describes the machine you are using.
+   The file name is chosen based on the configuration name. */
+
+#define config_machfile "m/intel386.h"
+#ifdef config_machfile
+#include config_machfile
+#endif
+
+#if defined (__cplusplus) && !defined (NOT_C_CODE)
+}
+#endif
+
+/* s&m files shouldn't be required to define anything, or even to exist.
+   If the s&m files don't define SYSTEM_TYPE, configure will select an
+   appropriate default value. */
+#ifndef SYSTEM_TYPE
+/* #undef SYSTEM_TYPE */
+#endif
+
+#if defined (USE_SYSTEM_MALLOC) && !defined (SYSTEM_MALLOC)
+#define SYSTEM_MALLOC
+#endif
+
+/* Use the relocating allocator for buffer space? */
+/* #undef REL_ALLOC */
+
+/* Define the return type of signal handlers if the s/xxx.h file
+   did not already do so. */
+#define RETSIGTYPE void
+
+/* SIGTYPE is the macro we actually use. */
+#ifndef SIGTYPE
+#define SIGTYPE RETSIGTYPE
+#define SIGRETURN return
+#endif
+
+/* Define DYNODUMP if it is necessary to properly dump on this system.
+   Currently this is only Solaris 2.x, for x < 6. */
+/* #undef DYNODUMP */
+
+/* Compile in support for Sun Sparcworks/WorkShop? */
+/* #undef SUNPRO */
+
+/* Sun SparcStations, SGI machines, and HP9000s700s have built-in
+   support for playing sound files. (On Suns, the sound support is
+   usually found in /usr/demo/SOUND - you may need to install the
+   "SUNWaudmo" package.) */
+#define HAVE_NATIVE_SOUND 1
+/* Native sound may be provided via soundcard.h, in various directories */
+#define SOUNDCARD_H_FILE "sys/soundcard.h"
+
+/* Compile in support for NAS (Network Audio System)?
+   NAS_NO_ERROR_JUMP means that the NAS libraries don't include some
+   error handling changes. */
+#define HAVE_NAS_SOUND 1
+/* #undef NAS_NO_ERROR_JUMP */
+
+/* Compile in support for ESD (Enlightened Sound Daemon)? */
+#define HAVE_ESD_SOUND 1
+
+/* Compile in support for SunPro usage-tracking code? */
+/* #undef USAGE_TRACKING */
+
+/* Compile in support for Tooltalk? */
+/* #undef TOOLTALK */
+/* tt_c.h might be in "Tt" or "desktop" subdirectories */
+/* #undef TT_C_H_FILE */
+
+/* Toolkits used by lwlib for various widgets... */
+#define LWLIB_USES_MOTIF 1
+/* #undef LWLIB_USES_ATHENA */
+#define LWLIB_MENUBARS_LUCID 1
+/* #undef LWLIB_MENUBARS_MOTIF */
+#define LWLIB_SCROLLBARS_LUCID 1
+/* #undef LWLIB_SCROLLBARS_MOTIF */
+/* #undef LWLIB_SCROLLBARS_ATHENA */
+/* #undef LWLIB_SCROLLBARS_ATHENA3D */
+#define LWLIB_DIALOGS_MOTIF 1
+/* #undef LWLIB_DIALOGS_ATHENA */
+/* #undef LWLIB_DIALOGS_ATHENA3D */
+#define LWLIB_TABS_LUCID 1
+#define LWLIB_WIDGETS_MOTIF 1
+/* #undef LWLIB_WIDGETS_ATHENA */
+/* #undef HAVE_ATHENA_3D */
+
+/* Other things that can be disabled by configure. */
+#define HAVE_MENUBARS 1
+#define HAVE_SCROLLBARS 1
+#define HAVE_DIALOGS 1
+#define HAVE_TOOLBARS 1
+#define HAVE_WIDGETS 1
+
+
+#if defined (HAVE_MENUBARS) || defined (HAVE_DIALOGS)
+#define HAVE_POPUPS
+#endif
+
+/* If you are using SunOS 4.1.1 and X11r5, then you need this patch.
+   There is a stupid bug in the SunOS libc.a: two functions which X11r5
+   uses, mbstowcs() and wcstombs(), are unusable when programs are
+   statically linked (as XEmacs must be) because the static version of
+   libc.a contains the *dynamic* versions of these functions.  These
+   functions don't seem to be called when XEmacs is running, so it's
+   enough to define stubs for them.
+
+   This appears to be fixed in SunOS 4.1.2.
+
+   Also, SunOS 4.1.1 contains buggy versions of strcmp and strcpy that
+   sometimes reference memory past the end of the string, which can segv.
+   I don't know whether this has been fixed as of 4.1.2 or 4.1.3. */
+#if defined (sparc) && !defined (USG)
+#define OBJECTS_SYSTEM sunOS-fix.o strcmp.o strcpy.o
+#endif
+
+/* If you turn this flag on, it forces encapsulation in all
+circumstances; this can be used to make sure things compile OK
+on various systems. */
+/* #undef DEBUG_ENCAPSULATION */
+
+/* basic system calls */
+
+#if defined (INTERRUPTIBLE_IO) || defined (DEBUG_ENCAPSULATION)
+# define ENCAPSULATE_READ
+# define ENCAPSULATE_WRITE
+#endif
+#if defined (INTERRUPTIBLE_OPEN) || defined (MULE) || defined (DEBUG_ENCAPSULATION)
+# define ENCAPSULATE_OPEN
+#endif
+#if defined (INTERRUPTIBLE_CLOSE) || defined (DEBUG_ENCAPSULATION)
+# define ENCAPSULATE_CLOSE
+#endif
+
+/* stdio calls */
+
+#if defined (INTERRUPTIBLE_IO) || defined (DEBUG_ENCAPSULATION)
+# define ENCAPSULATE_FREAD
+# define ENCAPSULATE_FWRITE
+#endif
+#if defined (INTERRUPTIBLE_OPEN) || defined (MULE) || defined (DEBUG_ENCAPSULATION)
+# define ENCAPSULATE_FOPEN
+#endif
+#if defined (INTERRUPTIBLE_CLOSE) || defined (DEBUG_ENCAPSULATION)
+# define ENCAPSULATE_FCLOSE
+#endif
+
+/* directory calls */
+
+#if defined (MULE) || defined (DEBUG_ENCAPSULATION)
+# define ENCAPSULATE_CHDIR
+# define ENCAPSULATE_MKDIR
+# define ENCAPSULATE_OPENDIR
+# define ENCAPSULATE_CLOSEDIR
+# define ENCAPSULATE_READDIR
+# define ENCAPSULATE_RMDIR
+
+/* file-information calls */
+
+#ifdef HAVE_EACCESS
+# define ENCAPSULATE_EACCESS
+#endif
+# define ENCAPSULATE_ACCESS
+# define ENCAPSULATE_LSTAT
+# define ENCAPSULATE_READLINK
+# define ENCAPSULATE_STAT
+
+/* file-manipulation calls */
+
+# define ENCAPSULATE_CHMOD
+# define ENCAPSULATE_CREAT
+# define ENCAPSULATE_LINK
+# define ENCAPSULATE_RENAME
+# define ENCAPSULATE_SYMLINK
+# define ENCAPSULATE_UNLINK
+# define ENCAPSULATE_EXECVP
+#endif /* defined (MULE) || defined (DEBUG_ENCAPSULATION) */
+
+#ifdef HAVE_CANNA
+#  define CANNA2
+#  define CANNA_MULE
+#  define CANNA_PURESIZE 0
+#else  /* not CANNA */
+#  define CANNA_PURESIZE 0
+#endif /* not CANNA */
+
+#if defined (HAVE_SOCKS) && !defined (DO_NOT_SOCKSIFY)
+#define accept Raccept
+#define bind Rbind
+#define connect Rconnect
+#define getsockname Rgetsockname
+#define listen Rlisten
+#endif /* HAVE_SOCKS && !DO_NOT_SOCKSIFY */
+
+#define SIZEOF_SHORT 2
+#define SIZEOF_INT 4
+#define SIZEOF_LONG 4
+#define SIZEOF_LONG_LONG 8
+#define SIZEOF_VOID_P 4
+
+#ifndef BITS_PER_CHAR
+#define BITS_PER_CHAR 8
+#endif
+#define SHORTBITS (SIZEOF_SHORT * BITS_PER_CHAR)
+#define INTBITS (SIZEOF_INT * BITS_PER_CHAR)
+#define LONGBITS (SIZEOF_LONG * BITS_PER_CHAR)
+#define LONG_LONG_BITS (SIZEOF_LONG_LONG * BITS_PER_CHAR)
+#define VOID_P_BITS (SIZEOF_VOID_P * BITS_PER_CHAR)
+
+/* Use `INLINE_HEADER' to define inline functions in .h files.
+   Use `inline static' to define inline functions in .c files.
+   See the Internals manual for examples and more information. */
+
+/* Does the keyword `inline' exist?  */
+/* #undef inline */
+
+#if defined (__cplusplus) || ! defined (__GNUC__)
+# define INLINE_HEADER inline static
+#elif defined (DONT_EXTERN_INLINE_HEADER_FUNCTIONS)
+# define INLINE_HEADER inline
+#else
+# define INLINE_HEADER inline extern
+#endif
+
+#ifndef NOT_C_CODE /* Actually means C or C++ */
+# if defined (__cplusplus)
+/* Avoid C++ keywords used as ordinary C identifiers */
+#  define class c_class
+#  define new   c_new
+#  define this  c_this
+#  define catch c_catch
+
+#  define EXTERN_C extern "C"
+# else /* C code */
+#  define EXTERN_C extern
+# endif
+#endif /* C or C++ */
+
+/* Strictly speaking, only int or unsigned int are valid types in a
+   bitfield.  In practice, we would like to use enums as bitfields.
+   The following should just result in warning avoidance:
+   warning: nonportable bit-field type */
+#ifdef __GNUC__
+#define enum_field(enumeration_type) enum enumeration_type
+#else
+#define enum_field(enumeration_type) unsigned int
+#endif
+
+/* We want to avoid saving the signal mask if possible, because
+   that necessitates a system call. */
+#ifdef HAVE_SIGSETJMP
+# define SETJMP(x) sigsetjmp (x, 0)
+# define LONGJMP(x, y) siglongjmp (x, y)
+# define JMP_BUF sigjmp_buf
+#else
+# define SETJMP(x) setjmp (x)
+# define LONGJMP(x, y) longjmp (x, y)
+# define JMP_BUF jmp_buf
+#endif
+
+/* movemail options */
+/* Should movemail use POP3 for mail access? */
+/* #undef MAIL_USE_POP */
+/* Should movemail use kerberos for POP authentication? */
+/* #undef KERBEROS */
+/* Should movemail use hesiod for getting POP server host? */
+/* #undef HESIOD */
+/* Determine type of mail locking. */
+/* #undef MAIL_LOCK_LOCKF */
+/* #undef MAIL_LOCK_FLOCK */
+#define MAIL_LOCK_DOT 1
+/* #undef MAIL_LOCK_LOCKING */
+/* #undef MAIL_LOCK_MMDF */
+
+#define HAVE_MKSTEMP 1
+
+#define PREFIX_USER_DEFINED 1
+/* #undef EXEC_PREFIX_USER_DEFINED */
+/* #undef MODULEDIR_USER_DEFINED */
+/* #undef SITEMODULEDIR_USER_DEFINED */
+/* #undef DOCDIR_USER_DEFINED */
+/* #undef LISPDIR_USER_DEFINED */
+/* #undef PACKAGE_PATH_USER_DEFINED */
+/* #undef SITELISPDIR_USER_DEFINED */
+/* #undef ARCHLIBDIR_USER_DEFINED */
+/* #undef ETCDIR_USER_DEFINED */
+/* #undef INFODIR_USER_DEFINED */
+/* #undef INFOPATH_USER_DEFINED */
+
+/* #undef PDUMP */
+
+#endif /* _SRC_CONFIG_H_ */
diff --text -u 'xemacs-21.5.2/src/console-x.c' 'xemacs-21.5.3/src/console-x.c'
Index: ././src/console-x.c
--- ././src/console-x.c	Fri May 25 20:26:53 2001
+++ ././src/console-x.c	Mon Aug 13 13:46:10 2001
@@ -200,9 +200,9 @@
       /* connection =~ s/^unix:/localhost:/; */
       const Bufbyte *p   = XSTRING_DATA (connection);
       const Bufbyte *end = XSTRING_DATA (connection) + XSTRING_LENGTH (connection);
-      size_t i;
+      int i;
 
-      for (i = 0; i < sizeof ("unix:") - 1; i++)
+      for (i = 0; i < (int) sizeof ("unix:") - 1; i++)
 	{
 	  if (p == end || charptr_emchar (p) != "unix:"[i])
 	    goto ok;
diff --text -u 'xemacs-21.5.2/src/console.c' 'xemacs-21.5.3/src/console.c'
Index: ././src/console.c
--- ././src/console.c	Mon Jun 18 16:10:12 2001
+++ ././src/console.c	Sun Aug  5 06:22:50 2001
@@ -1219,7 +1219,7 @@
 #endif
 }
 
-/* The docstrings for DEFVAR_* are recorded externally by make-docfile.  */ \
+/* The docstrings for DEFVAR_* are recorded externally by make-docfile.  */
 #define DEFVAR_CONSOLE_LOCAL_1(lname, field_name, forward_type, magicfun)   \
 do {									    \
   static const struct symbol_value_forward I_hate_C =			    \
diff --text -u 'xemacs-21.5.2/src/console.h' 'xemacs-21.5.3/src/console.h'
Index: ././src/console.h
--- ././src/console.h	Mon Jun 18 16:10:12 2001
+++ ././src/console.h	Mon Aug 13 13:46:10 2001
@@ -219,8 +219,8 @@
   int (*color_instance_equal_method) (Lisp_Color_Instance *,
 				      Lisp_Color_Instance *,
 				      int depth);
-  unsigned long (*color_instance_hash_method) (Lisp_Color_Instance *,
-					       int depth);
+  Hash_Code (*color_instance_hash_method) (Lisp_Color_Instance *,
+					   int depth);
   Lisp_Object (*color_instance_rgb_components_method) (Lisp_Color_Instance *);
   int (*valid_color_name_p_method) (struct device *, Lisp_Object color);
 
@@ -264,8 +264,8 @@
   int (*image_instance_equal_method) (Lisp_Image_Instance *,
 				      Lisp_Image_Instance *,
 				      int depth);
-  unsigned long (*image_instance_hash_method) (Lisp_Image_Instance *,
-					       int depth);
+  Hash_Code (*image_instance_hash_method) (Lisp_Image_Instance *,
+					   int depth);
   void (*init_image_instance_from_eimage_method) (Lisp_Image_Instance *ii,
 						  int width, int height,
 						  int slices,
diff --text -u 'xemacs-21.5.2/src/data.c' 'xemacs-21.5.3/src/data.c'
Index: ././src/data.c
--- ././src/data.c	Sun Jun 10 19:42:30 2001
+++ ././src/data.c	Mon Aug 13 13:46:10 2001
@@ -720,7 +720,8 @@
     }
   else if (BIT_VECTORP (array))
     {
-      if (idx >= bit_vector_length (XBIT_VECTOR (array))) goto range_error;
+      if (idx >= (EMACS_INT) bit_vector_length (XBIT_VECTOR (array)))
+	goto range_error;
       return make_int (bit_vector_bit (XBIT_VECTOR (array), idx));
     }
   else if (STRINGP (array))
@@ -774,7 +775,8 @@
     }
   else if (BIT_VECTORP (array))
     {
-      if (idx >= bit_vector_length (XBIT_VECTOR (array))) goto range_error;
+      if (idx >= (EMACS_INT) bit_vector_length (XBIT_VECTOR (array)))
+	goto range_error;
       CHECK_BIT (newval);
       set_bit_vector_bit (XBIT_VECTOR (array), idx, !ZEROP (newval));
     }
@@ -1609,12 +1611,12 @@
 	  internal_equal (w1->list, w2->list, depth + 1));
 }
 
-static unsigned long
+static Hash_Code
 weak_list_hash (Lisp_Object obj, int depth)
 {
   struct weak_list *w = XWEAK_LIST (obj);
 
-  return HASH2 ((unsigned long) w->type,
+  return HASH2 ((Hash_Code) w->type,
 		internal_hash (w->list, depth + 1));
 }
 
diff --text -u 'xemacs-21.5.2/src/depend' 'xemacs-21.5.3/src/depend'
Index: ././src/depend
--- ././src/depend	Fri May 25 12:53:26 2001
+++ ././src/depend	Mon Aug 13 13:46:11 2001
@@ -8,59 +8,59 @@
 LISP_H=lisp.h config.h general-slots.h lrecord.h symeval.h symsinit.h $(LISP_UNION_H)
 #if defined(HAVE_MS_WINDOWS)
 console-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h events.h mule-charset.h opaque.h syscommctrl.h systime.h syswindows.h
-device-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console-stream.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysdep.h systime.h syswindows.h toolbar.h window.h winslots.h
-dialog-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h syscommctrl.h syswindows.h toolbar.h window.h winslots.h
+device-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console-stream.h console.h device.h devslots.h events.h faces.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysdep.h systime.h syswindows.h toolbar.h window.h winslots.h
+dialog-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h syscommctrl.h syswindows.h toolbar.h window.h winslots.h
 dired-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h ndir.h nt.h regex.h sysdir.h sysfile.h sysfloat.h sysproc.h systime.h syswindows.h
-event-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console-tty.h console.h device.h dragdrop.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h menubar-msw.h menubar.h mule-charset.h objects-msw.h objects.h process.h redisplay.h scrollbar-msw.h scrollbar.h select.h specifier.h syscommctrl.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h syswindows.h toolbar.h window.h winslots.h
-frame-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
-glyphs-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h elhash.h faces.h file-coding.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h imgproc.h insdel.h lstream.h mule-charset.h objects-msw.h objects.h opaque.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysdep.h sysfile.h syswindows.h toolbar.h window.h winslots.h
-gui-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
-menubar-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-msw.h console.h device.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h menubar-msw.h menubar.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
-objects-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h hash.h insdel.h mule-charset.h objects-msw.h objects.h specifier.h syscommctrl.h syswindows.h
-redisplay-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h debug.h device.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h gutter.h mule-ccl.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysdep.h systime.h syswindows.h toolbar.h window.h winslots.h
-scrollbar-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar-msw.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
-select-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h file-coding.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h select.h specifier.h syscommctrl.h syswindows.h toolbar.h window.h winslots.h
-toolbar-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h syscommctrl.h syswindows.h toolbar.h window.h winslots.h
+event-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console-tty.h console.h device.h devslots.h dragdrop.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h menubar-msw.h menubar.h mule-charset.h objects-msw.h objects.h process.h redisplay.h scrollbar-msw.h scrollbar.h select.h specifier.h syscommctrl.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h syswindows.h toolbar.h window.h winslots.h
+frame-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h devslots.h elhash.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
+glyphs-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h devslots.h elhash.h faces.h file-coding.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h imgproc.h insdel.h lstream.h mule-charset.h objects-msw.h objects.h opaque.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysdep.h sysfile.h syswindows.h toolbar.h window.h winslots.h
+gui-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h devslots.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
+menubar-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-msw.h console.h device.h devslots.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h menubar-msw.h menubar.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
+objects-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h devslots.h hash.h insdel.h mule-charset.h objects-msw.h objects.h specifier.h syscommctrl.h syswindows.h
+redisplay-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h debug.h device.h devslots.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h gutter.h mule-ccl.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysdep.h systime.h syswindows.h toolbar.h window.h winslots.h
+scrollbar-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h devslots.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h opaque.h redisplay.h scrollbar-msw.h scrollbar.h specifier.h syscommctrl.h systime.h syswindows.h toolbar.h window.h winslots.h
+select-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h devslots.h file-coding.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h select.h specifier.h syscommctrl.h syswindows.h toolbar.h window.h winslots.h
+toolbar-msw.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h device.h devslots.h elhash.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h syscommctrl.h syswindows.h toolbar.h window.h winslots.h
 #endif
 #if defined(HAVE_X_WINDOWS)
-balloon-x.o: $(LISP_H) balloon_help.h conslots.h console-x.h console.h device.h xintrinsic.h
+balloon-x.o: $(LISP_H) balloon_help.h conslots.h console-x.h console.h device.h devslots.h xintrinsic.h
 console-x.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h mule-charset.h process.h redisplay.h xintrinsic.h
-device-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mule-charset.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h sysfile.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmu.h
-dialog-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
-frame-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h EmacsShell.h ExternalShell.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h dragdrop.h events.h extents.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h gutter.h mule-charset.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar-x.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
-glyphs-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h bitmaps.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h imgproc.h insdel.h lstream.h mule-charset.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h toolbar.h window.h winslots.h xintrinsic.h xmu.h
-gui-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
-menubar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h keymap.h menubar.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
-objects-x.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h insdel.h mule-charset.h objects-x.h objects.h specifier.h xintrinsic.h
-redisplay-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h debug.h device.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h gutter.h mule-ccl.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysproc.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmprimitivep.h
-scrollbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h conslots.h console-x.h console.h device.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h redisplay.h scrollbar-x.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h
-select-x.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
-toolbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h
+device-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h elhash.h events.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mule-charset.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h sysfile.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmu.h
+dialog-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-x.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+frame-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h EmacsShell.h ExternalShell.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h dragdrop.h events.h extents.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h gutter.h mule-charset.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar-x.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
+glyphs-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h bitmaps.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h imgproc.h insdel.h lstream.h mule-charset.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h toolbar.h window.h winslots.h xintrinsic.h xmu.h
+gui-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+menubar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-x.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h keymap.h menubar.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+objects-x.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h insdel.h mule-charset.h objects-x.h objects.h specifier.h xintrinsic.h
+redisplay-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h debug.h device.h devslots.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h gutter.h mule-ccl.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysproc.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmprimitivep.h
+scrollbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h conslots.h console-x.h console.h device.h devslots.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h redisplay.h scrollbar-x.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h
+select-x.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h select-common.h select.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+toolbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h
 #endif
 #if defined(HAVE_TTY)
-console-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systty.h toolbar.h window.h winslots.h
-device-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
-event-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
-frame-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
-objects-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h insdel.h mule-charset.h objects-tty.h objects.h specifier.h syssignal.h systty.h
-redisplay-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-tty.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h objects-tty.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+console-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h devslots.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systty.h toolbar.h window.h winslots.h
+device-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h devslots.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+event-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
+frame-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+objects-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h devslots.h insdel.h mule-charset.h objects-tty.h objects.h specifier.h syssignal.h systty.h
+redisplay-tty.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-tty.h console.h device.h devslots.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h objects-tty.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
 #endif
 #if defined(HAVE_GTK)
 console-gtk.o: $(LISP_H) conslots.h console-gtk.h console.h process.h redisplay.h
-device-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h systime.h toolbar.h window.h winslots.h
-dialog-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-gtk.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
-event-gtk.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-gtk.h console-tty.h console.h device.h dragdrop.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gtk-xemacs.h gui.h lstream.h mule-charset.h objects-gtk.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h
-frame-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h dragdrop.h events.h extents.h faces.h frame.h frameslots.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h sysdll.h systime.h toolbar.h ui-gtk.h window.h winslots.h
+device-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h elhash.h events.h faces.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h systime.h toolbar.h window.h winslots.h
+dialog-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-gtk.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+event-gtk.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-gtk.h console-tty.h console.h device.h devslots.h dragdrop.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gtk-xemacs.h gui.h lstream.h mule-charset.h objects-gtk.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h
+frame-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h dragdrop.h events.h extents.h faces.h frame.h frameslots.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h sysdll.h systime.h toolbar.h ui-gtk.h window.h winslots.h
 gccache-gtk.o: $(LISP_H) gccache-gtk.h hash.h
-glyphs-gtk.o: $(LISP_H) bitmaps.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h faces.h file-coding.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui-gtk.h gui.h imgproc.h insdel.h lstream.h mule-charset.h objects-gtk.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysdll.h sysfile.h toolbar.h ui-gtk.h window.h winslots.h
-gui-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-menubar-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-gtk.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysdll.h systime.h toolbar.h ui-gtk.h window.h winslots.h
-objects-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h insdel.h mule-charset.h objects-gtk.h objects.h specifier.h
-redisplay-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h debug.h device.h faces.h file-coding.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gui.h gutter.h mule-ccl.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysproc.h systime.h toolbar.h window.h winslots.h
-scrollbar-gtk.o: $(LISP_H) conslots.h console-gtk.h console.h device.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui-gtk.h gui.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-select-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h select.h specifier.h systime.h toolbar.h window.h winslots.h
-toolbar-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h faces.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-ui-gtk.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h elhash.h emacs-marshals.c emacs-widget-accessors.c events.h faces.h glade.c glyphs-gtk.h glyphs.h gtk-glue.c gui-gtk.h gui.h hash.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdll.h systime.h ui-byhand.c ui-gtk.h window.h winslots.h
+glyphs-gtk.o: $(LISP_H) bitmaps.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h faces.h file-coding.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui-gtk.h gui.h imgproc.h insdel.h lstream.h mule-charset.h objects-gtk.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysdll.h sysfile.h toolbar.h ui-gtk.h window.h winslots.h
+gui-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+menubar-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-gtk.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui-gtk.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysdll.h systime.h toolbar.h ui-gtk.h window.h winslots.h
+objects-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h insdel.h mule-charset.h objects-gtk.h objects.h specifier.h
+redisplay-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h debug.h device.h devslots.h faces.h file-coding.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gui.h gutter.h mule-ccl.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h sysproc.h systime.h toolbar.h window.h winslots.h
+scrollbar-gtk.o: $(LISP_H) conslots.h console-gtk.h console.h device.h devslots.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui-gtk.h gui.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+select-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h select-common.h select.h specifier.h systime.h toolbar.h window.h winslots.h
+toolbar-gtk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h faces.h frame.h frameslots.h gccache-gtk.h glyphs-gtk.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+ui-gtk.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h elhash.h emacs-marshals.c emacs-widget-accessors.c events.h faces.h glade.c glyphs-gtk.h glyphs.h gtk-glue.c gui-gtk.h gui.h hash.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h sysdll.h systime.h ui-byhand.c ui-gtk.h window.h winslots.h
 #endif
 #if defined(HAVE_DATABASE)
 database.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h database.h mule-charset.h sysfile.h
@@ -68,7 +68,7 @@
 #if defined(MULE)
 mule-canna.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h file-coding.h mule-charset.h
 mule-ccl.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h file-coding.h mule-ccl.h mule-charset.h
-mule-charset.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h elhash.h faces.h lstream.h mule-ccl.h mule-charset.h
+mule-charset.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h faces.h lstream.h mule-ccl.h mule-charset.h
 mule-wnnfns.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h redisplay.h scrollbar.h sysdep.h window.h winslots.h
 mule.o: $(LISP_H) regex.h
 #endif
@@ -79,130 +79,130 @@
 extw-Xlib.o: config.h extw-Xlib.h
 extw-Xt.o: config.h extw-Xlib.h extw-Xt.h
 #endif
-EmacsFrame.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
+EmacsFrame.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
 EmacsManager.o: EmacsManager.h EmacsManagerP.h config.h xintrinsicp.h xmmanagerp.h
 EmacsShell-sub.o: EmacsShell.h EmacsShellP.h config.h xintrinsic.h xintrinsicp.h
 EmacsShell.o: EmacsShell.h ExternalShell.h config.h xintrinsicp.h
 abbrev.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h insdel.h mule-charset.h redisplay.h scrollbar.h syntax.h window.h winslots.h
-alloc.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console-stream.h console.h device.h dumper.h elhash.h events.h extents.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h systime.h toolbar.h window.h winslots.h
+alloc.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console-stream.h console.h device.h devslots.h dumper.h elhash.h events.h extents.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h systime.h toolbar.h window.h winslots.h
 alloca.o: config.h
 balloon_help.o: balloon_help.h config.h xintrinsic.h
 blocktype.o: $(LISP_H) blocktype.h
-buffer.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h process.h redisplay.h scrollbar.h select.h specifier.h syntax.h sysdep.h sysfile.h toolbar.h window.h winslots.h
+buffer.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h process.h redisplay.h scrollbar.h select.h specifier.h syntax.h sysdep.h sysfile.h toolbar.h window.h winslots.h
 bytecode.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h mule-charset.h opaque.h syntax.h
 callint.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h commands.h events.h insdel.h mule-charset.h redisplay.h scrollbar.h systime.h window.h winslots.h
 callproc.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h file-coding.h insdel.h lstream.h mule-charset.h nt.h process.h redisplay.h scrollbar.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswindows.h window.h winslots.h
 casefiddle.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h mule-charset.h syntax.h
 casetab.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h opaque.h
 chartab.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h syntax.h
-cm.o: $(LISP_H) conslots.h console-tty.h console.h device.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h syssignal.h systty.h toolbar.h window.h winslots.h
-cmdloop.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+cm.o: $(LISP_H) conslots.h console-tty.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h syssignal.h systty.h toolbar.h window.h winslots.h
+cmdloop.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
 cmds.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h insdel.h mule-charset.h syntax.h
-console-stream.o: $(LISP_H) conslots.h console-stream.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
-console.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+console-stream.o: $(LISP_H) conslots.h console-stream.h console-tty.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
+console.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-tty.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
 data.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h mule-charset.h sysfloat.h syssignal.h
 debug.o: $(LISP_H) bytecode.h debug.h
-device.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs.h gui.h keymap.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h toolbar.h window.h winslots.h
+device.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h events.h faces.h frame.h frameslots.h glyphs.h gui.h keymap.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h syssignal.h systime.h toolbar.h window.h winslots.h
 dgif_lib.o: $(LISP_H) gifrlib.h sysfile.h
-dialog.o: $(LISP_H) conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+dialog.o: $(LISP_H) conslots.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 dired.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h elhash.h mule-charset.h ndir.h opaque.h regex.h syntax.h sysdep.h sysdir.h sysfile.h syspwd.h systime.h syswindows.h
 doc.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h insdel.h keymap.h mule-charset.h sysfile.h
 doprnt.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h lstream.h mule-charset.h
 dragdrop.o: $(LISP_H) dragdrop.h
-dumper.o: $(LISP_H) conslots.h console-stream.h console.h dumper.h elhash.h nt.h specifier.h sysfile.h syswindows.h
+dumper.o: $(LISP_H) conslots.h console-stream.h console.h dumper.h elhash.h nt.h specifier.h sysfile.h systime.h syswindows.h
 dynarr.o: $(LISP_H)
 ecrt0.o: config.h
-editfns.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syspwd.h systime.h toolbar.h window.h winslots.h
+editfns.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syspwd.h systime.h toolbar.h window.h winslots.h
 eldap.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h eldap.h mule-charset.h opaque.h sysdep.h
 elhash.o: $(LISP_H) bytecode.h elhash.h opaque.h
 emacs-marshals.o: hash.h
 emacs-widget-accessors.o: 
-emacs.o: $(LISP_H) backtrace.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h dumper.h frame.h frameslots.h glyphs.h gui.h mule-charset.h nt.h paths.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h sysfile.h syssignal.h systime.h systty.h syswindows.h toolbar.h window.h winslots.h
-emodules.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h emodules.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h toolbar.h window.h winslots.h
+emacs.o: $(LISP_H) backtrace.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h dumper.h frame.h frameslots.h glyphs.h gui.h mule-charset.h nt.h paths.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h sysfile.h syssignal.h systime.h systty.h syswindows.h toolbar.h window.h winslots.h
+emodules.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h emodules.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h toolbar.h window.h winslots.h
 esd.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h miscplay.h mule-charset.h sound.h sysfile.h
 eval.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h commands.h conslots.h console.h mule-charset.h opaque.h
-event-Xt.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h Emacs.ad.h EmacsFrame.h blocktype.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-tty.h console-x.h console.h device.h dragdrop.h elhash.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h objects-x.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h
-event-stream.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h elhash.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h lstream.h macros.h menubar.h mule-charset.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h
-event-unixoid.o: $(LISP_H) conslots.h console-stream.h console-tty.h console.h device.h events.h lstream.h mule-charset.h process.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h
-events.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console-tty.h console-x.h console.h device.h events.h extents.h frame.h frameslots.h glyphs.h gui.h keymap.h mule-charset.h redisplay.h scrollbar.h specifier.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h
-extents.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h debug.h device.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h keymap.h mule-charset.h opaque.h process.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-faces.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+event-Xt.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h Emacs.ad.h EmacsFrame.h blocktype.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-tty.h console-x.h console.h device.h devslots.h dragdrop.h elhash.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h lstream.h mule-charset.h objects-x.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h sysproc.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h
+event-stream.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h elhash.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h lstream.h macros.h menubar.h mule-charset.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h
+event-unixoid.o: $(LISP_H) conslots.h console-stream.h console-tty.h console.h device.h devslots.h events.h lstream.h mule-charset.h process.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h
+events.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console-tty.h console-x.h console.h device.h devslots.h events.h extents.h frame.h frameslots.h glyphs.h gui.h keymap.h mule-charset.h redisplay.h scrollbar.h specifier.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h
+extents.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h debug.h device.h devslots.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h keymap.h mule-charset.h opaque.h process.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+faces.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 file-coding.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h elhash.h file-coding.h insdel.h lstream.h mule-ccl.h mule-charset.h opaque.h
-fileio.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h ndir.h redisplay.h scrollbar.h specifier.h sysdep.h sysdir.h sysfile.h sysproc.h syspwd.h systime.h toolbar.h window.h winslots.h
+fileio.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h ndir.h nt.h redisplay.h scrollbar.h specifier.h sysdep.h sysdir.h sysfile.h sysproc.h syspwd.h systime.h syswindows.h toolbar.h window.h winslots.h
 filelock.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h ndir.h paths.h sysdir.h sysfile.h syspwd.h syssignal.h
 filemode.o: $(LISP_H) sysfile.h
 floatfns.o: $(LISP_H) sysfloat.h syssignal.h
-fns.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console.h device.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h systime.h toolbar.h window.h winslots.h
+fns.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console.h device.h devslots.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h systime.h toolbar.h window.h winslots.h
 font-lock.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h mule-charset.h syntax.h
-frame.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h events.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+frame.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h events.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
 free-hook.o: $(LISP_H) hash.h
 general.o: $(LISP_H)
 getloadavg.o: $(LISP_H) sysfile.h
-gif_io.o: config.h gifrlib.h sysfile.h
+gif_io.o: $(LISP_H) gifrlib.h sysfile.h
 glade.o: bytecode.h
-glyphs-eimage.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h faces.h file-coding.h frame.h frameslots.h gifrlib.h glyphs.h gui.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h toolbar.h window.h winslots.h
-glyphs-shared.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h imgproc.h insdel.h lstream.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h toolbar.h window.h winslots.h
-glyphs-widget.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-glyphs.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h objects.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+glyphs-eimage.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h faces.h file-coding.h frame.h frameslots.h gifrlib.h glyphs.h gui.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h specifier.h sysfile.h toolbar.h window.h winslots.h
+glyphs-shared.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h imgproc.h insdel.h lstream.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h toolbar.h window.h winslots.h
+glyphs-widget.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+glyphs.o: $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h objects.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 gmalloc.o: config.h getpagesize.h
-gpmevent.o: $(LISP_H) commands.h conslots.h console-tty.h console.h device.h events.h gpmevent.h lstream.h mule-charset.h process.h sysdep.h sysproc.h syssignal.h systime.h systty.h
+gpmevent.o: $(LISP_H) commands.h conslots.h console-tty.h console.h device.h devslots.h events.h gpmevent.h lstream.h mule-charset.h process.h sysdep.h sysproc.h syssignal.h systime.h systty.h
 gtk-glue.o: 
-gtk-xemacs.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h faces.h frame.h frameslots.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+gtk-xemacs.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs.h gtk-xemacs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 gui.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h elhash.h gui.h mule-charset.h
-gutter.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+gutter.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 hash.o: $(LISP_H) hash.h
-hftctl.o: $(LISP_H)
+hftctl.o: $(LISP_H) sysfile.h
 hpplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h sound.h
 imgproc.o: $(LISP_H) imgproc.h
-indent.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console-gtk.h console-msw.h console.h database.h device.h eldap.h elhash.h events.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h keymap.h lstream.h mule-charset.h objects.h opaque.h postgresql.h process.h rangetab.h redisplay.h scrollbar.h specifier.h syntax.h syscommctrl.h sysdll.h systime.h syswindows.h toolbar.h tooltalk.h ui-gtk.h window.h winslots.h xintrinsic.h
-input-method-motif.o: $(LISP_H) EmacsFrame.h conslots.h console-x.h console.h device.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h
-input-method-xlib.o: $(LISP_H) EmacsFrame.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
-insdel.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-intl.o: $(LISP_H) bytecode.h conslots.h console.h device.h
-keymap.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console.h device.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+indent.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console-gtk.h console-msw.h console.h database.h device.h devslots.h eldap.h elhash.h events.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h keymap.h lstream.h mule-charset.h objects.h opaque.h postgresql.h process.h rangetab.h redisplay.h scrollbar.h specifier.h syntax.h syscommctrl.h sysdll.h systime.h syswindows.h toolbar.h tooltalk.h ui-gtk.h window.h winslots.h xintrinsic.h
+input-method-motif.o: $(LISP_H) EmacsFrame.h conslots.h console-x.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h xintrinsic.h
+input-method-xlib.o: $(LISP_H) EmacsFrame.h buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h xintrinsic.h
+insdel.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+intl.o: $(LISP_H) bytecode.h conslots.h console.h device.h devslots.h
+keymap.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
 lastfile.o: config.h
 libsst.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h libsst.h mule-charset.h sound.h sysfile.h
 line-number.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h line-number.h mule-charset.h
 linuxplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h miscplay.h mule-charset.h sound.h sysfile.h syssignal.h systty.h
 lread.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h elhash.h file-coding.h lstream.h mule-charset.h opaque.h sysfile.h sysfloat.h
 lstream.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h lstream.h mule-charset.h sysfile.h
-macros.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h keymap.h macros.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+macros.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h keymap.h macros.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
 malloc.o: config.h getpagesize.h
 marker.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h
 md5.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h file-coding.h lstream.h mule-charset.h
-menubar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h keymap.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-minibuf.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-stream.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
+menubar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h keymap.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+minibuf.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-stream.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h mule-charset.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window.h winslots.h
 miscplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h miscplay.h mule-charset.h sound.h sysfile.h syssignal.h
 nas.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h sound.h sysdep.h syssignal.h
-native-gtk-toolbar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h faces.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-nt.o: $(LISP_H) ndir.h nt.h ntheap.h sysdir.h sysfile.h sysproc.h syspwd.h syssignal.h systime.h syswindows.h
+native-gtk-toolbar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-gtk.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs-gtk.h glyphs.h gui.h mule-charset.h objects-gtk.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+nt.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h ndir.h nt.h ntheap.h sysdir.h sysfile.h sysproc.h syspwd.h syssignal.h systime.h syswindows.h
 ntheap.o: $(LISP_H) ntheap.h syswindows.h
-ntplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h nt.h sound.h sysfile.h syswindows.h
+ntplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h nt.h sound.h sysfile.h systime.h syswindows.h
 ntproc.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h mule-charset.h nt.h ntheap.h process.h syscommctrl.h sysfile.h sysproc.h syssignal.h systime.h syswait.h syswindows.h
-objects.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+objects.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 offix.o: offix-cursors.h offix-types.h offix.h xintrinsic.h
 opaque.o: $(LISP_H) opaque.h
 postgresql.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h postgresql.h sysdep.h
-print.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console-msw.h console-stream.h console-tty.h console.h device.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysfile.h syssignal.h systty.h syswindows.h toolbar.h window.h winslots.h
+print.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h chartab.h conslots.h console-msw.h console-stream.h console-tty.h console.h device.h devslots.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h syscommctrl.h sysfile.h syssignal.h systty.h syswindows.h toolbar.h window.h winslots.h
 process-nt.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-msw.h console.h hash.h lstream.h mule-charset.h nt.h process.h procimpl.h syscommctrl.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h syswindows.h
-process-unix.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
-process.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h insdel.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
+process-unix.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
+process.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h insdel.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
 profile.o: $(LISP_H) backtrace.h bytecode.h elhash.h hash.h syssignal.h systime.h
 ralloc.o: $(LISP_H) getpagesize.h
 rangetab.o: $(LISP_H) rangetab.h
 realpath.o: $(LISP_H) sysfile.h syswindows.h
-redisplay-output.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
-redisplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-tty.h console.h debug.h device.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h line-number.h menubar.h mule-charset.h objects.h process.h redisplay.h scrollbar.h specifier.h sysfile.h syssignal.h systty.h toolbar.h window.h winslots.h
+redisplay-output.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+redisplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console-tty.h console.h debug.h device.h devslots.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h line-number.h menubar.h mule-charset.h objects.h process.h redisplay.h scrollbar.h specifier.h sysfile.h syssignal.h systty.h toolbar.h window.h winslots.h
 regex.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h regex.h syntax.h
-scrollbar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+scrollbar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 search.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h mule-charset.h opaque.h regex.h syntax.h
-select.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h extents.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h toolbar.h window.h winslots.h
+select.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h extents.h frame.h frameslots.h glyphs.h gui.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h toolbar.h window.h winslots.h
 sgiplay.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h libst.h mule-charset.h sound.h sysfile.h sysproc.h systime.h
 sheap.o: $(LISP_H) sheap-adjust.h
-signal.o: $(LISP_H) conslots.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h
-sound.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h mule-charset.h redisplay.h sound.h sysdep.h sysfile.h sysproc.h systime.h xintrinsic.h
-specifier.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+signal.o: $(LISP_H) conslots.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h
+sound.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-x.h console.h device.h devslots.h mule-charset.h redisplay.h sound.h sysdep.h sysfile.h sysproc.h systime.h xintrinsic.h
+specifier.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h mule-charset.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 strcat.o: config.h
 strcmp.o: config.h
 strcpy.o: config.h
@@ -212,14 +212,14 @@
 sunpro.o: $(LISP_H)
 symbols.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h elhash.h mule-charset.h
 syntax.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h extents.h mule-charset.h syntax.h
-sysdep.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h ndir.h nt.h ntheap.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysdir.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h syswindows.h toolbar.h window.h winslots.h
+sysdep.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console-stream.h console-tty.h console.h device.h devslots.h events.h frame.h frameslots.h glyphs.h gui.h mule-charset.h ndir.h nt.h ntheap.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysdir.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h syswindows.h toolbar.h window.h winslots.h
 sysdll.o: config.h sysdll.h
-termcap.o: $(LISP_H) conslots.h console.h device.h
+termcap.o: $(LISP_H) conslots.h console.h device.h devslots.h
 terminfo.o: config.h
 tests.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h elhash.h lstream.h mule-charset.h opaque.h
-toolbar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+toolbar.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h conslots.h console.h device.h devslots.h frame.h frameslots.h glyphs.h gui.h mule-charset.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 tooltalk.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h elhash.h mule-charset.h process.h syssignal.h tooltalk.h
-tparam.o: config.h
+tparam.o: $(LISP_H)
 ui-byhand.o: gui.h
 undo.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h extents.h mule-charset.h
 unexaix.o: $(LISP_H) getpagesize.h
@@ -235,11 +235,11 @@
 unexhp9k3.o: config.h sysdep.h
 unexhp9k800.o: $(LISP_H)
 unexmips.o: config.h getpagesize.h
-unexnt.o: $(LISP_H) nt.h ntheap.h sysfile.h syswindows.h
+unexnt.o: $(LISP_H) nt.h ntheap.h sysfile.h systime.h syswindows.h
 unexsunos4.o: config.h
 vm-limit.o: $(LISP_H) mem-limits.h
 widget.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h
-win32.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h syswindows.h
-window.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
+win32.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.h syssignal.h systime.h syswindows.h
+window.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h conslots.h console.h device.h devslots.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h toolbar.h window.h winslots.h
 xgccache.o: $(LISP_H) hash.h xgccache.h
 xmu.o: config.h
diff --text -u 'xemacs-21.5.2/src/device-msw.c' 'xemacs-21.5.3/src/device-msw.c'
Index: ././src/device-msw.c
--- ././src/device-msw.c	Thu May 31 21:45:35 2001
+++ ././src/device-msw.c	Mon Aug 13 13:46:11 2001
@@ -428,7 +428,7 @@
 {
   char* printer_name;
   DEVMODE *pdm;
-  size_t dm_size;
+  LONG dm_size;
 
   d->device_data = xnew_and_zero (struct msprinter_device);
 
@@ -932,7 +932,7 @@
      printer name at all. */
   if (ldm->printer_name == NULL)
     {
-      size_t dm_size =
+      LONG dm_size =
 	DocumentProperties (NULL, DEVICE_MSPRINTER_HPRINTER(d),
 			    DEVICE_MSPRINTER_NAME(d), NULL, NULL, 0);
       if (dm_size <= 0)
@@ -1089,7 +1089,7 @@
   return stricmp (dm1->printer_name, dm2->printer_name) == 0;
 }
 
-static unsigned long
+static Hash_Code
 hash_devmode (Lisp_Object obj, int depth)
 {
   Lisp_Devmode *dm = XDEVMODE (obj);
@@ -1201,7 +1201,7 @@
 {
   int have_nt, ok;
   BYTE *data_buf, dummy_byte;
-  size_t enum_entry_size;
+  Memory_Count enum_entry_size;
   DWORD enum_flags, enum_level, bytes_needed, num_printers;
   struct gcpro gcpro1, gcpro2;
   Lisp_Object result = Qnil, def_printer = Qnil;
diff --text -u 'xemacs-21.5.2/src/device-x.c' 'xemacs-21.5.3/src/device-x.c'
Index: ././src/device-x.c
--- ././src/device-x.c	Fri May 25 20:26:54 2001
+++ ././src/device-x.c	Mon Aug 13 13:46:11 2001
@@ -307,8 +307,9 @@
 
 static char valid_resource_char_p[256];
 
+/* #### not just char * here; may be fixed in my Mule ws */
 static void
-validify_resource_component (char *str, size_t len)
+validify_resource_component (char *str, Memory_Count len)
 {
   for (; len; len--, str++)
     if (!valid_resource_char_p[(unsigned char) (*str)])
@@ -1582,11 +1583,11 @@
   if (!(colon_pos = strchr (str, ':')) || strchr (str, '\n'))
   invalid:
     syntax_error ("Invalid resource line", resource_line);
-  if (strspn (str,
-	      /* Only the following chars are allowed before the colon */
-	      " \t.*?abcdefghijklmnopqrstuvwxyz"
-	      "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-")
-      != (size_t) (colon_pos - str))
+  if ((int) strspn (str,
+		    /* Only the following chars are allowed before the colon */
+		    " \t.*?abcdefghijklmnopqrstuvwxyz"
+		    "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-")
+      != colon_pos - str)
     goto invalid;
 
   if (DEVICE_X_P (d))
diff --text -u 'xemacs-21.5.2/src/dialog-msw.c' 'xemacs-21.5.3/src/dialog-msw.c'
Index: ././src/dialog-msw.c
--- ././src/dialog-msw.c	Mon Jun 18 16:10:14 2001
+++ ././src/dialog-msw.c	Mon Aug 13 13:46:12 2001
@@ -207,7 +207,7 @@
 	if (w_param != IDCANCEL) /* user pressed escape */
 	  {
 	    assert (w_param >= ID_ITEM_BIAS 
-		    && w_param
+		    && (EMACS_INT) w_param
 		    < XVECTOR_LENGTH (did->callbacks) + ID_ITEM_BIAS);
 	    
 	    get_gui_callback (XVECTOR_DATA (did->callbacks)
@@ -270,10 +270,10 @@
 }
 
 /* Given button TEXT, return button width in DLU */
-static unsigned int
+static int
 button_width (Lisp_Object text)
 {
-  unsigned int width = X_DLU_PER_CHAR * XSTRING_CHAR_LENGTH (text);
+  int width = X_DLU_PER_CHAR * XSTRING_CHAR_LENGTH (text);
   return max (X_MIN_BUTTON, width);
 }
 
@@ -286,16 +286,16 @@
 }
 
 
-#define ALIGN_TEMPLATE						\
-{								\
-  unsigned int slippage = Dynarr_length (template_) & 3;	\
-  if (slippage)							\
-    Dynarr_add_many (template_, &zeroes, slippage);		\
+#define ALIGN_TEMPLATE					\
+{							\
+  int slippage = Dynarr_length (template_) & 3;		\
+  if (slippage)						\
+    Dynarr_add_many (template_, &zeroes, slippage);	\
 }
 
 static struct
 {
-  int errmess;
+  DWORD errmess;
   char *errname;
 } common_dialog_errors[] =
 {
@@ -414,8 +414,8 @@
 {
   Lisp_Object_dynarr *dialog_items = Dynarr_new (Lisp_Object);
   unsigned_char_dynarr *template_ = Dynarr_new (unsigned_char);
-  unsigned int button_row_width = 0;
-  unsigned int text_width, text_height;
+  int button_row_width = 0;
+  int text_width, text_height;
   Lisp_Object question = Qnil, title = Qnil;
 
   int unbind_count = specpdl_depth ();
diff --text -u 'xemacs-21.5.2/src/dired.c' 'xemacs-21.5.3/src/dired.c'
Index: ././src/dired.c
--- ././src/dired.c	Thu May 24 16:51:07 2001
+++ ././src/dired.c	Mon Aug 13 13:46:12 2001
@@ -563,7 +563,7 @@
 struct user_name
 {
   Bufbyte *ptr;
-  size_t len;
+  Bytecount len;
 };
 
 struct user_cache
@@ -675,7 +675,7 @@
 		  status_status_statui_statum_statu != ERROR_MORE_DATA)
 		invalid_operation ("Error enumerating users",
 				   make_int (GetLastError ()));
-	      for (i = 0; i < entriesread; i++)
+	      for (i = 0; i < (int) entriesread; i++)
 		{
 		  int nout =
 		    WideCharToMultiByte (CP_ACP, WC_COMPOSITECHECK,
diff --text -u 'xemacs-21.5.2/src/doc.c' 'xemacs-21.5.3/src/doc.c'
Index: ././src/doc.c
--- ././src/doc.c	Thu May 24 16:51:07 2001
+++ ././src/doc.c	Mon Aug 13 13:46:13 2001
@@ -196,7 +196,7 @@
   tem = Ffile_name_absolute_p (file);
   if (NILP (tem))
     {
-      size_t minsize;
+      Bytecount minsize;
       /* XEmacs: Move this check here.  OK if called during loadup to
 	 load byte code instructions. */
       if (!STRINGP (Vdoc_directory))
@@ -206,7 +206,8 @@
       /* sizeof ("../lib-src/") == 12 */
       if (minsize < 12)
 	minsize = 12;
-      name_nonreloc = (char *) alloca (minsize + XSTRING_LENGTH (file) + 8);
+      name_nonreloc =
+	(char *) alloca (minsize + XSTRING_LENGTH (file) + 8);
       string_join (name_nonreloc, Vdoc_directory, file);
     }
   else
@@ -453,7 +454,7 @@
   while (1)
     {
       if (filled < 512)
-	filled += read (fd, &buf[filled], sizeof buf - 1 - filled);
+	filled += read (fd, &buf[filled], sizeof (buf) - 1 - filled);
       if (!filled)
 	break;
 
diff --text -u 'xemacs-21.5.2/src/doprnt.c' 'xemacs-21.5.3/src/doprnt.c'
Index: ././src/doprnt.c
--- ././src/doprnt.c	Fri May 25 19:04:28 2001
+++ ././src/doprnt.c	Mon Aug 13 13:46:13 2001
@@ -129,8 +129,8 @@
   *returned_num = -1;
   while (start != end && isdigit (*start))
     {
-      if ((size_t) (arg_ptr - arg_convert) >= sizeof (arg_convert) - 1)
- syntax_error ("Format converter number too large", Qunbound);
+      if (arg_ptr - arg_convert >= (int) sizeof (arg_convert) - 1)
+	syntax_error ("Format converter number too large", Qunbound);
       *arg_ptr++ = *start++;
     }
   *arg_ptr = '\0';
@@ -598,7 +598,8 @@
 	      char *text_to_print =
 		alloca_array (char, 32 +
 			      max (spec->minwidth,
-				   max (sizeof (double), sizeof (long)) * 3 +
+				   (int) max (sizeof (double),
+				              sizeof (long)) * 3 +
 				   max (spec->precision, 0)));
 	      char constructed_spec[100];
 	      char *p = constructed_spec;
diff --text -u 'xemacs-21.5.2/src/dumper.c' 'xemacs-21.5.3/src/dumper.c'
Index: ././src/dumper.c
--- ././src/dumper.c	Tue Jun 19 10:35:38 2001
+++ ././src/dumper.c	Mon Aug 13 13:46:13 2001
@@ -45,7 +45,7 @@
 typedef struct
 {
   const void *varaddress;
-  size_t size;
+  Memory_Count size;
 } pdump_opaque;
 
 typedef struct
@@ -84,7 +84,7 @@
 /* Mark SIZE bytes at non-heap address VARADDRESS for dumping as is,
    without any bit-twiddling. */
 void
-dump_add_opaque (const void *varaddress, size_t size)
+dump_add_opaque (const void *varaddress, Memory_Count size)
 {
   pdump_opaque info;
   info.varaddress = varaddress;
@@ -129,7 +129,7 @@
 
 
 inline static void
-pdump_align_stream (FILE *stream, size_t alignment)
+pdump_align_stream (FILE *stream, Memory_Count alignment)
 {
   long offset = ftell (stream);
   long adjustment = ALIGN_SIZE (offset, alignment) - offset;
@@ -215,7 +215,7 @@
 
 char *pdump_start;
 char *pdump_end;
-static size_t pdump_length;
+static Memory_Count pdump_length;
 
 #ifdef WIN32_NATIVE
 /* Handle for the dump file */
@@ -234,8 +234,8 @@
   16, 1, 2, 1, 4, 1, 2, 1, 8, 1, 2, 1, 4, 1, 2, 1
 };
 
-static inline unsigned int
-pdump_size_to_align (size_t size)
+static inline int
+pdump_size_to_align (Memory_Count size)
 {
   return pdump_align_table[size % countof (pdump_align_table)];
 }
@@ -244,7 +244,7 @@
 {
   struct pdump_entry_list_elt *next;
   const void *obj;
-  size_t size;
+  Memory_Count size;
   int count;
   EMACS_INT save_offset;
 } pdump_entry_list_elt;
@@ -276,7 +276,7 @@
 static int *pdump_alert_undump_object;
 
 static unsigned long cur_offset;
-static size_t max_size;
+static Memory_Count max_size;
 static int pdump_fd;
 static void *pdump_buf;
 static FILE *pdump_out;
@@ -313,7 +313,7 @@
 }
 
 static void
-pdump_add_entry (pdump_entry_list *list, const void *obj, size_t size,
+pdump_add_entry (pdump_entry_list *list, const void *obj, Memory_Count size,
 		 int count)
 {
   pdump_entry_list_elt *e;
@@ -423,8 +423,14 @@
   irdata = ((char *)idata) + idesc[line].offset;
   switch (idesc[line].type)
     {
-    case XD_SIZE_T:
-      count = *(size_t *)irdata;
+    case XD_MEMORY_COUNT:
+      count = *(Memory_Count *)irdata;
+      break;
+    case XD_ELEMENT_COUNT:
+      count = *(Element_Count *)irdata;
+      break;
+    case XD_HASH_CODE:
+      count = *(Hash_Code *)irdata;
       break;
     case XD_INT:
       count = *(int *)irdata;
@@ -439,6 +445,7 @@
       stderr_out ("Unsupported count type : %d (line = %d, code=%ld)\n",
 		  idesc[line].type, line, (long)code);
       pdump_backtrace ();
+      count = 0; /* warning suppression */
       abort ();
     }
   count += delta;
@@ -464,7 +471,9 @@
 	  pos = 0;
 	  desc = ((const Lisp_Specifier *)data)->methods->extra_description;
 	  goto restart;
-	case XD_SIZE_T:
+	case XD_MEMORY_COUNT:
+	case XD_ELEMENT_COUNT:
+	case XD_HASH_CODE:
 	case XD_INT:
 	case XD_LONG:
 	case XD_BYTECOUNT:
@@ -625,7 +634,7 @@
 pdump_dump_data (pdump_entry_list_elt *elt,
 		 const struct lrecord_description *desc)
 {
-  size_t size = elt->size;
+  Memory_Count size = elt->size;
   int count = elt->count;
   if (desc)
     {
@@ -644,7 +653,9 @@
 		case XD_SPECIFIER_END:
 		  desc = ((const Lisp_Specifier *)(elt->obj))->methods->extra_description;
 		  goto restart;
-		case XD_SIZE_T:
+		case XD_MEMORY_COUNT:
+		case XD_ELEMENT_COUNT:
+		case XD_HASH_CODE:
 		case XD_INT:
 		case XD_LONG:
 		case XD_BYTECOUNT:
@@ -740,7 +751,9 @@
 	  pos = 0;
 	  desc = ((const Lisp_Specifier *)data)->methods->extra_description;
 	  goto restart;
-	case XD_SIZE_T:
+	case XD_MEMORY_COUNT:
+	case XD_ELEMENT_COUNT:
+	case XD_HASH_CODE:
 	case XD_INT:
 	case XD_LONG:
 	case XD_BYTECOUNT:
@@ -803,7 +816,7 @@
 pdump_allocate_offset (pdump_entry_list_elt *elt,
 		       const struct lrecord_description *desc)
 {
-  size_t size = elt->count * elt->size;
+  Memory_Count size = elt->count * elt->size;
   elt->save_offset = cur_offset;
   if (size>max_size)
     max_size = size;
@@ -844,7 +857,7 @@
 pdump_dump_root_struct_ptrs (void)
 {
   int i;
-  size_t count = Dynarr_length (pdump_root_struct_ptrs);
+  Element_Count count = Dynarr_length (pdump_root_struct_ptrs);
   pdump_static_pointer *data = alloca_array (pdump_static_pointer, count);
   for (i = 0; i < count; i++)
     {
@@ -920,14 +933,14 @@
 static void
 pdump_dump_root_objects (void)
 {
-  size_t count = (Dynarr_length (pdump_root_objects) +
-		  Dynarr_length (pdump_weak_object_chains));
-  size_t i;
+  Element_Count count = (Dynarr_length (pdump_root_objects) +
+			 Dynarr_length (pdump_weak_object_chains));
+  Element_Count i;
 
-  PDUMP_WRITE_ALIGNED (size_t, count);
+  PDUMP_WRITE_ALIGNED (Element_Count, count);
   PDUMP_ALIGN_OUTPUT (pdump_static_Lisp_Object);
 
-  for (i=0; i<Dynarr_length (pdump_root_objects); i++)
+  for (i = 0; i < Dynarr_length (pdump_root_objects); i++)
     {
       pdump_static_Lisp_Object obj;
       obj.address = Dynarr_at (pdump_root_objects, i);
@@ -1142,7 +1155,7 @@
     }
 
   /* Put the pdump_root_objects variables in place */
-  i = PDUMP_READ_ALIGNED (p, size_t);
+  i = PDUMP_READ_ALIGNED (p, Element_Count);
   p = (char *) ALIGN_PTR (p, ALIGNOF (pdump_static_Lisp_Object));
   while (i--)
     {
@@ -1258,7 +1271,7 @@
 
   pdump_free = pdump_resource_free;
   pdump_length = SizeofResource (NULL, hRes);
-  if (pdump_length <= sizeof (pdump_header))
+  if (pdump_length <= (Memory_Count) sizeof (pdump_header))
     {
       pdump_start = 0;
       return 0;
@@ -1291,7 +1304,7 @@
     return 0;
 
   pdump_length = lseek (fd, 0, SEEK_END);
-  if (pdump_length < sizeof (pdump_header))
+  if (pdump_length < (Memory_Count) sizeof (pdump_header))
     {
       close (fd);
       return 0;
diff --text -u 'xemacs-21.5.2/src/dynarr.c' 'xemacs-21.5.3/src/dynarr.c'
Index: ././src/dynarr.c
--- ././src/dynarr.c	Fri Apr 13 03:23:36 2001
+++ ././src/dynarr.c	Mon Aug 13 13:46:14 2001
@@ -214,10 +214,10 @@
    what was requested of it is returned in MALLOC_OVERHEAD in STATS.
    See the comment above the definition of this structure. */
 
-size_t
+Memory_Count
 Dynarr_memory_usage (void *d, struct overhead_stats *stats)
 {
-  size_t total = 0;
+  Memory_Count total = 0;
   Dynarr *dy = (Dynarr *) d;
 
   /* We have to be a bit tricky here because not all of the
@@ -226,7 +226,7 @@
 
   if (dy->base)
     {
-      size_t malloc_used = malloced_storage_size (dy->base,
+      Memory_Count malloc_used = malloced_storage_size (dy->base,
 						  dy->elsize * dy->max, 0);
       /* #### This may or may not be correct.  Some Dynarrs would
 	 prefer that we use dy->cur instead of dy->largest here. */
diff --text -u 'xemacs-21.5.2/src/editfns.c' 'xemacs-21.5.3/src/editfns.c'
Index: ././src/editfns.c
--- ././src/editfns.c	Thu May 31 21:45:35 2001
+++ ././src/editfns.c	Mon Aug 13 13:46:14 2001
@@ -1105,7 +1105,7 @@
        (format_string, time_))
 {
   time_t value;
-  size_t size;
+  Memory_Count size;
 
   CHECK_STRING (format_string);
 
@@ -1268,7 +1268,8 @@
 {
   time_t value;
   char *the_ctime;
-  size_t len;
+  EMACS_INT len; /* this is what make_ext_string() accepts; ####
+		    should it be an Extcount? */
 
   if (! lisp_to_time (specified_time, &value))
     value = -1;
diff --text -u 'xemacs-21.5.2/src/eldap.c' 'xemacs-21.5.3/src/eldap.c'
Index: ././src/eldap.c
--- ././src/eldap.c	Fri May 25 20:26:54 2001
+++ ././src/eldap.c	Mon Aug 13 13:46:15 2001
@@ -601,7 +601,7 @@
   struct berval *bervals;
   int rc;
   int i, j;
-  size_t len;
+  Element_Count len;
 
   Lisp_Object current = Qnil;
   Lisp_Object values  = Qnil;
@@ -622,7 +622,7 @@
     invalid_operation ("Cannot add void entry", entry);
 
   /* Build the ldap_mods array */
-  len = XINT (Flength (entry));
+  len = (Element_Count) XINT (Flength (entry));
   ldap_mods = alloca_array (LDAPMod, len);
   ldap_mods_ptrs = alloca_array (LDAPMod *, 1 + len);
   i = 0;
@@ -637,7 +637,7 @@
       values = XCDR (current);
       if (CONSP (values))
         {
-	  len = XINT (Flength (values));
+	  len = (Element_Count) XINT (Flength (values));
           bervals = alloca_array (struct berval, len);
           ldap_mods[i].mod_vals.modv_bvals =
             alloca_array (struct berval *, 1 + len);
@@ -695,7 +695,7 @@
   struct berval *bervals;
   int i, j, rc;
   Lisp_Object mod_op;
-  size_t len;
+  Element_Count len;
 
   Lisp_Object current = Qnil;
   Lisp_Object values  = Qnil;
@@ -714,7 +714,7 @@
     return Qnil;
 
   /* Build the ldap_mods array */
-  len = XINT (Flength (mods));
+  len = (Element_Count) XINT (Flength (mods));
   ldap_mods = alloca_array (LDAPMod, len);
   ldap_mods_ptrs = alloca_array (LDAPMod *, 1 + len);
   i = 0;
@@ -740,7 +740,7 @@
       CHECK_STRING (XCAR (current));
       LISP_STRING_TO_EXTERNAL (XCAR (current), ldap_mods[i].mod_type, Qnative);
       values = XCDR (current);
-      len = XINT (Flength (values));
+      len = (Element_Count) XINT (Flength (values));
       bervals = alloca_array (struct berval, len);
       ldap_mods[i].mod_vals.modv_bvals =
         alloca_array (struct berval *, 1 + len);
diff --text -u 'xemacs-21.5.2/src/elhash.c' 'xemacs-21.5.3/src/elhash.c'
Index: ././src/elhash.c
--- ././src/elhash.c	Mon Jun 18 16:10:15 2001
+++ ././src/elhash.c	Mon Aug 13 13:46:15 2001
@@ -82,12 +82,12 @@
 struct Lisp_Hash_Table
 {
   struct lcrecord_header header;
-  size_t size;
-  size_t count;
-  size_t rehash_count;
+  Element_Count size;
+  Element_Count count;
+  Element_Count rehash_count;
   double rehash_size;
   double rehash_threshold;
-  size_t golden_ratio;
+  Element_Count golden_ratio;
   hash_table_hash_function_t hash_function;
   hash_table_test_function_t test_function;
   hentry *hentries;
@@ -143,13 +143,13 @@
 #endif
 
 /* Return a suitable size for a hash table, with at least SIZE slots. */
-static size_t
-hash_table_size (size_t requested_size)
+static Element_Count
+hash_table_size (Element_Count requested_size)
 {
   /* Return some prime near, but greater than or equal to, SIZE.
      Decades from the time of writing, someone will have a system large
      enough that the list below will be too short... */
-  static const size_t primes [] =
+  static const Element_Count primes [] =
   {
     19, 29, 41, 59, 79, 107, 149, 197, 263, 347, 457, 599, 787, 1031,
     1361, 1777, 2333, 3037, 3967, 5167, 6719, 8737, 11369, 14783,
@@ -159,7 +159,7 @@
     10445899, 13579681, 17653589, 22949669, 29834603, 38784989,
     50420551, 65546729, 85210757, 110774011, 144006217, 187208107,
     243370577, 316381771, 411296309, 534685237, 695090819, 903618083,
-    1174703521, 1527114613, 1985248999, 2580823717UL, 3355070839UL
+    1174703521, 1527114613, 1985248999 /* , 2580823717UL, 3355070839UL */
   };
   /* We've heard of binary search. */
   int low, high;
@@ -188,7 +188,7 @@
   return !strcmp ((char *) XSTRING_DATA (str1), (char *) XSTRING_DATA (str2));
 }
 
-static hashcode_t
+static Hash_Code
 lisp_string_hash (Lisp_Object obj)
 {
   return hash_string (XSTRING_DATA (str), XSTRING_LENGTH (str));
@@ -202,7 +202,7 @@
   return EQ (obj1, obj2) || (FLOATP (obj1) && internal_equal (obj1, obj2, 0));
 }
 
-static hashcode_t
+static Hash_Code
 lisp_object_eql_hash (Lisp_Object obj)
 {
   return FLOATP (obj) ? internal_hash (obj, 0) : LISP_HASH (obj);
@@ -214,7 +214,7 @@
   return internal_equal (obj1, obj2, 0);
 }
 
-static hashcode_t
+static Hash_Code
 lisp_object_equal_hash (Lisp_Object obj)
 {
   return internal_hash (obj, 0);
@@ -283,7 +283,7 @@
 /* This is not a great hash function, but it _is_ correct and fast.
    Examining all entries is too expensive, and examining a random
    subset does not yield a correct hash function. */
-static hashcode_t
+static Hash_Code
 hash_table_hash (Lisp_Object hash_table, int depth)
 {
   return XHASH_TABLE (hash_table)->count;
@@ -367,11 +367,9 @@
   if (ht->count || !print_readably)
     {
       if (print_readably)
-	sprintf (buf, " size %lu", (unsigned long) ht->count);
+	sprintf (buf, " size %ld", (long) ht->count);
       else
-	sprintf (buf, " size %lu/%lu",
-		 (unsigned long) ht->count,
-		 (unsigned long) ht->size);
+	sprintf (buf, " size %ld/%ld", (long) ht->count, (long) ht->size);
       write_c_string (buf, printcharfun);
     }
 
@@ -436,7 +434,7 @@
 };
 
 const struct lrecord_description hash_table_description[] = {
-  { XD_SIZE_T,     offsetof (Lisp_Hash_Table, size) },
+  { XD_ELEMENT_COUNT,     offsetof (Lisp_Hash_Table, size) },
   { XD_STRUCT_PTR, offsetof (Lisp_Hash_Table, hentries), XD_INDIRECT(0, 1), &hentry_description },
   { XD_LO_LINK,    offsetof (Lisp_Hash_Table, next_weak) },
   { XD_END }
@@ -467,15 +465,15 @@
 static void
 compute_hash_table_derived_values (Lisp_Hash_Table *ht)
 {
-  ht->rehash_count = (size_t)
+  ht->rehash_count = (Element_Count)
     ((double) ht->size * ht->rehash_threshold);
-  ht->golden_ratio = (size_t)
+  ht->golden_ratio = (Element_Count)
     ((double) ht->size * (.6180339887 / (double) sizeof (Lisp_Object)));
 }
 
 Lisp_Object
 make_standard_lisp_hash_table (enum hash_table_test test,
-			       size_t size,
+			       Element_Count size,
 			       double rehash_size,
 			       double rehash_threshold,
 			       enum hash_table_weakness weakness)
@@ -512,7 +510,7 @@
 Lisp_Object
 make_general_lisp_hash_table (hash_table_hash_function_t hash_function,
 			      hash_table_test_function_t test_function,
-			      size_t size,
+			      Element_Count size,
 			      double rehash_size,
 			      double rehash_threshold,
 			      enum hash_table_weakness weakness)
@@ -533,7 +531,7 @@
 
   if (size < HASH_TABLE_MIN_SIZE)
     size = HASH_TABLE_MIN_SIZE;
-  ht->size = hash_table_size ((size_t) (((double) size / ht->rehash_threshold)
+  ht->size = hash_table_size ((Element_Count) (((double) size / ht->rehash_threshold)
 					+ 1.0));
   ht->count = 0;
 
@@ -553,7 +551,7 @@
 }
 
 Lisp_Object
-make_lisp_hash_table (size_t size,
+make_lisp_hash_table (Element_Count size,
 		      enum hash_table_weakness weakness,
 		      enum hash_table_test test)
 {
@@ -583,7 +581,7 @@
   return 0;
 }
 
-static size_t
+static Element_Count
 decode_hash_table_size (Lisp_Object obj)
 {
   return NILP (obj) ? HASH_TABLE_DEFAULT_SIZE : XINT (obj);
@@ -958,10 +956,10 @@
 }
 
 static void
-resize_hash_table (Lisp_Hash_Table *ht, size_t new_size)
+resize_hash_table (Lisp_Hash_Table *ht, Element_Count new_size)
 {
   hentry *old_entries, *new_entries, *sentinel, *e;
-  size_t old_size;
+  Element_Count old_size;
 
   old_size = ht->size;
   ht->size = new_size;
@@ -1012,8 +1010,8 @@
 static void
 enlarge_hash_table (Lisp_Hash_Table *ht)
 {
-  size_t new_size =
-    hash_table_size ((size_t) ((double) ht->size * ht->rehash_size));
+  Element_Count new_size =
+    hash_table_size ((Element_Count) ((double) ht->size * ht->rehash_size));
   resize_hash_table (ht, new_size);
 }
 
@@ -1069,7 +1067,7 @@
 static void
 remhash_1 (Lisp_Hash_Table *ht, hentry *entries, hentry *probe)
 {
-  size_t size = ht->size;
+  Element_Count size = ht->size;
   CLEAR_HENTRY (probe);
   probe++;
   ht->count--;
@@ -1552,11 +1550,11 @@
 
 /* Return a hash value for an array of Lisp_Objects of size SIZE. */
 
-hashcode_t
+Hash_Code
 internal_array_hash (Lisp_Object *arr, int size, int depth)
 {
   int i;
-  hashcode_t hash = 0;
+  Hash_Code hash = 0;
   depth++;
 
   if (size <= 5)
@@ -1587,7 +1585,7 @@
    we could still take 5^5 time (a big big number) to compute a
    hash, but practically this won't ever happen. */
 
-hashcode_t
+Hash_Code
 internal_hash (Lisp_Object obj, int depth)
 {
   if (depth > 5)
@@ -1631,7 +1629,7 @@
        (object))
 {
   /* This function is pretty 32bit-centric. */
-  hashcode_t hash = internal_hash (object, 0);
+  Hash_Code hash = internal_hash (object, 0);
   return Fcons (hash >> 16, hash & 0xffff);
 }
 #endif
diff --text -u 'xemacs-21.5.2/src/elhash.h' 'xemacs-21.5.3/src/elhash.h'
Index: ././src/elhash.h
--- ././src/elhash.h	Mon Jun 18 16:10:16 2001
+++ ././src/elhash.h	Mon Aug 13 13:46:16 2001
@@ -62,26 +62,25 @@
 EXFUN (Fremhash, 2);
 EXFUN (Fclrhash, 1);
 
-typedef unsigned long hashcode_t;
 typedef int (*hash_table_test_function_t) (Lisp_Object obj1, Lisp_Object obj2);
 typedef unsigned long (*hash_table_hash_function_t) (Lisp_Object obj);
 typedef int (*maphash_function_t) (Lisp_Object key, Lisp_Object value,
 				   void* extra_arg);
 
 Lisp_Object make_standard_lisp_hash_table (enum hash_table_test test,
-					   size_t size,
+					   Element_Count size,
 					   double rehash_size,
 					   double rehash_threshold,
 					   enum hash_table_weakness weakness);
 
 Lisp_Object make_general_lisp_hash_table (hash_table_hash_function_t hash_function,
 					  hash_table_test_function_t test_function,
-					  size_t size,
+					  Element_Count size,
 					  double rehash_size,
 					  double rehash_threshold,
 					  enum hash_table_weakness weakness);
 
-Lisp_Object make_lisp_hash_table (size_t size,
+Lisp_Object make_lisp_hash_table (Element_Count size,
 				  enum hash_table_weakness weakness,
 				  enum hash_table_test test);
 
diff --text -u 'xemacs-21.5.2/src/emacs.c' 'xemacs-21.5.3/src/emacs.c'
Index: ././src/emacs.c
--- ././src/emacs.c	Mon Jun 18 16:10:16 2001
+++ ././src/emacs.c	Mon Aug 13 13:46:16 2001
@@ -335,7 +335,8 @@
 uintptr_t bss_end = 0;
 #endif
 
-/* Number of bytes of writable memory we can expect to be able to get */
+/* Number of bytes of writable memory we can expect to be able to get:
+   Leave this as an unsigned int because it could potentially be 4G */
 unsigned int lim_data;
 
 /* WARNING!
@@ -463,8 +464,8 @@
 static int run_temacs_argc;
 static Extbyte **run_temacs_argv;
 static Extbyte *run_temacs_args;
-static size_t run_temacs_argv_size;
-static size_t run_temacs_args_size;
+static int run_temacs_argv_size;
+static int run_temacs_args_size;
 
 static void shut_down_emacs (int sig, Lisp_Object stuff, int no_auto_save);
 
diff --text -u 'xemacs-21.5.2/src/eval.c' 'xemacs-21.5.3/src/eval.c'
Index: ././src/eval.c
--- ././src/eval.c	Mon Jun 18 16:10:17 2001
+++ ././src/eval.c	Mon Aug 13 13:46:17 2001
@@ -4738,9 +4738,9 @@
 #define min_max_specpdl_size 400
 
 void
-grow_specpdl (size_t reserved)
+grow_specpdl (EMACS_INT reserved)
 {
-  size_t size_needed = specpdl_depth() + reserved;
+  EMACS_INT size_needed = specpdl_depth() + reserved;
   if (size_needed >= max_specpdl_size)
     {
       if (max_specpdl_size < min_max_specpdl_size)
diff --text -u 'xemacs-21.5.2/src/event-Xt.c' 'xemacs-21.5.3/src/event-Xt.c'
Index: ././src/event-Xt.c
--- ././src/event-Xt.c	Fri Jul 27 06:10:44 2001
+++ ././src/event-Xt.c	Mon Aug 13 13:46:18 2001
@@ -1341,7 +1341,7 @@
 	  {
 	    unsigned int state;
 	    int modifiers = 0;
-	    unsigned int button=0;
+	    int button = 0;
 	    struct frame *frame = x_any_window_to_frame (d, ev->window);
 	    Extbyte *data;
 	    unsigned long size, dtype;
diff --text -u 'xemacs-21.5.2/src/event-msw.c' 'xemacs-21.5.3/src/event-msw.c'
Index: ././src/event-msw.c
--- ././src/event-msw.c	Fri Jun  8 21:21:23 2001
+++ ././src/event-msw.c	Mon Aug 13 13:46:18 2001
@@ -367,9 +367,9 @@
   return s->thread_data->hev_caller;
 }
 
-static Lstream_data_count
+static Lstream_Data_Count
 ntpipe_slurp_reader (Lstream *stream, unsigned char *data,
-		     Lstream_data_count size)
+		     Lstream_Data_Count size)
 {
   /* This function must be called from the main thread only */
   struct ntpipe_slurp_stream_shared_data* s =
@@ -429,7 +429,7 @@
 	       so do not check for errors. ReadFile in the thread will
 	       fail if the next call fails. */
 	    if (bytes_available)
-	      ReadFile (s->hpipe, data, min (bytes_available, size),
+	      ReadFile (s->hpipe, data, min (bytes_available, (DWORD) size),
 			&bytes_read, NULL);
 	  }
 
@@ -582,9 +582,9 @@
 }
 #endif
 
-static Lstream_data_count
+static Lstream_Data_Count
 ntpipe_shove_writer (Lstream *stream, const unsigned char *data,
-		     Lstream_data_count size)
+		     Lstream_Data_Count size)
 {
   struct ntpipe_shove_stream* s = NTPIPE_SHOVE_STREAM_DATA(stream);
 
@@ -666,9 +666,9 @@
   LPARAM user_data;		/* Any user data stored in the stream object */
   SOCKET s;			/* Socket handle (which is a Win32 handle)   */
   OVERLAPPED ov;		/* Overlapped I/O structure		     */
-  void* buffer;			/* Buffer.                                   */
-  unsigned long bufsize;	/* Number of bytes last read		     */
-  unsigned long bufpos;		/* Position in buffer for next fetch	     */
+  void *buffer;			/* Buffer.                                   */
+  DWORD bufsize;		/* Number of bytes last read		     */
+  DWORD bufpos;			/* Position in buffer for next fetch	     */
   unsigned int error_p :1;	/* I/O Error seen			     */
   unsigned int eof_p :1;	/* EOF Error seen			     */
   unsigned int pending_p :1;	/* There is a pending I/O operation	     */
@@ -700,8 +700,8 @@
     str->eof_p = 1;
 }
 
-static Lstream_data_count
-winsock_reader (Lstream *stream, unsigned char *data, Lstream_data_count size)
+static Lstream_Data_Count
+winsock_reader (Lstream *stream, unsigned char *data, Lstream_Data_Count size)
 {
   struct winsock_stream *str = WINSOCK_STREAM_DATA (stream);
 
@@ -735,7 +735,7 @@
     return -1;
 
   /* Return as much of buffer as we have */
-  size = min (size, (Lstream_data_count) (str->bufsize - str->bufpos));
+  size = min (size, (Lstream_Data_Count) (str->bufsize - str->bufpos));
   memcpy (data, (void*)((BYTE*)str->buffer + str->bufpos), size);
   str->bufpos += size;
 
@@ -746,9 +746,9 @@
   return size;
 }
 
-static Lstream_data_count
+static Lstream_Data_Count
 winsock_writer (Lstream *stream, const unsigned char *data,
-		Lstream_data_count size)
+		Lstream_Data_Count size)
 {
   struct winsock_stream *str = WINSOCK_STREAM_DATA (stream);
 
@@ -1386,13 +1386,12 @@
 static void
 mswindows_need_event (int badly_p)
 {
-  int active;
-
   while (NILP (mswindows_u_dispatch_event_queue)
 	 && NILP (mswindows_s_dispatch_event_queue))
     {
 #ifdef HAVE_MSG_SELECT
       int i;
+      int active;
       SELECT_TYPE temp_mask = input_wait_mask;
       EMACS_TIME sometime;
       EMACS_SELECT_TIME select_time_to_block, *pointer_to_this;
@@ -1487,8 +1486,9 @@
 	{
 	  assert(0);
 	}
-#else
+#else /* not HAVE_MSG_SELECT */
       /* Now try getting a message or process event */
+      DWORD active;
       DWORD what_events;
       if (mswindows_in_modal_loop)
 	/* In a modal loop, only look for timer events, and only if
@@ -1570,7 +1570,7 @@
 		mswindows_enqueue_magic_event (NULL, XM_BUMPQUEUE);
 	    }
 	}
-#endif
+#endif /* not HAVE_MSG_SELECT */
     } /* while */
 }
 
@@ -2059,7 +2059,7 @@
 
   Lisp_Event *event;
   struct frame *frame;
-  struct mswindows_frame* msframe;
+  struct mswindows_frame *msframe;
 
   /* If you hit this, rewrite the offending API call to occur after GC,
      using register_post_gc_action(). */
@@ -2250,7 +2250,7 @@
 				   PM_REMOVE))
 	      {
 		int mods_with_quit = mods;
-		WPARAM ch = tranmsg.wParam;
+		Emchar ch = (Emchar) tranmsg.wParam;
 
 #ifdef DEBUG_XEMACS
 		if (debug_mswindows_events)
@@ -2552,18 +2552,17 @@
 
     case WM_NOTIFY:
       {
-	LPNMHDR nmhdr = (LPNMHDR)lParam;
+	LPNMHDR nmhdr = (LPNMHDR) lParam;
 
-	if (nmhdr->code ==  TTN_NEEDTEXT)
+	if ((int) nmhdr->code == TTN_NEEDTEXT)
 	  {
 #ifdef HAVE_TOOLBARS
-	    LPTOOLTIPTEXT tttext = (LPTOOLTIPTEXT)lParam;
+	    LPTOOLTIPTEXT tttext = (LPTOOLTIPTEXT) lParam;
 	    Lisp_Object btext;
 
 	    /* find out which toolbar */
 	    frame = XFRAME (mswindows_find_frame (hwnd));
-	    btext = mswindows_get_toolbar_button_text ( frame,
-							nmhdr->idFrom );
+	    btext = mswindows_get_toolbar_button_text (frame, nmhdr->idFrom);
 
 	    tttext->lpszText = NULL;
 	    tttext->hinst = NULL;
@@ -2577,14 +2576,14 @@
 #endif
 	  }
 	/* handle tree view callbacks */
-	else if (nmhdr->code == TVN_SELCHANGED)
+	else if ((int) nmhdr->code == TVN_SELCHANGED)
 	  {
-	    NM_TREEVIEW* ptree = (NM_TREEVIEW*)lParam;
+	    NM_TREEVIEW *ptree = (NM_TREEVIEW *) lParam;
 	    frame = XFRAME (mswindows_find_frame (hwnd));
 	    mswindows_handle_gui_wm_command (frame, 0, ptree->itemNew.lParam);
 	  }
 	/* handle tab control callbacks */
-	else if (nmhdr->code == TCN_SELCHANGE)
+	else if ((int) nmhdr->code == TCN_SELCHANGE)
 	  {
 	    TC_ITEM item;
 	    int idx = SendMessage (nmhdr->hwndFrom, TCM_GETCURSEL, 0, 0);
@@ -3092,13 +3091,17 @@
     current_hkl = xGetKeyboardLayout (0);
   if (current_hkl != last_hkl)
     {
-      TCHAR c;
+      int c;
       last_hkl_has_AltGr = 0;
       /* In this loop, we query whether a character requires
 	 AltGr to be down to generate it. If at least such one
 	 found, this means that the layout does regard AltGr */
-      for (c = ' '; c <= 0xFFU && c != 0 && !last_hkl_has_AltGr; ++c)
-	if (HIBYTE (VkKeyScan (c)) == 6)
+      for (c = ' '; c <= 255 && !last_hkl_has_AltGr; ++c)
+	/* #### This is not really such a good check.  What about under
+	   CJK locales?  It may not matter there, though.  We always
+	   call VkKeyScanA so that we check the locale-specific characters
+	   in non-Latin-1 locales, instead of just the Latin-1 characters. */
+	if (HIBYTE (VkKeyScanA ((char) c)) == 6)
 	  last_hkl_has_AltGr = 1;
       last_hkl = current_hkl;
     }
@@ -3958,7 +3961,7 @@
 
   for (i = 0; i < countof (debug_mswin_messages); i++)
     {
-      if (debug_mswin_messages[i].mess == message_)
+      if (debug_mswin_messages[i].mess == (int) message_)
 	{
 	  str = debug_mswin_messages[i].string;
 	  break;
diff --text -u 'xemacs-21.5.2/src/events.c' 'xemacs-21.5.3/src/events.c'
Index: ././src/events.c
--- ././src/events.c	Thu May 24 16:51:12 2001
+++ ././src/events.c	Mon Aug 13 13:46:20 2001
@@ -300,11 +300,11 @@
     }
 }
 
-static unsigned long
+static Hash_Code
 event_hash (Lisp_Object obj, int depth)
 {
   Lisp_Event *e = XEVENT (obj);
-  unsigned long hash;
+  Hash_Code hash;
 
   hash = HASH2 (e->event_type, LISP_HASH (e->channel));
   switch (e->event_type)
@@ -338,7 +338,7 @@
 
     case magic_eval_event:
       return HASH3 (hash,
-		    (unsigned long) e->event.magic_eval.internal_function,
+		    (Hash_Code) e->event.magic_eval.internal_function,
 		    internal_hash (e->event.magic_eval.object, depth + 1));
 
     case magic_event:
diff --text -u 'xemacs-21.5.2/src/extents.c' 'xemacs-21.5.3/src/extents.c'
Index: ././src/extents.c
--- ././src/extents.c	Thu May 24 16:51:12 2001
+++ ././src/extents.c	Mon Aug 13 13:46:21 2001
@@ -736,11 +736,11 @@
     {
       /* RIGHT might not point to a valid extent (i.e. it's at the end
 	 of the list), so NEWPOS must round down. */
-      unsigned int newpos = (left + right) >> 1;
+      int newpos = (left + right) >> 1;
       EXTENT e = EXTENT_GAP_ARRAY_AT (ga, (int) newpos);
 
       if (endp ? EXTENT_E_LESS (e, extent) : EXTENT_LESS (e, extent))
-	left = newpos+1;
+	left = newpos + 1;
       else
 	right = newpos;
     }
@@ -3104,7 +3104,7 @@
 		       depth));
 }
 
-static unsigned long
+static Hash_Code
 extent_hash (Lisp_Object obj, int depth)
 {
   struct extent *e = XEXTENT (obj);
@@ -5034,12 +5034,12 @@
   if (!endp)
     {
       set_extent_begin_glyph (extent, glyph);
-      extent_begin_glyph_layout (extent) = layout;
+      set_extent_begin_glyph_layout (extent, layout);
     }
   else
     {
       set_extent_end_glyph (extent, glyph);
-      extent_end_glyph_layout (extent) = layout;
+      set_extent_end_glyph_layout (extent, layout);
     }
 
   extent_changed_for_redisplay (extent, 1, 0);
@@ -5136,7 +5136,7 @@
 {
   EXTENT e = decode_extent (extent, 0);
   e = extent_ancestor (e);
-  extent_begin_glyph_layout (e) = symbol_to_glyph_layout (layout);
+  set_extent_begin_glyph_layout (e, symbol_to_glyph_layout (layout));
   extent_maybe_changed_for_redisplay (e, 1, 0);
   return layout;
 }
@@ -5149,7 +5149,7 @@
 {
   EXTENT e = decode_extent (extent, 0);
   e = extent_ancestor (e);
-  extent_end_glyph_layout (e) = symbol_to_glyph_layout (layout);
+  set_extent_end_glyph_layout (e, symbol_to_glyph_layout (layout));
   extent_maybe_changed_for_redisplay (e, 1, 0);
   return layout;
 }
diff --text -u 'xemacs-21.5.2/src/extents.h' 'xemacs-21.5.3/src/extents.h'
Index: ././src/extents.h
--- ././src/extents.h	Mon Jun 18 16:10:18 2001
+++ ././src/extents.h	Mon Aug 13 13:46:21 2001
@@ -211,7 +211,7 @@
   set_extent_no_chase_aux_field (extent_ancestor (e), field, value)
 
 #define set_extent_normal_field(e, field, value)		\
-  set_extent_ancestor_normal_field (extent_no_chase (e), field, value)
+  set_extent_no_chase_normal_field (extent_ancestor (e), field, value)
 
 /* The `parent' and `children' fields are not affected by any
    parent links.  We don't provide any settors for these fields
@@ -252,8 +252,8 @@
   set_extent_aux_field (e, after_change_functions, value)
 
 #define extent_face(e)		     extent_normal_field (e, face)
-#define extent_begin_glyph_layout(e) extent_normal_field (e, begin_glyph_layout)
-#define extent_end_glyph_layout(e)   extent_normal_field (e, end_glyph_layout)
+#define extent_begin_glyph_layout(e) ((enum glyph_layout) extent_normal_field (e, begin_glyph_layout))
+#define extent_end_glyph_layout(e)   ((enum glyph_layout) extent_normal_field (e, end_glyph_layout))
 #define extent_start_open_p(e)	     extent_normal_field (e, start_open)
 #define extent_end_open_p(e)	     extent_normal_field (e, end_open)
 #define extent_unique_p(e)	     extent_normal_field (e, unique)
@@ -261,6 +261,27 @@
 #define extent_detachable_p(e)	     extent_normal_field (e, detachable)
 #define extent_internal_p(e)	     extent_normal_field (e, internal)
 #define extent_in_red_event_p(e)     extent_normal_field (e, in_red_event)
+
+#define set_extent_face(e, val) \
+  set_extent_normal_field (e, face, val)
+#define set_extent_begin_glyph_layout(e, val) \
+  set_extent_normal_field (e, begin_glyph_layout, val)
+#define set_extent_end_glyph_layout(e, val) \
+  set_extent_normal_field (e, end_glyph_layout, val)
+#define set_extent_start_open_p(e, val) \
+  set_extent_normal_field (e, start_open, val)
+#define set_extent_end_open_p(e, val) \
+  set_extent_normal_field (e, end_open, val)
+#define set_extent_unique_p(e, val) \
+  set_extent_normal_field (e, unique, val)
+#define set_extent_duplicable_p(e, val) \
+  set_extent_normal_field (e, duplicable, val)
+#define set_extent_detachable_p(e, val) \
+  set_extent_normal_field (e, detachable, val)
+#define set_extent_internal_p(e, val) \
+  set_extent_normal_field (e, internal, val)
+#define set_extent_in_red_event_p(e, val) \
+  set_extent_normal_field (e, in_red_event, val)
 
 INLINE_HEADER Lisp_Object * extent_no_chase_plist_addr (EXTENT e);
 INLINE_HEADER Lisp_Object *
diff --text -u 'xemacs-21.5.2/src/faces.c' 'xemacs-21.5.3/src/faces.c'
Index: ././src/faces.c
--- ././src/faces.c	Fri May 25 20:26:55 2001
+++ ././src/faces.c	Mon Aug 13 13:46:22 2001
@@ -150,7 +150,7 @@
      ! plists_differ (f1->plist, f2->plist, 0, 0, depth + 1));
 }
 
-static unsigned long
+static Hash_Code
 face_hash (Lisp_Object obj, int depth)
 {
   Lisp_Face *f = XFACE (obj);
diff --text -u 'xemacs-21.5.2/src/file-coding.c' 'xemacs-21.5.3/src/file-coding.c'
Index: ././src/file-coding.c
--- ././src/file-coding.c	Thu May 24 18:37:29 2001
+++ ././src/file-coding.c	Mon Aug 13 13:46:22 2001
@@ -174,47 +174,47 @@
 #ifdef MULE
 struct detection_state;
 static int detect_coding_sjis (struct detection_state *st,
-			       const Extbyte *src, Lstream_data_count n);
+			       const Extbyte *src, Lstream_Data_Count n);
 static void decode_coding_sjis (Lstream *decoding, const Extbyte *src,
-				unsigned_char_dynarr *dst, Lstream_data_count n);
+				unsigned_char_dynarr *dst, Lstream_Data_Count n);
 static void encode_coding_sjis (Lstream *encoding, const Bufbyte *src,
-				unsigned_char_dynarr *dst, Lstream_data_count n);
+				unsigned_char_dynarr *dst, Lstream_Data_Count n);
 static int detect_coding_big5 (struct detection_state *st,
-			       const Extbyte *src, Lstream_data_count n);
+			       const Extbyte *src, Lstream_Data_Count n);
 static void decode_coding_big5 (Lstream *decoding, const Extbyte *src,
-				unsigned_char_dynarr *dst, Lstream_data_count n);
+				unsigned_char_dynarr *dst, Lstream_Data_Count n);
 static void encode_coding_big5 (Lstream *encoding, const Bufbyte *src,
-				unsigned_char_dynarr *dst, Lstream_data_count n);
+				unsigned_char_dynarr *dst, Lstream_Data_Count n);
 static int detect_coding_ucs4 (struct detection_state *st,
-			       const Extbyte *src, Lstream_data_count n);
+			       const Extbyte *src, Lstream_Data_Count n);
 static void decode_coding_ucs4 (Lstream *decoding, const Extbyte *src,
-				unsigned_char_dynarr *dst, Lstream_data_count n);
+				unsigned_char_dynarr *dst, Lstream_Data_Count n);
 static void encode_coding_ucs4 (Lstream *encoding, const Bufbyte *src,
-				unsigned_char_dynarr *dst, Lstream_data_count n);
+				unsigned_char_dynarr *dst, Lstream_Data_Count n);
 static int detect_coding_utf8 (struct detection_state *st,
-			       const Extbyte *src, Lstream_data_count n);
+			       const Extbyte *src, Lstream_Data_Count n);
 static void decode_coding_utf8 (Lstream *decoding, const Extbyte *src,
-				unsigned_char_dynarr *dst, Lstream_data_count n);
+				unsigned_char_dynarr *dst, Lstream_Data_Count n);
 static void encode_coding_utf8 (Lstream *encoding, const Bufbyte *src,
-				unsigned_char_dynarr *dst, Lstream_data_count n);
+				unsigned_char_dynarr *dst, Lstream_Data_Count n);
 static int postprocess_iso2022_mask (int mask);
 static void reset_iso2022 (Lisp_Object coding_system,
 			   struct iso2022_decoder *iso);
 static int detect_coding_iso2022 (struct detection_state *st,
-				  const Extbyte *src, Lstream_data_count n);
+				  const Extbyte *src, Lstream_Data_Count n);
 static void decode_coding_iso2022 (Lstream *decoding, const Extbyte *src,
-				   unsigned_char_dynarr *dst, Lstream_data_count n);
+				   unsigned_char_dynarr *dst, Lstream_Data_Count n);
 static void encode_coding_iso2022 (Lstream *encoding, const Bufbyte *src,
-				   unsigned_char_dynarr *dst, Lstream_data_count n);
+				   unsigned_char_dynarr *dst, Lstream_Data_Count n);
 #endif /* MULE */
 static void decode_coding_no_conversion (Lstream *decoding, const Extbyte *src,
-					 unsigned_char_dynarr *dst, Lstream_data_count n);
+					 unsigned_char_dynarr *dst, Lstream_Data_Count n);
 static void encode_coding_no_conversion (Lstream *encoding, const Bufbyte *src,
-					 unsigned_char_dynarr *dst, Lstream_data_count n);
+					 unsigned_char_dynarr *dst, Lstream_Data_Count n);
 static void mule_decode (Lstream *decoding, const Extbyte *src,
-			 unsigned_char_dynarr *dst, Lstream_data_count n);
+			 unsigned_char_dynarr *dst, Lstream_Data_Count n);
 static void mule_encode (Lstream *encoding, const Bufbyte *src,
-			 unsigned_char_dynarr *dst, Lstream_data_count n);
+			 unsigned_char_dynarr *dst, Lstream_Data_Count n);
 
 typedef struct codesys_prop codesys_prop;
 struct codesys_prop
@@ -1617,7 +1617,7 @@
 
 static eol_type_t
 detect_eol_type (struct detection_state *st, const Extbyte *src,
-		 Lstream_data_count n)
+		 Lstream_Data_Count n)
 {
   while (n--)
     {
@@ -1660,7 +1660,7 @@
 
 static int
 detect_coding_type (struct detection_state *st, const Extbyte *src,
-		    Lstream_data_count n, int just_do_eol)
+		    Lstream_Data_Count n, int just_do_eol)
 {
   if (st->eol_type == EOL_AUTODETECT)
     st->eol_type = detect_eol_type (st, src, n);
@@ -1791,7 +1791,7 @@
       Extbyte buf[4096];
       Lisp_Object coding_system = Qnil;
       Extbyte *p;
-      Lstream_data_count nread = Lstream_read (stream, buf, sizeof (buf));
+      Lstream_Data_Count nread = Lstream_read (stream, buf, sizeof (buf));
       Extbyte *scan_end;
 
       /* Look for initial "-*-"; mode line prefix */
@@ -1925,7 +1925,7 @@
   while (1)
     {
       Extbyte random_buffer[4096];
-      Lstream_data_count nread = Lstream_read (istr, random_buffer, sizeof (random_buffer));
+      Lstream_Data_Count nread = Lstream_read (istr, random_buffer, sizeof (random_buffer));
 
       if (!nread)
 	break;
@@ -2092,10 +2092,10 @@
   struct detection_state decst;
 };
 
-static Lstream_data_count decoding_reader (Lstream *stream,
-				unsigned char *data, Lstream_data_count size);
-static Lstream_data_count decoding_writer (Lstream *stream,
-				const unsigned char *data, Lstream_data_count size);
+static Lstream_Data_Count decoding_reader (Lstream *stream,
+				unsigned char *data, Lstream_Data_Count size);
+static Lstream_Data_Count decoding_writer (Lstream *stream,
+				const unsigned char *data, Lstream_Data_Count size);
 static int decoding_rewinder   (Lstream *stream);
 static int decoding_seekable_p (Lstream *stream);
 static int decoding_flusher    (Lstream *stream);
@@ -2127,12 +2127,12 @@
 /* Read SIZE bytes of data and store it into DATA.  We are a decoding stream
    so we read data from the other end, decode it, and store it into DATA. */
 
-static Lstream_data_count
-decoding_reader (Lstream *stream, unsigned char *data, Lstream_data_count size)
+static Lstream_Data_Count
+decoding_reader (Lstream *stream, unsigned char *data, Lstream_Data_Count size)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (stream);
   unsigned char *orig_data = data;
-  Lstream_data_count read_size;
+  Lstream_Data_Count read_size;
   int error_occurred = 0;
 
   /* We need to interface to mule_decode(), which expects to take some
@@ -2148,7 +2148,7 @@
 	 most SIZE bytes, and delete the data from the runoff. */
       if (Dynarr_length (str->runoff) > 0)
 	{
-	  Lstream_data_count chunk = min (size, (Lstream_data_count) Dynarr_length (str->runoff));
+	  Lstream_Data_Count chunk = min (size, (Lstream_Data_Count) Dynarr_length (str->runoff));
 	  memcpy (data, Dynarr_atp (str->runoff, 0), chunk);
 	  Dynarr_delete_many (str->runoff, 0, chunk);
 	  data += chunk;
@@ -2189,11 +2189,11 @@
     return data - orig_data;
 }
 
-static Lstream_data_count
-decoding_writer (Lstream *stream, const unsigned char *data, Lstream_data_count size)
+static Lstream_Data_Count
+decoding_writer (Lstream *stream, const unsigned char *data, Lstream_Data_Count size)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (stream);
-  Lstream_data_count retval;
+  Lstream_Data_Count retval;
 
   /* Decode all our data into the runoff, and then attempt to write
      it all out to the other end.  Remove whatever chunk we succeeded
@@ -2351,7 +2351,7 @@
 
 static void
 mule_decode (Lstream *decoding, const Extbyte *src,
-	     unsigned_char_dynarr *dst, Lstream_data_count n)
+	     unsigned_char_dynarr *dst, Lstream_Data_Count n)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
 
@@ -2473,7 +2473,7 @@
       char tempbuf[1024]; /* some random amount */
       Bufpos newpos, even_newer_pos;
       Bufpos oldpos = lisp_buffer_stream_startpos (istr);
-      Lstream_data_count size_in_bytes = Lstream_read (istr, tempbuf, sizeof (tempbuf));
+      Lstream_Data_Count size_in_bytes = Lstream_read (istr, tempbuf, sizeof (tempbuf));
 
       if (!size_in_bytes)
 	break;
@@ -2558,9 +2558,9 @@
 #endif /* MULE */
 };
 
-static Lstream_data_count encoding_reader (Lstream *stream, unsigned char *data, Lstream_data_count size);
-static Lstream_data_count encoding_writer (Lstream *stream, const unsigned char *data,
-				Lstream_data_count size);
+static Lstream_Data_Count encoding_reader (Lstream *stream, unsigned char *data, Lstream_Data_Count size);
+static Lstream_Data_Count encoding_writer (Lstream *stream, const unsigned char *data,
+				Lstream_Data_Count size);
 static int encoding_rewinder   (Lstream *stream);
 static int encoding_seekable_p (Lstream *stream);
 static int encoding_flusher    (Lstream *stream);
@@ -2592,12 +2592,12 @@
 /* Read SIZE bytes of data and store it into DATA.  We are a encoding stream
    so we read data from the other end, encode it, and store it into DATA. */
 
-static Lstream_data_count
-encoding_reader (Lstream *stream, unsigned char *data, Lstream_data_count size)
+static Lstream_Data_Count
+encoding_reader (Lstream *stream, unsigned char *data, Lstream_Data_Count size)
 {
   struct encoding_stream *str = ENCODING_STREAM_DATA (stream);
   unsigned char *orig_data = data;
-  Lstream_data_count read_size;
+  Lstream_Data_Count read_size;
   int error_occurred = 0;
 
   /* We need to interface to mule_encode(), which expects to take some
@@ -2654,11 +2654,11 @@
     return data - orig_data;
 }
 
-static Lstream_data_count
-encoding_writer (Lstream *stream, const unsigned char *data, Lstream_data_count size)
+static Lstream_Data_Count
+encoding_writer (Lstream *stream, const unsigned char *data, Lstream_Data_Count size)
 {
   struct encoding_stream *str = ENCODING_STREAM_DATA (stream);
-  Lstream_data_count retval;
+  Lstream_Data_Count retval;
 
   /* Encode all our data into the runoff, and then attempt to write
      it all out to the other end.  Remove whatever chunk we succeeded
@@ -2798,7 +2798,7 @@
 
 static void
 mule_encode (Lstream *encoding, const Bufbyte *src,
-	     unsigned_char_dynarr *dst, Lstream_data_count n)
+	     unsigned_char_dynarr *dst, Lstream_Data_Count n)
 {
   struct encoding_stream *str = ENCODING_STREAM_DATA (encoding);
 
@@ -2884,7 +2884,7 @@
       char tempbuf[1024]; /* some random amount */
       Bufpos newpos, even_newer_pos;
       Bufpos oldpos = lisp_buffer_stream_startpos (istr);
-      Lstream_data_count size_in_bytes = Lstream_read (istr, tempbuf, sizeof (tempbuf));
+      Lstream_Data_Count size_in_bytes = Lstream_read (istr, tempbuf, sizeof (tempbuf));
 
       if (!size_in_bytes)
 	break;
@@ -2947,7 +2947,7 @@
   ((c) >= 0xA1 && (c) <= 0xDF)
 
 static int
-detect_coding_sjis (struct detection_state *st, const Extbyte *src, Lstream_data_count n)
+detect_coding_sjis (struct detection_state *st, const Extbyte *src, Lstream_Data_Count n)
 {
   while (n--)
     {
@@ -2970,7 +2970,7 @@
 
 static void
 decode_coding_sjis (Lstream *decoding, const Extbyte *src,
-		    unsigned_char_dynarr *dst, Lstream_data_count n)
+		    unsigned_char_dynarr *dst, Lstream_Data_Count n)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
   unsigned int flags  = str->flags;
@@ -3026,7 +3026,7 @@
 
 static void
 encode_coding_sjis (Lstream *encoding, const Bufbyte *src,
-		    unsigned_char_dynarr *dst, Lstream_data_count n)
+		    unsigned_char_dynarr *dst, Lstream_Data_Count n)
 {
   struct encoding_stream *str = ENCODING_STREAM_DATA (encoding);
   unsigned int flags  = str->flags;
@@ -3195,7 +3195,7 @@
 #define DECODE_BIG5(b1, b2, lb, c1, c2) do				\
 {									\
   int B1 = b1, B2 = b2;							\
-  unsigned int I							\
+  int I									\
     = (B1 - 0xA1) * BIG5_SAME_ROW + B2 - (B2 < 0x7F ? 0x40 : 0x62);	\
 									\
   if (B1 < 0xC9)							\
@@ -3216,7 +3216,7 @@
 
 #define ENCODE_BIG5(lb, c1, c2, b1, b2) do				\
 {									\
-  unsigned int I = ((c1) - 0xA1) * (0xFF - 0xA1) + ((c2) - 0xA1);	\
+  int I = ((c1) - 0xA1) * (0xFF - 0xA1) + ((c2) - 0xA1);		\
 									\
   if (lb == LEADING_BYTE_CHINESE_BIG5_2)				\
     {									\
@@ -3228,7 +3228,7 @@
 } while (0)
 
 static int
-detect_coding_big5 (struct detection_state *st, const Extbyte *src, Lstream_data_count n)
+detect_coding_big5 (struct detection_state *st, const Extbyte *src, Lstream_Data_Count n)
 {
   while (n--)
     {
@@ -3252,7 +3252,7 @@
 
 static void
 decode_coding_big5 (Lstream *decoding, const Extbyte *src,
-		    unsigned_char_dynarr *dst, Lstream_data_count n)
+		    unsigned_char_dynarr *dst, Lstream_Data_Count n)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
   unsigned int flags  = str->flags;
@@ -3301,7 +3301,7 @@
 
 static void
 encode_coding_big5 (Lstream *encoding, const Bufbyte *src,
-		    unsigned_char_dynarr *dst, Lstream_data_count n)
+		    unsigned_char_dynarr *dst, Lstream_Data_Count n)
 {
   unsigned char c;
   struct encoding_stream *str = ENCODING_STREAM_DATA (encoding);
@@ -3425,7 +3425,7 @@
 */
        (code, character))
 {
-  size_t c;
+  EMACS_INT c;
 
   CHECK_CHAR (character);
   CHECK_NATNUM (code);
@@ -3567,7 +3567,7 @@
 }
 
 static int
-detect_coding_ucs4 (struct detection_state *st, const Extbyte *src, Lstream_data_count n)
+detect_coding_ucs4 (struct detection_state *st, const Extbyte *src, Lstream_Data_Count n)
 {
   while (n--)
     {
@@ -3592,7 +3592,7 @@
 
 static void
 decode_coding_ucs4 (Lstream *decoding, const Extbyte *src,
-		    unsigned_char_dynarr *dst, Lstream_data_count n)
+		    unsigned_char_dynarr *dst, Lstream_Data_Count n)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
   unsigned int flags = str->flags;
@@ -3628,7 +3628,7 @@
 
 static void
 encode_coding_ucs4 (Lstream *encoding, const Bufbyte *src,
-		    unsigned_char_dynarr *dst, Lstream_data_count n)
+		    unsigned_char_dynarr *dst, Lstream_Data_Count n)
 {
   struct encoding_stream *str = ENCODING_STREAM_DATA (encoding);
   unsigned int flags = str->flags;
@@ -3639,7 +3639,7 @@
 #ifdef ENABLE_COMPOSITE_CHARS
   /* flags for handling composite chars.  We do a little switcharoo
      on the source while we're outputting the composite char. */
-  unsigned int saved_n = 0;
+  Lstream_Data_Count saved_n = 0;
   const unsigned char *saved_src = NULL;
   int in_composite = 0;
 
@@ -3766,7 +3766,7 @@
 /************************************************************************/
 
 static int
-detect_coding_utf8 (struct detection_state *st, const Extbyte *src, Lstream_data_count n)
+detect_coding_utf8 (struct detection_state *st, const Extbyte *src, Lstream_Data_Count n)
 {
   while (n--)
     {
@@ -3801,7 +3801,7 @@
 
 static void
 decode_coding_utf8 (Lstream *decoding, const Extbyte *src,
-		    unsigned_char_dynarr *dst, Lstream_data_count n)
+		    unsigned_char_dynarr *dst, Lstream_Data_Count n)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
   unsigned int flags  = str->flags;
@@ -3915,7 +3915,7 @@
 
 static void
 encode_coding_utf8 (Lstream *encoding, const Bufbyte *src,
-		    unsigned_char_dynarr *dst, Lstream_data_count n)
+		    unsigned_char_dynarr *dst, Lstream_Data_Count n)
 {
   struct encoding_stream *str = ENCODING_STREAM_DATA (encoding);
   unsigned int flags  = str->flags;
@@ -3927,7 +3927,7 @@
 #ifdef ENABLE_COMPOSITE_CHARS
   /* flags for handling composite chars.  We do a little switcharoo
      on the source while we're outputting the composite char. */
-  unsigned int saved_n = 0;
+  Lstream_Data_Count saved_n = 0;
   const unsigned char *saved_src = NULL;
   int in_composite = 0;
 
@@ -4674,7 +4674,7 @@
 }
 
 static int
-detect_coding_iso2022 (struct detection_state *st, const Extbyte *src, Lstream_data_count n)
+detect_coding_iso2022 (struct detection_state *st, const Extbyte *src, Lstream_Data_Count n)
 {
   int mask;
 
@@ -4865,7 +4865,7 @@
 
 static void
 decode_coding_iso2022 (Lstream *decoding, const Extbyte *src,
-		       unsigned_char_dynarr *dst, Lstream_data_count n)
+		       unsigned_char_dynarr *dst, Lstream_Data_Count n)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
   unsigned int flags  = str->flags;
@@ -5107,7 +5107,7 @@
 {
   static const char inter94[] = "()*+";
   static const char inter96[] = ",-./";
-  unsigned int type;
+  int type;
   unsigned char final;
   Lisp_Object old_charset = str->iso2022.charset[reg];
 
@@ -5191,7 +5191,7 @@
 
 static void
 encode_coding_iso2022 (Lstream *encoding, const Bufbyte *src,
-		       unsigned_char_dynarr *dst, Lstream_data_count n)
+		       unsigned_char_dynarr *dst, Lstream_Data_Count n)
 {
   unsigned char charmask, c;
   unsigned char char_boundary;
@@ -5207,7 +5207,7 @@
 #ifdef ENABLE_COMPOSITE_CHARS
   /* flags for handling composite chars.  We do a little switcharoo
      on the source while we're outputting the composite char. */
-  unsigned int saved_n = 0;
+  Lstream_Data_Count saved_n = 0;
   const unsigned char *saved_src = NULL;
   int in_composite = 0;
 #endif /* ENABLE_COMPOSITE_CHARS */
@@ -5500,7 +5500,7 @@
    interpreted as being in any particular decoding. */
 static void
 decode_coding_no_conversion (Lstream *decoding, const Extbyte *src,
-			     unsigned_char_dynarr *dst, Lstream_data_count n)
+			     unsigned_char_dynarr *dst, Lstream_Data_Count n)
 {
   struct decoding_stream *str = DECODING_STREAM_DATA (decoding);
   unsigned int flags  = str->flags;
@@ -5524,7 +5524,7 @@
 
 static void
 encode_coding_no_conversion (Lstream *encoding, const Bufbyte *src,
-			     unsigned_char_dynarr *dst, Lstream_data_count n)
+			     unsigned_char_dynarr *dst, Lstream_Data_Count n)
 {
   unsigned char c;
   struct encoding_stream *str = ENCODING_STREAM_DATA (encoding);
@@ -5849,12 +5849,12 @@
 
 #ifdef MULE
   {
-    size_t i;
+    int i;
 
     for (i = 0; i < countof (fcd->ucs_to_mule_table); i++)
       fcd->ucs_to_mule_table[i] = Qnil;
   }
   staticpro (&mule_to_ucs_table);
-  mule_to_ucs_table = Fmake_char_table(Qgeneric);
+  mule_to_ucs_table = Fmake_char_table (Qgeneric);
 #endif /* MULE */
 }
diff --text -u 'xemacs-21.5.2/src/fileio.c' 'xemacs-21.5.3/src/fileio.c'
Index: ././src/fileio.c
--- ././src/fileio.c	Sun Jun 10 19:42:31 2001
+++ ././src/fileio.c	Mon Aug 13 13:46:22 2001
@@ -208,15 +208,15 @@
    (#### Actually, longjmp()ing out of the signal handler may not be
    as losing as I thought.  See qxe_reliable_signal() in sysdep.c.) */
 
-ssize_t
-read_allowing_quit (int fildes, void *buf, size_t size)
+Memory_Count
+read_allowing_quit (int fildes, void *buf, Memory_Count size)
 {
   QUIT;
   return sys_read_1 (fildes, buf, size, 1);
 }
 
-ssize_t
-write_allowing_quit (int fildes, const void *buf, size_t size)
+Memory_Count
+write_allowing_quit (int fildes, const void *buf, Memory_Count size)
 {
   QUIT;
   return sys_write_1 (fildes, buf, size, 1);
@@ -2768,7 +2768,7 @@
 	{
 	  int nread;
 	  Bufpos bufpos;
-	  nread = read_allowing_quit (fd, buffer, sizeof buffer);
+	  nread = read_allowing_quit (fd, buffer, sizeof (buffer));
 	  if (nread < 0)
 	    report_file_error ("Reading", filename);
 	  else if (nread == 0)
@@ -2904,7 +2904,7 @@
        occurs inside of the filedesc stream. */
     while (1)
       {
-	Lstream_data_count this_len;
+	Lstream_Data_Count this_len;
 	Charcount cc_inserted;
 
 	QUIT;
diff --text -u 'xemacs-21.5.2/src/filelock.c' 'xemacs-21.5.3/src/filelock.c'
Index: ././src/filelock.c
--- ././src/filelock.c	Sun Jun 10 19:42:31 2001
+++ ././src/filelock.c	Mon Aug 13 13:46:23 2001
@@ -81,12 +81,12 @@
 {
   char *user;
   char *host;
-  unsigned long pid;
+  pid_t pid;
 } lock_info_type;
 
 /* When we read the info back, we might need this much more,
    enough for decimal representation plus null.  */
-#define LOCK_PID_MAX (4 * sizeof (unsigned long))
+#define LOCK_PID_MAX (4 * sizeof (pid_t))
 
 /* Free the two dynamically-allocated pieces in PTR.  */
 #define FREE_LOCK_INFO(i) do { xfree ((i).user); xfree ((i).host); } while (0)
@@ -102,7 +102,7 @@
 {
   Bufbyte *file_name = XSTRING_DATA (fn);
   Bufbyte *p;
-  size_t dirlen;
+  Bytecount dirlen;
 
   for (p = file_name + XSTRING_LENGTH (fn) - 1;
        p > file_name && !IS_ANY_SEP (p[-1]);
@@ -141,8 +141,7 @@
   lock_info_str = (char *)alloca (strlen (user_name) + strlen (host_name)
 			  + LOCK_PID_MAX + 5);
 
-  sprintf (lock_info_str, "%s@%s.%lu", user_name, host_name,
-           (unsigned long) getpid ());
+  sprintf (lock_info_str, "%s@%s.%d", user_name, host_name, getpid ());
 
   err = symlink (lock_info_str, lfname);
   if (err != 0 && errno == EEXIST && force)
@@ -349,7 +348,7 @@
   /* Else consider breaking the lock */
   locker = (char *) alloca (strlen (lock_info.user) + strlen (lock_info.host)
 			    + LOCK_PID_MAX + 9);
-  sprintf (locker, "%s@%s (pid %lu)", lock_info.user, lock_info.host,
+  sprintf (locker, "%s@%s (pid %d)", lock_info.user, lock_info.host,
            lock_info.pid);
   FREE_LOCK_INFO (lock_info);
 
diff --text -u 'xemacs-21.5.2/src/floatfns.c' 'xemacs-21.5.3/src/floatfns.c'
Index: ././src/floatfns.c
--- ././src/floatfns.c	Sun Jun 10 19:42:31 2001
+++ ././src/floatfns.c	Mon Aug 13 13:46:23 2001
@@ -175,7 +175,7 @@
   return (extract_float (obj1) == extract_float (obj2));
 }
 
-static unsigned long
+static Hash_Code
 float_hash (Lisp_Object obj, int depth)
 {
   /* mod the value down to 32-bit range */
diff --text -u 'xemacs-21.5.2/src/fns.c' 'xemacs-21.5.3/src/fns.c'
Index: ././src/fns.c
--- ././src/fns.c	Fri May 25 20:26:55 2001
+++ ././src/fns.c	Mon Aug 13 13:46:23 2001
@@ -69,10 +69,10 @@
 static void
 print_bit_vector (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag)
 {
-  size_t i;
+  Element_Count i;
   Lisp_Bit_Vector *v = XBIT_VECTOR (obj);
-  size_t len = bit_vector_length (v);
-  size_t last = len;
+  Element_Count len = bit_vector_length (v);
+  Element_Count last = len;
 
   if (INTP (Vprint_length))
     last = min (len, XINT (Vprint_length));
@@ -101,7 +101,7 @@
 		   sizeof (long)));
 }
 
-static unsigned long
+static Hash_Code
 bit_vector_hash (Lisp_Object obj, int depth)
 {
   Lisp_Bit_Vector *v = XBIT_VECTOR (obj);
@@ -111,7 +111,7 @@
 			     sizeof (long)));
 }
 
-static size_t
+static Memory_Count
 size_bit_vector (const void *lheader)
 {
   Lisp_Bit_Vector *v = (Lisp_Bit_Vector *) lheader;
@@ -223,7 +223,7 @@
     return make_int (XSTRING_CHAR_LENGTH (sequence));
   else if (CONSP (sequence))
     {
-      size_t len;
+      Element_Count len;
       GET_EXTERNAL_LIST_LENGTH (sequence, len);
       return make_int (len);
     }
@@ -250,7 +250,7 @@
        (list))
 {
   Lisp_Object hare, tortoise;
-  size_t len;
+  Element_Count len;
 
   for (hare = tortoise = list, len = 0;
        CONSP (hare) && (! EQ (hare, tortoise) || len == 0);
@@ -530,7 +530,7 @@
   Lisp_Object list_copy = Fcons (XCAR (list), XCDR (list));
   Lisp_Object last = list_copy;
   Lisp_Object hare, tortoise;
-  size_t len;
+  Element_Count len;
 
   for (tortoise = hare = XCDR (list), len = 1;
        CONSP (hare);
@@ -1015,7 +1015,7 @@
 */
        (n, list))
 {
-  REGISTER size_t i;
+  REGISTER EMACS_INT i;
   REGISTER Lisp_Object tail = list;
   CHECK_NATNUM (n);
   for (i = XINT (n); i; i--)
@@ -2751,7 +2751,7 @@
   else if (VECTORP (array))
     {
       Lisp_Object *p = XVECTOR_DATA (array);
-      size_t len = XVECTOR_LENGTH (array);
+      Element_Count len = XVECTOR_LENGTH (array);
       CHECK_LISP_WRITEABLE (array);
       while (len--)
 	*p++ = item;
@@ -2759,7 +2759,7 @@
   else if (BIT_VECTORP (array))
     {
       Lisp_Bit_Vector *v = XBIT_VECTOR (array);
-      size_t len = bit_vector_length (v);
+      Element_Count len = bit_vector_length (v);
       int bit;
       CHECK_BIT (item);
       bit = XINT (item);
@@ -2798,7 +2798,7 @@
     {
       /* (setcdr (last args[0]) args[1]) */
       Lisp_Object tortoise, hare;
-      size_t count;
+      Element_Count count;
 
       for (hare = tortoise = args[0], count = 0;
 	   CONSP (XCDR (hare));
@@ -2867,7 +2867,7 @@
 	      if (CONSP (next) || argnum == nargs -1)
 		{
 		  /* (setcdr (last val) next) */
-		  size_t count;
+		  Element_Count count;
 
 		  for (count = 0;
 		       CONSP (XCDR (last_cons));
@@ -2916,7 +2916,7 @@
    If VALS is a null pointer, do not accumulate the results. */
 
 static void
-mapcar1 (size_t leni, Lisp_Object *vals,
+mapcar1 (Element_Count leni, Lisp_Object *vals,
 	 Lisp_Object function, Lisp_Object sequence)
 {
   Lisp_Object result;
@@ -2950,7 +2950,7 @@
       if (vals)
 	{
 	  Lisp_Object *val = vals;
-	  size_t i;
+	  Element_Count i;
 
 	  LIST_LOOP_2 (elt, sequence)
 	      *val++ = elt;
@@ -2985,7 +2985,7 @@
   else if (VECTORP (sequence))
     {
       Lisp_Object *objs = XVECTOR_DATA (sequence);
-      size_t i;
+      Element_Count i;
       for (i = 0; i < leni; i++)
 	{
 	  args[1] = *objs++;
@@ -3013,7 +3013,7 @@
   else if (BIT_VECTORP (sequence))
     {
       Lisp_Bit_Vector *v = XBIT_VECTOR (sequence);
-      size_t i;
+      Element_Count i;
       for (i = 0; i < leni; i++)
 	{
 	  args[1] = make_int (bit_vector_bit (v, i));
@@ -3063,12 +3063,12 @@
 */
        (function, sequence))
 {
-  size_t len = XINT (Flength (sequence));
+  Element_Count len = XINT (Flength (sequence));
   Lisp_Object *args = alloca_array (Lisp_Object, len);
 
   mapcar1 (len, args, function, sequence);
 
-  return Flist (len, args);
+  return Flist ((int) len, args);
 }
 
 DEFUN ("mapvector", Fmapvector, 2, 2, 0, /*
@@ -3078,7 +3078,7 @@
 */
        (function, sequence))
 {
-  size_t len = XINT (Flength (sequence));
+  Element_Count len = XINT (Flength (sequence));
   Lisp_Object result = make_vector (len, Qnil);
   struct gcpro gcpro1;
 
@@ -3599,7 +3599,7 @@
    ways these functions can blow up, and we don't want to have memory
    leaks in those cases.  */
 #define XMALLOC_OR_ALLOCA(ptr, len, type) do {			\
-  size_t XOA_len = (len);					\
+  Element_Count XOA_len = (len);				\
   if (XOA_len > MAX_ALLOCA)					\
     {								\
       ptr = xnew_array (type, XOA_len);				\
diff --text -u 'xemacs-21.5.2/src/font-lock.c' 'xemacs-21.5.3/src/font-lock.c'
Index: ././src/font-lock.c
--- ././src/font-lock.c	Thu May 24 16:51:14 2001
+++ ././src/font-lock.c	Mon Aug 13 13:46:24 2001
@@ -391,26 +391,32 @@
   }
 }
 
+/* You'd think it wouldn't be necessary to cast something to the type
+   it's already defined is, but if you're GCC, you apparently think
+   differently */
 #define SYNTAX_START_STYLE(c1, c2)					\
+ ((enum comment_style)							\
   (SYNTAX_CODES_MATCH_START_P (c1, c2, SYNTAX_COMMENT_STYLE_A) ?	\
    comment_style_a :							\
    SYNTAX_CODES_MATCH_START_P (c1, c2, SYNTAX_COMMENT_STYLE_B) ?	\
    comment_style_b :							\
-   comment_style_none)
+   comment_style_none))
 
 #define SYNTAX_END_STYLE(c1, c2)				\
-  (SYNTAX_CODES_MATCH_END_P (c1, c2, SYNTAX_COMMENT_STYLE_A) ?	\
+  ((enum comment_style)						\
+   (SYNTAX_CODES_MATCH_END_P (c1, c2, SYNTAX_COMMENT_STYLE_A) ?	\
    comment_style_a :						\
    SYNTAX_CODES_MATCH_END_P (c1, c2, SYNTAX_COMMENT_STYLE_B) ?	\
    comment_style_b :						\
-   comment_style_none)
+   comment_style_none))
 
 #define SINGLE_SYNTAX_STYLE(c)						\
-      (SYNTAX_CODE_MATCHES_1CHAR_P (c, SYNTAX_COMMENT_STYLE_A) ?	\
+      ((enum comment_style)						\
+       (SYNTAX_CODE_MATCHES_1CHAR_P (c, SYNTAX_COMMENT_STYLE_A) ?	\
        comment_style_a :						\
        SYNTAX_CODE_MATCHES_1CHAR_P (c, SYNTAX_COMMENT_STYLE_B) ?	\
        comment_style_b :						\
-       comment_style_none)
+       comment_style_none))
 
 /* Set up context_cache for position PT in BUF. */
 
@@ -615,8 +621,10 @@
 	}
       else if ((SYNTAX_CODE_COMMENT_BITS (syncode) &
 		SYNTAX_SECOND_CHAR_END) &&
-	       context_cache.context == context_block_comment &&
-	       context_cache.ccontext == ccontext_end1 &&
+	       context_cache.context ==
+	       (enum syntactic_context) context_block_comment &&
+	       context_cache.ccontext ==
+	       (enum block_comment_context) ccontext_end1 &&
 	       SYNTAX_CODES_END_P (prev_syncode, syncode) &&
 	       /* the two chars match */
 	       context_cache.style ==
diff --text -u 'xemacs-21.5.2/src/frame-x.c' 'xemacs-21.5.3/src/frame-x.c'
Index: ././src/frame-x.c
--- ././src/frame-x.c	Thu May 31 21:45:37 2001
+++ ././src/frame-x.c	Mon Aug 13 13:46:24 2001
@@ -705,7 +705,7 @@
 
 static void
 x_set_initial_frame_size (struct frame *f, int flags, int x, int y,
-			  unsigned int w, unsigned int h)
+			  int w, int h)
 {
   char shell_geom [255];
   int xval, yval;
@@ -1108,7 +1108,7 @@
       struct device *d    = get_device_from_display (display);
       struct x_device *xd = DEVICE_X_DATA (d);
       XWindowAttributes win_attrib;
-      unsigned int modifier = 0, state = 0;
+      int modifier = 0, state = 0;
       char *Ctext;
       int numItems = 0, textlen = 0, pos = 0;
       Lisp_Event *lisp_event = XEVENT (event);
@@ -1334,9 +1334,9 @@
       struct device *d    = get_device_from_display (display);
       struct x_device *xd = DEVICE_X_DATA (d);
       XWindowAttributes win_attrib;
-      unsigned int modifier = 0, state = 0;
+      int modifier = 0, state = 0;
       char *dnd_data = NULL;
-      unsigned long dnd_len = 0;
+      long dnd_len = 0;
       int dnd_typ = DndText, dnd_dealloc = 0;
       Lisp_Event *lisp_event = XEVENT (event);
 
diff --text -u 'xemacs-21.5.2/src/frame.h' 'xemacs-21.5.3/src/frame.h'
Index: ././src/frame.h
--- ././src/frame.h	Mon Jun 18 16:10:19 2001
+++ ././src/frame.h	Mon Aug 13 13:46:24 2001
@@ -105,13 +105,13 @@
   /* Size of toolbars as seen by redisplay. This is used to determine
      whether to re-layout windows by a call to change_frame_size early
      in redisplay_frame. */
-  unsigned int current_toolbar_size[4];
+  int current_toolbar_size[4];
 #endif
 
   /* Size of gutters as seen by redisplay. This is used to determine
      whether to re-layout windows by a call to change_frame_size early
      in redisplay_frame. */
-  unsigned int current_gutter_bounds[4];
+  int current_gutter_bounds[4];
 
   /* Dynamic arrays of display lines for gutters */
   display_line_dynarr *current_display_lines[4];
diff --text -u 'xemacs-21.5.2/src/getloadavg.c' 'xemacs-21.5.3/src/getloadavg.c'
Index: ././src/getloadavg.c
--- ././src/getloadavg.c	Fri Apr 13 03:23:49 2001
+++ ././src/getloadavg.c	Mon Aug 13 13:46:24 2001
@@ -674,7 +674,7 @@
       desc.sd_subsys = SUBSYS_CPU;
       desc.sd_type = CPUTYPE_CONFIG;
       desc.sd_addr = (char *) &conf;
-      desc.sd_size = sizeof conf;
+      desc.sd_size = sizeof (conf);
 
       if (inq_stats (1, &desc))
 	return -1;
@@ -683,12 +683,12 @@
       for (i = 0; i < conf.config_maxclass; ++i)
 	{
 	  struct class_stats stats;
-	  memset ((char *) &stats, 0, sizeof stats);
+	  memset ((char *) &stats, 0, sizeof (stats));
 
 	  desc.sd_type = CPUTYPE_CLASS;
 	  desc.sd_objid = i;
 	  desc.sd_addr = (char *) &stats;
-	  desc.sd_size = sizeof stats;
+	  desc.sd_size = sizeof (stats);
 
 	  if (inq_stats (1, &desc))
 	    return -1;
diff --text -u 'xemacs-21.5.2/src/gif_io.c' 'xemacs-21.5.3/src/gif_io.c'
Index: ././src/gif_io.c
--- ././src/gif_io.c	Fri Apr 13 03:23:49 2001
+++ ././src/gif_io.c	Mon Aug 13 13:46:25 2001
@@ -1,14 +1,10 @@
 #include <config.h>
+#include "lisp.h"
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include "gifrlib.h"
 #include "sysfile.h"
 
+#include "gifrlib.h"
+
 /******************************************************************************
 * Set up the GifFileType structure for use.  This must be called first in any *
 * client program.  Then, if custom IO or Error functions are desired, call    *
@@ -102,13 +98,13 @@
     GifSetCloseFunc(GifFile, GifStdFileClose, IOData);
 }
 
-size_t GifStdRead(GifByteType *buf, size_t size, VoidPtr method_data)
+Memory_Count GifStdRead(GifByteType *buf, Memory_Count size, VoidPtr method_data)
 {
   GifStdIODataType *IOtype = (GifStdIODataType*)method_data;
   return (fread(buf, 1, size, IOtype->File));
 }
 
-size_t GifStdWrite(GifByteType *buf, size_t size, VoidPtr method_data)
+Memory_Count GifStdWrite(GifByteType *buf, Memory_Count size, VoidPtr method_data)
 {
   GifStdIODataType *IOtype = (GifStdIODataType*)method_data;
   return (fwrite(buf, 1, size, IOtype->File));  
@@ -124,14 +120,14 @@
   return ret;
 }
 
-void GifRead(GifByteType *buf, size_t size, GifFileType *GifFile)
+void GifRead(GifByteType *buf, Memory_Count size, GifFileType *GifFile)
 {
   GifIODataType *GifIO = (GifIODataType*)GifFile->GifIO;
   if ((*(GifIO->ReadFunc))(buf, size, GifIO->ReadFunc_data) != size)
     GifError(GifFile, "Read error!");
 }
 
-void GifWrite(GifByteType *buf, size_t size, GifFileType *GifFile)
+void GifWrite(GifByteType *buf, Memory_Count size, GifFileType *GifFile)
 {
   GifIODataType *GifIO = (GifIODataType*)GifFile->GifIO;
   if ((*(GifIO->WriteFunc))(buf, size, GifIO->WriteFunc_data) != size)
diff --text -u 'xemacs-21.5.2/src/gifrlib.h' 'xemacs-21.5.3/src/gifrlib.h'
Index: ././src/gifrlib.h
--- ././src/gifrlib.h	Fri Apr 13 03:23:49 2001
+++ ././src/gifrlib.h	Mon Aug 13 13:46:25 2001
@@ -58,7 +58,7 @@
 
 /* I/O operations.  If you roll your own, they need to be semantically equivilent to
    fread/fwrite, with an additional paramater to hold data local to your method. */
-typedef size_t (*Gif_rw_func)(GifByteType *buffer, size_t size, VoidPtr method_data);
+typedef Memory_Count (*Gif_rw_func)(GifByteType *buffer, Memory_Count size, VoidPtr method_data);
 /* Finish up stream. Non-zero return indicates failure */
 typedef int (*Gif_close_func)(VoidPtr close_data);
 /* Error handling function */
@@ -252,13 +252,13 @@
 void GifStdIOInit(GifFileType *GifFile, FILE *file, int filehandle);
 
 /* Error checking reads, writes and closes */
-void GifRead(GifByteType *buf, size_t size, GifFileType *GifFile);
-void GifWrite(GifByteType *buf, size_t size, GifFileType *GifFile);
+void GifRead(GifByteType *buf, Memory_Count size, GifFileType *GifFile);
+void GifWrite(GifByteType *buf, Memory_Count size, GifFileType *GifFile);
 int GifClose(GifFileType *GifFile);
 
 /* The default Read and Write functions for files */
-size_t GifStdRead(GifByteType *buf, size_t size, VoidPtr method_data);
-size_t GifStdWrite(GifByteType *buf, size_t size, VoidPtr method_data);
+Memory_Count GifStdRead(GifByteType *buf, Memory_Count size, VoidPtr method_data);
+Memory_Count GifStdWrite(GifByteType *buf, Memory_Count size, VoidPtr method_data);
 int GifStdFileClose(VoidPtr method_data);
 
 ColorMapObject *MakeMapObject(int ColorCount, GifColorType *ColorMap);
diff --text -u 'xemacs-21.5.2/src/glyphs-eimage.c' 'xemacs-21.5.3/src/glyphs-eimage.c'
Index: ././src/glyphs-eimage.c
--- ././src/glyphs-eimage.c	Fri Jul 27 06:10:45 2001
+++ ././src/glyphs-eimage.c	Mon Aug 13 13:46:25 2001
@@ -64,7 +64,9 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
+#define message message_ /* Yuck */
 #include <png.h>
+#undef message
 #ifdef __cplusplus
 }
 #endif
@@ -232,13 +234,12 @@
   src = (struct jpeg_source_mgr *) cinfo->src;
 
   if (!src)
+    return;
+  else if (num_bytes > (long) src->bytes_in_buffer)
     {
-      return;
-    } else if (num_bytes > src->bytes_in_buffer)
-      {
-	ERREXIT(cinfo, JERR_INPUT_EOF);
-	/*NOTREACHED*/
-      }
+      ERREXIT (cinfo, JERR_INPUT_EOF);
+      /*NOTREACHED*/
+    }
 
   src->bytes_in_buffer -= num_bytes;
   src->next_input_byte += num_bytes;
@@ -259,7 +260,7 @@
 } our_jpeg_source_mgr;
 
 static void
-jpeg_memory_src (j_decompress_ptr cinfo, JOCTET *data, unsigned int len)
+jpeg_memory_src (j_decompress_ptr cinfo, JOCTET *data, Memory_Count len)
 {
   struct jpeg_source_mgr *src;
 
@@ -374,8 +375,8 @@
 
   {
     Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
-    const Extbyte *bytes;
-    Extcount len;
+    const UChar_Binary *bytes;
+    Memory_Count len;
 
     /* #### This is a definite problem under Mule due to the amount of
        stack data it might allocate.  Need to be able to convert and
@@ -452,16 +453,16 @@
 	   */
 	  (void) jpeg_read_scanlines (&cinfo, row_buffer, 1);
 	  jp = row_buffer[0];
-	  for (i = 0; i < cinfo.output_width; i++)
+	  for (i = 0; i < (int) cinfo.output_width; i++)
 	    {
 	      int clr;
 	      if (jpeg_gray)
 		{
 		  unsigned char val;
 #if (BITS_IN_JSAMPLE == 8)
-		  val = (unsigned char)*jp++;
+		  val = (unsigned char) *jp++;
 #else /* other option is 12 */
-		  val = (unsigned char)(*jp++ >> 4);
+		  val = (unsigned char) (*jp++ >> 4);
 #endif
 		  for (clr = 0; clr < 3; clr++) /* copy the same value into RGB */
 		      *op++ = val;
@@ -551,32 +552,33 @@
       DGifCloseFile (data->giffile);
       GifFree(data->giffile);
     }
-  if (data->eimage) xfree(data->eimage);
+  if (data->eimage)
+    xfree (data->eimage);
 
   return Qnil;
 }
 
 typedef struct gif_memory_storage
 {
-  Extbyte *bytes;		/* The data       */
-  Extcount len;			/* How big is it? */
-  int index;			/* Where are we?  */
+  UChar_Binary *bytes;		/* The data       */
+  Memory_Count len;		/* How big is it? */
+  Memory_Count index;		/* Where are we?  */
 } gif_memory_storage;
 
-static size_t
-gif_read_from_memory(GifByteType *buf, size_t size, VoidPtr data)
+static Memory_Count
+gif_read_from_memory (GifByteType *buf, Memory_Count size, VoidPtr data)
 {
-  gif_memory_storage *mem = (gif_memory_storage*)data;
+  gif_memory_storage *mem = (gif_memory_storage *) data;
 
   if (size > (mem->len - mem->index))
-    return (size_t) -1;
-  memcpy(buf, mem->bytes + mem->index, size);
+    return -1;
+  memcpy (buf, mem->bytes + mem->index, size);
   mem->index = mem->index + size;
   return size;
 }
 
 static int
-gif_memory_close(VoidPtr data)
+gif_memory_close (VoidPtr data)
 {
   return 0;
 }
@@ -588,9 +590,9 @@
 };
 
 static void
-gif_error_func(const char *err_str, VoidPtr error_ptr)
+gif_error_func (const char *err_str, VoidPtr error_ptr)
 {
-  struct gif_error_struct *error_data = (struct gif_error_struct*)error_ptr;
+  struct gif_error_struct *error_data = (struct gif_error_struct *) error_ptr;
 
   /* return to setjmp point */
   error_data->err_str = err_str;
@@ -610,8 +612,8 @@
   int speccount = specpdl_depth ();
   gif_memory_storage mem_struct;
   struct gif_error_struct gif_err;
-  Extbyte *bytes;
-  Extcount len;
+  UChar_Binary *bytes;
+  Memory_Count len;
   int height = 0;
   int width = 0;
 
@@ -773,21 +775,21 @@
 
 struct png_memory_storage
 {
-  const Extbyte *bytes;		/* The data       */
-  Extcount len;			/* How big is it? */
-  int index;			/* Where are we?  */
+  const UChar_Binary *bytes;	/* The data       */
+  Memory_Count len;		/* How big is it? */
+  Memory_Count index;		/* Where are we?  */
 };
 
 static void
-png_read_from_memory(png_structp png_ptr, png_bytep data,
-		     png_size_t length)
+png_read_from_memory (png_structp png_ptr, png_bytep data,
+		      png_size_t length)
 {
    struct png_memory_storage *tbr =
      (struct png_memory_storage *) png_get_io_ptr (png_ptr);
 
-   if (length > (tbr->len - tbr->index))
+   if ((Memory_Count) length > (tbr->len - tbr->index))
      png_error (png_ptr, (png_const_charp) "Read Error");
-   memcpy (data,tbr->bytes + tbr->index,length);
+   memcpy (data, tbr->bytes + tbr->index,length);
    tbr->index = tbr->index + length;
 }
 
@@ -897,8 +899,8 @@
   /* Initialize the IO layer and read in header information */
   {
     Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
-    const Extbyte *bytes;
-    Extcount len;
+    const UChar_Binary *bytes;
+    Memory_Count len;
 
     assert (!NILP (data));
 
@@ -1084,47 +1086,50 @@
 
 typedef struct tiff_memory_storage
 {
-  Extbyte *bytes;		/* The data       */
-  Extcount len;			/* How big is it? */
-  int index;			/* Where are we?  */
+  UChar_Binary *bytes;		/* The data       */
+  Memory_Count len;		/* How big is it? */
+  Memory_Count index;		/* Where are we?  */
 } tiff_memory_storage;
 
 static size_t
-tiff_memory_read(thandle_t data, tdata_t buf, tsize_t size)
+tiff_memory_read (thandle_t data, tdata_t buf, tsize_t size)
 {
-  tiff_memory_storage *mem = (tiff_memory_storage*)data;
+  tiff_memory_storage *mem = (tiff_memory_storage *) data;
 
-  if (size > (mem->len - mem->index))
+  if ((Memory_Count) size > (mem->len - mem->index))
     return (size_t) -1;
-  memcpy(buf, mem->bytes + mem->index, size);
+  memcpy (buf, mem->bytes + mem->index, size);
   mem->index = mem->index + size;
   return size;
 }
 
-static size_t tiff_memory_write(thandle_t data, tdata_t buf, tsize_t size)
+static size_t
+tiff_memory_write (thandle_t data, tdata_t buf, tsize_t size)
 {
   abort();
   return 0;			/* Shut up warnings. */
 }
 
-static toff_t tiff_memory_seek(thandle_t data, toff_t off, int whence)
+static toff_t
+tiff_memory_seek (thandle_t data, toff_t off, int whence)
 {
-  tiff_memory_storage *mem = (tiff_memory_storage*)data;
+  tiff_memory_storage *mem = (tiff_memory_storage *) data;
   int newidx;
-  switch(whence) {
-  case SEEK_SET:
-    newidx = off;
-    break;
-  case SEEK_END:
-    newidx = mem->len + off;
-    break;
-  case SEEK_CUR:
-    newidx = mem->index + off;
-    break;
-  default:
-    fprintf(stderr,"Eh? invalid seek mode in tiff_memory_seek\n");
-    return (toff_t) -1;
-  }
+  switch(whence)
+    {
+    case SEEK_SET:
+      newidx = off;
+      break;
+    case SEEK_END:
+      newidx = mem->len + off;
+      break;
+    case SEEK_CUR:
+      newidx = mem->index + off;
+      break;
+    default:
+      fprintf (stderr, "Eh? invalid seek mode in tiff_memory_seek\n");
+      return (toff_t) -1;
+    }
 
   if ((newidx > mem->len) || (newidx < 0))
     return (toff_t) -1;
@@ -1134,25 +1139,25 @@
 }
 
 static int
-tiff_memory_close(thandle_t data)
+tiff_memory_close (thandle_t data)
 {
   return 0;
 }
 
 static int
-tiff_map_noop(thandle_t data, tdata_t* pbase, toff_t* psize)
+tiff_map_noop (thandle_t data, tdata_t* pbase, toff_t* psize)
 {
   return 0;
 }
 
 static void
-tiff_unmap_noop(thandle_t data, tdata_t pbase, toff_t psize)
+tiff_unmap_noop (thandle_t data, tdata_t pbase, toff_t psize)
 {
   return;
 }
 
 static toff_t
-tiff_memory_size(thandle_t data)
+tiff_memory_size (thandle_t data)
 {
   tiff_memory_storage *mem = (tiff_memory_storage*)data;
   return mem->len;
@@ -1175,7 +1180,7 @@
 static struct tiff_error_struct tiff_err_data;
 
 static void
-tiff_error_func(const char *module, const char *fmt, ...)
+tiff_error_func (const char *module, const char *fmt, ...)
 {
   va_list vargs;
 
@@ -1192,7 +1197,7 @@
 }
 
 static void
-tiff_warning_func(const char *module, const char *fmt, ...)
+tiff_warning_func (const char *module, const char *fmt, ...)
 {
   va_list vargs;
 #ifdef HAVE_VSNPRINTF
@@ -1242,8 +1247,8 @@
   TIFFSetWarningHandler ((TIFFErrorHandler)tiff_warning_func);
   {
     Lisp_Object data = find_keyword_in_vector (instantiator, Q_data);
-    Extbyte *bytes;
-    Extcount len;
+    UChar_Binary *bytes;
+    Memory_Count len;
 
     uint32 *raster;
     unsigned char *ep;
@@ -1277,7 +1282,7 @@
     raster = (uint32*) _TIFFmalloc (width * height * sizeof (uint32));
     if (raster != NULL)
       {
-	int i,j;
+	int i, j;
 	uint32 *rp;
 	ep = unwind.eimage;
 	rp = raster;
@@ -1288,7 +1293,7 @@
 		/* This is to get around weirdness in the libtiff library where properly
 		   made TIFFs will come out upside down.  libtiff bug or jhod-brainlock? */
 		rp = raster + (i * width);
-		for (j = 0; j < width; j++)
+		for (j = 0; j < (int) width; j++)
 		  {
 		    *ep++ = (unsigned char)TIFFGetR(*rp);
 		    *ep++ = (unsigned char)TIFFGetG(*rp);
diff --text -u 'xemacs-21.5.2/src/glyphs-msw.c' 'xemacs-21.5.3/src/glyphs-msw.c'
Index: ././src/glyphs-msw.c
--- ././src/glyphs-msw.c	Fri Jun  8 21:21:23 2001
+++ ././src/glyphs-msw.c	Mon Aug 13 13:46:25 2001
@@ -853,7 +853,7 @@
       return 0;
     }
 
-  for (i=0; i<xpmimage.ncolors; i++)
+  for (i=0; i<(int)xpmimage.ncolors; i++)
     {
       /* goto alert!!!! */
       /* pick up symbolic colors in preference */
@@ -1217,7 +1217,7 @@
 				int dest_mask, Lisp_Object domain)
 {
   Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
-  unsigned int type = 0;
+  int type = 0;
   HANDLE himage = NULL;
   LPCTSTR resid=0;
   HINSTANCE hinst = NULL;
@@ -1378,7 +1378,7 @@
    black, 1 = white.  */
 static HBITMAP
 xbm_create_bitmap_from_data (HDC hdc, const UChar_Binary *data,
-			     unsigned int width, unsigned int height,
+			     int width, int height,
 			     int mask, COLORREF fg, COLORREF bg)
 {
   int old_width = (width + 7)/8;
@@ -2151,7 +2151,7 @@
   return 1;
 }
 
-static unsigned long
+static Hash_Code
 mswindows_image_instance_hash (Lisp_Image_Instance *p, int depth)
 {
   switch (IMAGE_INSTANCE_TYPE (p))
@@ -2159,7 +2159,7 @@
     case IMAGE_MONO_PIXMAP:
     case IMAGE_COLOR_PIXMAP:
     case IMAGE_POINTER:
-      return (unsigned long) IMAGE_INSTANCE_MSWINDOWS_BITMAP (p);
+      return (Hash_Code) IMAGE_INSTANCE_MSWINDOWS_BITMAP (p);
 
     default:
       return 0;
diff --text -u 'xemacs-21.5.2/src/glyphs-shared.c' 'xemacs-21.5.3/src/glyphs-shared.c'
Index: ././src/glyphs-shared.c
--- ././src/glyphs-shared.c	Fri Jun  8 21:21:24 2001
+++ ././src/glyphs-shared.c	Mon Aug 13 13:46:25 2001
@@ -188,21 +188,20 @@
  * like the Xlib routine XReadBitmapfile as possible.
  */
 static int
-read_bitmap_data (FILE *fstream, unsigned int *width,
-		  unsigned int *height, UChar_Binary **datap,
+read_bitmap_data (FILE *fstream, int *width, int *height, UChar_Binary **datap,
 		  int *x_hot, int *y_hot)
 {
     UChar_Binary *data = NULL;		/* working variable */
-    char line[MAX_SIZE];		/* input line from file */
+    Char_ASCII line[MAX_SIZE];		/* input line from file */
     int size;				/* number of bytes of data */
-    char name_and_type[MAX_SIZE];	/* an input line */
-    char *type;				/* for parsing */
+    Char_ASCII name_and_type[MAX_SIZE];	/* an input line */
+    Char_ASCII *type;			/* for parsing */
     int value;				/* from an input line */
     int version10p;			/* boolean, old format */
     int padding;			/* to handle alignment */
     int bytes_per_line;			/* per scanline of data */
-    unsigned int ww = 0;		/* width */
-    unsigned int hh = 0;		/* height */
+    int ww = 0;				/* width */
+    int hh = 0;				/* height */
     int hx = -1;			/* x hotspot */
     int hy = -1;			/* y hotspot */
 
@@ -227,9 +226,9 @@
 	      type++;
 
 	    if (!strcmp("width", type))
-	      ww = (unsigned int) value;
+	      ww = value;
 	    if (!strcmp("height", type))
-	      hh = (unsigned int) value;
+	      hh = value;
 	    if (!strcmp("hot", type)) {
 		if (type-- == name_and_type || type-- == name_and_type)
 		  continue;
@@ -315,17 +314,16 @@
 int
 read_bitmap_data_from_file (const char *filename,
 			    /* Remaining args are RETURNED */
-			    unsigned int *width,
-			    unsigned int *height,
+			    int *width,
+			    int *height,
 			    UChar_Binary **datap,
 			    int *x_hot, int *y_hot)
 {
     FILE *fstream;
     int status;
 
-    if ((fstream = fopen (filename, "r")) == NULL) {
-	return BitmapOpenFailed;
-    }
+    if ((fstream = fopen (filename, "r")) == NULL)
+      return BitmapOpenFailed;
     status = read_bitmap_data (fstream, width, height, datap, x_hot, y_hot);
     fclose (fstream);
     return status;
diff --text -u 'xemacs-21.5.2/src/glyphs-x.c' 'xemacs-21.5.3/src/glyphs-x.c'
Index: ././src/glyphs-x.c
--- ././src/glyphs-x.c	Sat Jul 28 14:09:02 2001
+++ ././src/glyphs-x.c	Mon Aug 13 13:46:26 2001
@@ -506,7 +506,7 @@
   return 1;
 }
 
-static unsigned long
+static Hash_Code
 x_image_instance_hash (Lisp_Image_Instance *p, int depth)
 {
   switch (IMAGE_INSTANCE_TYPE (p))
@@ -704,7 +704,7 @@
   /* Get the data while doing the conversion */
   while (1)
     {
-      Lstream_data_count size_in_bytes = Lstream_read (istr, tempbuf, sizeof (tempbuf));
+      Lstream_Data_Count size_in_bytes = Lstream_read (istr, tempbuf, sizeof (tempbuf));
       if (!size_in_bytes)
 	break;
       /* It does seem the flushes are necessary... */
@@ -756,7 +756,7 @@
    message. */
 
 static void
-check_pointer_sizes (Screen *xs, unsigned int width, unsigned int height,
+check_pointer_sizes (Screen *xs, int width, int height,
 		     Lisp_Object instantiator)
 {
   unsigned int best_width, best_height;
@@ -766,7 +766,7 @@
        these so they're not fatal). */
     gui_error ("XQueryBestCursor() failed?", instantiator);
 
-  if (width > best_width || height > best_height)
+  if (width > (int) best_width || height > (int) best_height)
     signal_ferror_with_frob (Qgui_error, instantiator,
 			     "pointer too large (%dx%d): "
 			     "server requires %dx%d or smaller",
@@ -1313,7 +1313,7 @@
 							   Q_color_symbols);
   enum image_instance_type type;
   int force_mono;
-  unsigned int w, h;
+  int w, h;
 
   if (!DEVICE_X_P (XDEVICE (device)))
     gui_error ("Not an X device", device);
@@ -2293,8 +2293,7 @@
   Window pw, win;
   XSetWindowAttributes xswa;
   Mask valueMask = 0;
-  unsigned int w = IMAGE_INSTANCE_WIDTH (ii),
-    h = IMAGE_INSTANCE_HEIGHT (ii);
+  int w = IMAGE_INSTANCE_WIDTH (ii), h = IMAGE_INSTANCE_HEIGHT (ii);
 
   if (!DEVICE_X_P (XDEVICE (device)))
     gui_error ("Not an X device", device);
diff --text -u 'xemacs-21.5.2/src/glyphs.c' 'xemacs-21.5.3/src/glyphs.c'
Index: ././src/glyphs.c
--- ././src/glyphs.c	Sat Jul 28 14:09:03 2001
+++ ././src/glyphs.c	Mon Aug 13 13:46:26 2001
@@ -1189,16 +1189,16 @@
   return DOMAIN_LIVE_P (XIMAGE_INSTANCE_DOMAIN (instance));
 }
 
-static unsigned long
+static Hash_Code
 image_instance_hash (Lisp_Object obj, int depth)
 {
   Lisp_Image_Instance *i = XIMAGE_INSTANCE (obj);
-  unsigned long hash = HASH5 (LISP_HASH (IMAGE_INSTANCE_DOMAIN (i)),
-			      IMAGE_INSTANCE_WIDTH (i),
-			      IMAGE_INSTANCE_MARGIN_WIDTH (i),
-			      IMAGE_INSTANCE_HEIGHT (i),
-			      internal_hash (IMAGE_INSTANCE_INSTANTIATOR (i),
-					     depth + 1));
+  Hash_Code hash = HASH5 (LISP_HASH (IMAGE_INSTANCE_DOMAIN (i)),
+			  IMAGE_INSTANCE_WIDTH (i),
+			  IMAGE_INSTANCE_MARGIN_WIDTH (i),
+			  IMAGE_INSTANCE_HEIGHT (i),
+			  internal_hash (IMAGE_INSTANCE_INSTANTIATOR (i),
+					 depth + 1));
 
   ERROR_CHECK_IMAGE_INSTANCE (obj);
 
@@ -2586,7 +2586,7 @@
 bitmap_to_lisp_data (Lisp_Object name, int *xhot, int *yhot,
 		     int ok_if_data_invalid)
 {
-  unsigned int w, h;
+  int w, h;
   Extbyte *data;
   int result;
   const char *filename_ext;
@@ -3088,7 +3088,7 @@
   return 0;
 }
 
-static hashcode_t
+static Hash_Code
 instantiator_eq_hash (Lisp_Object obj)
 {
   if (CONSP (obj))
@@ -3610,7 +3610,7 @@
 	  !plists_differ (g1->plist,     g2->plist, 0, 0, depth + 1));
 }
 
-static unsigned long
+static Hash_Code
 glyph_hash (Lisp_Object obj, int depth)
 {
   depth++;
@@ -4427,8 +4427,7 @@
 } *the_expose_ignore_blocktype;
 
 int
-check_for_ignored_expose (struct frame* f, unsigned int x, unsigned int y,
-			  unsigned int width, unsigned int height)
+check_for_ignored_expose (struct frame* f, int x, int y, int width, int height)
 {
   struct expose_ignore *ei, *prev;
   /* the ignore list is FIFO so we should generally get a match with
@@ -4500,9 +4499,8 @@
  See if there is a subwindow that completely encloses the requested
  area.
  ****************************************************************************/
-int find_matching_subwindow (struct frame* f, unsigned int x, 
-			     unsigned int y, unsigned int width, 
-			     unsigned int height)
+int
+find_matching_subwindow (struct frame* f, int x, int y, int width, int height)
 {
   Lisp_Object rest;
 
diff --text -u 'xemacs-21.5.2/src/glyphs.h' 'xemacs-21.5.3/src/glyphs.h'
Index: ././src/glyphs.h
--- ././src/glyphs.h	Sat Jul 28 14:09:03 2001
+++ ././src/glyphs.h	Mon Aug 13 13:46:27 2001
@@ -300,19 +300,19 @@
 DECLARE_IMAGE_INSTANTIATOR_FORMAT(format);	\
 struct image_instantiator_methods *type##_##format##_image_instantiator_methods
 
-#define INITIALIZE_DEVICE_IIFORMAT(type, format)				\
-do {										\
-  type##_##format##_image_instantiator_methods =				\
-    xnew_and_zero (struct image_instantiator_methods);				\
-  type##_##format##_image_instantiator_methods->symbol = Q##format;		\
-  type##_##format##_image_instantiator_methods->device = Q##type;		\
-  type##_##format##_image_instantiator_methods->keywords =			\
-    Dynarr_new (ii_keyword_entry);						\
-  add_entry_to_device_ii_format_list						\
-    (Q##type, Q##format, type##_##format##_image_instantiator_methods);		\
-  IIFORMAT_VALID_CONSOLE(type,format);						\
-  dump_add_root_struct_ptr (&type##_##format##_image_instantiator_methods,	\
-			    &iim_description);					\
+#define INITIALIZE_DEVICE_IIFORMAT(type, format)			   \
+do {									   \
+  type##_##format##_image_instantiator_methods =			   \
+    xnew_and_zero (struct image_instantiator_methods);			   \
+  type##_##format##_image_instantiator_methods->symbol = Q##format;	   \
+  type##_##format##_image_instantiator_methods->device = Q##type;	   \
+  type##_##format##_image_instantiator_methods->keywords =		   \
+    Dynarr_new (ii_keyword_entry);					   \
+  add_entry_to_device_ii_format_list					   \
+    (Q##type, Q##format, type##_##format##_image_instantiator_methods);	   \
+  IIFORMAT_VALID_CONSOLE(type,format);					   \
+  dump_add_root_struct_ptr (&type##_##format##_image_instantiator_methods, \
+			    &iim_description);				   \
 } while (0)
 
 /* Declare that image-instantiator format FORMAT has method M; used in
@@ -548,11 +548,11 @@
   /* The instantiator from which we were instantiated. */
   Lisp_Object instantiator;
   enum image_instance_type type;
-  unsigned int x_offset, y_offset;	/* for layout purposes */
+  int x_offset, y_offset;	/* for layout purposes */
   int width, height, margin_width;
-  unsigned long display_hash; /* Hash value representing the structure
-				 of the image_instance when it was
-				 last displayed. */
+  Hash_Code display_hash; /* Hash value representing the structure
+			     of the image_instance when it was
+			     last displayed. */
   unsigned int dirty : 1;
   unsigned int size_changed : 1;
   unsigned int text_changed : 1;
@@ -565,13 +565,13 @@
   {
     struct
     {
-      unsigned int descent;
+      int descent;
       Lisp_Object string;
     } text;
     struct
     {
-      unsigned int depth;
-      unsigned int slice, maxslice, timeout;
+      int depth;
+      int slice, maxslice, timeout;
       Lisp_Object hotspot_x, hotspot_y; /* integer or Qnil */
       Lisp_Object filename;	 /* string or Qnil */
       Lisp_Object mask_filename; /* string or Qnil */
@@ -588,8 +588,8 @@
       struct
       {				/* We need these so we can do without
 				   subwindow_cachel */
-	unsigned int x, y;
-	unsigned int width, height;
+	int x, y;
+	int width, height;
       } display_data;
       unsigned int being_displayed : 1; /* used to detect when needs
 					   to be unmapped */
@@ -894,8 +894,8 @@
 #ifdef HAVE_WINDOW_SYSTEM
 Lisp_Object bitmap_to_lisp_data (Lisp_Object name, int *xhot, int *yhot,
 				 int ok_if_data_invalid);
-int read_bitmap_data_from_file (const char *filename, unsigned int *width,
-				unsigned int *height, unsigned char **datap,
+int read_bitmap_data_from_file (const char *filename, int *width,
+				int *height, unsigned char **datap,
 				int *x_hot, int *y_hot);
 Lisp_Object xbm_mask_file_munging (Lisp_Object alist, Lisp_Object file,
 				   Lisp_Object mask_file,
@@ -1137,9 +1137,8 @@
 void unmap_subwindow (Lisp_Object subwindow);
 void map_subwindow (Lisp_Object subwindow, int x, int y,
 		    struct display_glyph_area *dga);
-int find_matching_subwindow (struct frame* f, 
-			     unsigned int x, unsigned int y, 
-			     unsigned int width, unsigned int height);
+int find_matching_subwindow (struct frame* f, int x, int y, int width,
+			     int height);
 void redisplay_widget (Lisp_Object widget);
 void update_widget_instances (Lisp_Object frame);
 void redisplay_subwindow (Lisp_Object subwindow);
@@ -1152,14 +1151,13 @@
 
 struct expose_ignore
 {
-  unsigned int	x, y;
-  unsigned int	width, height;
+  int x, y;
+  int width, height;
   struct expose_ignore *next;
 };
 
-int check_for_ignored_expose (struct frame* f, unsigned int x, 
-			      unsigned int y, unsigned int width, 
-			      unsigned int height);
+int check_for_ignored_expose (struct frame* f, int x, int y, int width,
+			      int height);
 extern int hold_ignored_expose_registration;
 
 #endif /* INCLUDED_glyphs_h_ */
diff --text -u 'xemacs-21.5.2/src/gmalloc.c' 'xemacs-21.5.3/src/gmalloc.c'
Index: ././src/gmalloc.c
--- ././src/gmalloc.c	Mon May 21 14:26:07 2001
+++ ././src/gmalloc.c	Mon Aug 13 13:46:27 2001
@@ -869,7 +869,8 @@
       prev = (struct list *) ((char *) ADDRESS (block) +
 			   (_heapinfo[block].busy.info.frag.first << type));
 
-      if (_heapinfo[block].busy.info.frag.nfree == (BLOCKSIZE >> type) - 1)
+      if (_heapinfo[block].busy.info.frag.nfree ==
+	   (__malloc_size_t) ((BLOCKSIZE >> type) - 1))
 	{
 	  /* If all fragments of this block are free, remove them
 	     from the fragment list and free the whole block.  */
diff --text -u 'xemacs-21.5.2/src/gpmevent.c' 'xemacs-21.5.3/src/gpmevent.c'
Index: ././src/gpmevent.c
--- ././src/gpmevent.c	Tue Jun  5 02:00:02 2001
+++ ././src/gpmevent.c	Mon Aug 13 13:46:29 2001
@@ -267,8 +267,8 @@
 	while (1)
 	{
 		Bufbyte tempbuf[1024]; /* some random amount */
-		Lstream_data_count i;
-		Lstream_data_count size_in_bytes =
+		Lstream_Data_Count i;
+		Lstream_Data_Count size_in_bytes =
 		  Lstream_read (XLSTREAM (terminal_stream),
 				tempbuf, sizeof (tempbuf));
 
diff --text -u 'xemacs-21.5.2/src/gui-x.c' 'xemacs-21.5.3/src/gui-x.c'
Index: ././src/gui-x.c
--- ././src/gui-x.c	Thu May 24 16:51:19 2001
+++ ././src/gui-x.c	Mon Aug 13 13:46:29 2001
@@ -43,7 +43,7 @@
 #include "opaque.h"
 
 /* we need a unique id for each popup menu, dialog box, and scrollbar */
-static unsigned int lwlib_id_tick;
+static LWLIB_ID lwlib_id_tick;
 
 LWLIB_ID
 new_lwlib_id (void)
@@ -371,7 +371,7 @@
     LISP_STRING_TO_EXTERNAL_MALLOC (string, retval, Qlwlib_encoding);
   else
     {
-      size_t namelen = XSTRING_LENGTH (string);
+      Bytecount namelen = XSTRING_LENGTH (string);
       Bufbyte *chars = (Bufbyte *) alloca (namelen + 3);
       chars[0] = '%';
       chars[1] = '_';
diff --text -u 'xemacs-21.5.2/src/gui.c' 'xemacs-21.5.3/src/gui.c'
Index: ././src/gui.c
--- ././src/gui.c	Fri May 25 20:26:56 2001
+++ ././src/gui.c	Mon Aug 13 13:46:29 2001
@@ -501,7 +501,7 @@
  * Return value is the offset to the terminating null character into the
  * buffer.
  */
-unsigned int
+Bytecount
 gui_item_display_flush_left (Lisp_Object gui_item,
 			     char *buf, Bytecount buf_len)
 {
@@ -550,7 +550,7 @@
  * Return value is the offset to the terminating null character into the
  * buffer.
  */
-unsigned int
+Bytecount
 gui_item_display_flush_right (Lisp_Object gui_item,
 			      char *buf, Bytecount buf_len)
 {
@@ -616,7 +616,7 @@
   return Qnil;
 }
 
-static unsigned long
+static Hash_Code
 gui_item_hash (Lisp_Object obj, int depth)
 {
   Lisp_Gui_Item *p = XGUI_ITEM (obj);
diff --text -u 'xemacs-21.5.2/src/gui.h' 'xemacs-21.5.3/src/gui.h'
Index: ././src/gui.h
--- ././src/gui.h	Mon Jun 18 16:10:21 2001
+++ ././src/gui.h	Mon Aug 13 13:46:29 2001
@@ -84,10 +84,10 @@
 Lisp_Object gui_item_accelerator (Lisp_Object gui_item);
 Lisp_Object gui_name_accelerator (Lisp_Object name);
 int  gui_item_id_hash (Lisp_Object, Lisp_Object gui_item, int);
-unsigned int gui_item_display_flush_left  (Lisp_Object pgui_item,
-					   char* buf, Bytecount buf_len);
-unsigned int gui_item_display_flush_right (Lisp_Object gui_item,
-					   char* buf, Bytecount buf_len);
+Bytecount gui_item_display_flush_left  (Lisp_Object pgui_item,
+					char* buf, Bytecount buf_len);
+Bytecount gui_item_display_flush_right (Lisp_Object gui_item,
+					char* buf, Bytecount buf_len);
 
 Lisp_Object allocate_gui_item (void);
 void gui_item_init (Lisp_Object gui_item);
diff --text -u 'xemacs-21.5.2/src/hash.c' 'xemacs-21.5.3/src/hash.c'
Index: ././src/hash.c
--- ././src/hash.c	Fri Apr 13 03:23:55 2001
+++ ././src/hash.c	Mon Aug 13 13:46:29 2001
@@ -31,19 +31,19 @@
 #define KEYS_DIFFER_P(old, new, testfun) \
   (((old) != (new)) && (!(testfun) || !(testfun) ((old),(new))))
 
-static void rehash (hentry *harray, struct hash_table *ht, hash_size_t size);
+static void rehash (hentry *harray, struct hash_table *ht, Element_Count size);
 
-unsigned long
-memory_hash (const void *xv, size_t size)
+Hash_Code
+memory_hash (const void *xv, Memory_Count size)
 {
-  unsigned int h = 0;
+  Hash_Code h = 0;
   unsigned const char *x = (unsigned const char *) xv;
 
   if (!x) return 0;
 
   while (size--)
     {
-      unsigned int g;
+      Hash_Code g;
       h = (h << 4) + *x++;
       if ((g = h & 0xf0000000) != 0)
 	h = (h ^ (g >> 24)) ^ g;
@@ -52,17 +52,17 @@
   return h;
 }
 
-unsigned long
+Hash_Code
 string_hash (const char *xv)
 {
-  unsigned int h = 0;
+  Hash_Code h = 0;
   unsigned const char *x = (unsigned const char *) xv;
 
   if (!x) return 0;
 
   while (*x)
     {
-      unsigned int g;
+      Hash_Code g;
       h = (h << 4) + *x++;
       if ((g = h & 0xf0000000) != 0)
 	h = (h ^ (g >> 24)) ^ g;
@@ -72,13 +72,13 @@
 }
 
 /* Return a suitable size for a hash table, with at least SIZE slots. */
-static size_t
-hash_table_size (size_t requested_size)
+static Element_Count
+hash_table_size (Element_Count requested_size)
 {
   /* Return some prime near, but greater than or equal to, SIZE.
      Decades from the time of writing, someone will have a system large
      enough that the list below will be too short... */
-  static const size_t primes [] =
+  static const Element_Count primes [] =
   {
     19, 29, 41, 59, 79, 107, 149, 197, 263, 347, 457, 599, 787, 1031,
     1361, 1777, 2333, 3037, 3967, 5167, 6719, 8737, 11369, 14783,
@@ -88,7 +88,7 @@
     10445899, 13579681, 17653589, 22949669, 29834603, 38784989,
     50420551, 65546729, 85210757, 110774011, 144006217, 187208107,
     243370577, 316381771, 411296309, 534685237, 695090819, 903618083,
-    1174703521, 1527114613, 1985248999, 2580823717UL, 3355070839UL
+    1174703521, 1527114613, 1985248999 /* , 2580823717UL, 3355070839UL */
   };
   /* We've heard of binary search. */
   int low, high;
@@ -116,12 +116,12 @@
     {
       hentry *harray = hash_table->harray;
       hash_table_test_function test_function = hash_table->test_function;
-      hash_size_t size = hash_table->size;
-      unsigned int hcode_initial =
+      Element_Count size = hash_table->size;
+      Hash_Code hcode_initial =
 	hash_table->hash_function ?
 	hash_table->hash_function (key) :
-	(unsigned long) key;
-      unsigned int hcode = hcode_initial % size;
+	(Hash_Code) key;
+      Element_Count hcode = (Element_Count) (hcode_initial % size);
       hentry *e = &harray [hcode];
       const void *e_key = e->key;
 
@@ -129,8 +129,8 @@
 	  KEYS_DIFFER_P (e_key, key, test_function) :
 	  e->contents == NULL_ENTRY)
 	{
-	  size_t h2 = size - 2;
-	  unsigned int incr = 1 + (hcode_initial % h2);
+	  Element_Count h2 = size - 2;
+	  Element_Count incr = (Element_Count) (1 + (hcode_initial % h2));
 	  do
 	    {
 	      hcode += incr; if (hcode >= size) hcode -= size;
@@ -164,7 +164,7 @@
 }
 
 struct hash_table*
-make_hash_table (hash_size_t size)
+make_hash_table (Element_Count size)
 {
   struct hash_table *hash_table = xnew_and_zero (struct hash_table);
   hash_table->size = hash_table_size (COMFORTABLE_SIZE (size));
@@ -174,7 +174,7 @@
 }
 
 struct hash_table *
-make_general_hash_table (hash_size_t size,
+make_general_hash_table (Element_Count size,
 			hash_table_hash_function hash_function,
 			hash_table_test_function test_function)
 {
@@ -185,9 +185,9 @@
 }
 
 static void
-grow_hash_table (struct hash_table *hash_table, hash_size_t new_size)
+grow_hash_table (struct hash_table *hash_table, Element_Count new_size)
 {
-  hash_size_t old_size   = hash_table->size;
+  Element_Count old_size   = hash_table->size;
   hentry     *old_harray = hash_table->harray;
 
   hash_table->size   = hash_table_size (new_size);
@@ -217,15 +217,15 @@
   else
     {
       hash_table_test_function test_function = hash_table->test_function;
-      hash_size_t size = hash_table->size;
+      Element_Count size = hash_table->size;
       hentry *harray   = hash_table->harray;
-      unsigned int hcode_initial =
+      Hash_Code hcode_initial =
 	hash_table->hash_function ?
 	hash_table->hash_function (key) :
-	(unsigned long) key;
-      unsigned int hcode = hcode_initial % size;
-      size_t h2 = size - 2;
-      unsigned int incr = 1 + (hcode_initial % h2);
+	(Hash_Code) key;
+      Element_Count hcode = (Element_Count) (hcode_initial % size);
+      Element_Count h2 = size - 2;
+      Element_Count incr = (Element_Count) (1 + (hcode_initial % h2));
       const void *e_key = harray [hcode].key;
       const void *oldcontents;
 
@@ -268,7 +268,7 @@
       /* only increment the fullness when we used up a new hentry */
       if (!e_key || KEYS_DIFFER_P (e_key, key, test_function))
 	{
-	  hash_size_t comfortable_size = COMFORTABLE_SIZE (++(hash_table->fullness));
+	  Element_Count comfortable_size = COMFORTABLE_SIZE (++(hash_table->fullness));
 	  if (hash_table->size < comfortable_size)
 	    grow_hash_table (hash_table, comfortable_size + 1);
 	}
@@ -276,7 +276,7 @@
 }
 
 static void
-rehash (hentry *harray, struct hash_table *hash_table, hash_size_t size)
+rehash (hentry *harray, struct hash_table *hash_table, Element_Count size)
 {
   hentry *limit = harray + size;
   hentry *e;
@@ -299,12 +299,12 @@
     {
       hentry *harray = hash_table->harray;
       hash_table_test_function test_function = hash_table->test_function;
-      hash_size_t size = hash_table->size;
-      unsigned int hcode_initial =
+      Element_Count size = hash_table->size;
+      Hash_Code hcode_initial =
 	(hash_table->hash_function) ?
 	(hash_table->hash_function (key)) :
-	((unsigned long) key);
-      unsigned int hcode = hcode_initial % size;
+	((Hash_Code) key);
+      Element_Count hcode = (Element_Count) (hcode_initial % size);
       hentry *e = &harray [hcode];
       const void *e_key = e->key;
 
@@ -312,8 +312,8 @@
 	  KEYS_DIFFER_P (e_key, key, test_function) :
 	  e->contents == NULL_ENTRY)
 	{
-	  size_t h2 = size - 2;
-	  unsigned int incr = 1 + (hcode_initial % h2);
+	  Element_Count h2 = size - 2;
+	  Element_Count incr = (Element_Count) (1 + (hcode_initial % h2));
 	  do
 	    {
 	      hcode += incr; if (hcode >= size) hcode -= size;
diff --text -u 'xemacs-21.5.2/src/hash.h' 'xemacs-21.5.3/src/hash.h'
Index: ././src/hash.h
--- ././src/hash.h	Fri Apr 13 03:23:55 2001
+++ ././src/hash.h	Mon Aug 13 13:46:30 2001
@@ -27,28 +27,27 @@
 } hentry;
 
 typedef int           (*hash_table_test_function) (const void *, const void *);
-typedef unsigned long (*hash_table_hash_function) (const void *);
-typedef size_t hash_size_t;
+typedef Hash_Code     (*hash_table_hash_function) (const void *);
 
 struct hash_table
 {
   hentry	*harray;
   long		zero_set;
   void		*zero_entry;
-  hash_size_t	size;		/* size of the hasharray */
-  hash_size_t	fullness;	/* number of entries in the hash table */
+  Element_Count	size;		/* size of the hasharray */
+  Element_Count	fullness;	/* number of entries in the hash table */
   hash_table_hash_function hash_function;
   hash_table_test_function test_function;
 };
 
 /* SIZE is the number of initial entries. The hash table will be grown
    automatically if the number of entries approaches the size */
-struct hash_table *make_hash_table (hash_size_t size);
+struct hash_table *make_hash_table (Element_Count size);
 
 struct hash_table *
-make_general_hash_table (hash_size_t size,
-			hash_table_hash_function hash_function,
-			hash_table_test_function test_function);
+make_general_hash_table (Element_Count size,
+			 hash_table_hash_function hash_function,
+			 hash_table_test_function test_function);
 
 /* Clear HASH-TABLE. A freshly created hash table is already cleared up. */
 void clrhash (struct hash_table *hash_table);
diff --text -u 'xemacs-21.5.2/src/hftctl.c' 'xemacs-21.5.3/src/hftctl.c'
Index: ././src/hftctl.c
--- ././src/hftctl.c	Fri Apr 13 03:23:56 2001
+++ ././src/hftctl.c	Mon Aug 13 13:46:30 2001
@@ -44,7 +44,8 @@
 /***************************************************************/
 
 #include <config.h>
-#include "lisp.h" /* encapsulated open, close, read, write */
+#include "lisp.h"
+#include "sysfile.h"
 
 #include <sys/signal.h>
 #include <errno.h>
@@ -104,7 +105,7 @@
 					/* read a buffer        */
 #define RD_BUF(f,p,l) \
         while ((l)) \
-          if ((j = read((f),(p),(l))) < 0) \
+          if ((j = read ((f),(p),(l))) < 0) \
              if (errno != EINTR) return (-1); \
              else continue; \
           else { (l) -= j; (p) += j; }
diff --text -u 'xemacs-21.5.2/src/imgproc.c' 'xemacs-21.5.3/src/imgproc.c'
Index: ././src/imgproc.c
--- ././src/imgproc.c	Fri Apr 13 03:23:56 2001
+++ ././src/imgproc.c	Mon Aug 13 13:46:30 2001
@@ -45,12 +45,12 @@
 #include "imgproc.h"
 
 static void
-get_histogram(quant_table *qt, unsigned char *pic,
+get_histogram(quant_table *qt, UChar_Binary *pic,
 	      int width, int height, Colorbox* box)
 {
-  register unsigned char *inptr;
+  register UChar_Binary *inptr;
   register int red, green, blue;
-  register unsigned int j, i;
+  register int j, i;
 
   box->rmin = box->gmin = box->bmin = 999;
   box->rmax = box->gmax = box->bmax = -1;
@@ -472,7 +472,7 @@
 }
 
 quant_table *
-build_EImage_quantable(unsigned char *eimage, int width, int height, int num_colors)
+build_EImage_quantable(UChar_Binary *eimage, int width, int height, int num_colors)
 {
   quant_table *qt;
   Colorbox *box_list, *ptr;
diff --text -u 'xemacs-21.5.2/src/input-method-motif.c' 'xemacs-21.5.3/src/input-method-motif.c'
Index: ././src/input-method-motif.c
--- ././src/input-method-motif.c	Fri Apr 13 03:23:56 2001
+++ ././src/input-method-motif.c	Sun Aug 26 18:42:24 2001
@@ -94,6 +94,13 @@
   /* Nothing to do */
 }
 
+/* Callback for the deleting frame. */
+static void
+XIM_delete_frame (Widget w, XtPointer client_data, XtPointer call_data)
+{
+  XmImUnregister ((Widget) client_data);
+}
+
 void
 XIM_init_frame (struct frame *f)
 {
@@ -152,6 +159,8 @@
 		   NULL);
 
   XmFontListEntryFree (&fontlistEntry);
+
+  XtAddCallback (w, XmNdestroyCallback, XIM_delete_frame, (XtPointer) w);
 }
 
 void
diff --text -u 'xemacs-21.5.2/src/insdel.c' 'xemacs-21.5.3/src/insdel.c'
Index: ././src/insdel.c
--- ././src/insdel.c	Thu May 24 16:51:20 2001
+++ ././src/insdel.c	Mon Aug 13 13:46:30 2001
@@ -355,7 +355,7 @@
 	{
 	  /* optimize for successive characters from the same charset */
 	  Bufbyte leading_byte = *ptr;
-	  size_t bytes = REP_BYTES_BY_FIRST_BYTE (leading_byte);
+	  Memory_Count bytes = REP_BYTES_BY_FIRST_BYTE (leading_byte);
 	  while ((ptr < end) && (*ptr == leading_byte))
 	    ptr += bytes, count++;
 	}
diff --text -u 'xemacs-21.5.2/src/keymap.c' 'xemacs-21.5.3/src/keymap.c'
Index: ././src/keymap.c
--- ././src/keymap.c	Thu May 24 16:51:21 2001
+++ ././src/keymap.c	Mon Aug 13 13:46:30 2001
@@ -751,7 +751,7 @@
 /************************************************************************/
 
 static Lisp_Object
-make_keymap (size_t size)
+make_keymap (Element_Count size)
 {
   Lisp_Object result;
   Lisp_Keymap *keymap = alloc_lcrecord_type (Lisp_Keymap, &lrecord_keymap);
@@ -773,7 +773,8 @@
       /* Inverse table is often less dense because of duplicate key-bindings.
          If not, it will grow anyway. */
       keymap->inverse_table =
-	make_lisp_hash_table (size * 3 / 4, HASH_TABLE_NON_WEAK, HASH_TABLE_EQ);
+	make_lisp_hash_table (size * 3 / 4, HASH_TABLE_NON_WEAK,
+			      HASH_TABLE_EQ);
     }
   return result;
 }
@@ -2242,7 +2243,7 @@
 struct relevant_maps
   {
     int nmaps;
-    unsigned int max_maps;
+    int max_maps;
     Lisp_Object *maps;
     struct gcpro *gcpro;
   };
@@ -2257,7 +2258,7 @@
 static void
 relevant_map_push (Lisp_Object map, struct relevant_maps *closure)
 {
-  unsigned int nmaps = closure->nmaps;
+  int nmaps = closure->nmaps;
 
   if (!KEYMAPP (map))
     return;
diff --text -u 'xemacs-21.5.2/src/line-number.c' 'xemacs-21.5.3/src/line-number.c'
Index: ././src/line-number.c
--- ././src/line-number.c	Fri Apr 13 03:23:58 2001
+++ ././src/line-number.c	Mon Aug 13 13:46:31 2001
@@ -168,7 +168,7 @@
       /* We could also count how many newlines there are in the string
          and update the cache accordingly, but it would be too much
          work for too little gain. */
-      memchr ((void *)nonreloc, '\n', (size_t) length))
+      memchr ((void *)nonreloc, '\n', length))
     invalidate_line_number_cache (b, pos);
 }
 
diff --text -u 'xemacs-21.5.2/src/linuxplay.c' 'xemacs-21.5.3/src/linuxplay.c'
Index: ././src/linuxplay.c
--- ././src/linuxplay.c	Sun Jun 10 19:42:31 2001
+++ ././src/linuxplay.c	Mon Aug 13 13:46:31 2001
@@ -285,7 +285,7 @@
   if (!data || length < HEADERSZ) {
     if (fd < 0) return 0;
     else {
-      length = read(fd,sndbuf,SNDBUFSZ);
+      length = read (fd,sndbuf,SNDBUFSZ);
       if (length < HEADERSZ)
 	return 0;
       data   = sndbuf;
diff --text -u 'xemacs-21.5.2/src/lisp.h' 'xemacs-21.5.3/src/lisp.h'
Index: ././src/lisp.h
--- ././src/lisp.h	Mon Jun 18 16:10:23 2001
+++ ././src/lisp.h	Mon Aug 13 13:46:31 2001
@@ -45,6 +45,124 @@
 #include <sys/types.h>
 #include <limits.h>
 
+/* ------------------------ definition of EMACS_INT ------------------- */
+
+/* EMACS_INT is the underlying integral type into which a Lisp_Object must fit.
+   In particular, it must be large enough to contain a pointer.
+   config.h can override this, e.g. to use `long long' for bigger lisp ints.
+
+   #### In point of fact, it would NOT be a good idea for config.h to mess
+   with EMACS_INT.  A lot of code makes the basic assumption that EMACS_INT
+   is the size of a pointer. */
+
+#ifndef SIZEOF_EMACS_INT
+# define SIZEOF_EMACS_INT SIZEOF_VOID_P
+#endif
+
+#ifndef EMACS_INT
+# if   SIZEOF_EMACS_INT == SIZEOF_LONG
+#  define EMACS_INT long
+# elif SIZEOF_EMACS_INT == SIZEOF_INT
+#  define EMACS_INT int
+# elif SIZEOF_EMACS_INT == SIZEOF_LONG_LONG
+#  define EMACS_INT long long
+# else
+#  error Unable to determine suitable type for EMACS_INT
+# endif
+#endif
+
+#ifndef EMACS_UINT
+# define EMACS_UINT unsigned EMACS_INT
+#endif
+
+#define BITS_PER_EMACS_INT (SIZEOF_EMACS_INT * BITS_PER_CHAR)
+
+/* ------------------------ basic char/int typedefs ------------------- */
+
+/* The definitions we put here use typedefs to attribute specific meaning
+   to types that by themselves are pretty general.  Stuff pointed to by a
+   char * or unsigned char * will nearly always be one of four types:
+   a) pointer to internally-formatted text; b) pointer to text in some
+   external format, which can be defined as all formats other than the
+   internal one; c) pure ASCII text; d) binary data that is not meant to
+   be interpreted as text. [A fifth possible type "e) a general pointer
+   to memory" should be replaced with void *.]  Using these more specific
+   types rather than the general ones helps avoid the confusions that
+   occur when the semantics of a char * argument being studied are unclear.
+
+   Note that these typedefs are purely for documentation purposes; from
+   the C code's perspective, they are exactly equivalent to `char *',
+   `unsigned char *', etc., so you can freely use them with library
+   functions declared as such. */
+
+/* The data representing the text in a buffer is logically a set
+   of Bufbytes, declared as follows. */
+
+typedef unsigned char Bufbyte;
+
+/* The following should be used when you are working with internal data
+   but for whatever reason need to have it declared a "char *".  Examples
+   are function arguments whose values are most commonly literal strings,
+   or where you have to apply a stdlib string function to internal data.
+
+   In general, you should avoid this where possible and use Bufbyte instead,
+   for consistency.  For example, the new Mule workspace contains
+   Bufbyte versions of the stdlib string functions. */
+
+typedef char CBufbyte;
+
+/* The data representing a string in "external" format (binary or any
+   external encoding) is logically a set of Extbytes, declared as
+   follows.  Extbyte is guaranteed to be just a char, so for example
+   strlen (Extbyte *) is OK.  Extbyte is only a documentation device
+   for referring to external text. */
+
+typedef char Extbyte;
+
+/* A byte in a string in binary format: */
+typedef char Char_Binary;
+typedef signed char SChar_Binary;
+typedef unsigned char UChar_Binary;
+
+/* A byte in a string in entirely US-ASCII format: (Nothing outside
+ the range 00 - 7F) */
+
+typedef char Char_ASCII;
+typedef unsigned char UChar_ASCII;
+
+
+/* To the user, a buffer is made up of characters, declared as follows.
+   In the non-Mule world, characters and Bufbytes are equivalent.
+   In the Mule world, a character requires (typically) 1 to 4
+   Bufbytes for its representation in a buffer. */
+
+typedef int Emchar;
+
+/* Different ways of referring to a position in a buffer.  We use
+   the typedefs in preference to 'EMACS_INT' to make it clearer what
+   sort of position is being used.  See extents.c for a description
+   of the different positions.  We put them here instead of in
+   buffer.h (where they rightfully belong) to avoid syntax errors
+   in function prototypes. */
+
+typedef EMACS_INT Bufpos;
+typedef EMACS_INT Bytind;
+typedef EMACS_INT Memind;
+
+/* Counts of bytes or chars */
+
+typedef EMACS_INT Bytecount;
+typedef EMACS_INT Charcount;
+
+/* Length in bytes of a string in external format */
+typedef EMACS_INT Extcount;
+
+/* General counts of bytes or elements */
+typedef EMACS_INT Memory_Count;
+typedef EMACS_INT Element_Count;
+
+typedef unsigned long Hash_Code;
+
 /* ------------------------ dynamic arrays ------------------- */
 
 #define Dynarr_declare(type)	\
@@ -98,7 +216,7 @@
 
 #ifdef MEMORY_USAGE_STATS
 struct overhead_stats;
-size_t Dynarr_memory_usage (void *d, struct overhead_stats *stats);
+Memory_Count Dynarr_memory_usage (void *d, struct overhead_stats *stats);
 #endif
 
 /* Also define min() and max(). (Some compilers put them in strange
@@ -114,9 +232,9 @@
 
 /* Memory allocation */
 void malloc_warning (const char *);
-void *xmalloc (size_t size);
-void *xmalloc_and_zero (size_t size);
-void *xrealloc (void *, size_t size);
+void *xmalloc (Memory_Count size);
+void *xmalloc_and_zero (Memory_Count size);
+void *xrealloc (void *, Memory_Count size);
 char *xstrdup (const char *);
 /* generally useful */
 #define countof(x) ((int) (sizeof(x)/sizeof((x)[0])))
@@ -136,7 +254,7 @@
    least NEEDED_SIZE objects.  The reallocing is done by doubling,
    which ensures constant amortized time per element. */
 #define DO_REALLOC(basevar, sizevar, needed_size, type)	do {	\
-  size_t do_realloc_needed_size = (needed_size);		\
+  Memory_Count do_realloc_needed_size = (needed_size);		\
   if ((sizevar) < do_realloc_needed_size)			\
     {								\
       if ((sizevar) < 32)					\
@@ -265,142 +383,28 @@
 /*#endif*/
 
 
-/* EMACS_INT is the underlying integral type into which a Lisp_Object must fit.
-   In particular, it must be large enough to contain a pointer.
-   config.h can override this, e.g. to use `long long' for bigger lisp ints.
-
-   #### In point of fact, it would NOT be a good idea for config.h to mess
-   with EMACS_INT.  A lot of code makes the basic assumption that EMACS_INT
-   is the size of a pointer. */
-
-#ifndef SIZEOF_EMACS_INT
-# define SIZEOF_EMACS_INT SIZEOF_VOID_P
-#endif
-
-#ifndef EMACS_INT
-# if   SIZEOF_EMACS_INT == SIZEOF_LONG
-#  define EMACS_INT long
-# elif SIZEOF_EMACS_INT == SIZEOF_INT
-#  define EMACS_INT int
-# elif SIZEOF_EMACS_INT == SIZEOF_LONG_LONG
-#  define EMACS_INT long long
-# else
-#  error Unable to determine suitable type for EMACS_INT
-# endif
-#endif
-
-#ifndef EMACS_UINT
-# define EMACS_UINT unsigned EMACS_INT
-#endif
-
-#define BITS_PER_EMACS_INT (SIZEOF_EMACS_INT * BITS_PER_CHAR)
-
 
 /************************************************************************/
 /*				  typedefs				*/
 /************************************************************************/
 
+/* Note that the simplest typedefs are near the top of this file. */
+
 /* We put typedefs here so that prototype declarations don't choke.
    Note that we don't actually declare the structures here (except
    maybe for simple structures like Dynarrs); that keeps them private
    to the routines that actually use them. */
 
-/* ------------------------------- */
-/*     basic char/int typedefs     */
-/* ------------------------------- */
-
-/* The definitions we put here use typedefs to attribute specific meaning
-   to types that by themselves are pretty general.  Stuff pointed to by a
-   char * or unsigned char * will nearly always be one of four types:
-   a) pointer to internally-formatted text; b) pointer to text in some
-   external format, which can be defined as all formats other than the
-   internal one; c) pure ASCII text; d) binary data that is not meant to
-   be interpreted as text. [A fifth possible type "e) a general pointer
-   to memory" should be replaced with void *.]  Using these more specific
-   types rather than the general ones helps avoid the confusions that
-   occur when the semantics of a char * argument being studied are unclear.
-
-   Note that these typedefs are purely for documentation purposes; from
-   the C code's perspective, they are exactly equivalent to `char *',
-   `unsigned char *', etc., so you can freely use them with library
-   functions declared as such. */
-
-/* The data representing the text in a buffer is logically a set
-   of Bufbytes, declared as follows. */
-
-typedef unsigned char Bufbyte;
-
-/* The following should be used when you are working with internal data
-   but for whatever reason need to have it declared a "char *".  Examples
-   are function arguments whose values are most commonly literal strings,
-   or where you have to apply a stdlib string function to internal data.
-
-   In general, you should avoid this where possible and use Bufbyte instead,
-   for consistency.  For example, the new Mule workspace contains
-   Bufbyte versions of the stdlib string functions. */
-
-typedef char CBufbyte;
-
-/* The data representing a string in "external" format (binary or any
-   external encoding) is logically a set of Extbytes, declared as
-   follows.  Extbyte is guaranteed to be just a char, so for example
-   strlen (Extbyte *) is OK.  Extbyte is only a documentation device
-   for referring to external text. */
-
-typedef char Extbyte;
-
-/* A byte in a string in binary format: */
-typedef char Char_Binary;
-typedef signed char SChar_Binary;
-typedef unsigned char UChar_Binary;
-
-/* A byte in a string in entirely US-ASCII format: (Nothing outside
- the range 00 - 7F) */
-
-typedef char Char_ASCII;
-typedef unsigned char UChar_ASCII;
-
-
-/* To the user, a buffer is made up of characters, declared as follows.
-   In the non-Mule world, characters and Bufbytes are equivalent.
-   In the Mule world, a character requires (typically) 1 to 4
-   Bufbytes for its representation in a buffer. */
-
-typedef int Emchar;
-
-/* Different ways of referring to a position in a buffer.  We use
-   the typedefs in preference to 'EMACS_INT' to make it clearer what
-   sort of position is being used.  See extents.c for a description
-   of the different positions.  We put them here instead of in
-   buffer.h (where they rightfully belong) to avoid syntax errors
-   in function prototypes. */
-
-typedef EMACS_INT Bufpos;
-typedef EMACS_INT Bytind;
-typedef EMACS_INT Memind;
-
-/* Counts of bytes or chars */
-
-typedef EMACS_INT Bytecount;
-typedef EMACS_INT Charcount;
-
-/* Length in bytes of a string in external format */
-typedef EMACS_INT Extcount;
-
-/* ------------------------------- */
-/*     structure/other typedefs    */
-/* ------------------------------- */
-
 typedef struct lstream Lstream;
 
-typedef unsigned int face_index;
+typedef int face_index;
 
 typedef struct
 {
   Dynarr_declare (struct face_cachel);
 } face_cachel_dynarr;
 
-typedef unsigned int glyph_index;
+typedef int glyph_index;
 
 /* This is shared by process.h, events.h and others in future.
    See events.h for description */
@@ -1287,7 +1291,7 @@
 {
   struct lrecord_header lheader;
   Lisp_Object next;
-  size_t size;
+  Element_Count size;
   unsigned long bits[1];
 };
 typedef struct Lisp_Bit_Vector Lisp_Bit_Vector;
@@ -1315,17 +1319,17 @@
 #define bit_vector_length(v) ((v)->size)
 #define bit_vector_next(v) ((v)->next)
 
-INLINE_HEADER int bit_vector_bit (Lisp_Bit_Vector *v, size_t n);
+INLINE_HEADER int bit_vector_bit (Lisp_Bit_Vector *v, Element_Count n);
 INLINE_HEADER int
-bit_vector_bit (Lisp_Bit_Vector *v, size_t n)
+bit_vector_bit (Lisp_Bit_Vector *v, Element_Count n)
 {
   return ((v->bits[n >> LONGBITS_LOG2] >> (n & (LONGBITS_POWER_OF_2 - 1)))
 	  & 1);
 }
 
-INLINE_HEADER void set_bit_vector_bit (Lisp_Bit_Vector *v, size_t n, int value);
+INLINE_HEADER void set_bit_vector_bit (Lisp_Bit_Vector *v, Element_Count n, int value);
 INLINE_HEADER void
-set_bit_vector_bit (Lisp_Bit_Vector *v, size_t n, int value)
+set_bit_vector_bit (Lisp_Bit_Vector *v, Element_Count n, int value)
 {
   if (value)
     v->bits[n >> LONGBITS_LOG2] |= (1UL << (n & (LONGBITS_POWER_OF_2 - 1)));
@@ -1691,7 +1695,7 @@
 {
   struct lcrecord_header header;
   Lisp_Object free;
-  size_t size;
+  Element_Count size;
   const struct lrecord_implementation *implementation;
 };
 
@@ -1704,7 +1708,7 @@
    Lcrecord lists should never escape to the Lisp level, so
    functions should not be doing this. */
 
-Lisp_Object make_lcrecord_list (size_t size,
+Lisp_Object make_lcrecord_list (Element_Count size,
 				const struct lrecord_implementation
 				*implementation);
 Lisp_Object allocate_managed_lcrecord (Lisp_Object lcrecord_list);
@@ -1885,7 +1889,7 @@
 
 #define LISP_HASH(obj) ((unsigned long) LISP_TO_VOID (obj))
 unsigned long string_hash (const char *xv);
-unsigned long memory_hash (const void *xv, size_t size);
+unsigned long memory_hash (const void *xv, Memory_Count size);
 unsigned long internal_hash (Lisp_Object obj, int depth);
 unsigned long internal_array_hash (Lisp_Object *arr, int size, int depth);
 
@@ -2186,7 +2190,7 @@
 
 /* dump_add_opaque (&var, size) dumps the opaque static structure `var'. */
 #ifdef PDUMP
-void dump_add_opaque (const void *, size_t);
+void dump_add_opaque (const void *, Memory_Count);
 #else
 #define dump_add_opaque(varaddr,size) DO_NOTHING
 #endif
@@ -2254,10 +2258,10 @@
 
 struct overhead_stats
 {
-  int was_requested;
-  int malloc_overhead;
-  int dynarr_overhead;
-  int gap_overhead;
+  Memory_Count was_requested;
+  Memory_Count malloc_overhead;
+  Memory_Count dynarr_overhead;
+  Memory_Count gap_overhead;
 };
 
 #endif /* MEMORY_USAGE_STATS */
@@ -2319,12 +2323,12 @@
 /* Defined in alloc.c */
 void release_breathing_space (void);
 Lisp_Object noseeum_cons (Lisp_Object, Lisp_Object);
-Lisp_Object make_vector (size_t, Lisp_Object);
+Lisp_Object make_vector (Element_Count, Lisp_Object);
 Lisp_Object vector1 (Lisp_Object);
 Lisp_Object vector2 (Lisp_Object, Lisp_Object);
 Lisp_Object vector3 (Lisp_Object, Lisp_Object, Lisp_Object);
-Lisp_Object make_bit_vector (size_t, Lisp_Object);
-Lisp_Object make_bit_vector_from_byte_vector (unsigned char *, size_t);
+Lisp_Object make_bit_vector (Element_Count, Lisp_Object);
+Lisp_Object make_bit_vector_from_byte_vector (unsigned char *, Element_Count);
 Lisp_Object noseeum_make_marker (void);
 void garbage_collect_1 (void);
 Lisp_Object acons (Lisp_Object, Lisp_Object, Lisp_Object);
@@ -2363,8 +2367,8 @@
 int marked_p (Lisp_Object obj);
 
 #ifdef MEMORY_USAGE_STATS
-size_t malloced_storage_size (void *, size_t, struct overhead_stats *);
-size_t fixed_type_block_overhead (size_t);
+Memory_Count malloced_storage_size (void *, Memory_Count, struct overhead_stats *);
+Memory_Count fixed_type_block_overhead (Memory_Count);
 #endif
 #ifdef PDUMP
 void pdump (void);
@@ -2702,8 +2706,9 @@
 DECLARE_DOESNT_RETURN (report_file_error (const CBufbyte *, Lisp_Object));
 Lisp_Object lisp_strerror (int);
 Lisp_Object expand_and_dir_to_file (Lisp_Object, Lisp_Object);
-ssize_t read_allowing_quit (int, void *, size_t);
-ssize_t write_allowing_quit (int, const void *, size_t);
+Memory_Count read_allowing_quit (int fildes, void *buf, Memory_Count size);
+Memory_Count write_allowing_quit (int fildes, const void *buf,
+				  Memory_Count size);
 int internal_delete_file (Lisp_Object);
 
 /* Defined in filelock.c */
diff --text -u 'xemacs-21.5.2/src/lrecord.h' 'xemacs-21.5.3/src/lrecord.h'
Index: ././src/lrecord.h
--- ././src/lrecord.h	Mon Jun 18 16:10:24 2001
+++ ././src/lrecord.h	Mon Aug 13 13:46:31 2001
@@ -199,7 +199,7 @@
   lrecord_type_last_built_in_type /* must be last */
 };
 
-extern unsigned int lrecord_type_count;
+extern int lrecord_type_count;
 
 struct lrecord_implementation
 {
@@ -256,8 +256,8 @@
 
   /* Only one of `static_size' and `size_in_bytes_method' is non-0.
      If both are 0, this type is not instantiable by alloc_lcrecord(). */
-  size_t static_size;
-  size_t (*size_in_bytes_method) (const void *header);
+  Memory_Count static_size;
+  Memory_Count (*size_in_bytes_method) (const void *header);
 
   /* The (constant) index into lrecord_implementations_table */
   enum lrecord_type lrecord_type_index;
@@ -275,7 +275,7 @@
    room in `lrecord_implementations_table' for such new lisp object types. */
 #define MODULE_DEFINABLE_TYPE_COUNT 32
 
-extern const struct lrecord_implementation *lrecord_implementations_table[(unsigned int)lrecord_type_last_built_in_type + MODULE_DEFINABLE_TYPE_COUNT];
+extern const struct lrecord_implementation *lrecord_implementations_table[lrecord_type_last_built_in_type + MODULE_DEFINABLE_TYPE_COUNT];
 
 #define XRECORD_LHEADER_IMPLEMENTATION(obj) \
    LHEADER_IMPLEMENTATION (XRECORD_LHEADER (obj))
@@ -360,8 +360,14 @@
   An integer which will be reset to a given value in the dump file.
 
 
-    XD_SIZE_T
-  size_t value.  Used for counts.
+    XD_ELEMENT_COUNT
+  Element_Count value.  Used for counts.
+
+    XD_MEMORY_COUNT
+  Memory_Count value.  Used for counts.
+
+    XD_HASH_CODE
+  Hash_Code value.  Used for the results of hashing functions.
 
     XD_INT
   int value.  Used for counts.
@@ -387,7 +393,8 @@
   starts at zero) and adds delta to it.
 */
 
-enum lrecord_description_type {
+enum lrecord_description_type
+{
   XD_LISP_OBJECT_ARRAY,
   XD_LISP_OBJECT,
   XD_LO_LINK,
@@ -397,7 +404,9 @@
   XD_C_STRING,
   XD_DOC_STRING,
   XD_INT_RESET,
-  XD_SIZE_T,
+  XD_MEMORY_COUNT,
+  XD_ELEMENT_COUNT,
+  XD_HASH_CODE,
   XD_INT,
   XD_LONG,
   XD_BYTECOUNT,
@@ -405,15 +414,17 @@
   XD_SPECIFIER_END
 };
 
-struct lrecord_description {
+struct lrecord_description
+{
   enum lrecord_description_type type;
   int offset;
   EMACS_INT data1;
   const struct struct_description *data2;
 };
 
-struct struct_description {
-  size_t size;
+struct struct_description
+{
+  Memory_Count size;
   const struct lrecord_description *description;
 };
 
@@ -480,7 +491,7 @@
 
 #define MAKE_EXTERNAL_LRECORD_IMPLEMENTATION(name,c_name,marker,printer,nuker,equal,hash,desc,getprop,putprop,remprop,plist,size,sizer,basic_p,structtype) \
 DECLARE_ERROR_CHECK_TYPECHECK(c_name, structtype)			\
-unsigned int lrecord_type_##c_name;					\
+int lrecord_type_##c_name;						\
 struct lrecord_implementation lrecord_##c_name =			\
   { name, marker, printer, nuker, equal, hash, desc,			\
     getprop, putprop, remprop, plist, size, sizer,			\
@@ -505,7 +516,7 @@
 #define XRECORD_LHEADER(a) ((struct lrecord_header *) XPNTR (a))
 
 #define RECORD_TYPEP(x, ty) \
-  (LRECORDP (x) && (((unsigned int)(XRECORD_LHEADER (x)->type)) == ((unsigned int)(ty))))
+  (LRECORDP (x) && (XRECORD_LHEADER (x)->type == (unsigned int) (ty)))
 
 /* Steps to create a new object:
 
@@ -660,7 +671,7 @@
 extern Lisp_Object Q##c_name##p
 
 # define DECLARE_EXTERNAL_LRECORD(c_name, structtype)	       	\
-extern unsigned int lrecord_type_##c_name;                      \
+extern int lrecord_type_##c_name;				\
 extern struct lrecord_implementation lrecord_##c_name;		\
 INLINE_HEADER structtype *					\
 error_check_##c_name (Lisp_Object obj);				\
@@ -711,7 +722,7 @@
 extern const struct lrecord_implementation lrecord_##c_name
 # define DECLARE_EXTERNAL_LRECORD(c_name, structtype)		\
 extern Lisp_Object Q##c_name##p;				\
-extern unsigned int lrecord_type_##c_name;			\
+extern int lrecord_type_##c_name;				\
 extern struct lrecord_implementation lrecord_##c_name
 # define DECLARE_NONRECORD(c_name, type_enum, structtype)	\
 extern Lisp_Object Q##c_name##p
@@ -767,7 +778,8 @@
    dead_wrong_type_argument (predicate, x);		\
  } while (0)
 
-void *alloc_lcrecord (size_t size, const struct lrecord_implementation *);
+void *alloc_lcrecord (Memory_Count size,
+		      const struct lrecord_implementation *);
 
 #define alloc_lcrecord_type(type, lrecord_implementation) \
   ((type *) alloc_lcrecord (sizeof (type), lrecord_implementation))
diff --text -u 'xemacs-21.5.2/src/lstream.c' 'xemacs-21.5.3/src/lstream.c'
Index: ././src/lstream.c
--- ././src/lstream.c	Thu May 24 16:51:22 2001
+++ ././src/lstream.c	Mon Aug 13 13:46:32 2001
@@ -95,19 +95,19 @@
 void Lstream_fungetc (Lstream *stream, int c)
 	Function equivalents of the above macros.
 
-Lstream_data_count Lstream_read (Lstream *stream, void *data,
-                                 Lstream_data_count size)
+Lstream_Data_Count Lstream_read (Lstream *stream, void *data,
+                                 Lstream_Data_Count size)
 	Read SIZE bytes of DATA from the stream.  Return the number of
 	bytes read.  0 means EOF. -1 means an error occurred and no
 	bytes were read.
 
-Lstream_data_count Lstream_write (Lstream *stream, void *data,
-                                  Lstream_data_count size)
+Lstream_Data_Count Lstream_write (Lstream *stream, void *data,
+                                  Lstream_Data_Count size)
 	Write SIZE bytes of DATA to the stream.  Return the number of
 	bytes written.  -1 means an error occurred and no bytes were
 	written.
 
-void Lstream_unread (Lstream *stream, void *data, Lstream_data_count size)
+void Lstream_unread (Lstream *stream, void *data, Lstream_Data_Count size)
 	Push back SIZE bytes of DATA onto the input queue.  The
 	next call to Lstream_read() with the same size will read the
 	same bytes back.  Note that this will be the case even if
@@ -181,14 +181,14 @@
     }
 }
 
-inline static size_t
-aligned_sizeof_lstream (size_t lstream_type_specific_size)
+inline static Memory_Count
+aligned_sizeof_lstream (Memory_Count lstream_type_specific_size)
 {
   return ALIGN_SIZE (offsetof (Lstream, data) + lstream_type_specific_size,
 		     ALIGNOF (max_align_t));
 }
 
-static size_t
+static Memory_Count
 sizeof_lstream (const void *header)
 {
   return aligned_sizeof_lstream (((const Lstream *) header)->imp->size);
@@ -303,11 +303,11 @@
 int
 Lstream_flush_out (Lstream *lstr)
 {
-  Lstream_data_count num_written;
+  Lstream_Data_Count num_written;
 
   while (lstr->out_buffer_ind > 0)
     {
-      Lstream_data_count size = lstr->out_buffer_ind;
+      Lstream_Data_Count size = lstr->out_buffer_ind;
       if (! (lstr->flags & LSTREAM_FL_IS_OPEN))
 	Lstream_internal_error ("lstream not open", lstr);
       if (! (lstr->flags & LSTREAM_FL_WRITE))
@@ -390,10 +390,10 @@
    if it's getting EWOULDBLOCK errors.   We have to keep stocking them
    up until they can be written, so as to avoid losing data. */
 
-static Lstream_data_count
-Lstream_adding (Lstream *lstr, Lstream_data_count num, int force)
+static Lstream_Data_Count
+Lstream_adding (Lstream *lstr, Lstream_Data_Count num, int force)
 {
-  Lstream_data_count size = num + lstr->out_buffer_ind;
+  Lstream_Data_Count size = num + lstr->out_buffer_ind;
 
   if (size <= lstr->out_buffer_size)
     return num;
@@ -415,11 +415,11 @@
 
 /* Like Lstream_write(), but does not handle line-buffering correctly. */
 
-static Lstream_data_count
-Lstream_write_1 (Lstream *lstr, const void *data, Lstream_data_count size)
+static Lstream_Data_Count
+Lstream_write_1 (Lstream *lstr, const void *data, Lstream_Data_Count size)
 {
   const unsigned char *p = (const unsigned char *) data;
-  Lstream_data_count off = 0;
+  Lstream_Data_Count off = 0;
   if (! (lstr->flags & LSTREAM_FL_IS_OPEN))
     Lstream_internal_error ("lstream not open", lstr);
   if (! (lstr->flags & LSTREAM_FL_WRITE))
@@ -430,7 +430,7 @@
     while (1)
       {
 	/* Figure out how much we can add to the buffer */
-	Lstream_data_count chunk = Lstream_adding (lstr, size, 0);
+	Lstream_Data_Count chunk = Lstream_adding (lstr, size, 0);
 	if (chunk == 0)
 	  {
 	    if (couldnt_write_last_time)
@@ -475,10 +475,10 @@
    repeatedly call Lstream_putc(), which knows how to handle
    line buffering.  Returns number of bytes written. */
 
-Lstream_data_count
-Lstream_write (Lstream *lstr, const void *data, Lstream_data_count size)
+Lstream_Data_Count
+Lstream_write (Lstream *lstr, const void *data, Lstream_Data_Count size)
 {
-  Lstream_data_count i;
+  Lstream_Data_Count i;
   const unsigned char *p = (const unsigned char *) data;
 
   if (size == 0)
@@ -499,9 +499,9 @@
   return lstr->imp->was_blocked_p ? lstr->imp->was_blocked_p (lstr) : 0;
 }
 
-static Lstream_data_count
+static Lstream_Data_Count
 Lstream_raw_read (Lstream *lstr, unsigned char *buffer,
-		  Lstream_data_count size)
+		  Lstream_Data_Count size)
 {
   if (! (lstr->flags & LSTREAM_FL_IS_OPEN))
     Lstream_internal_error ("lstream not open", lstr);
@@ -515,18 +515,18 @@
 
 /* Assuming the buffer is empty, fill it up again. */
 
-static Lstream_data_count
+static Lstream_Data_Count
 Lstream_read_more (Lstream *lstr)
 {
 #if 0
-  Lstream_data_count size_needed 
+  Lstream_Data_Count size_needed 
     = max (1, min (MAX_READ_SIZE, lstr->buffering_size));
 #else
   /* If someone requested a larger buffer size, so be it! */
-  Lstream_data_count size_needed =
+  Lstream_Data_Count size_needed =
     max (1, lstr->buffering_size);
 #endif
-  Lstream_data_count size_gotten;
+  Lstream_Data_Count size_gotten;
 
   DO_REALLOC (lstr->in_buffer, lstr->in_buffer_size,
 	      size_needed, unsigned char);
@@ -536,12 +536,12 @@
   return size_gotten < 0 ? -1 : size_gotten;
 }
 
-Lstream_data_count
-Lstream_read (Lstream *lstr, void *data, Lstream_data_count size)
+Lstream_Data_Count
+Lstream_read (Lstream *lstr, void *data, Lstream_Data_Count size)
 {
   unsigned char *p = (unsigned char *) data;
-  Lstream_data_count off = 0;
-  Lstream_data_count chunk;
+  Lstream_Data_Count off = 0;
+  Lstream_Data_Count chunk;
   int error_occurred = 0;
 
   if (size == 0)
@@ -574,7 +574,7 @@
       /* If we need some more, try to get some more from the stream's end */
       if (size > 0)
 	{
-	  Lstream_data_count retval = Lstream_read_more (lstr);
+	  Lstream_Data_Count retval = Lstream_read_more (lstr);
 	  if (retval < 0)
 	    error_occurred = 1;
 	  if (retval <= 0)
@@ -598,7 +598,7 @@
 	  VALIDATE_CHARPTR_BACKWARD (dataend);
 	  if (dataend + REP_BYTES_BY_FIRST_BYTE (*dataend) != p + off)
 	    {
-	      Lstream_data_count newoff = dataend - p;
+	      Lstream_Data_Count newoff = dataend - p;
 	      /* If not, chop the size down to ignore the last char
 		 and stash it away for next time. */
 	      Lstream_unread (lstr, dataend, off - newoff);
@@ -611,7 +611,7 @@
 }
 
 void
-Lstream_unread (Lstream *lstr, const void *data, Lstream_data_count size)
+Lstream_unread (Lstream *lstr, const void *data, Lstream_Data_Count size)
 {
   const unsigned char *p = (const unsigned char *) data;
 
@@ -730,7 +730,7 @@
 Lstream_fputc (Lstream *lstr, int c)
 {
   unsigned char ch = (unsigned char) c;
-  Lstream_data_count retval = Lstream_write_1 (lstr, &ch, 1);
+  Lstream_Data_Count retval = Lstream_write_1 (lstr, &ch, 1);
   if (retval >= 0 && lstr->buffering == LSTREAM_LINE_BUFFERED && ch == '\n')
     return Lstream_flush_out (lstr);
   return retval < 0 ? -1 : 0;
@@ -811,22 +811,22 @@
    code (it could even be argued that the error might have fixed
    itself, so we should do the fread() again.  */
 
-static Lstream_data_count
-stdio_reader (Lstream *stream, unsigned char *data, Lstream_data_count size)
+static Lstream_Data_Count
+stdio_reader (Lstream *stream, unsigned char *data, Lstream_Data_Count size)
 {
   struct stdio_stream *str = STDIO_STREAM_DATA (stream);
-  Lstream_data_count val = fread (data, 1, size, str->file);
+  Lstream_Data_Count val = fread (data, 1, size, str->file);
   if (!val && ferror (str->file))
     return -1;
   return val;
 }
 
-static Lstream_data_count
+static Lstream_Data_Count
 stdio_writer (Lstream *stream, const unsigned char *data,
-	      Lstream_data_count size)
+	      Lstream_Data_Count size)
 {
   struct stdio_stream *str = STDIO_STREAM_DATA (stream);
-  Lstream_data_count val = fwrite (data, 1, size, str->file);
+  Lstream_Data_Count val = fwrite (data, 1, size, str->file);
   if (!val && ferror (str->file))
     return -1;
   return val;
@@ -937,13 +937,13 @@
   return make_filedesc_stream_1 (filedesc, offset, count, flags, "w");
 }
 
-static Lstream_data_count
-filedesc_reader (Lstream *stream, unsigned char *data, Lstream_data_count size)
+static Lstream_Data_Count
+filedesc_reader (Lstream *stream, unsigned char *data, Lstream_Data_Count size)
 {
-  Lstream_data_count nread;
+  Lstream_Data_Count nread;
   struct filedesc_stream *str = FILEDESC_STREAM_DATA (stream);
   if (str->end_pos >= 0)
-    size = min (size, (Lstream_data_count) (str->end_pos - str->current_pos));
+    size = min (size, (Lstream_Data_Count) (str->end_pos - str->current_pos));
   nread = str->allow_quit ?
     read_allowing_quit (str->fd, data, size) :
     read (str->fd, data, size);
@@ -966,12 +966,12 @@
   return 0;
 }
 
-static Lstream_data_count
+static Lstream_Data_Count
 filedesc_writer (Lstream *stream, const unsigned char *data,
-		 Lstream_data_count size)
+		 Lstream_Data_Count size)
 {
   struct filedesc_stream *str = FILEDESC_STREAM_DATA (stream);
-  Lstream_data_count retval;
+  Lstream_Data_Count retval;
   int need_newline = 0;
 
   /* This function would be simple if it were not for the blasted
@@ -1025,7 +1025,7 @@
 	 out for EWOULDBLOCK. */
       if (str->chars_sans_newline >= str->pty_max_bytes)
 	{
-	  Lstream_data_count retval2 = str->allow_quit ?
+	  Lstream_Data_Count retval2 = str->allow_quit ?
 	    write_allowing_quit (str->fd, &str->eof_char, 1) :
 	    write (str->fd, &str->eof_char, 1);
 
@@ -1058,7 +1058,7 @@
   if (need_newline)
     {
       Bufbyte nl = '\n';
-      Lstream_data_count retval2 = str->allow_quit ?
+      Lstream_Data_Count retval2 = str->allow_quit ?
 	write_allowing_quit (str->fd, &nl, 1) :
 	write (str->fd, &nl, 1);
 
@@ -1194,9 +1194,9 @@
   return obj;
 }
 
-static Lstream_data_count
+static Lstream_Data_Count
 lisp_string_reader (Lstream *stream, unsigned char *data,
-		    Lstream_data_count size)
+		    Lstream_Data_Count size)
 {
   struct lisp_string_stream *str = LISP_STRING_STREAM_DATA (stream);
   /* Don't lose if the string shrank past us ... */
@@ -1211,7 +1211,7 @@
   if (stream->flags & LSTREAM_FL_NO_PARTIAL_CHARS)
     VALIDATE_CHARPTR_BACKWARD (start);
   offset = start - strstart;
-  size = min (size, (Lstream_data_count) (str->end - offset));
+  size = min (size, (Lstream_Data_Count) (str->end - offset));
   memcpy (data, start, size);
   str->offset = offset + size;
   return size;
@@ -1254,15 +1254,15 @@
 {
   const unsigned char *inbuf;
   unsigned char *outbuf;
-  Lstream_data_count size;
-  Lstream_data_count offset;
+  Lstream_Data_Count size;
+  Lstream_Data_Count offset;
 };
 
 DEFINE_LSTREAM_IMPLEMENTATION ("fixed-buffer", lstream_fixed_buffer,
 			       sizeof (struct fixed_buffer_stream));
 
 Lisp_Object
-make_fixed_buffer_input_stream (const void *buf, Lstream_data_count size)
+make_fixed_buffer_input_stream (const void *buf, Lstream_Data_Count size)
 {
   Lisp_Object obj;
   Lstream *lstr = Lstream_new (lstream_fixed_buffer, "r");
@@ -1274,7 +1274,7 @@
 }
 
 Lisp_Object
-make_fixed_buffer_output_stream (void *buf, Lstream_data_count size)
+make_fixed_buffer_output_stream (void *buf, Lstream_Data_Count size)
 {
   Lisp_Object obj;
   Lstream *lstr = Lstream_new (lstream_fixed_buffer, "w");
@@ -1285,9 +1285,9 @@
   return obj;
 }
 
-static Lstream_data_count
+static Lstream_Data_Count
 fixed_buffer_reader (Lstream *stream, unsigned char *data,
-		     Lstream_data_count size)
+		     Lstream_Data_Count size)
 {
   struct fixed_buffer_stream *str = FIXED_BUFFER_STREAM_DATA (stream);
   size = min (size, str->size - str->offset);
@@ -1296,9 +1296,9 @@
   return size;
 }
 
-static Lstream_data_count
+static Lstream_Data_Count
 fixed_buffer_writer (Lstream *stream, const unsigned char *data,
-		     Lstream_data_count size)
+		     Lstream_Data_Count size)
 {
   struct fixed_buffer_stream *str = FIXED_BUFFER_STREAM_DATA (stream);
   if (str->offset == str->size)
@@ -1343,7 +1343,7 @@
 struct resizing_buffer_stream
 {
   unsigned char *buf;
-  Lstream_data_count allocked;
+  Lstream_Data_Count allocked;
   int max_stored;
   int stored;
 };
@@ -1359,9 +1359,9 @@
   return obj;
 }
 
-static Lstream_data_count
+static Lstream_Data_Count
 resizing_buffer_writer (Lstream *stream, const unsigned char *data,
-			Lstream_data_count size)
+			Lstream_Data_Count size)
 {
   struct resizing_buffer_stream *str = RESIZING_BUFFER_STREAM_DATA (stream);
   DO_REALLOC (str->buf, str->allocked, str->stored + size, unsigned char);
@@ -1422,9 +1422,9 @@
   return obj;
 }
 
-static Lstream_data_count
+static Lstream_Data_Count
 dynarr_writer (Lstream *stream, const unsigned char *data,
-	       Lstream_data_count size)
+	       Lstream_Data_Count size)
 {
   struct dynarr_stream *str = DYNARR_STREAM_DATA (stream);
   Dynarr_add_many (str->dyn, data, size);
@@ -1547,9 +1547,9 @@
   return lstr;
 }
 
-static Lstream_data_count
+static Lstream_Data_Count
 lisp_buffer_reader (Lstream *stream, unsigned char *data,
-		    Lstream_data_count size)
+		    Lstream_Data_Count size)
 {
   struct lisp_buffer_stream *str = LISP_BUFFER_STREAM_DATA (stream);
   unsigned char *orig_data = data;
@@ -1573,7 +1573,7 @@
 				   BI_BUF_ZV (buf));
     }
 
-  size = min (size, (Lstream_data_count) (end - start));
+  size = min (size, (Lstream_Data_Count) (end - start));
   end = start + size;
   /* We cannot return a partial character. */
   VALIDATE_BYTIND_BACKWARD (buf, end);
@@ -1606,9 +1606,9 @@
   return data - orig_data;
 }
 
-static Lstream_data_count
+static Lstream_Data_Count
 lisp_buffer_writer (Lstream *stream, const unsigned char *data,
-		    Lstream_data_count size)
+		    Lstream_Data_Count size)
 {
   struct lisp_buffer_stream *str = LISP_BUFFER_STREAM_DATA (stream);
   Bufpos pos;
diff --text -u 'xemacs-21.5.2/src/lstream.h' 'xemacs-21.5.3/src/lstream.h'
Index: ././src/lstream.h
--- ././src/lstream.h	Mon Jun 18 16:10:25 2001
+++ ././src/lstream.h	Mon Aug 13 13:46:32 2001
@@ -61,7 +61,7 @@
    with certain types of devices) will get completely screwed up.
 */
 
-typedef EMACS_INT Lstream_data_count;
+typedef EMACS_INT Lstream_Data_Count;
 
 typedef enum lstream_buffering
 {
@@ -96,7 +96,7 @@
 typedef struct lstream_implementation
 {
   const char *name;
-  Lstream_data_count size; /* Number of additional bytes to be
+  Lstream_Data_Count size; /* Number of additional bytes to be
 			      allocated with this stream.  Access this
 			      data using Lstream_data(). */
   /* Read some data from the stream's end and store it into DATA, which
@@ -117,8 +117,8 @@
   /* The omniscient mly, blinded by the irresistible thrall of Common
      Lisp, thinks that it is bogus that the types and implementations
      of input and output streams are the same. */
-  Lstream_data_count (*reader) (Lstream *stream, unsigned char *data,
-				Lstream_data_count size);
+  Lstream_Data_Count (*reader) (Lstream *stream, unsigned char *data,
+				Lstream_Data_Count size);
   /* Send some data to the stream's end.  Data to be sent is in DATA
      and is SIZE bytes.  Return the number of bytes sent.  This
      function can send and return fewer bytes than is passed in; in
@@ -129,8 +129,8 @@
      data. (This is useful, e.g., of you're dealing with a
      non-blocking file descriptor and are getting EWOULDBLOCK errors.)
      This function can be NULL if the stream is input-only. */
-  Lstream_data_count (*writer) (Lstream *stream, const unsigned char *data,
-				Lstream_data_count size);
+  Lstream_Data_Count (*writer) (Lstream *stream, const unsigned char *data,
+				Lstream_Data_Count size);
   /* Return non-zero if the last write operation on the stream resulted
      in an attempt to block (EWOULDBLOCK). If this method does not
      exists, the implementation returns 0 */
@@ -171,17 +171,17 @@
   struct lcrecord_header header;
   const Lstream_implementation *imp; /* methods for this stream */
   Lstream_buffering buffering; /* type of buffering in use */
-  Lstream_data_count buffering_size; /* number of bytes buffered */
+  Lstream_Data_Count buffering_size; /* number of bytes buffered */
 
   unsigned char *in_buffer; /* holds characters read from stream end */
-  Lstream_data_count in_buffer_size; /* allocated size of buffer */
-  Lstream_data_count in_buffer_current; /* number of characters in buffer */
-  Lstream_data_count in_buffer_ind; /* pointer to next character to
+  Lstream_Data_Count in_buffer_size; /* allocated size of buffer */
+  Lstream_Data_Count in_buffer_current; /* number of characters in buffer */
+  Lstream_Data_Count in_buffer_ind; /* pointer to next character to
 				       take from buffer */
 
   unsigned char *out_buffer; /* holds characters to write to stream end */
-  Lstream_data_count out_buffer_size; /* allocated size of buffer */
-  Lstream_data_count out_buffer_ind; /* pointer to next buffer spot to
+  Lstream_Data_Count out_buffer_size; /* allocated size of buffer */
+  Lstream_Data_Count out_buffer_ind; /* pointer to next buffer spot to
 					write a character */
 
   /* The unget buffer is more or less a stack -- things get pushed
@@ -189,11 +189,11 @@
      basically reads backwards from the end to get stuff; Lstream_unread()
      similarly has to push the data on backwards. */
   unsigned char *unget_buffer; /* holds characters pushed back onto input */
-  Lstream_data_count unget_buffer_size; /* allocated size of buffer */
-  Lstream_data_count unget_buffer_ind; /* pointer to next buffer spot
+  Lstream_Data_Count unget_buffer_size; /* allocated size of buffer */
+  Lstream_Data_Count unget_buffer_ind; /* pointer to next buffer spot
 					  to write a character */
 
-  Lstream_data_count byte_count;
+  Lstream_Data_Count byte_count;
   int flags;
   max_align_t data[1];
 };
@@ -236,12 +236,12 @@
 int Lstream_fputc (Lstream *lstr, int c);
 int Lstream_fgetc (Lstream *lstr);
 void Lstream_fungetc (Lstream *lstr, int c);
-Lstream_data_count Lstream_read (Lstream *lstr, void *data,
-				 Lstream_data_count size);
-Lstream_data_count Lstream_write (Lstream *lstr, const void *data,
-				  Lstream_data_count size);
+Lstream_Data_Count Lstream_read (Lstream *lstr, void *data,
+				 Lstream_Data_Count size);
+Lstream_Data_Count Lstream_write (Lstream *lstr, const void *data,
+				  Lstream_Data_Count size);
 int Lstream_was_blocked_p (Lstream *lstr);
-void Lstream_unread (Lstream *lstr, const void *data, Lstream_data_count size);
+void Lstream_unread (Lstream *lstr, const void *data, Lstream_Data_Count size);
 int Lstream_rewind (Lstream *lstr);
 int Lstream_seekable_p (Lstream *lstr);
 int Lstream_close (Lstream *lstr);
@@ -370,9 +370,9 @@
 					   Bytecount offset,
 					   Bytecount len);
 Lisp_Object make_fixed_buffer_input_stream (const void *buf,
-					    Lstream_data_count size);
+					    Lstream_Data_Count size);
 Lisp_Object make_fixed_buffer_output_stream (void *buf,
-					     Lstream_data_count size);
+					     Lstream_Data_Count size);
 const unsigned char *fixed_buffer_input_stream_ptr (Lstream *stream);
 unsigned char *fixed_buffer_output_stream_ptr (Lstream *stream);
 Lisp_Object make_resizing_buffer_output_stream (void);
diff --text -u 'xemacs-21.5.2/src/m/tad68k.h' 'xemacs-21.5.3/src/m/tad68k.h'
Index: ././src/m/tad68k.h
--- ././src/m/tad68k.h	Mon May 14 13:52:28 2001
+++ ././src/m/tad68k.h	Mon Aug 13 13:46:46 2001
@@ -72,5 +72,7 @@
 
 /* omit next three lines if no TCP installed */
 
+#if 0 /* XEmacs */
 #define select gnu_select		/* avoid select() name clash */
+#endif
 #define LIBS_SYSTEM "-lsocket"		/* get TCP networking functions */
diff --text -u 'xemacs-21.5.2/src/malloc.c' 'xemacs-21.5.3/src/malloc.c'
Index: ././src/malloc.c
Prereq:  1 
--- ././src/malloc.c	Fri Apr 13 03:24:00 2001
+++ ././src/malloc.c	Mon Aug 13 13:46:32 2001
@@ -220,8 +220,8 @@
 
 /* These two are for user programs to look at, when they are interested.  */
 
-unsigned int malloc_sbrk_used;       /* amount of data space used now */
-unsigned int malloc_sbrk_unused;     /* amount more we can have */
+Memory_Count malloc_sbrk_used;       /* amount of data space used now */
+Memory_Count malloc_sbrk_unused;     /* amount more we can have */
 
 /* start of data space; can be changed by calling init_malloc */
 static char *data_space_start;
@@ -489,7 +489,7 @@
      multiple of 8, then figure out which nestf[] area to use.
      Both the beginning of the header and the beginning of the
      block should be on an eight byte boundary.  */
-  nbytes = (n + ((sizeof *p + 7) & ~7) + EXTRA + 7) & ~7;
+  nbytes = (n + ((sizeof (*p) + 7) & ~7) + EXTRA + 7) & ~7;
   {
     unsigned int   shiftr = (nbytes - 1) >> 2;
 
@@ -535,7 +535,7 @@
   p -> mh_magic4 = MAGIC4;
   {
     /* Get the location n after the beginning of the user's space.  */
-    char *m = (char *) p + ((sizeof *p + 7) & ~7) + n;
+    char *m = (char *) p + ((sizeof (*p) + 7) & ~7) + n;
 
     *m++ = MAGIC1, *m++ = MAGIC1, *m++ = MAGIC1, *m = MAGIC1;
   }
@@ -546,7 +546,7 @@
   nmalloc[nunits]++;
   nmal++;
 #endif /* MSTATS */
-  return (char *) p + ((sizeof *p + 7) & ~7);
+  return (char *) p + ((sizeof (*p) + 7) & ~7);
 }
 
 void
@@ -560,11 +560,11 @@
     if (ap == 0)
       return;
 
-    p = (struct mhead *) (ap - ((sizeof *p + 7) & ~7));
+    p = (struct mhead *) (ap - ((sizeof (*p) + 7) & ~7));
     if (p -> mh_alloc == ISMEMALIGN)
       {
 	ap -= p->mh_size;
-	p = (struct mhead *) (ap - ((sizeof *p + 7) & ~7));
+	p = (struct mhead *) (ap - ((sizeof (*p) + 7) & ~7));
       }
 
 #ifndef rcheck
@@ -618,7 +618,7 @@
 
   if (mem == 0)
     return malloc (n);
-  p = (struct mhead *) (mem - ((sizeof *p + 7) & ~7));
+  p = (struct mhead *) (mem - ((sizeof (*p) + 7) & ~7));
   nunits = p -> mh_index;
   ASSERT (p -> mh_alloc == ISALLOC);
 #ifdef rcheck
@@ -630,13 +630,13 @@
   }
 #else /* not rcheck */
   if (p -> mh_index >= 13)
-    tocopy = (1 << (p -> mh_index + 3)) - ((sizeof *p + 7) & ~7);
+    tocopy = (1 << (p -> mh_index + 3)) - ((sizeof (*p) + 7) & ~7);
   else
     tocopy = p -> mh_size;
 #endif /* not rcheck */
 
   /* See if desired size rounds to same power of 2 as actual size. */
-  nbytes = (n + ((sizeof *p + 7) & ~7) + EXTRA + 7) & ~7;
+  nbytes = (n + ((sizeof (*p) + 7) & ~7) + EXTRA + 7) & ~7;
 
   /* If ok, use the same block, just marking its size as changed.  */
   if (nbytes > (4 << nunits) && nbytes <= (8 << nunits))
diff --text -u 'xemacs-21.5.2/src/md5.c' 'xemacs-21.5.3/src/md5.c'
Index: ././src/md5.c
--- ././src/md5.c	Thu May 24 16:51:23 2001
+++ ././src/md5.c	Mon Aug 13 13:46:32 2001
@@ -579,7 +579,7 @@
   while (1)
     {
       Bufbyte tempbuf[1024];	/* some random amount */
-      Lstream_data_count size_in_bytes =
+      Lstream_Data_Count size_in_bytes =
 	Lstream_read (XLSTREAM (instream), tempbuf, sizeof (tempbuf));
       if (!size_in_bytes)
 	break;
diff --text -u 'xemacs-21.5.2/src/menubar-msw.c' 'xemacs-21.5.3/src/menubar-msw.c'
Index: ././src/menubar-msw.c
--- ././src/menubar-msw.c	Thu May 31 21:45:39 2001
+++ ././src/menubar-msw.c	Mon Aug 13 13:46:32 2001
@@ -219,7 +219,7 @@
 static char*
 displayable_menu_item (Lisp_Object gui_item, int bar_p, Emchar *accel)
 {
-  unsigned int ll;
+  Bytecount ll;
 
   /* We construct the name in a static buffer. That's fine, because
      menu items longer than 128 chars are probably programming errors,
@@ -237,7 +237,7 @@
   /* Right flush part, unless we're at the top-level where it's not allowed */
   if (!bar_p)
     {
-      unsigned int lr;
+      Bytecount lr;
 
       assert (MAX_MENUITEM_LENGTH > ll + 1);
       lr = gui_item_display_flush_right (gui_item, buf + ll + 1,
diff --text -u 'xemacs-21.5.2/src/mule-ccl.c' 'xemacs-21.5.3/src/mule-ccl.c'
Index: ././src/mule-ccl.c
--- ././src/mule-ccl.c	Sun Jun 10 19:42:32 2001
+++ ././src/mule-ccl.c	Mon Aug 13 13:46:32 2001
@@ -971,7 +971,10 @@
 	case CCL_SetArray:	/* CCCCCCCCCCCCCCCCCCCCRRRrrrXXXXX */
 	  i = reg[RRR];
 	  j = field1 >> 3;
-	  if ((unsigned int) i < j)
+	  /* #### it's non-obvious to me that we need these casts,
+	     but the left one was already there so clearly the intention
+	     was an unsigned comparison. --ben */
+	  if ((unsigned int) i < (unsigned int) j)
 	    reg[rrr] = XINT (ccl_prog[ic + i]);
 	  ic += j;
 	  break;
@@ -1023,7 +1026,8 @@
 	case CCL_WriteArrayReadJump: /* A--D--D--R--E--S--S-rrrXXXXX */
 	  i = reg[rrr];
 	  j = XINT (ccl_prog[ic]);
-	  if ((unsigned int) i < j)
+	  /* #### see comment at CCL_SetArray */
+	  if ((unsigned int) i < (unsigned int) j)
 	    {
 	      i = XINT (ccl_prog[ic + 1 + i]);
 	      CCL_WRITE_CHAR (i);
@@ -1042,7 +1046,8 @@
 	  CCL_READ_CHAR (reg[rrr]);
 	  /* fall through ... */
 	case CCL_Branch:	/* CCCCCCCCCCCCCCCCCCCCrrrXXXXX */
-	  if ((unsigned int) reg[rrr] < field1)
+	  /* #### see comment at CCL_SetArray */
+	  if ((unsigned int) reg[rrr] < (unsigned int) field1)
 	    ic += XINT (ccl_prog[ic + reg[rrr]]);
 	  else
 	    ic += XINT (ccl_prog[ic + field1]);
@@ -1137,7 +1142,8 @@
 
 	case CCL_WriteArray:	/* CCCCCCCCCCCCCCCCCCCCrrrXXXXX */
 	  i = reg[rrr];
-	  if ((unsigned int) i < field1)
+	  /* #### see comment at CCL_SetArray */
+	  if ((unsigned int) i < (unsigned int) field1)
 	    {
 	      j = XINT (ccl_prog[ic + i]);
 	      CCL_WRITE_CHAR (j);
@@ -1448,8 +1454,13 @@
 		    else if (EQ (content, Qt))
 		      {
 			if (size != 4) continue;
-			if ((op >= XUINT (XVECTOR (map)->contents[2]))
-			    && (op < XUINT (XVECTOR (map)->contents[3])))
+			/* #### see comment at CCL_SetArray; in this
+			   case the casts are added but the XUINT was
+			   already present */
+			if (((unsigned int) op >=
+			     XUINT (XVECTOR (map)->contents[2]))
+			    && ((unsigned int) op <
+				XUINT (XVECTOR (map)->contents[3])))
 			  content = XVECTOR (map)->contents[1];
 			else
 			  continue;
@@ -1622,8 +1633,13 @@
 		      else if (EQ (content, Qt))
 			{
 			  if (size != 4) continue;
-			  if ((op >= XUINT (XVECTOR (map)->contents[2])) &&
-			      (op < XUINT (XVECTOR (map)->contents[3])))
+			/* #### see comment at CCL_SetArray; in this
+			   case the casts are added but the XUINT was
+			   already present */
+			  if (((unsigned int) op >=
+			       XUINT (XVECTOR (map)->contents[2])) &&
+			      ((unsigned int) op <
+			       XUINT (XVECTOR (map)->contents[3])))
 			    content = XVECTOR (map)->contents[1];
 			  else
 			    continue;
diff --text -u 'xemacs-21.5.2/src/mule-charset.c' 'xemacs-21.5.3/src/mule-charset.c'
Index: ././src/mule-charset.c
--- ././src/mule-charset.c	Fri May 25 20:26:57 2001
+++ ././src/mule-charset.c	Mon Aug 13 13:46:33 2001
@@ -329,8 +329,8 @@
 Bytecount
 non_ascii_charptr_copy_char (const Bufbyte *src, Bufbyte *dst)
 {
-  unsigned int bytes = REP_BYTES_BY_FIRST_BYTE (*src);
-  unsigned int i;
+  Bytecount bytes = REP_BYTES_BY_FIRST_BYTE (*src);
+  Bytecount i;
   for (i = bytes; i; i--, dst++, src++)
     *dst = *src;
   return bytes;
@@ -350,7 +350,7 @@
 {
   Bufbyte str[MAX_EMCHAR_LEN];
   Bufbyte *strptr = str;
-  unsigned int bytes;
+  Bytecount bytes;
 
   str[0] = (Bufbyte) ch;
 
diff --text -u 'xemacs-21.5.2/src/mule-charset.h' 'xemacs-21.5.3/src/mule-charset.h'
Index: ././src/mule-charset.h
--- ././src/mule-charset.h	Mon Jun 18 16:10:25 2001
+++ ././src/mule-charset.h	Mon Aug 13 13:46:33 2001
@@ -470,26 +470,26 @@
   /* Number of bytes (1 - 4) required in the internal representation
      for characters in this character set.  This is *not* the
      same as the dimension of the character set). */
-  unsigned int rep_bytes;
+  int rep_bytes;
 
   /* Number of columns a character in this charset takes up, on TTY
      devices.  Not used for X devices. */
-  unsigned int columns;
+  int columns;
 
   /* Direction of this character set */
-  unsigned int direction;
+  int direction;
 
   /* Type of this character set (94, 96, 94x94, 96x96) */
-  unsigned int type;
+  int type;
 
   /* Number of bytes used in encoding of this character set (1 or 2) */
-  unsigned int dimension;
+  int dimension;
 
   /* Number of chars in each dimension (usually 94 or 96) */
-  unsigned int chars;
+  int chars;
 
   /* Which half of font to be used to display this character set */
-  unsigned int graphic;
+  int graphic;
 };
 typedef struct Lisp_Charset Lisp_Charset;
 
@@ -577,9 +577,9 @@
 }
 
 INLINE_HEADER Lisp_Object
-CHARSET_BY_ATTRIBUTES (unsigned int type, unsigned char final, int dir);
+CHARSET_BY_ATTRIBUTES (int type, unsigned char final, int dir);
 INLINE_HEADER Lisp_Object
-CHARSET_BY_ATTRIBUTES (unsigned int type, unsigned char final, int dir)
+CHARSET_BY_ATTRIBUTES (int type, unsigned char final, int dir)
 {
   extern struct charset_lookup *chlook;
 
diff --text -u 'xemacs-21.5.2/src/mule-wnnfns.c' 'xemacs-21.5.3/src/mule-wnnfns.c'
Index: ././src/mule-wnnfns.c
--- ././src/mule-wnnfns.c	Thu May 24 16:51:24 2001
+++ ././src/mule-wnnfns.c	Mon Aug 13 13:46:33 2001
@@ -1978,7 +1978,7 @@
 void
 m2w (unsigned char *mp, w_char *wp)
 {
-  unsigned int ch;
+  int ch;
 
   while ((ch = *mp++) != 0)
     {
diff --text -u 'xemacs-21.5.2/src/ntheap.c' 'xemacs-21.5.3/src/ntheap.c'
Index: ././src/ntheap.c
--- ././src/ntheap.c	Fri Apr 13 03:24:08 2001
+++ ././src/ntheap.c	Mon Aug 13 13:46:33 2001
@@ -237,7 +237,7 @@
   DWORD size;
   unsigned char* base = get_heap_end ();
   unsigned char* end  = base + get_reserved_heap_size () - get_committed_heap_size ();
-  VirtualQuery (base, &info, sizeof info);
+  VirtualQuery (base, &info, sizeof (info));
   if (info.State != MEM_FREE)
 	{
 	  /* Oops, something has already reserved or commited it, nothing we can do but exit */
@@ -253,7 +253,7 @@
 	}
 
   /* Now try and reserve as much as possible */
-  size = min (info.RegionSize, end - base);
+  size = min (info.RegionSize, (DWORD) (end - base));
   tmp = VirtualAlloc (base, size, MEM_RESERVE, PAGE_NOACCESS);
   if (!tmp)
 	{
diff --text -u 'xemacs-21.5.2/src/ntproc.c' 'xemacs-21.5.3/src/ntproc.c'
Index: ././src/ntproc.c
--- ././src/ntproc.c	Fri Jul 27 06:10:45 2001
+++ ././src/ntproc.c	Mon Aug 13 13:46:34 2001
@@ -227,7 +227,7 @@
   child_process *cp;
 
   for (cp = child_procs+(child_proc_count-1); cp >= child_procs; cp--)
-    if (CHILD_ACTIVE (cp) && pid == cp->pid)
+    if (CHILD_ACTIVE (cp) && pid == (DWORD) cp->pid)
       return cp;
   return NULL;
 }
diff --text -u 'xemacs-21.5.2/src/objects-msw.c' 'xemacs-21.5.3/src/objects-msw.c'
Index: ././src/objects-msw.c
--- ././src/objects-msw.c	Thu May 31 21:45:39 2001
+++ ././src/objects-msw.c	Mon Aug 13 13:46:34 2001
@@ -806,7 +806,7 @@
 	 or "rgb:rrrr/gggg/bbbb" */
       unsigned int r, g, b;
 
-      for (i=1; i<strlen(name); i++)
+      for (i=1; i< (int) strlen(name); i++)
 	{
 	  if (!isxdigit ((int)name[i]))
 	    return (COLORREF) -1;
@@ -1169,7 +1169,7 @@
 
 static int
 mswindows_initialize_color_instance (Lisp_Color_Instance *c, Lisp_Object name,
-			       Lisp_Object device, Error_Behavior errb)
+				     Lisp_Object device, Error_Behavior errb)
 {
   const char *extname;
   COLORREF color;
@@ -1177,8 +1177,8 @@
   TO_EXTERNAL_FORMAT (LISP_STRING, name,
 		      C_STRING_ALLOCA, extname,
 		      Qctext);
-  color = mswindows_string_to_color(extname);
-  if (color != -1)
+  color = mswindows_string_to_color (extname);
+  if (color != (COLORREF) -1)
     {
       c->data = xnew (struct mswindows_color_instance_data);
       COLOR_INSTANCE_MSWINDOWS_COLOR (c) = color;
@@ -1249,7 +1249,7 @@
   TO_EXTERNAL_FORMAT (LISP_STRING, color,
 		      C_STRING_ALLOCA, extname,
 		      Qctext);
-  return (mswindows_string_to_color(extname)!=-1);
+  return (mswindows_string_to_color (extname) != (COLORREF) -1);
 }
 
 
diff --text -u 'xemacs-21.5.2/src/objects-x.c' 'xemacs-21.5.3/src/objects-x.c'
Index: ././src/objects-x.c
--- ././src/objects-x.c	Fri May 25 20:26:58 2001
+++ ././src/objects-x.c	Mon Aug 13 13:46:34 2001
@@ -399,8 +399,8 @@
   f->height = xf->ascent + xf->descent;
   {
     /* following change suggested by Ted Phelps <phelps@dstc.edu.au> */
-    unsigned int def_char = 'n'; /*xf->default_char;*/
-    unsigned int byte1, byte2;
+    int def_char = 'n'; /*xf->default_char;*/
+    int byte1, byte2;
 
   once_more:
     byte1 = def_char >> 8;
@@ -410,10 +410,10 @@
       {
 	/* Old versions of the R5 font server have garbage (>63k) as
 	   def_char. 'n' might not be a valid character. */
-	if (byte1 < xf->min_byte1         ||
-	    byte1 > xf->max_byte1         ||
-	    byte2 < xf->min_char_or_byte2 ||
-	    byte2 > xf->max_char_or_byte2)
+	if (byte1 < (int) xf->min_byte1         ||
+	    byte1 > (int) xf->max_byte1         ||
+	    byte2 < (int) xf->min_char_or_byte2 ||
+	    byte2 > (int) xf->max_char_or_byte2)
 	  f->width = 0;
 	else
 	  f->width = xf->per_char[(byte1 - xf->min_byte1) *
@@ -429,7 +429,7 @@
        0 width too (unlikely) then just use the max width. */
     if (f->width == 0)
       {
-	if (def_char == xf->default_char)
+	if (def_char == (int) xf->default_char)
 	  f->width = xf->max_bounds.width;
 	else
 	  {
@@ -598,7 +598,7 @@
   if (result)
     {
       /* Verify that result is an XLFD name (roughly...) */
-      if (result [0] != '-' || strlen (result) < (unsigned int) 30)
+      if (result [0] != '-' || strlen (result) < 30)
 	{
 	  XFree (result);
 	  result = 0;
@@ -817,7 +817,7 @@
       Lisp_Object name, value;
       Atom atom = props [i].name;
       Bufbyte *name_str = 0;
-      size_t name_len;
+      Bytecount name_len;
       Extbyte *namestrext = XGetAtomName (dpy, atom);
 
       if (namestrext)
diff --text -u 'xemacs-21.5.2/src/offix.c' 'xemacs-21.5.3/src/offix.c'
Index: ././src/offix.c
--- ././src/offix.c	Fri Apr 13 03:24:10 2001
+++ ././src/offix.c	Mon Aug 13 13:46:34 2001
@@ -356,11 +356,11 @@
   return Type;
 }
 
-unsigned int
+int
 DndDragButtons(XEvent *event)
 {
   if(!DndIsDropMessage(event)) return 0;
-  return (unsigned int)(event->xclient.data.l[1]);
+  return (int)(event->xclient.data.l[1]);
 }
 
 Window
diff --text -u 'xemacs-21.5.2/src/offix.h' 'xemacs-21.5.3/src/offix.h'
Index: ././src/offix.h
--- ././src/offix.h	Wed Apr  1 05:12:05 1998
+++ ././src/offix.h	Mon Aug 13 13:46:34 2001
@@ -39,7 +39,7 @@
 
 int		DndIsIcon(Widget widget);
 int		DndDataType(XEvent *event);
-unsigned int	DndDragButtons(XEvent *event);
+int		DndDragButtons(XEvent *event);
 Window          DndSourceWindow(XEvent *event);
 
 void
diff --text -u 'xemacs-21.5.2/src/opaque.c' 'xemacs-21.5.3/src/opaque.c'
Index: ././src/opaque.c
--- ././src/opaque.c	Fri Apr 13 03:24:10 2001
+++ ././src/opaque.c	Mon Aug 13 13:46:35 2001
@@ -52,14 +52,14 @@
   write_c_string (buf, printcharfun);
 }
 
-inline static size_t
-aligned_sizeof_opaque (size_t opaque_size)
+inline static Memory_Count
+aligned_sizeof_opaque (Memory_Count opaque_size)
 {
   return ALIGN_SIZE (offsetof (Lisp_Opaque, data) + opaque_size,
 		     ALIGNOF (max_align_t));
 }
 
-static size_t
+static Memory_Count
 sizeof_opaque (const void *header)
 {
   return aligned_sizeof_opaque (((const Lisp_Opaque *) header)->size);
@@ -70,7 +70,7 @@
    If DATA is OPAQUE_UNINIT, the object's data is uninitialized.
    Else the object's data is initialized by copying from DATA. */
 Lisp_Object
-make_opaque (const void *data, size_t size)
+make_opaque (const void *data, Memory_Count size)
 {
   Lisp_Opaque *p = (Lisp_Opaque *)
     alloc_lcrecord (aligned_sizeof_opaque (size), &lrecord_opaque);
@@ -95,7 +95,7 @@
 static int
 equal_opaque (Lisp_Object obj1, Lisp_Object obj2, int depth)
 {
-  size_t size;
+  Memory_Count size;
   return ((size = XOPAQUE_SIZE (obj1)) == XOPAQUE_SIZE (obj2) &&
 	  !memcmp (XOPAQUE_DATA (obj1), XOPAQUE_DATA (obj2), size));
 }
@@ -172,7 +172,8 @@
 void
 reinit_opaque_once_early (void)
 {
-  Vopaque_ptr_free_list = make_lcrecord_list (sizeof (Lisp_Opaque_Ptr), &lrecord_opaque_ptr);
+  Vopaque_ptr_free_list = make_lcrecord_list (sizeof (Lisp_Opaque_Ptr),
+					      &lrecord_opaque_ptr);
   staticpro_nodump (&Vopaque_ptr_free_list);
 }
 
diff --text -u 'xemacs-21.5.2/src/opaque.h' 'xemacs-21.5.3/src/opaque.h'
Index: ././src/opaque.h
--- ././src/opaque.h	Mon Jun 18 16:10:26 2001
+++ ././src/opaque.h	Mon Aug 13 13:46:35 2001
@@ -29,7 +29,7 @@
 typedef struct Lisp_Opaque
 {
   struct lcrecord_header header;
-  size_t size;
+  Memory_Count size;
   max_align_t data[1];
 } Lisp_Opaque;
 
@@ -53,7 +53,7 @@
 #define XOPAQUE_DATA(op) OPAQUE_DATA (XOPAQUE (op))
 #define XOPAQUE_MARKFUN(op) OPAQUE_MARKFUN (XOPAQUE (op))
 
-Lisp_Object make_opaque (const void *data, size_t size);
+Lisp_Object make_opaque (const void *data, Memory_Count size);
 
 typedef struct Lisp_Opaque_Ptr
 {
diff --text -u /dev/null 'xemacs-21.5.3/src/paths.h'
Index: ././src/paths.h
--- ././src/paths.h	Thu Jan  1 09:00:00 1970
+++ ././src/paths.h	Fri Sep  7 18:15:50 2001
@@ -0,0 +1,109 @@
+/* Hey Emacs, this is -*- C -*- code! */
+
+/* Synched up with: Not synched with FSF. */
+
+/* Think twice before editing this file.  Generated automatically by configure.
+
+ The file startup.el guesses at reasonable values for load-path, exec-path,
+ and lock-directory.  This means that if you move emacs and its associated
+ sub-tree to a different place in the filesystem, or to a different machine,
+ you won't have to do anything for it to work.
+
+ If you define the paths in this file then they will take precedence over
+ any value generated by the heuristic in startup.el.  The hardcoded paths
+ will be checked to see if they are valid, in which case they will be used.
+ Otherwise the editor will attempt to make its normal guess.
+
+ See the NEWS file for a description of the heuristic used to locate the lisp
+ and exec directories at startup time.  If you are looking at this file
+ because you are having trouble, then you would be much better off arranging
+ for those heuristics to succeed than defining the paths in this file.
+
+   **  Let me say that again.  If you're editing this file, you're making
+   **  a mistake.  Re-read the section on installation in ../etc/NEWS.
+
+ If it defines anything, this file should define some subset of the following:
+
+   PATH_PROGNAME        The name of the Emacs variant that's running.
+
+   PATH_VERSION         The version id of the Emacs variant that's running.
+
+   PATH_EXEC_PREFIX	The value of --exec-prefix.
+
+   PATH_PREFIX		The value of --prefix.
+
+   PATH_LOADSEARCH	The default value of `load-path'.
+
+   PATH_MODULESEARCH	The default value of `module-load-path'.
+
+   PATH_PACKAGEPATH     The default value of `package-path'.
+
+   PATH_SITE            The default location of site-specific Lisp files.
+
+   PATH_SITE_MODULES	The default location of site-specific modules.
+
+   PATH_EXEC		The default value of `exec-directory' and `exec-path'.
+			(exec-path also contains the value of whatever is in
+			the PATH environment variable.)
+
+   PATH_DATA		The default value of `data-directory'.  This
+			is where architecture-independent files are
+			searched for.
+
+   PATH_INFO		This is where the info documentation is installed.
+
+   PATH_INFOPATH	The default value of `Info-directory-list'.
+			These are additional places info files are searched
+			for. */
+
+#define PATH_PROGNAME "xemacs"
+
+#define PATH_VERSION "21.5-b3"
+
+#ifdef EXEC_PREFIX_USER_DEFINED
+#define PATH_EXEC_PREFIX "/usr/local"
+#endif
+
+#ifdef PREFIX_USER_DEFINED
+#define PATH_PREFIX "/usr/local"
+#endif
+
+#ifdef LISPDIR_USER_DEFINED
+#define  PATH_LOADSEARCH "/usr/local/lib/xemacs-21.5-b3/lisp"
+#endif
+
+#ifdef MODULEDIR_USER_DEFINED
+#define  PATH_MODULESEARCH "/usr/local/lib/xemacs-21.5-b3/i686-pc-linux/modules"
+#endif
+
+#ifdef SITELISPDIR_USER_DEFINED
+#define  PATH_SITE "/usr/local/lib/xemacs/site-lisp"
+#endif
+
+#ifdef SITEMODULEDIR_USER_DEFINED
+#define  PATH_SITE_MODULES "/usr/local/lib/xemacs/site-modules"
+#endif
+
+#ifdef PACKAGE_PATH_USER_DEFINED
+#define PATH_PACKAGEPATH ""
+#endif
+
+#ifdef ARCHLIBDIR_USER_DEFINED
+#define PATH_EXEC "/usr/local/lib/xemacs-21.5-b3/i686-pc-linux"
+#endif
+
+#ifdef ETCDIR_USER_DEFINED
+#define PATH_DATA "/usr/local/lib/xemacs-21.5-b3/etc"
+#endif
+
+#ifdef DOCDIR_USER_DEFINED
+#define PATH_DOC "/usr/local/lib/xemacs-21.5-b3/i686-pc-linux"
+#endif
+
+#ifdef INFODIR_USER_DEFINED
+#define PATH_INFO "/usr/local/lib/xemacs-21.5-b3/info"
+#endif
+
+#ifdef INFOPATH_USER_DEFINED
+#define PATH_INFOPATH ""
+#endif
diff --text -u 'xemacs-21.5.2/src/postgresql.h' 'xemacs-21.5.3/src/postgresql.h'
Index: ././src/postgresql.h
--- ././src/postgresql.h	Mon Jun 18 16:10:26 2001
+++ ././src/postgresql.h	Mon Aug 13 13:46:35 2001
@@ -13,7 +13,9 @@
 #ifndef INCLUDED_postgresql_h_
 #define INCLUDED_postgresql_h_ 1
 
+#define message message_ /* Yuck */
 #include LIBPQ_FE_H_FILE /* main PostgreSQL header file */
+#undef message
 
 #define BLCKSZ 8192 /* size of a default Postgres disk block */
 /*
diff --text -u 'xemacs-21.5.2/src/process-nt.c' 'xemacs-21.5.3/src/process-nt.c'
Index: ././src/process-nt.c
--- ././src/process-nt.c	Fri Jul 27 06:10:46 2001
+++ ././src/process-nt.c	Mon Aug 13 13:46:35 2001
@@ -117,7 +117,7 @@
  */
 
 static int 
-alloc_process_memory (HANDLE h_process, size_t size,
+alloc_process_memory (HANDLE h_process, Memory_Count size,
 		      process_memory* pmc)
 {
   LPTHREAD_START_ROUTINE adr_ExitThread =
@@ -189,12 +189,12 @@
 static DWORD
 run_in_other_process (HANDLE h_process,
 		      LPTHREAD_START_ROUTINE routine,
-		      LPVOID data, size_t data_size)
+		      LPVOID data, Memory_Count data_size)
 {
   process_memory pm;
-  const size_t code_size = FRAGMENT_CODE_SIZE;
+  const Memory_Count code_size = FRAGMENT_CODE_SIZE;
   /* Need at most 3 extra bytes of memory, for data alignment */
-  size_t total_size = code_size + data_size + 3;
+  Memory_Count total_size = code_size + data_size + 3;
   LPVOID remote_data;
   HANDLE h_thread;
   DWORD dw_unused;
@@ -1058,7 +1058,7 @@
 
   while (1)
     {
-      Lstream_data_count writeret;
+      Lstream_Data_Count writeret;
 
       chunklen = Lstream_read (lstream, chunkbuf, 512);
       if (chunklen <= 0)
diff --text -u 'xemacs-21.5.2/src/process-unix.c' 'xemacs-21.5.3/src/process-unix.c'
Index: ././src/process-unix.c
--- ././src/process-unix.c	Sun Jun 10 19:42:32 2001
+++ ././src/process-unix.c	Mon Aug 13 13:46:35 2001
@@ -1280,7 +1280,7 @@
 
       while (1)
 	{
-	  Lstream_data_count writeret;
+	  Lstream_Data_Count writeret;
 
 	  chunklen = Lstream_read (lstream, chunkbuf, 512);
 	  if (chunklen <= 0)
diff --text -u 'xemacs-21.5.2/src/rangetab.c' 'xemacs-21.5.3/src/rangetab.c'
Index: ././src/rangetab.c
--- ././src/rangetab.c	Fri May 25 20:26:59 2001
+++ ././src/rangetab.c	Mon Aug 13 13:46:35 2001
@@ -204,7 +204,7 @@
     {
       /* RIGHT might not point to a valid entry (i.e. it's at the end
 	 of the list), so NEWPOS must round down. */
-      unsigned int newpos = (left + right) >> 1;
+      int newpos = (left + right) >> 1;
       struct range_table_entry *entry = tab + newpos;
       if (pos > entry->last)
 	left = newpos+1;
diff --text -u 'xemacs-21.5.2/src/redisplay-msw.c' 'xemacs-21.5.3/src/redisplay-msw.c'
Index: ././src/redisplay-msw.c
--- ././src/redisplay-msw.c	Thu May 31 21:45:39 2001
+++ ././src/redisplay-msw.c	Mon Aug 13 13:46:35 2001
@@ -342,7 +342,7 @@
   Lisp_Object font = Qnil;
   int focus = EQ (w->frame, DEVICE_FRAME_WITH_FOCUS_REAL (d));
   HDC hdc = get_frame_dc (f, 1);
-  unsigned int local_face_index=0;
+  int local_face_index = 0;
   char *p_char = NULL;
   int n_char = 0;
   RECT rect = { xpos,
diff --text -u 'xemacs-21.5.2/src/redisplay-x.c' 'xemacs-21.5.3/src/redisplay-x.c'
Index: ././src/redisplay-x.c
--- ././src/redisplay-x.c	Fri Apr 13 03:24:14 2001
+++ ././src/redisplay-x.c	Mon Aug 13 13:46:36 2001
@@ -971,14 +971,19 @@
       /* We draw underlines in the same color as the text. */
       if (cachel->underline)
 	{
-	  unsigned long upos, uthick;
+	  int upos, uthick;
+	  unsigned long upos_ext, uthick_ext;
 	  XFontStruct *xfont;
 
 	  xfont = FONT_INSTANCE_X_FONT (XFONT_INSTANCE (font));
-	  if (!XGetFontProperty (xfont, XA_UNDERLINE_POSITION, &upos))
+	  if (!XGetFontProperty (xfont, XA_UNDERLINE_POSITION, &upos_ext))
 	    upos = dl->descent / 2;
-	  if (!XGetFontProperty (xfont, XA_UNDERLINE_THICKNESS, &uthick))
+	  else
+	    upos = (int) upos_ext;
+	  if (!XGetFontProperty (xfont, XA_UNDERLINE_THICKNESS, &uthick_ext))
 	    uthick = 1;
+	  else
+	    uthick = (int) uthick_ext;
 
 	  if (dl->ypos + upos < dl->ypos + dl->descent - dl->clip)
 	    {
@@ -998,39 +1003,44 @@
 	    }
 	}
 
-      if (cachel->strikethru) {
-	unsigned long ascent,descent,upos, uthick;
-	XFontStruct *xfont;
-
-	xfont = FONT_INSTANCE_X_FONT (XFONT_INSTANCE (font));
-
-	if (!XGetFontProperty (xfont, XA_STRIKEOUT_ASCENT, &ascent))
-	  ascent = xfont->ascent;
-	if (!XGetFontProperty (xfont, XA_STRIKEOUT_DESCENT, &descent))
-	  descent = xfont->descent;
-	if (!XGetFontProperty (xfont, XA_UNDERLINE_THICKNESS, &uthick))
-	  uthick = 1;
-
-	upos = ascent - ((ascent + descent) / 2) + 1;
-
-	/* Generally, upos will be positive (above the baseline),so subtract */
-	if (dl->ypos - upos < dl->ypos + dl->descent - dl->clip)
-	  {
-	    if (dl->ypos - upos + uthick > dl->ypos + dl->descent - dl->clip)
-	      uthick = dl->descent - dl->clip + upos;
+      if (cachel->strikethru)
+	{
+	  int ascent, descent, upos, uthick;
+	  unsigned long ascent_ext, descent_ext, uthick_ext;
+	  XFontStruct *xfont;
 
-	    if (uthick == 1)
-	      {
+	  xfont = FONT_INSTANCE_X_FONT (XFONT_INSTANCE (font));
+	  
+	  if (!XGetFontProperty (xfont, XA_STRIKEOUT_ASCENT, &ascent_ext))
+	    ascent = xfont->ascent;
+	  else
+	    ascent = (int) ascent_ext;
+	  if (!XGetFontProperty (xfont, XA_STRIKEOUT_DESCENT, &descent_ext))
+	    descent = xfont->descent;
+	  else
+	    descent = (int) descent_ext;
+	  if (!XGetFontProperty (xfont, XA_UNDERLINE_THICKNESS, &uthick_ext))
+	    uthick = 1;
+	  else
+	    uthick = (int) uthick_ext;
+
+	  upos = ascent - ((ascent + descent) / 2) + 1;
+
+	  /* Generally, upos will be positive (above the baseline),so
+             subtract */
+	  if (dl->ypos - upos < dl->ypos + dl->descent - dl->clip)
+	    {
+	      if (dl->ypos - upos + uthick > dl->ypos + dl->descent - dl->clip)
+		uthick = dl->descent - dl->clip + upos;
+
+	      if (uthick == 1)
 		XDrawLine (dpy, x_win, gc, xpos, dl->ypos - upos,
 			   xpos + this_width, dl->ypos - upos);
-	      }
-	    else if (uthick > 1)
-	      {
+	      else if (uthick > 1)
 		XFillRectangle (dpy, x_win, gc, xpos, dl->ypos + upos,
 				this_width, uthick);
-	      }
-	  }
-      }
+	    }
+	}
 
       /* Restore the GC */
       if (need_clipping)
@@ -1301,7 +1311,8 @@
 
   unsigned long mask;
   int x, y1, y2, width, shadow_thickness, spacing, line_width;
-  face_index div_face = get_builtin_face_cache_index (w, Vvertical_divider_face);
+  face_index div_face =
+    get_builtin_face_cache_index (w, Vvertical_divider_face);
 
   width = window_divider_width (w);
   shadow_thickness = XINT (w->vertical_divider_shadow_thickness);
diff --text -u 'xemacs-21.5.2/src/redisplay.c' 'xemacs-21.5.3/src/redisplay.c'
Index: ././src/redisplay.c
--- ././src/redisplay.c	Fri Jul 27 06:10:46 2001
+++ ././src/redisplay.c	Mon Aug 13 13:46:36 2001
@@ -775,7 +775,7 @@
   struct glyph_block gb;
   prop_block_dynarr *retval;
   Bytind bi_old_cursor_bufpos = data->bi_cursor_bufpos;
-  unsigned int old_cursor_type = data->cursor_type;
+  int old_cursor_type = data->cursor_type;
   Bytind bi_old_bufpos = data->bi_bufpos;
 
   if (data->cursor_type == CURSOR_ON
@@ -1113,7 +1113,7 @@
 {
   prop_block_dynarr *prop, *add_failed;
   Emchar orig_char = data->ch;
-  unsigned int orig_cursor_type = data->cursor_type;
+  int orig_cursor_type = data->cursor_type;
 
   /* Initialize */
   prop = NULL;
@@ -1190,7 +1190,7 @@
     {
       prop_block_dynarr *prop;
       Emchar orig_char = data->ch;
-      unsigned int old_cursor_type = data->cursor_type;
+      int old_cursor_type = data->cursor_type;
 
       /* Initialize */
       prop = NULL;
@@ -1382,7 +1382,7 @@
   int elt;
   prop_block_dynarr *add_failed;
   Bytind bi_old_cursor_bufpos = data->bi_cursor_bufpos;
-  unsigned int old_cursor_type = data->cursor_type;
+  int old_cursor_type = data->cursor_type;
 
   for (elt = 0; elt < Dynarr_length (*prop); elt++)
     {
@@ -5953,7 +5953,7 @@
   Fset_marker (w->start[DESIRED_DISP], make_int (startp), the_buffer);
 
   truncation_changed = (find_window_mirror (w)->truncate_win !=
-			window_truncation_on (w));
+			(unsigned int) window_truncation_on (w));
 
   /* If w->force_start is set, then some function set w->start and we
      should display from there and change point, if necessary, to
@@ -7246,7 +7246,7 @@
 {
   struct buffer *b = XBUFFER (w->buffer);
   line_start_cache_dynarr *cache = w->line_start_cache;
-  unsigned int top, bottom, pos;
+  int top, bottom, pos;
 
   validate_line_start_cache (w);
   w->line_cache_validation_override++;
@@ -7374,7 +7374,7 @@
 
   while (1)
     {
-      unsigned int new_pos;
+      int new_pos;
       Bufpos start, end;
 
       pos = (bottom + top + 1) >> 1;
@@ -8100,7 +8100,7 @@
       struct display_block *db = get_display_block_from_line (dl, TEXT);
 
       *pix_y = (dl->ypos - dl->ascent +
-		((unsigned int) (dl->ascent + dl->descent - dl->clip) >> 1));
+		((dl->ascent + dl->descent - dl->clip) >> 1));
 
       if (char_x < Dynarr_length (db->runes))
 	{
diff --text -u 'xemacs-21.5.2/src/regex.c' 'xemacs-21.5.3/src/regex.c'
Index: ././src/regex.c
--- ././src/regex.c	Mon May 21 14:26:09 2001
+++ ././src/regex.c	Tue Aug 14 06:45:57 2001
@@ -62,6 +62,7 @@
 
 /* We need this for `regex.h', and perhaps for the Emacs include files.  */
 #include <sys/types.h>
+#include <stddef.h> /* needed for ptrdiff_t under Solaris */
 
 /* This is for other GNU distributions with internationalized messages.  */
 #if defined (I18N3) && (defined (HAVE_LIBINTL_H) || defined (_LIBC))
@@ -180,7 +181,7 @@
       memset (re_syntax_table, 0, sizeof (re_syntax_table));
 
       while (*word_syntax_chars)
-	re_syntax_table[(unsigned int)(*word_syntax_chars++)] = Sword;
+	re_syntax_table[(unsigned int) (*word_syntax_chars++)] = Sword;
 
       done = 1;
     }
@@ -647,8 +648,8 @@
 static void
 print_fastmap (char *fastmap)
 {
-  unsigned was_a_range = 0;
-  unsigned i = 0;
+  int was_a_range = 0;
+  int i = 0;
 
   while (i < (1 << BYTEWIDTH))
     {
@@ -1006,7 +1007,7 @@
     printf ("(null)");
   else
     {
-      unsigned int this_char;
+      int this_char;
 
       if (FIRST_STRING_P (where))
         {
@@ -1166,8 +1167,8 @@
 typedef struct
 {
   fail_stack_elt_t *stack;
-  size_t size;
-  size_t avail;			/* Offset of next open position.  */
+  Element_Count size;
+  Element_Count avail;			/* Offset of next open position.  */
 } fail_stack_type;
 
 #define FAIL_STACK_EMPTY()     (fail_stack.avail == 0)
@@ -1291,11 +1292,11 @@
 									\
   DEBUG_STATEMENT (failure_id++);					\
   DEBUG_STATEMENT (nfailure_points_pushed++);				\
-  DEBUG_PRINT2 ("\nPUSH_FAILURE_POINT #%u:\n", failure_id);		\
-  DEBUG_PRINT2 ("  Before push, next avail: %lu\n",			\
-		(unsigned long) (fail_stack).avail);			\
-  DEBUG_PRINT2 ("                     size: %lu\n",			\
-		(unsigned long) (fail_stack).size);			\
+  DEBUG_PRINT2 ("\nPUSH_FAILURE_POINT #%d:\n", failure_id);		\
+  DEBUG_PRINT2 ("  Before push, next avail: %ld\n",			\
+		(long) (fail_stack).avail);				\
+  DEBUG_PRINT2 ("                     size: %ld\n",			\
+		(long) (fail_stack).size);				\
 									\
   DEBUG_PRINT2 ("  slots needed: %d\n", NUM_FAILURE_ITEMS);		\
   DEBUG_PRINT2 ("     available: %ld\n",				\
@@ -1307,8 +1308,8 @@
       if (!DOUBLE_FAIL_STACK (fail_stack))				\
 	return failure_code;						\
 									\
-      DEBUG_PRINT2 ("\n  Doubled stack; size now: %lu\n",		\
-		    (unsigned long) (fail_stack).size);			\
+      DEBUG_PRINT2 ("\n  Doubled stack; size now: %ld\n",		\
+		    (long) (fail_stack).size);				\
       DEBUG_PRINT2 ("  slots available: %ld\n",				\
 		    (long) REMAINING_AVAIL_SLOTS);			\
     }									\
@@ -1410,16 +1411,16 @@
 									\
   /* Remove failure points and point to how many regs pushed.  */	\
   DEBUG_PRINT1 ("POP_FAILURE_POINT:\n");				\
-  DEBUG_PRINT2 ("  Before pop, next avail: %lu\n",			\
-		(unsigned long) fail_stack.avail);			\
-  DEBUG_PRINT2 ("                    size: %lu\n",			\
-		(unsigned long) fail_stack.size);			\
+  DEBUG_PRINT2 ("  Before pop, next avail: %ld\n",			\
+		(long) fail_stack.avail);				\
+  DEBUG_PRINT2 ("                    size: %ld\n",			\
+		(long) fail_stack.size);				\
 									\
   assert (fail_stack.avail >= NUM_NONREG_ITEMS);			\
 									\
   DEBUG_POP (&ffailure_id.integer);					\
-  DEBUG_PRINT2 ("  Popping failure id: %u\n",				\
-		* (unsigned int *) &ffailure_id);			\
+  DEBUG_PRINT2 ("  Popping failure id: %d\n",				\
+		* (int *) &ffailure_id);				\
 									\
   /* If the saved string location is NULL, it came from an		\
      on_failure_keep_string_jump opcode, and we want to throw away the	\
@@ -1437,10 +1438,10 @@
   DEBUG_PRINT_COMPILED_PATTERN (bufp, pat, pend);			\
 									\
   /* Restore register info.  */						\
-  high_reg = (unsigned) POP_FAILURE_INT ();				\
+  high_reg = POP_FAILURE_INT ();					\
   DEBUG_PRINT2 ("  Popping high active reg: %d\n", high_reg);		\
 									\
-  low_reg = (unsigned) POP_FAILURE_INT ();				\
+  low_reg = POP_FAILURE_INT ();						\
   DEBUG_PRINT2 ("  Popping  low active reg: %d\n", low_reg);		\
 									\
   for (this_reg = high_reg; this_reg >= low_reg; this_reg--)		\
@@ -1483,10 +1484,10 @@
       /* This field is one if this group can match the empty string,
          zero if not.  If not yet determined,  `MATCH_NULL_UNSET_VALUE'.  */
 #define MATCH_NULL_UNSET_VALUE 3
-    unsigned match_null_string_p : 2;
-    unsigned is_active : 1;
-    unsigned matched_something : 1;
-    unsigned ever_matched_something : 1;
+    unsigned int match_null_string_p : 2;
+    unsigned int is_active : 1;
+    unsigned int matched_something : 1;
+    unsigned int ever_matched_something : 1;
   } bits;
 } register_info_type;
 
@@ -1504,7 +1505,7 @@
     {									\
       if (!set_regs_matched_done)					\
 	{								\
-	  unsigned r;							\
+	  int r;							\
 	  set_regs_matched_done = 1;					\
 	  for (r = lowest_active_reg; r <= highest_active_reg; r++)	\
 	    {								\
@@ -1617,7 +1618,7 @@
 
 /* Make sure we have at least N more bytes of space in buffer.  */
 #define GET_BUFFER_SPACE(n)						\
-    while (buf_end - bufp->buffer + (n) > bufp->allocated)		\
+    while (buf_end - bufp->buffer + (n) > (ptrdiff_t) bufp->allocated)	\
       EXTEND_BUFFER ()
 
 /* Make sure we have one more byte of buffer space and then add C to it.  */
@@ -1713,7 +1714,7 @@
    #### not true!  groups past this will fail in lots of ways, if we
    ever have to backtrack.
   */
-typedef unsigned regnum_t;
+typedef int regnum_t;
 
 #define INIT_REG_TRANSLATE_SIZE 5
 
@@ -1736,8 +1737,8 @@
 typedef struct
 {
   compile_stack_elt_t *stack;
-  unsigned size;
-  unsigned avail;			/* Offset of next open position.  */
+  int size;
+  int avail;			/* Offset of next open position.  */
 } compile_stack_type;
 
 
@@ -1971,7 +1972,7 @@
   DEBUG_PRINT1 ("\nCompiling pattern: ");
   if (debug)
     {
-      unsigned debug_count;
+      int debug_count;
 
       for (debug_count = 0; debug_count < size; debug_count++)
         putchar (pattern[debug_count]);
@@ -2901,7 +2902,7 @@
                  else
                    { /* If the upper bound is > 1, we need to insert
                         more at the end of the loop.  */
-                     unsigned nbytes = 10 + (upper_bound > 1) * 10;
+                     int nbytes = 10 + (upper_bound > 1) * 10;
 
                      GET_BUFFER_SPACE (nbytes);
 
@@ -3395,7 +3396,7 @@
 compile_range (re_char **p_ptr, re_char *pend, RE_TRANSLATE_TYPE translate,
 	       reg_syntax_t syntax, unsigned char *buf_end)
 {
-  unsigned this_char;
+  Emchar this_char;
 
   re_char *p = *p_ptr;
   int range_start, range_end;
@@ -3522,7 +3523,7 @@
 
   REGISTER char *fastmap = bufp->fastmap;
   unsigned char *pattern = bufp->buffer;
-  unsigned long size = bufp->used;
+  long size = bufp->used;
   unsigned char *p = pattern;
   REGISTER unsigned char *pend = pattern + size;
 
@@ -4000,7 +4001,7 @@
 
 void
 re_set_registers (struct re_pattern_buffer *bufp, struct re_registers *regs,
-		  unsigned num_regs, regoff_t *starts, regoff_t *ends)
+		  int num_regs, regoff_t *starts, regoff_t *ends)
 {
   if (num_regs)
     {
@@ -4127,7 +4128,7 @@
 
 #ifdef REGEX_BEGLINE_CHECK
   {
-    int i = 0;
+    long i = 0;
 
     while (i < bufp->used)
       {
@@ -4478,8 +4479,8 @@
   fail_stack_type fail_stack;
 #endif
 #ifdef DEBUG
-  static unsigned failure_id;
-  unsigned nfailure_points_pushed = 0, nfailure_points_popped = 0;
+  static int failure_id;
+  int nfailure_points_pushed = 0, nfailure_points_popped = 0;
 #endif
 
 #ifdef REL_ALLOC
@@ -4491,11 +4492,11 @@
   /* We fill all the registers internally, independent of what we
      return, for use in backreferences.  The number here includes
      an element for register zero.  */
-  unsigned num_regs = bufp->re_ngroups + 1;
+  int num_regs = bufp->re_ngroups + 1;
 
   /* The currently active registers.  */
-  unsigned lowest_active_reg = NO_LOWEST_ACTIVE_REG;
-  unsigned highest_active_reg = NO_HIGHEST_ACTIVE_REG;
+  int lowest_active_reg = NO_LOWEST_ACTIVE_REG;
+  int highest_active_reg = NO_HIGHEST_ACTIVE_REG;
 
   /* Information on the contents of registers. These are pointers into
      the input strings; they record just what was matched (on this
@@ -4531,7 +4532,7 @@
      variables when we find a match better than any we've seen before.
      This happens as we backtrack through the failure points, which in
      turn happens only if we have not yet matched the entire string. */
-  unsigned best_regs_set = false;
+  int best_regs_set = false;
 #ifdef MATCH_MAY_ALLOCATE /* otherwise, these are global.  */
   re_char **best_regstart, **best_regend;
 #endif
@@ -4557,7 +4558,7 @@
 
 #ifdef DEBUG
   /* Counts the total number of registers pushed.  */
-  unsigned num_regs_pushed = 0;
+  int num_regs_pushed = 0;
 #endif
 
   /* 1 if this match ends in the same string (string1 or string2)
@@ -4937,9 +4938,9 @@
 	    REGEX_PREFETCH ();
 	    c = TRANSLATE (*d); /* The character to match.  */
 
-            /* Cast to `unsigned' instead of `unsigned char' in case the
+            /* Cast to `unsigned int' instead of `unsigned char' in case the
                bit list is a full 32 bytes long.  */
-	    if (c < (unsigned) (*p * BYTEWIDTH)
+	    if (c < (unsigned int) (*p * BYTEWIDTH)
 		&& p[1 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH)))
 	      not_p = !not_p;
 
@@ -5146,7 +5147,7 @@
 
                   if (EVER_MATCHED_SOMETHING (reg_info[*p]))
 		    {
-		      unsigned r;
+		      int r;
 
                       EVER_MATCHED_SOMETHING (reg_info[*p]) = 0;
 
@@ -5535,7 +5536,7 @@
                actual values.  Otherwise, we will restore only one
                register from the stack, since lowest will == highest in
                `pop_failure_point'.  */
-            unsigned dummy_low_reg, dummy_high_reg;
+            int dummy_low_reg, dummy_high_reg;
             unsigned char *pdummy;
             re_char *sdummy = NULL;
 
@@ -6362,7 +6363,7 @@
 regcomp (regex_t *preg, const char *pattern, int cflags)
 {
   reg_errcode_t ret;
-  unsigned syntax
+  unsigned int syntax
     = (cflags & REG_EXTENDED) ?
       RE_SYNTAX_POSIX_EXTENDED : RE_SYNTAX_POSIX_BASIC;
 
@@ -6379,7 +6380,7 @@
 
   if (cflags & REG_ICASE)
     {
-      unsigned i;
+      int i;
 
       preg->translate = (char *) malloc (CHAR_SET_SIZE);
       if (preg->translate == NULL)
@@ -6453,9 +6454,9 @@
 
   if (want_reg_info)
     {
-      regs.num_regs = nmatch;
-      regs.start = TALLOC (nmatch, regoff_t);
-      regs.end = TALLOC (nmatch, regoff_t);
+      regs.num_regs = (int) nmatch;
+      regs.start = TALLOC ((int) nmatch, regoff_t);
+      regs.end = TALLOC ((int) nmatch, regoff_t);
       if (regs.start == NULL || regs.end == NULL)
         return (int) REG_NOMATCH;
     }
@@ -6470,9 +6471,9 @@
     {
       if (ret >= 0)
         {
-          unsigned r;
+          int r;
 
-          for (r = 0; r < nmatch; r++)
+          for (r = 0; r < (int) nmatch; r++)
             {
               pmatch[r].rm_so = regs.start[r];
               pmatch[r].rm_eo = regs.end[r];
@@ -6493,13 +6494,15 @@
    from either regcomp or regexec.   We don't use PREG here.  */
 
 size_t
-regerror (int errcode, const regex_t *preg, char *errbuf, size_t errbuf_size)
+regerror (int errcode, const regex_t *preg, char *errbuf,
+	  size_t errbuf_size)
 {
   const char *msg;
-  size_t msg_size;
+  Memory_Count msg_size;
 
   if (errcode < 0
-      || errcode >= (sizeof (re_error_msgid) / sizeof (re_error_msgid[0])))
+      || errcode >= (int) (sizeof (re_error_msgid) /
+			   sizeof (re_error_msgid[0])))
     /* Only error codes returned by the rest of the code should be passed
        to this routine.  If we are given anything else, or if other regex
        code generates an invalid error code, then the program has a bug.
@@ -6512,7 +6515,7 @@
 
   if (errbuf_size != 0)
     {
-      if (msg_size > errbuf_size)
+      if (msg_size > (Memory_Count) errbuf_size)
         {
           strncpy (errbuf, msg, errbuf_size - 1);
           errbuf[errbuf_size - 1] = 0;
@@ -6521,7 +6524,7 @@
         strcpy (errbuf, msg);
     }
 
-  return msg_size;
+  return (size_t) msg_size;
 }
 
 
diff --text -u 'xemacs-21.5.2/src/regex.h' 'xemacs-21.5.3/src/regex.h'
Index: ././src/regex.h
--- ././src/regex.h	Sat May  5 07:42:33 2001
+++ ././src/regex.h	Mon Aug 13 13:46:39 2001
@@ -27,6 +27,8 @@
 #define RE_TRANSLATE_TYPE Lisp_Object
 #else
 #define RE_TRANSLATE_TYPE char *
+#define Element_Count ssize_t
+#define Memory_Count ssize_t
 #endif /* emacs */
 
 /* POSIX says that <sys/types.h> must be included (by the caller) before
@@ -325,10 +327,10 @@
   unsigned char *buffer;
 
 	/* Number of bytes to which `buffer' points.  */
-  unsigned long allocated;
+  long allocated;
 
 	/* Number of bytes actually used in `buffer'.  */
-  unsigned long used;
+  long used;
 
         /* Syntax setting with which the pattern was compiled.  */
   reg_syntax_t syntax;
@@ -346,7 +348,7 @@
 
 	/* Number of returnable groups found by the compiler. (This does
            not count shy groups.) */
-  size_t re_nsub;
+  int re_nsub;
 
 	/* Total number of groups found by the compiler. (Including
 	   shy ones.) */
@@ -357,7 +359,7 @@
            whether or not we should use the fastmap, so we don't set
            this absolutely perfectly; see `re_compile_fastmap' (the
            `duplicate' case).  */
-  unsigned can_be_null : 1;
+  unsigned int can_be_null : 1;
 
         /* If REGS_UNALLOCATED, allocate space in the `regs' structure
              for `max (RE_NREGS, re_nsub + 1)' groups.
@@ -366,27 +368,27 @@
 #define REGS_UNALLOCATED 0
 #define REGS_REALLOCATE 1
 #define REGS_FIXED 2
-  unsigned regs_allocated : 2;
+  unsigned int regs_allocated : 2;
 
         /* Set to zero when `regex_compile' compiles a pattern; set to one
            by `re_compile_fastmap' if it updates the fastmap.  */
-  unsigned fastmap_accurate : 1;
+  unsigned int fastmap_accurate : 1;
 
         /* If set, `re_match_2' does not return information about
            subexpressions.  */
-  unsigned no_sub : 1;
+  unsigned int no_sub : 1;
 
         /* If set, a beginning-of-line anchor doesn't match at the
            beginning of the string.  */
-  unsigned not_bol : 1;
+  unsigned int not_bol : 1;
 
         /* Similarly for an end-of-line anchor.  */
-  unsigned not_eol : 1;
+  unsigned int not_eol : 1;
 
         /* If true, an anchor at a newline matches.  */
-  unsigned newline_anchor : 1;
+  unsigned int newline_anchor : 1;
 
-  unsigned warned_about_incompatible_back_references : 1;
+  unsigned int warned_about_incompatible_back_references : 1;
 
 	/* Mapping between back references and groups (may not be
 	   equivalent with shy groups). */
@@ -407,7 +409,7 @@
    regex.texinfo for a full description of what registers match.  */
 struct re_registers
 {
-  unsigned num_regs;
+  int num_regs;
   regoff_t *start;
   regoff_t *end;
 };
@@ -491,7 +493,7 @@
    PATTERN_BUFFER will allocate its own register data, without
    freeing the old data.  */
 void re_set_registers (struct re_pattern_buffer *buffer,
-		       struct re_registers *regs, unsigned num_regs,
+		       struct re_registers *regs, int num_regs,
 		       regoff_t *starts, regoff_t *ends);
 
 #ifdef _REGEX_RE_COMP
diff --text -u 'xemacs-21.5.2/src/s/esix.h' 'xemacs-21.5.3/src/s/esix.h'
Index: ././src/s/esix.h
--- ././src/s/esix.h	Mon May 14 13:52:19 2001
+++ ././src/s/esix.h	Mon Aug 13 13:46:48 2001
@@ -11,7 +11,9 @@
 
 /* If using Roell's X server, define X11R4 */
 #ifdef X11R4			/* Roell's X server */
+#if 0 /* XEmacs */
 #define select sys_select /* Emacs select() not good enough? */
+#endif
 #endif /* X11R4 */
 
 /* ESIX does not need <sys/sioctl.h>, but needs <sys/ptem.h> */
diff --text -u 'xemacs-21.5.2/src/search.c' 'xemacs-21.5.3/src/search.c'
Index: ././src/search.c
--- ././src/search.c	Fri May 25 20:26:59 2001
+++ ././src/search.c	Mon Aug 13 13:46:39 2001
@@ -876,7 +876,7 @@
      in the comparisons below. */
 
   if (negate)
-    for (i = 0; i < (int) (sizeof fastmap); i++)
+    for (i = 0; i < (int) (sizeof (fastmap)); i++)
       fastmap[i] ^= 1;
 
   {
diff --text -u /dev/null 'xemacs-21.5.3/src/select-common.h'
Index: ././src/select-common.h
--- ././src/select-common.h	Thu Jan  1 09:00:00 1970
+++ ././src/select-common.h	Mon Aug 13 13:46:39 2001
@@ -0,0 +1,339 @@
+/* Selection processing for XEmacs -- common btwn select-x.c and select-gtk.c
+   Copyright (C) 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
+
+This file is part of XEmacs.
+
+XEmacs 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.
+
+XEmacs 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 XEmacs; see the file COPYING.  If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.  */
+
+/* Synched up with: Not synched with FSF. */
+
+#ifdef PROCESSING_X_CODE
+#define XE_ATOM_TYPE Atom
+#define XE_ATOM_TO_SYMBOL x_atom_to_symbol
+#define XE_SYMBOL_TO_ATOM symbol_to_x_atom
+#else
+#define XE_ATOM_TYPE GdkAtom
+#define XE_ATOM_TO_SYMBOL atom_to_symbol
+#define XE_SYMBOL_TO_ATOM symbol_to_gtk_atom
+#endif /* PROCESSING_X_CODE */
+
+/* #### These are going to move into Lisp code(!) with the aid of
+        some new functions I'm working on - ajh */
+
+/* These functions convert from the selection data read from the server into
+   something that we can use from elisp, and vice versa.
+
+	Type:	Format:	Size:		Elisp Type:
+	-----	-------	-----		-----------
+	*	8	*		String
+	ATOM	32	1		Symbol
+	ATOM	32	> 1		Vector of Symbols
+	*	16	1		Integer
+	*	16	> 1		Vector of Integers
+	*	32	1		if <=16 bits: Integer
+					if > 16 bits: Cons of top16, bot16
+	*	32	> 1		Vector of the above
+
+   When converting a Lisp number to C, it is assumed to be of format 16 if
+   it is an integer, and of format 32 if it is a cons of two integers.
+
+   When converting a vector of numbers from Elisp to C, it is assumed to be
+   of format 16 if every element in the vector is an integer, and is assumed
+   to be of format 32 if any element is a cons of two integers.
+
+   When converting an object to C, it may be of the form (SYMBOL . <data>)
+   where SYMBOL is what we should claim that the type is.  Format and
+   representation are as above.
+
+   NOTE: Under Mule, when someone shoves us a string without a type, we
+   set the type to 'COMPOUND_TEXT and automatically convert to Compound
+   Text.  If the string has a type, we assume that the user wants the
+   data sent as-is so we just do "binary" conversion.
+ */
+
+
+static Lisp_Object
+selection_data_to_lisp_data (struct device *d,
+			     UChar_Binary *data,
+			     Memory_Count size,
+			     XE_ATOM_TYPE type,
+			     int format)
+{
+#ifdef PROCESSING_X_CODE
+  if (type == DEVICE_XATOM_NULL (d))
+    return QNULL;
+
+  /* Convert any 8-bit data to a string, for compactness. */
+  else if (format == 8)
+    return make_ext_string ((Extbyte *) data, size,
+			    type == DEVICE_XATOM_TEXT (d) ||
+			    type == DEVICE_XATOM_COMPOUND_TEXT (d)
+			    ? Qctext : Qbinary);
+
+  /* Convert a single atom to a Lisp Symbol.
+     Convert a set of atoms to a vector of symbols. */
+  else if (type == XA_ATOM)
+#else
+  if (type == gdk_atom_intern ("NULL", 0))
+    return QNULL;
+
+  /* Convert any 8-bit data to a string, for compactness. */
+  else if (format == 8)
+    return make_ext_string ((Extbyte *) data, size,
+			    ((type == gdk_atom_intern ("TEXT", FALSE)) ||
+			     (type == gdk_atom_intern ("COMPOUND_TEXT", FALSE)))
+			    ? Qctext : Qbinary);
+
+  /* Convert a single atom to a Lisp Symbol.
+     Convert a set of atoms to a vector of symbols. */
+  else if (type == gdk_atom_intern ("ATOM", FALSE))
+#endif /* PROCESSING_X_CODE */
+    {
+      if (size == sizeof (XE_ATOM_TYPE))
+	return XE_ATOM_TO_SYMBOL (d, *((XE_ATOM_TYPE *) data));
+      else
+	{
+	  Element_Count i;
+	  Element_Count len = size / sizeof (XE_ATOM_TYPE);
+	  Lisp_Object v = Fmake_vector (make_int (len), Qzero);
+	  for (i = 0; i < len; i++)
+	    Faset (v, make_int (i), XE_ATOM_TO_SYMBOL (d, ((XE_ATOM_TYPE *) data) [i]));
+	  return v;
+	}
+    }
+
+  /* Convert a single 16 or small 32 bit number to a Lisp Int.
+     If the number is > 16 bits, convert it to a cons of integers,
+     16 bits in each half.
+   */
+  else if (format == 32 && size == sizeof (long))
+    return word_to_lisp (((unsigned long *) data) [0]);
+  else if (format == 16 && size == sizeof (short))
+    return make_int ((int) (((unsigned short *) data) [0]));
+
+  /* Convert any other kind of data to a vector of numbers, represented
+     as above (as an integer, or a cons of two 16 bit integers).
+
+     #### Perhaps we should return the actual type to lisp as well.
+
+	(x-get-selection-internal 'PRIMARY 'LINE_NUMBER)
+	==> [4 4]
+
+     and perhaps it should be
+
+	(x-get-selection-internal 'PRIMARY 'LINE_NUMBER)
+	==> (SPAN . [4 4])
+
+     Right now the fact that the return type was SPAN is discarded before
+     lisp code gets to see it.
+   */
+  else if (format == 16)
+    {
+      Element_Count i;
+      Lisp_Object v = make_vector (size / 4, Qzero);
+      for (i = 0; i < size / 4; i++)
+	{
+	  int j = (int) ((unsigned short *) data) [i];
+	  Faset (v, make_int (i), make_int (j));
+	}
+      return v;
+    }
+  else
+    {
+      Element_Count i;
+      Lisp_Object v = make_vector (size / 4, Qzero);
+      for (i = 0; i < size / 4; i++)
+	{
+	  unsigned long j = ((unsigned long *) data) [i];
+	  Faset (v, make_int (i), word_to_lisp (j));
+	}
+      return v;
+    }
+}
+
+
+static void
+lisp_data_to_selection_data (struct device *d,
+			     Lisp_Object obj,
+			     UChar_Binary **data_ret,
+			     XE_ATOM_TYPE *type_ret,
+			     Memory_Count *size_ret,
+			     int *format_ret)
+{
+  Lisp_Object type = Qnil;
+
+  if (CONSP (obj) && SYMBOLP (XCAR (obj)))
+    {
+      type = XCAR (obj);
+      obj = XCDR (obj);
+      if (CONSP (obj) && NILP (XCDR (obj)))
+	obj = XCAR (obj);
+    }
+
+  if (EQ (obj, QNULL) || (EQ (type, QNULL)))
+    {				/* This is not the same as declining */
+      *format_ret = 32;
+      *size_ret = 0;
+      *data_ret = 0;
+      type = QNULL;
+    }
+  else if (STRINGP (obj))
+    {
+      const Extbyte *extval;
+      Extcount extvallen;
+
+      TO_EXTERNAL_FORMAT (LISP_STRING, obj,
+			  ALLOCA, (extval, extvallen),
+			  (NILP (type) ? Qctext : Qbinary));
+      *format_ret = 8;
+      *size_ret = extvallen;
+      *data_ret = (UChar_Binary *) xmalloc (*size_ret);
+      memcpy (*data_ret, extval, *size_ret);
+#ifdef MULE
+      if (NILP (type)) type = QCOMPOUND_TEXT;
+#else
+      if (NILP (type)) type = QSTRING;
+#endif
+    }
+  else if (CHARP (obj))
+    {
+      Bufbyte buf[MAX_EMCHAR_LEN];
+      Bytecount len;
+      const Extbyte *extval;
+      Extcount extvallen;
+
+      *format_ret = 8;
+      len = set_charptr_emchar (buf, XCHAR (obj));
+      TO_EXTERNAL_FORMAT (DATA, (buf, len),
+			  ALLOCA, (extval, extvallen),
+			  Qctext);
+      *size_ret = extvallen;
+      *data_ret = (UChar_Binary *) xmalloc (*size_ret);
+      memcpy (*data_ret, extval, *size_ret);
+#ifdef MULE
+      if (NILP (type)) type = QCOMPOUND_TEXT;
+#else
+      if (NILP (type)) type = QSTRING;
+#endif
+    }
+  else if (SYMBOLP (obj))
+    {
+      *format_ret = 32;
+      *size_ret = 1;
+      *data_ret = (UChar_Binary *) xmalloc (sizeof (XE_ATOM_TYPE) + 1);
+      (*data_ret) [sizeof (XE_ATOM_TYPE)] = 0;
+      (*(XE_ATOM_TYPE **) data_ret) [0] = XE_SYMBOL_TO_ATOM (d, obj, 0);
+      if (NILP (type)) type = QATOM;
+    }
+  else if (INTP (obj) &&
+	   XINT (obj) <= 0x7FFF &&
+	   XINT (obj) >= -0x8000)
+    {
+      *format_ret = 16;
+      *size_ret = 1;
+      *data_ret = (UChar_Binary *) xmalloc (sizeof (short) + 1);
+      (*data_ret) [sizeof (short)] = 0;
+      (*(short **) data_ret) [0] = (short) XINT (obj);
+      if (NILP (type)) type = QINTEGER;
+    }
+  else if (INTP (obj) || CONSP (obj))
+    {
+      *format_ret = 32;
+      *size_ret = 1;
+      *data_ret = (UChar_Binary *) xmalloc (sizeof (long) + 1);
+      (*data_ret) [sizeof (long)] = 0;
+      (*(unsigned long **) data_ret) [0] = lisp_to_word (obj);
+      if (NILP (type)) type = QINTEGER;
+    }
+  else if (VECTORP (obj))
+    {
+      /* Lisp Vectors may represent a set of ATOMs;
+	 a set of 16 or 32 bit INTEGERs;
+	 or a set of ATOM_PAIRs (represented as [[A1 A2] [A3 A4] ...]
+       */
+      Element_Count i;
+
+      if (SYMBOLP (XVECTOR_DATA (obj) [0]))
+	/* This vector is an ATOM set */
+	{
+	  if (NILP (type)) type = QATOM;
+	  *size_ret = XVECTOR_LENGTH (obj);
+	  *format_ret = 32;
+	  *data_ret = (UChar_Binary *) xmalloc ((*size_ret) * sizeof (XE_ATOM_TYPE));
+	  for (i = 0; i < *size_ret; i++)
+	    if (SYMBOLP (XVECTOR_DATA (obj) [i]))
+	      (*(XE_ATOM_TYPE **) data_ret) [i] =
+		XE_SYMBOL_TO_ATOM (d, XVECTOR_DATA (obj) [i], 0);
+	    else
+              syntax_error
+		("all elements of the vector must be of the same type", obj);
+	}
+#if 0 /* #### MULTIPLE doesn't work yet */
+      else if (VECTORP (XVECTOR_DATA (obj) [0]))
+	/* This vector is an ATOM_PAIR set */
+	{
+	  if (NILP (type)) type = QATOM_PAIR;
+	  *size_ret = XVECTOR_LENGTH (obj);
+	  *format_ret = 32;
+	  *data_ret = (UChar_Binary *)
+	    xmalloc ((*size_ret) * sizeof (XE_ATOM_TYPE) * 2);
+	  for (i = 0; i < *size_ret; i++)
+	    if (VECTORP (XVECTOR_DATA (obj) [i]))
+	      {
+		Lisp_Object pair = XVECTOR_DATA (obj) [i];
+		if (XVECTOR_LENGTH (pair) != 2)
+		  syntax_error
+		    ("elements of the vector must be vectors of exactly two elements", pair);
+
+		(*(XE_ATOM_TYPE **) data_ret) [i * 2] =
+		  XE_SYMBOL_TO_ATOM (d, XVECTOR_DATA (pair) [0], 0);
+		(*(XE_ATOM_TYPE **) data_ret) [(i * 2) + 1] =
+		  XE_SYMBOL_TO_ATOM (d, XVECTOR_DATA (pair) [1], 0);
+	      }
+	    else
+	      syntax_error
+		("all elements of the vector must be of the same type", obj);
+	}
+#endif
+      else
+	/* This vector is an INTEGER set, or something like it */
+	{
+	  *size_ret = XVECTOR_LENGTH (obj);
+	  if (NILP (type)) type = QINTEGER;
+	  *format_ret = 16;
+	  for (i = 0; i < *size_ret; i++)
+	    if (CONSP (XVECTOR_DATA (obj) [i]))
+	      *format_ret = 32;
+	    else if (!INTP (XVECTOR_DATA (obj) [i]))
+	      syntax_error
+		("all elements of the vector must be integers or conses of integers", obj);
+
+	  *data_ret = (UChar_Binary *) xmalloc (*size_ret * (*format_ret/8));
+	  for (i = 0; i < *size_ret; i++)
+	    if (*format_ret == 32)
+	      (*((unsigned long **) data_ret)) [i] =
+		lisp_to_word (XVECTOR_DATA (obj) [i]);
+	    else
+	      (*((unsigned short **) data_ret)) [i] =
+		(unsigned short) lisp_to_word (XVECTOR_DATA (obj) [i]);
+	}
+    }
+  else
+    invalid_argument ("unrecognized selection data", obj);
+
+  *type_ret = XE_SYMBOL_TO_ATOM (d, type, 0);
+}
+
diff --text -u 'xemacs-21.5.2/src/select-gtk.c' 'xemacs-21.5.3/src/select-gtk.c'
Index: ././src/select-gtk.c
--- ././src/select-gtk.c	Thu May 24 16:51:29 2001
+++ ././src/select-gtk.c	Mon Aug 13 13:46:39 2001
@@ -42,21 +42,46 @@
 static gboolean waiting_for_selection;
 Lisp_Object Vgtk_sent_selection_hooks;
 
-static Lisp_Object atom_to_symbol (struct device *d, GdkAtom atom);
-static GdkAtom symbol_to_gtk_atom (struct device *d, Lisp_Object sym, int only_if_exists);
+static GdkAtom
+symbol_to_gtk_atom (struct device *d, Lisp_Object sym, int only_if_exists)
+{
+  if (NILP (sym))		return GDK_SELECTION_PRIMARY;
+  if (EQ (sym, Qt))		return GDK_SELECTION_SECONDARY;
+  if (EQ (sym, QPRIMARY))	return GDK_SELECTION_PRIMARY;
+  if (EQ (sym, QSECONDARY))	return GDK_SELECTION_SECONDARY;
+
+  {
+    const Extbyte *nameext;
+    LISP_STRING_TO_EXTERNAL (Fsymbol_name (sym), nameext, Qctext);
+    return gdk_atom_intern (nameext, only_if_exists ? TRUE : FALSE);
+  }
+}
+
+static Lisp_Object
+atom_to_symbol (struct device *d, GdkAtom atom)
+{
+  if (atom == GDK_SELECTION_PRIMARY) return (QPRIMARY);
+  if (atom == GDK_SELECTION_SECONDARY) return (QSECONDARY);
+
+  {
+    CBufbyte *intstr;
+    Extbyte *str = gdk_atom_name (atom);
+
+    if (! str) return Qnil;
+
+    TO_INTERNAL_FORMAT (C_STRING, str,
+			C_STRING_ALLOCA, intstr,
+			Qctext);
+    g_free (str);
+    return intern (intstr);
+  }
+}
 
-static void lisp_data_to_selection_data (struct device *,
-					 Lisp_Object obj,
-					 unsigned char **data_ret,
-					 GdkAtom *type_ret,
-					 unsigned int *size_ret,
-					 int *format_ret);
-static Lisp_Object selection_data_to_lisp_data (struct device *,
-						Extbyte *data,
-						size_t size,
-						GdkAtom type,
-						int format);
+#define PROCESSING_GTK_CODE
+#include "select-common.h"
+#undef PROCESSING_GTK_CODE
 
+
 /* Set the selection data to GDK_NONE and NULL data, meaning we were
 ** unable to do what they wanted.
 */
@@ -170,14 +195,16 @@
 			 make_opaque_ptr (cl));
 
   {
-    unsigned char *data;
-    unsigned int size;
+    UChar_Binary *data;
+    Memory_Count size;
     int format;
     GdkAtom type;
     lisp_data_to_selection_data (d, converted_selection,
 				 &data, &type, &size, &format);
 
-    gtk_selection_data_set (selection_data, type, format, data, size);
+    gtk_selection_data_set (selection_data, type, format, data,
+			    /* #### is this right? */
+			    (unsigned int) size);
     successful_p = Qt;
     /* Tell x_selection_request_lisp_error() it's cool. */
     cl->successful = TRUE;
@@ -306,66 +333,7 @@
 			 GdkAtom *actual_type_ret, int *actual_format_ret,
 			 unsigned long *actual_size_ret, int delete_p)
 {
-  size_t total_size;
-  unsigned long bytes_remaining;
-  int offset = 0;
-  unsigned char *tmp_data = 0;
-  int result;
-  int buffer_size = SELECTION_QUANTUM (display);
-  if (buffer_size > MAX_SELECTION_QUANTUM) buffer_size = MAX_SELECTION_QUANTUM;
-
-  /* First probe the thing to find out how big it is. */
-  result = XGetWindowProperty (display, window, property,
-			       0, 0, False, AnyPropertyType,
-			       actual_type_ret, actual_format_ret,
-			       actual_size_ret,
-			       &bytes_remaining, &tmp_data);
-  if (result != Success)
-    {
-      *data_ret = 0;
-      *bytes_ret = 0;
-      return;
-    }
-  XFree ((char *) tmp_data);
-
-  if (*actual_type_ret == None || *actual_format_ret == 0)
-    {
-      if (delete_p) XDeleteProperty (display, window, property);
-      *data_ret = 0;
-      *bytes_ret = 0;
-      return;
-    }
-
-  total_size = bytes_remaining + 1;
-  *data_ret = (Extbyte *) xmalloc (total_size);
-
-  /* Now read, until we've gotten it all. */
-  while (bytes_remaining)
-    {
-#if 0
-      int last = bytes_remaining;
-#endif
-      result =
-	XGetWindowProperty (display, window, property,
-			    offset/4, buffer_size/4,
-			    (delete_p ? True : False),
-			    AnyPropertyType,
-			    actual_type_ret, actual_format_ret,
-			    actual_size_ret, &bytes_remaining, &tmp_data);
-#if 0
-      stderr_out ("<< read %d\n", last-bytes_remaining);
-#endif
-      /* If this doesn't return Success at this point, it means that
-	 some clod deleted the selection while we were in the midst of
-	 reading it.  Deal with that, I guess....
-       */
-      if (result != Success) break;
-      *actual_size_ret *= *actual_format_ret / 8;
-      memcpy ((*data_ret) + offset, tmp_data, *actual_size_ret);
-      offset += *actual_size_ret;
-      XFree ((char *) tmp_data);
-    }
-  *bytes_ret = offset;
+  /* deleted */
 }
 
 
@@ -378,64 +346,7 @@
 			       Atom *type_ret, int *format_ret,
 			       unsigned long *size_ret)
 {
-  /* This function can GC */
-  int offset = 0;
-  int prop_id;
-  *size_bytes_ret = min_size_bytes;
-  *data_ret = (Extbyte *) xmalloc (*size_bytes_ret);
-#if 0
-  stderr_out ("\nread INCR %d\n", min_size_bytes);
-#endif
-  /* At this point, we have read an INCR property, and deleted it (which
-     is how we ack its receipt: the sending window will be selecting
-     PropertyNotify events on our window to notice this).
-
-     Now, we must loop, waiting for the sending window to put a value on
-     that property, then reading the property, then deleting it to ack.
-     We are done when the sender places a property of length 0.
-   */
-  prop_id = expect_property_change (display, window, property,
-				    PropertyNewValue);
-  while (1)
-    {
-      Extbyte *tmp_data;
-      int tmp_size_bytes;
-      wait_for_property_change (prop_id);
-      /* expect it again immediately, because x_get_window_property may
-	 .. no it won't, I don't get it.
-	 .. Ok, I get it now, the Xt code that implements INCR is broken.
-       */
-      prop_id = expect_property_change (display, window, property,
-					PropertyNewValue);
-      x_get_window_property (display, window, property,
-			     &tmp_data, &tmp_size_bytes,
-			     type_ret, format_ret, size_ret, 1);
-
-      if (tmp_size_bytes == 0) /* we're done */
-	{
-#if 0
-	  stderr_out ("  read INCR done\n");
-#endif
-	  unexpect_property_change (prop_id);
-	  if (tmp_data) xfree (tmp_data);
-	  break;
-	}
-#if 0
-      stderr_out ("  read INCR %d\n", tmp_size_bytes);
-#endif
-      if (*size_bytes_ret < offset + tmp_size_bytes)
-	{
-#if 0
-	  stderr_out ("  read INCR realloc %d -> %d\n",
-		   *size_bytes_ret, offset + tmp_size_bytes);
-#endif
-	  *size_bytes_ret = offset + tmp_size_bytes;
-	  *data_ret = (Extbyte *) xrealloc (*data_ret, *size_bytes_ret);
-	}
-      memcpy ((*data_ret) + offset, tmp_data, tmp_size_bytes);
-      offset += tmp_size_bytes;
-      xfree (tmp_data);
-    }
+  /* deleted */
 }
 
 
@@ -447,383 +358,9 @@
 				      Lisp_Object target_type,
 				      GdkAtom selection_atom)
 {
-  /* This function can GC */
-  Atom actual_type;
-  int actual_format;
-  unsigned long actual_size;
-  Extbyte *data = NULL;
-  int bytes = 0;
-  Lisp_Object val;
-  struct device *d = get_device_from_display (display);
-
-  x_get_window_property (display, window, property, &data, &bytes,
-			 &actual_type, &actual_format, &actual_size, 1);
-  if (! data)
-    {
-      if (XGetSelectionOwner (display, selection_atom))
-	/* there is a selection owner */
-	signal_error (Qselection_conversion_error,
-		      "selection owner couldn't convert",
-		      Fcons (Qunbound,
-			     Fcons (x_atom_to_symbol (d, selection_atom),
-				    actual_type ?
-				    list2 (target_type,
-					   x_atom_to_symbol (d, actual_type)) :
-				    list1 (target_type))));
-      else
-	signal_error (Qselection_conversion_error,
-		      "no selection",
-		      x_atom_to_symbol (d, selection_atom));
-    }
-
-  if (actual_type == DEVICE_XATOM_INCR (d))
-    {
-      /* Ok, that data wasn't *the* data, it was just the beginning. */
-
-      unsigned int min_size_bytes = * ((unsigned int *) data);
-      xfree (data);
-      receive_incremental_selection (display, window, property, target_type,
-				     min_size_bytes, &data, &bytes,
-				     &actual_type, &actual_format,
-				     &actual_size);
-    }
-
-  /* It's been read.  Now convert it to a lisp object in some semi-rational
-     manner. */
-  val = selection_data_to_lisp_data (d, data, bytes,
-				     actual_type, actual_format);
-
-  xfree (data);
-  return val;
-}
-#endif
-
-
-static GdkAtom
-symbol_to_gtk_atom (struct device *d, Lisp_Object sym, int only_if_exists)
-{
-  if (NILP (sym))		return GDK_SELECTION_PRIMARY;
-  if (EQ (sym, Qt))		return GDK_SELECTION_SECONDARY;
-  if (EQ (sym, QPRIMARY))	return GDK_SELECTION_PRIMARY;
-  if (EQ (sym, QSECONDARY))	return GDK_SELECTION_SECONDARY;
-
-  {
-    const char *nameext;
-    LISP_STRING_TO_EXTERNAL (Fsymbol_name (sym), nameext, Qctext);
-    return gdk_atom_intern (nameext, only_if_exists ? TRUE : FALSE);
-  }
-}
-
-static Lisp_Object
-atom_to_symbol (struct device *d, GdkAtom atom)
-{
-  if (atom == GDK_SELECTION_PRIMARY) return (QPRIMARY);
-  if (atom == GDK_SELECTION_SECONDARY) return (QSECONDARY);
-
-  {
-    char *intstr;
-    char *str = gdk_atom_name (atom);
-
-    if (! str) return Qnil;
-
-    TO_INTERNAL_FORMAT (C_STRING, str,
-			C_STRING_ALLOCA, intstr,
-			Qctext);
-    g_free (str);
-    return intern (intstr);
-  }
-}
-
-/* #### These are going to move into Lisp code(!) with the aid of
-        some new functions I'm working on - ajh */
-
-/* These functions convert from the selection data read from the server into
-   something that we can use from elisp, and vice versa.
-
-	Type:	Format:	Size:		Elisp Type:
-	-----	-------	-----		-----------
-	*	8	*		String
-	ATOM	32	1		Symbol
-	ATOM	32	> 1		Vector of Symbols
-	*	16	1		Integer
-	*	16	> 1		Vector of Integers
-	*	32	1		if <=16 bits: Integer
-					if > 16 bits: Cons of top16, bot16
-	*	32	> 1		Vector of the above
-
-   When converting a Lisp number to C, it is assumed to be of format 16 if
-   it is an integer, and of format 32 if it is a cons of two integers.
-
-   When converting a vector of numbers from Elisp to C, it is assumed to be
-   of format 16 if every element in the vector is an integer, and is assumed
-   to be of format 32 if any element is a cons of two integers.
-
-   When converting an object to C, it may be of the form (SYMBOL . <data>)
-   where SYMBOL is what we should claim that the type is.  Format and
-   representation are as above.
-
-   NOTE: Under Mule, when someone shoves us a string without a type, we
-   set the type to 'COMPOUND_TEXT and automatically convert to Compound
-   Text.  If the string has a type, we assume that the user wants the
-   data sent as-is so we just do "binary" conversion.
- */
-
-
-static Lisp_Object
-selection_data_to_lisp_data (struct device *d,
-			     Extbyte *data,
-			     size_t size,
-			     GdkAtom type,
-			     int format)
-{
-  if (type == gdk_atom_intern ("NULL", 0))
-    return QNULL;
-
-  /* Convert any 8-bit data to a string, for compactness. */
-  else if (format == 8)
-    return make_ext_string (data, size,
-			    ((type == gdk_atom_intern ("TEXT", FALSE)) ||
-			     (type == gdk_atom_intern ("COMPOUND_TEXT", FALSE)))
-			    ? Qctext : Qbinary);
-
-  /* Convert a single atom to a Lisp Symbol.
-     Convert a set of atoms to a vector of symbols. */
-  else if (type == gdk_atom_intern ("ATOM", FALSE))
-    {
-      if (size == sizeof (GdkAtom))
-	return atom_to_symbol (d, *((GdkAtom *) data));
-      else
-	{
-	  int i;
-	  int len = size / sizeof (GdkAtom);
-	  Lisp_Object v = Fmake_vector (make_int (len), Qzero);
-	  for (i = 0; i < len; i++)
-	    Faset (v, make_int (i), atom_to_symbol (d, ((GdkAtom *) data) [i]));
-	  return v;
-	}
-    }
-
-  /* Convert a single 16 or small 32 bit number to a Lisp Int.
-     If the number is > 16 bits, convert it to a cons of integers,
-     16 bits in each half.
-   */
-  else if (format == 32 && size == sizeof (long))
-    return word_to_lisp (((unsigned long *) data) [0]);
-  else if (format == 16 && size == sizeof (short))
-    return make_int ((int) (((unsigned short *) data) [0]));
-
-  /* Convert any other kind of data to a vector of numbers, represented
-     as above (as an integer, or a cons of two 16 bit integers).
-
-     #### Perhaps we should return the actual type to lisp as well.
-
-	(x-get-selection-internal 'PRIMARY 'LINE_NUMBER)
-	==> [4 4]
-
-     and perhaps it should be
-
-	(x-get-selection-internal 'PRIMARY 'LINE_NUMBER)
-	==> (SPAN . [4 4])
-
-     Right now the fact that the return type was SPAN is discarded before
-     lisp code gets to see it.
-   */
-  else if (format == 16)
-    {
-      int i;
-      Lisp_Object v = make_vector (size / 4, Qzero);
-      for (i = 0; i < (int) size / 4; i++)
-	{
-	  int j = (int) ((unsigned short *) data) [i];
-	  Faset (v, make_int (i), make_int (j));
-	}
-      return v;
-    }
-  else
-    {
-      int i;
-      Lisp_Object v = make_vector (size / 4, Qzero);
-      for (i = 0; i < (int) size / 4; i++)
-	{
-	  unsigned long j = ((unsigned long *) data) [i];
-	  Faset (v, make_int (i), word_to_lisp (j));
-	}
-      return v;
-    }
+  /* deleted */
 }
-
-
-static void
-lisp_data_to_selection_data (struct device *d,
-			     Lisp_Object obj,
-			     unsigned char **data_ret,
-			     GdkAtom *type_ret,
-			     unsigned int *size_ret,
-			     int *format_ret)
-{
-  Lisp_Object type = Qnil;
-
-  if (CONSP (obj) && SYMBOLP (XCAR (obj)))
-    {
-      type = XCAR (obj);
-      obj = XCDR (obj);
-      if (CONSP (obj) && NILP (XCDR (obj)))
-	obj = XCAR (obj);
-    }
-
-  if (EQ (obj, QNULL) || (EQ (type, QNULL)))
-    {				/* This is not the same as declining */
-      *format_ret = 32;
-      *size_ret = 0;
-      *data_ret = 0;
-      type = QNULL;
-    }
-  else if (STRINGP (obj))
-    {
-      const Extbyte *extval;
-      Extcount extvallen;
-
-      TO_EXTERNAL_FORMAT (LISP_STRING, obj,
-			  ALLOCA, (extval, extvallen),
-			  (NILP (type) ? Qctext : Qbinary));
-      *format_ret = 8;
-      *size_ret = extvallen;
-      *data_ret = (unsigned char *) xmalloc (*size_ret);
-      memcpy (*data_ret, extval, *size_ret);
-#ifdef MULE
-      if (NILP (type)) type = QCOMPOUND_TEXT;
-#else
-      if (NILP (type)) type = QSTRING;
-#endif
-    }
-  else if (CHARP (obj))
-    {
-      Bufbyte buf[MAX_EMCHAR_LEN];
-      Bytecount len;
-      const Extbyte *extval;
-      Extcount extvallen;
-
-      *format_ret = 8;
-      len = set_charptr_emchar (buf, XCHAR (obj));
-      TO_EXTERNAL_FORMAT (DATA, (buf, len),
-			  ALLOCA, (extval, extvallen),
-			  Qctext);
-      *size_ret = extvallen;
-      *data_ret = (unsigned char *) xmalloc (*size_ret);
-      memcpy (*data_ret, extval, *size_ret);
-#ifdef MULE
-      if (NILP (type)) type = QCOMPOUND_TEXT;
-#else
-      if (NILP (type)) type = QSTRING;
-#endif
-    }
-  else if (SYMBOLP (obj))
-    {
-      *format_ret = 32;
-      *size_ret = 1;
-      *data_ret = (unsigned char *) xmalloc (sizeof (GdkAtom) + 1);
-      (*data_ret) [sizeof (GdkAtom)] = 0;
-      (*(GdkAtom **) data_ret) [0] = symbol_to_gtk_atom (d, obj, 0);
-      if (NILP (type)) type = QATOM;
-    }
-  else if (INTP (obj) &&
-	   XINT (obj) <= 0x7FFF &&
-	   XINT (obj) >= -0x8000)
-    {
-      *format_ret = 16;
-      *size_ret = 1;
-      *data_ret = (unsigned char *) xmalloc (sizeof (short) + 1);
-      (*data_ret) [sizeof (short)] = 0;
-      (*(short **) data_ret) [0] = (short) XINT (obj);
-      if (NILP (type)) type = QINTEGER;
-    }
-  else if (INTP (obj) || CONSP (obj))
-    {
-      *format_ret = 32;
-      *size_ret = 1;
-      *data_ret = (unsigned char *) xmalloc (sizeof (long) + 1);
-      (*data_ret) [sizeof (long)] = 0;
-      (*(unsigned long **) data_ret) [0] = lisp_to_word (obj);
-      if (NILP (type)) type = QINTEGER;
-    }
-  else if (VECTORP (obj))
-    {
-      /* Lisp Vectors may represent a set of ATOMs;
-	 a set of 16 or 32 bit INTEGERs;
-	 or a set of ATOM_PAIRs (represented as [[A1 A2] [A3 A4] ...]
-       */
-      int i;
-
-      if (SYMBOLP (XVECTOR_DATA (obj) [0]))
-	/* This vector is an ATOM set */
-	{
-	  if (NILP (type)) type = QATOM;
-	  *size_ret = XVECTOR_LENGTH (obj);
-	  *format_ret = 32;
-	  *data_ret = (unsigned char *) xmalloc ((*size_ret) * sizeof (GdkAtom));
-	  for (i = 0; i < (int) (*size_ret); i++)
-	    if (SYMBOLP (XVECTOR_DATA (obj) [i]))
-	      (*(GdkAtom **) data_ret) [i] =
-		symbol_to_gtk_atom (d, XVECTOR_DATA (obj) [i], 0);
-	    else
-              syntax_error
-		("all elements of the vector must be of the same type", obj);
-	}
-#if 0 /* #### MULTIPLE doesn't work yet */
-      else if (VECTORP (XVECTOR_DATA (obj) [0]))
-	/* This vector is an ATOM_PAIR set */
-	{
-	  if (NILP (type)) type = QATOM_PAIR;
-	  *size_ret = XVECTOR_LENGTH (obj);
-	  *format_ret = 32;
-	  *data_ret = (unsigned char *)
-	    xmalloc ((*size_ret) * sizeof (Atom) * 2);
-	  for (i = 0; i < *size_ret; i++)
-	    if (VECTORP (XVECTOR_DATA (obj) [i]))
-	      {
-		Lisp_Object pair = XVECTOR_DATA (obj) [i];
-		if (XVECTOR_LENGTH (pair) != 2)
-		  syntax_error
-		    ("elements of the vector must be vectors of exactly two elements", pair);
-
-		(*(GdkAtom **) data_ret) [i * 2] =
-		  symbol_to_gtk_atom (d, XVECTOR_DATA (pair) [0], 0);
-		(*(GdkAtom **) data_ret) [(i * 2) + 1] =
-		  symbol_to_gtk_atom (d, XVECTOR_DATA (pair) [1], 0);
-	      }
-	    else
-	      syntax_error
-		("all elements of the vector must be of the same type", obj);
-	}
 #endif
-      else
-	/* This vector is an INTEGER set, or something like it */
-	{
-	  *size_ret = XVECTOR_LENGTH (obj);
-	  if (NILP (type)) type = QINTEGER;
-	  *format_ret = 16;
-	  for (i = 0; i < (int) (*size_ret); i++)
-	    if (CONSP (XVECTOR_DATA (obj) [i]))
-	      *format_ret = 32;
-	    else if (!INTP (XVECTOR_DATA (obj) [i]))
-	      syntax_error
-		("all elements of the vector must be integers or conses of integers", obj);
-
-	  *data_ret = (unsigned char *) xmalloc (*size_ret * (*format_ret/8));
-	  for (i = 0; i < (int) (*size_ret); i++)
-	    if (*format_ret == 32)
-	      (*((unsigned long **) data_ret)) [i] =
-		lisp_to_word (XVECTOR_DATA (obj) [i]);
-	    else
-	      (*((unsigned short **) data_ret)) [i] =
-		(unsigned short) lisp_to_word (XVECTOR_DATA (obj) [i]);
-	}
-    }
-  else
-    invalid_argument ("unrecognized selection data", obj);
-
-  *type_ret = symbol_to_gtk_atom (d, type, 0);
-}
 
 
 
diff --text -u 'xemacs-21.5.2/src/select-x.c' 'xemacs-21.5.3/src/select-x.c'
Index: ././src/select-x.c
--- ././src/select-x.c	Thu May 24 16:51:29 2001
+++ ././src/select-x.c	Mon Aug 13 13:46:40 2001
@@ -81,17 +81,6 @@
 
 /* Utility functions */
 
-static void lisp_data_to_selection_data (struct device *,
-					 Lisp_Object obj,
-					 unsigned char **data_ret,
-					 Atom *type_ret,
-					 unsigned int *size_ret,
-					 int *format_ret);
-static Lisp_Object selection_data_to_lisp_data (struct device *,
-						Extbyte *data,
-						size_t size,
-						Atom type,
-						int format);
 static Lisp_Object x_get_window_property_as_lisp_data (Display *,
 						       Window,
 						       Atom property,
@@ -142,7 +131,7 @@
 #endif /* CUT_BUFFER_SUPPORT */
 
   {
-    const char *nameext;
+    const Extbyte *nameext;
     LISP_STRING_TO_EXTERNAL (Fsymbol_name (sym), nameext, Qctext);
     return XInternAtom (display, nameext, only_if_exists ? True : False);
   }
@@ -200,6 +189,9 @@
   }
 }
 
+#define PROCESSING_X_CODE
+#include "select-common.h"
+#undef PROCESSING_X_CODE
 
 /* Do protocol to assert ourself as a selection owner.
  */
@@ -469,16 +461,16 @@
  */
 static void
 x_reply_selection_request (XSelectionRequestEvent *event, int format,
-			   unsigned char *data, int size, Atom type)
+			   UChar_Binary *data, Memory_Count size, Atom type)
 {
   /* This function can GC */
   XSelectionEvent reply;
   Display *display = event->display;
   struct device *d = get_device_from_display (display);
   Window window = event->requestor;
-  int bytes_remaining;
+  Memory_Count bytes_remaining;
   int format_bytes = format/8;
-  int max_bytes = SELECTION_QUANTUM (display);
+  Memory_Count max_bytes = SELECTION_QUANTUM (display);
   if (max_bytes > MAX_SELECTION_QUANTUM) max_bytes = MAX_SELECTION_QUANTUM;
 
   reply.type      = SelectionNotify;
@@ -521,7 +513,7 @@
 					PropertyDelete);
 
       XChangeProperty (display, window, reply.property, DEVICE_XATOM_INCR (d),
-		       32, PropModeReplace, (unsigned char *)
+		       32, PropModeReplace, (UChar_Binary *)
 		       &bytes_remaining, 1);
       XSelectInput (display, window, PropertyChangeMask);
       /* Tell 'em the INCR data is there... */
@@ -535,7 +527,7 @@
 
       while (bytes_remaining)
 	{
-	  int i = ((bytes_remaining < max_bytes)
+	  Memory_Count i = ((bytes_remaining < max_bytes)
 		   ? bytes_remaining
 		   : max_bytes);
 	  prop_id = expect_property_change (display, window, reply.property,
@@ -632,8 +624,8 @@
 			 make_opaque_ptr (event));
 
   {
-    unsigned char *data;
-    unsigned int size;
+    UChar_Binary *data;
+    Memory_Count size;
     int format;
     Atom type;
     lisp_data_to_selection_data (d, converted_selection,
@@ -848,8 +840,8 @@
 copy_multiple_data (Lisp_Object obj)
 {
   Lisp_Object vec;
-  int i;
-  int len;
+  Element_Count i;
+  Element_Count len;
   if (CONSP (obj))
     return Fcons (XCAR (obj), copy_multiple_data (XCDR (obj)));
 
@@ -954,16 +946,16 @@
 
 static void
 x_get_window_property (Display *display, Window window, Atom property,
-		       Extbyte **data_ret, int *bytes_ret,
+		       UChar_Binary **data_ret, Memory_Count *bytes_ret,
 		       Atom *actual_type_ret, int *actual_format_ret,
 		       unsigned long *actual_size_ret, int delete_p)
 {
-  size_t total_size;
+  Memory_Count total_size;
   unsigned long bytes_remaining;
-  int offset = 0;
-  unsigned char *tmp_data = 0;
+  Memory_Count offset = 0;
+  UChar_Binary *tmp_data = 0;
   int result;
-  int buffer_size = SELECTION_QUANTUM (display);
+  Memory_Count buffer_size = SELECTION_QUANTUM (display);
   if (buffer_size > MAX_SELECTION_QUANTUM) buffer_size = MAX_SELECTION_QUANTUM;
 
   /* First probe the thing to find out how big it is. */
@@ -989,13 +981,13 @@
     }
 
   total_size = bytes_remaining + 1;
-  *data_ret = (Extbyte *) xmalloc (total_size);
+  *data_ret = (UChar_Binary *) xmalloc (total_size);
 
   /* Now read, until we've gotten it all. */
   while (bytes_remaining)
     {
 #if 0
-      int last = bytes_remaining;
+      Memory_Count last = bytes_remaining;
 #endif
       result =
 	XGetWindowProperty (display, window, property,
@@ -1025,16 +1017,17 @@
 receive_incremental_selection (Display *display, Window window, Atom property,
 			       /* this one is for error messages only */
 			       Lisp_Object target_type,
-			       unsigned int min_size_bytes,
-			       Extbyte **data_ret, int *size_bytes_ret,
+			       Memory_Count min_size_bytes,
+			       UChar_Binary **data_ret,
+			       Memory_Count *size_bytes_ret,
 			       Atom *type_ret, int *format_ret,
 			       unsigned long *size_ret)
 {
   /* This function can GC */
-  int offset = 0;
+  Memory_Count offset = 0;
   int prop_id;
   *size_bytes_ret = min_size_bytes;
-  *data_ret = (Extbyte *) xmalloc (*size_bytes_ret);
+  *data_ret = (UChar_Binary *) xmalloc (*size_bytes_ret);
 #if 0
   stderr_out ("\nread INCR %d\n", min_size_bytes);
 #endif
@@ -1050,8 +1043,8 @@
 				    PropertyNewValue);
   while (1)
     {
-      Extbyte *tmp_data;
-      int tmp_size_bytes;
+      UChar_Binary *tmp_data;
+      Memory_Count tmp_size_bytes;
       wait_for_property_change (prop_id);
       /* expect it again immediately, because x_get_window_property may
 	 .. no it won't, I don't get it.
@@ -1082,7 +1075,7 @@
 		   *size_bytes_ret, offset + tmp_size_bytes);
 #endif
 	  *size_bytes_ret = offset + tmp_size_bytes;
-	  *data_ret = (Extbyte *) xrealloc (*data_ret, *size_bytes_ret);
+	  *data_ret = (UChar_Binary *) xrealloc (*data_ret, *size_bytes_ret);
 	}
       memcpy ((*data_ret) + offset, tmp_data, tmp_size_bytes);
       offset += tmp_size_bytes;
@@ -1103,8 +1096,8 @@
   Atom actual_type;
   int actual_format;
   unsigned long actual_size;
-  Extbyte *data = NULL;
-  int bytes = 0;
+  UChar_Binary *data = NULL;
+  Memory_Count bytes = 0;
   Lisp_Object val;
   struct device *d = get_device_from_display (display);
 
@@ -1132,7 +1125,9 @@
     {
       /* Ok, that data wasn't *the* data, it was just the beginning. */
 
-      unsigned int min_size_bytes = * ((unsigned int *) data);
+      Memory_Count min_size_bytes =
+	/* careful here. */
+	(Memory_Count) (* ((unsigned int *) data));
       xfree (data);
       receive_incremental_selection (display, window, property, target_type,
 				     min_size_bytes, &data, &bytes,
@@ -1148,298 +1143,6 @@
   xfree (data);
   return val;
 }
-
-/* #### These are going to move into Lisp code(!) with the aid of
-        some new functions I'm working on - ajh */
-
-/* These functions convert from the selection data read from the server into
-   something that we can use from elisp, and vice versa.
-
-	Type:	Format:	Size:		Elisp Type:
-	-----	-------	-----		-----------
-	*	8	*		String
-	ATOM	32	1		Symbol
-	ATOM	32	> 1		Vector of Symbols
-	*	16	1		Integer
-	*	16	> 1		Vector of Integers
-	*	32	1		if <=16 bits: Integer
-					if > 16 bits: Cons of top16, bot16
-	*	32	> 1		Vector of the above
-
-   When converting a Lisp number to C, it is assumed to be of format 16 if
-   it is an integer, and of format 32 if it is a cons of two integers.
-
-   When converting a vector of numbers from Elisp to C, it is assumed to be
-   of format 16 if every element in the vector is an integer, and is assumed
-   to be of format 32 if any element is a cons of two integers.
-
-   When converting an object to C, it may be of the form (SYMBOL . <data>)
-   where SYMBOL is what we should claim that the type is.  Format and
-   representation are as above.
-
-   NOTE: Under Mule, when someone shoves us a string without a type, we
-   set the type to 'COMPOUND_TEXT and automatically convert to Compound
-   Text.  If the string has a type, we assume that the user wants the
-   data sent as-is so we just do "binary" conversion.
- */
-
-
-static Lisp_Object
-selection_data_to_lisp_data (struct device *d,
-			     Extbyte *data,
-			     size_t size,
-			     Atom type,
-			     int format)
-{
-  if (type == DEVICE_XATOM_NULL (d))
-    return QNULL;
-
-  /* Convert any 8-bit data to a string, for compactness. */
-  else if (format == 8)
-    return make_ext_string (data, size,
-			    type == DEVICE_XATOM_TEXT (d) ||
-			    type == DEVICE_XATOM_COMPOUND_TEXT (d)
-			    ? Qctext : Qbinary);
-
-  /* Convert a single atom to a Lisp Symbol.
-     Convert a set of atoms to a vector of symbols. */
-  else if (type == XA_ATOM)
-    {
-      if (size == sizeof (Atom))
-	return x_atom_to_symbol (d, *((Atom *) data));
-      else
-	{
-	  int i;
-	  int len = size / sizeof (Atom);
-	  Lisp_Object v = Fmake_vector (make_int (len), Qzero);
-	  for (i = 0; i < len; i++)
-	    Faset (v, make_int (i), x_atom_to_symbol (d, ((Atom *) data) [i]));
-	  return v;
-	}
-    }
-
-  /* Convert a single 16 or small 32 bit number to a Lisp Int.
-     If the number is > 16 bits, convert it to a cons of integers,
-     16 bits in each half.
-   */
-  else if (format == 32 && size == sizeof (long))
-    return word_to_lisp (((unsigned long *) data) [0]);
-  else if (format == 16 && size == sizeof (short))
-    return make_int ((int) (((unsigned short *) data) [0]));
-
-  /* Convert any other kind of data to a vector of numbers, represented
-     as above (as an integer, or a cons of two 16 bit integers).
-
-     #### Perhaps we should return the actual type to lisp as well.
-
-	(x-get-selection-internal 'PRIMARY 'LINE_NUMBER)
-	==> [4 4]
-
-     and perhaps it should be
-
-	(x-get-selection-internal 'PRIMARY 'LINE_NUMBER)
-	==> (SPAN . [4 4])
-
-     Right now the fact that the return type was SPAN is discarded before
-     lisp code gets to see it.
-   */
-  else if (format == 16)
-    {
-      int i;
-      Lisp_Object v = make_vector (size / 4, Qzero);
-      for (i = 0; i < (int) size / 4; i++)
-	{
-	  int j = (int) ((unsigned short *) data) [i];
-	  Faset (v, make_int (i), make_int (j));
-	}
-      return v;
-    }
-  else
-    {
-      int i;
-      Lisp_Object v = make_vector (size / 4, Qzero);
-      for (i = 0; i < (int) size / 4; i++)
-	{
-	  unsigned long j = ((unsigned long *) data) [i];
-	  Faset (v, make_int (i), word_to_lisp (j));
-	}
-      return v;
-    }
-}
-
-
-static void
-lisp_data_to_selection_data (struct device *d,
-			     Lisp_Object obj,
-			     unsigned char **data_ret,
-			     Atom *type_ret,
-			     unsigned int *size_ret,
-			     int *format_ret)
-{
-  Lisp_Object type = Qnil;
-
-  if (CONSP (obj) && SYMBOLP (XCAR (obj)))
-    {
-      type = XCAR (obj);
-      obj = XCDR (obj);
-      if (CONSP (obj) && NILP (XCDR (obj)))
-	obj = XCAR (obj);
-    }
-
-  if (EQ (obj, QNULL) || (EQ (type, QNULL)))
-    {				/* This is not the same as declining */
-      *format_ret = 32;
-      *size_ret = 0;
-      *data_ret = 0;
-      type = QNULL;
-    }
-  else if (STRINGP (obj))
-    {
-      const Extbyte *extval;
-      Extcount extvallen;
-
-      TO_EXTERNAL_FORMAT (LISP_STRING, obj,
-			  ALLOCA, (extval, extvallen),
-			  (NILP (type) ? Qctext : Qbinary));
-      *format_ret = 8;
-      *size_ret = extvallen;
-      *data_ret = (unsigned char *) xmalloc (*size_ret);
-      memcpy (*data_ret, extval, *size_ret);
-#ifdef MULE
-      if (NILP (type)) type = QCOMPOUND_TEXT;
-#else
-      if (NILP (type)) type = QSTRING;
-#endif
-    }
-  else if (CHARP (obj))
-    {
-      Bufbyte buf[MAX_EMCHAR_LEN];
-      Bytecount len;
-      const Extbyte *extval;
-      Extcount extvallen;
-
-      *format_ret = 8;
-      len = set_charptr_emchar (buf, XCHAR (obj));
-      TO_EXTERNAL_FORMAT (DATA, (buf, len),
-			  ALLOCA, (extval, extvallen),
-			  Qctext);
-      *size_ret = extvallen;
-      *data_ret = (unsigned char *) xmalloc (*size_ret);
-      memcpy (*data_ret, extval, *size_ret);
-#ifdef MULE
-      if (NILP (type)) type = QCOMPOUND_TEXT;
-#else
-      if (NILP (type)) type = QSTRING;
-#endif
-    }
-  else if (SYMBOLP (obj))
-    {
-      *format_ret = 32;
-      *size_ret = 1;
-      *data_ret = (unsigned char *) xmalloc (sizeof (Atom) + 1);
-      (*data_ret) [sizeof (Atom)] = 0;
-      (*(Atom **) data_ret) [0] = symbol_to_x_atom (d, obj, 0);
-      if (NILP (type)) type = QATOM;
-    }
-  else if (INTP (obj) &&
-	   XINT (obj) <= 0x7FFF &&
-	   XINT (obj) >= -0x8000)
-    {
-      *format_ret = 16;
-      *size_ret = 1;
-      *data_ret = (unsigned char *) xmalloc (sizeof (short) + 1);
-      (*data_ret) [sizeof (short)] = 0;
-      (*(short **) data_ret) [0] = (short) XINT (obj);
-      if (NILP (type)) type = QINTEGER;
-    }
-  else if (INTP (obj) || CONSP (obj))
-    {
-      *format_ret = 32;
-      *size_ret = 1;
-      *data_ret = (unsigned char *) xmalloc (sizeof (long) + 1);
-      (*data_ret) [sizeof (long)] = 0;
-      (*(unsigned long **) data_ret) [0] = lisp_to_word (obj);
-      if (NILP (type)) type = QINTEGER;
-    }
-  else if (VECTORP (obj))
-    {
-      /* Lisp Vectors may represent a set of ATOMs;
-	 a set of 16 or 32 bit INTEGERs;
-	 or a set of ATOM_PAIRs (represented as [[A1 A2] [A3 A4] ...]
-       */
-      int i;
-
-      if (SYMBOLP (XVECTOR_DATA (obj) [0]))
-	/* This vector is an ATOM set */
-	{
-	  if (NILP (type)) type = QATOM;
-	  *size_ret = XVECTOR_LENGTH (obj);
-	  *format_ret = 32;
-	  *data_ret = (unsigned char *) xmalloc ((*size_ret) * sizeof (Atom));
-	  for (i = 0; i < (int) (*size_ret); i++)
-	    if (SYMBOLP (XVECTOR_DATA (obj) [i]))
-	      (*(Atom **) data_ret) [i] =
-		symbol_to_x_atom (d, XVECTOR_DATA (obj) [i], 0);
-	    else
-              syntax_error
-		("all elements of the vector must be of the same type", obj);
-	}
-#if 0 /* #### MULTIPLE doesn't work yet */
-      else if (VECTORP (XVECTOR_DATA (obj) [0]))
-	/* This vector is an ATOM_PAIR set */
-	{
-	  if (NILP (type)) type = QATOM_PAIR;
-	  *size_ret = XVECTOR_LENGTH (obj);
-	  *format_ret = 32;
-	  *data_ret = (unsigned char *)
-	    xmalloc ((*size_ret) * sizeof (Atom) * 2);
-	  for (i = 0; i < *size_ret; i++)
-	    if (VECTORP (XVECTOR_DATA (obj) [i]))
-	      {
-		Lisp_Object pair = XVECTOR_DATA (obj) [i];
-		if (XVECTOR_LENGTH (pair) != 2)
-		  syntax_error
-		    ("elements of the vector must be vectors of exactly two elements", pair);
-
-		(*(Atom **) data_ret) [i * 2] =
-		  symbol_to_x_atom (d, XVECTOR_DATA (pair) [0], 0);
-		(*(Atom **) data_ret) [(i * 2) + 1] =
-		  symbol_to_x_atom (d, XVECTOR_DATA (pair) [1], 0);
-	      }
-	    else
-	      syntax_error
-		("all elements of the vector must be of the same type", obj);
-	}
-#endif
-      else
-	/* This vector is an INTEGER set, or something like it */
-	{
-	  *size_ret = XVECTOR_LENGTH (obj);
-	  if (NILP (type)) type = QINTEGER;
-	  *format_ret = 16;
-	  for (i = 0; i < (int) (*size_ret); i++)
-	    if (CONSP (XVECTOR_DATA (obj) [i]))
-	      *format_ret = 32;
-	    else if (!INTP (XVECTOR_DATA (obj) [i]))
-	      syntax_error
-		("all elements of the vector must be integers or conses of integers", obj);
-
-	  *data_ret = (unsigned char *) xmalloc (*size_ret * (*format_ret/8));
-	  for (i = 0; i < (int) (*size_ret); i++)
-	    if (*format_ret == 32)
-	      (*((unsigned long **) data_ret)) [i] =
-		lisp_to_word (XVECTOR_DATA (obj) [i]);
-	    else
-	      (*((unsigned short **) data_ret)) [i] =
-		(unsigned short) lisp_to_word (XVECTOR_DATA (obj) [i]);
-	}
-    }
-  else
-    invalid_argument ("unrecognized selection data", obj);
-
-  *type_ret = symbol_to_x_atom (d, type, 0);
-}
-
 
 
 /* Called from the event loop to handle SelectionNotify events.
@@ -1541,8 +1244,8 @@
   Display *display = DEVICE_X_DISPLAY (d);
   Window window = RootWindow (display, 0); /* Cutbuffers are on frame 0 */
   Atom cut_buffer_atom;
-  Extbyte *data;
-  int bytes;
+  UChar_Binary *data;
+  Memory_Count bytes;
   Atom type;
   int format;
   unsigned long size;
@@ -1565,7 +1268,7 @@
      COMPOUND_TEXT that we stored there ourselves earlier,
      in x-store-cutbuffer-internal  */
   ret = (bytes ?
-	 make_ext_string (data, bytes,
+	 make_ext_string ((Extbyte *) data, bytes,
 			  memchr (data, 0x1b, bytes) ?
 			  Qctext : Qbinary)
 	 : Qnil);
@@ -1586,7 +1289,7 @@
   const Bufbyte *data  = XSTRING_DATA (string);
   Bytecount bytes = XSTRING_LENGTH (string);
   Bytecount bytes_remaining;
-  int max_bytes = SELECTION_QUANTUM (display);
+  Memory_Count max_bytes = SELECTION_QUANTUM (display);
 #ifdef MULE
   const Bufbyte *ptr, *end;
   enum { ASCII, LATIN_1, WORLD } chartypes = ASCII;
@@ -1643,7 +1346,8 @@
 
   while (bytes_remaining)
     {
-      int chunk = bytes_remaining < max_bytes ? bytes_remaining : max_bytes;
+      Memory_Count chunk =
+	bytes_remaining < max_bytes ? bytes_remaining : max_bytes;
       XChangeProperty (display, window, cut_buffer_atom, XA_STRING, 8,
 		       (bytes_remaining == bytes
 			? PropModeReplace : PropModeAppend),
diff --text -u /dev/null 'xemacs-21.5.3/src/sheap-adjust.h'
Index: ././src/sheap-adjust.h
--- ././src/sheap-adjust.h	Thu Jan  1 09:00:00 1970
+++ ././src/sheap-adjust.h	Fri Sep  7 18:15:56 2001
@@ -0,0 +1,3 @@
+/*	Do not edit this file!
+  	Automatically generated by XEmacs */
+#define SHEAP_ADJUSTMENT 0
diff --text -u 'xemacs-21.5.2/src/sheap.c' 'xemacs-21.5.3/src/sheap.c'
Index: ././src/sheap.c
--- ././src/sheap.c	Thu May 24 16:51:29 2001
+++ ././src/sheap.c	Mon Aug 13 13:46:40 2001
@@ -126,7 +126,7 @@
 {
   int rc = 0;
 
-  size_t lost = (STATIC_HEAP_BASE + STATIC_HEAP_SLOP + SHEAP_ADJUSTMENT)
+  Memory_Count lost = (STATIC_HEAP_BASE + STATIC_HEAP_SLOP + SHEAP_ADJUSTMENT)
     - (static_heap_ptr - static_heap_buffer);
   char buf[200];
   sprintf (buf, "Static heap usage: %ld of %ld",
diff --text -u 'xemacs-21.5.2/src/specifier.c' 'xemacs-21.5.3/src/specifier.c'
Index: ././src/specifier.c
--- ././src/specifier.c	Fri May 25 20:26:59 2001
+++ ././src/specifier.c	Mon Aug 13 13:46:40 2001
@@ -350,15 +350,15 @@
 		internal_hash (s->buffer_specs, depth + 1));
 }
 
-inline static size_t
-aligned_sizeof_specifier (size_t specifier_type_specific_size)
+inline static Memory_Count
+aligned_sizeof_specifier (Memory_Count specifier_type_specific_size)
 {
   return ALIGN_SIZE (offsetof (Lisp_Specifier, data)
 		     + specifier_type_specific_size,
 		     ALIGNOF (max_align_t));
 }
 
-static size_t
+static Memory_Count
 sizeof_specifier (const void *header)
 {
   const Lisp_Specifier *p = (const Lisp_Specifier *) header;
@@ -473,7 +473,7 @@
 
 static Lisp_Object
 make_specifier_internal (struct specifier_methods *spec_meths,
-			 size_t data_size, int call_create_meth)
+			 Memory_Count data_size, int call_create_meth)
 {
   Lisp_Object specifier;
   Lisp_Specifier *sp = (Lisp_Specifier *)
diff --text -u 'xemacs-21.5.2/src/symbols.c' 'xemacs-21.5.3/src/symbols.c'
Index: ././src/symbols.c
--- ././src/symbols.c	Thu May 24 16:51:30 2001
+++ ././src/symbols.c	Mon Aug 13 13:46:40 2001
@@ -3274,9 +3274,9 @@
   int i;
 
   if (multiword_predicate_p)
-    assert (len + 1 < sizeof (temp));
+    assert (len + 1 < (int) sizeof (temp));
   else
-    assert (len < sizeof (temp));
+    assert (len < (int) sizeof (temp));
   strcpy (temp, name + 1); /* Remove initial Q */
   if (multiword_predicate_p)
     {
@@ -3349,7 +3349,7 @@
   char temp[500];
   int len = strlen (name);
 
-  assert (len < sizeof (temp));
+  assert (len < (int) sizeof (temp));
   strcpy (temp, name);
   temp[1] = ':'; /* it's an underscore in the C variable */
 
@@ -3485,7 +3485,7 @@
   int i;
   int len = strlen (name) - 1;
 
-  assert (len < sizeof (temp));
+  assert (len < (int) sizeof (temp));
   strcpy (temp, name + 1); /* Remove initial Q */
   temp[0] = toupper (temp[0]);
   for (i = 0; i < len; i++)
diff --text -u 'xemacs-21.5.2/src/sysdep.c' 'xemacs-21.5.3/src/sysdep.c'
Index: ././src/sysdep.c
--- ././src/sysdep.c	Sun Jun 10 19:42:33 2001
+++ ././src/sysdep.c	Mon Aug 13 13:46:41 2001
@@ -818,7 +818,7 @@
     tcgetattr (fd, &t);
 #if 0
     /* What is the following line designed to do??? -mrb */
-    if (strlen ((const char *) t.c_cc) < (unsigned int) (VEOF + 1))
+    if ((int) strlen ((const char *) t.c_cc) < (VEOF + 1))
       return ctrl_d;
     else
       return (Bufbyte) t.c_cc[VEOF];
@@ -841,7 +841,7 @@
   {
     struct termio t;
     ioctl (fd, TCGETA, &t);
-    if (strlen ((const char *) t.c_cc) < (unsigned int) (VINTR + 1))
+    if ((int) strlen ((const char *) t.c_cc) < (VINTR + 1))
       return ctrl_d;
     else
       return (Bufbyte) t.c_cc[VINTR];
@@ -933,7 +933,6 @@
 void
 init_baud_rate (struct device *d)
 {
-  struct console *con = XCONSOLE (DEVICE_CONSOLE (d));
   if (DEVICE_WIN_P (d) || DEVICE_STREAM_P (d))
     {
       DEVICE_BAUD_RATE (d) = 38400;
@@ -943,6 +942,7 @@
 #ifdef HAVE_TTY
   assert (DEVICE_TTY_P (d));
   {
+    struct console *con = XCONSOLE (DEVICE_CONSOLE (d));
     int input_fd = CONSOLE_TTY_DATA (con)->infd;
 #if defined (WIN32_NATIVE)
     DEVICE_TTY_DATA (d)->ospeed = 15;
@@ -1767,7 +1767,8 @@
   /* This symbol is defined on recent USG systems.
      Someone says without this call USG won't really buffer the file
      even with a call to setbuf. */
-  setvbuf (CONSOLE_TTY_DATA (con)->outfd, (char *) _sobuf, _IOFBF, sizeof _sobuf);
+  setvbuf (CONSOLE_TTY_DATA (con)->outfd, (char *) _sobuf, _IOFBF,
+	   sizeof (_sobuf));
 #else
   setbuf (CONSOLE_TTY_DATA (con)->outfd, (char *) _sobuf);
 #endif
@@ -2296,7 +2297,7 @@
 {
 #if defined (WIN32_NATIVE)
   char hostname [MAX_COMPUTERNAME_LENGTH + 1];
-  size_t size = sizeof (hostname);
+  DWORD size = sizeof (hostname);
   GetComputerName (hostname, &size);
   Vsystem_name = build_string (hostname);
 #elif !defined (HAVE_GETHOSTNAME)
@@ -2304,7 +2305,7 @@
   uname (&uts);
   Vsystem_name = build_string (uts.nodename);
 #else /* HAVE_GETHOSTNAME */
-  unsigned int hostname_size = 256;
+  int hostname_size = 256;
   char *hostname = (char *) alloca (hostname_size);
 
   /* Try to get the host name; if the buffer is too short, try
@@ -2317,7 +2318,7 @@
       hostname[hostname_size - 1] = '\0';
 
       /* Was the buffer large enough for the '\0'?  */
-      if (strlen (hostname) < (size_t) (hostname_size - 1))
+      if ((int) strlen (hostname) < (hostname_size - 1))
 	break;
 
       hostname_size <<= 1;
diff --text -u 'xemacs-21.5.2/src/sysdir.h' 'xemacs-21.5.3/src/sysdir.h'
Index: ././src/sysdir.h
--- ././src/sysdir.h	Fri Apr 13 03:24:22 2001
+++ ././src/sysdir.h	Mon Aug 13 13:46:41 2001
@@ -28,7 +28,9 @@
 #endif
 
 #ifdef SYSV_SYSTEM_DIR
+# define select select_ /* Shadowing yuck */
 # include <dirent.h>
+# undef select
 #elif defined (WIN32_NATIVE)
 # include <direct.h>
 # include "ndir.h"
diff --text -u 'xemacs-21.5.2/src/tests.c' 'xemacs-21.5.3/src/tests.c'
Index: ././src/tests.c
--- ././src/tests.c	Mon Apr 30 17:49:26 2001
+++ ././src/tests.c	Mon Aug 13 13:46:41 2001
@@ -40,7 +40,7 @@
 */
        ())
 {
-  void *ptr; size_t len;
+  void *ptr; Memory_Count len;
   Lisp_Object string, opaque;
 
   Bufbyte int_foo[] = "\n\nfoo\nbar";
diff --text -u 'xemacs-21.5.2/src/tparam.c' 'xemacs-21.5.3/src/tparam.c'
Index: ././src/tparam.c
--- ././src/tparam.c	Mon May 21 14:26:07 2001
+++ ././src/tparam.c	Mon Aug 13 13:46:41 2001
@@ -21,11 +21,8 @@
 /* Synched up with: Not synched with FSF. */
 
 /* config.h may rename various library functions such as malloc.  */
-#ifdef emacs
-
 #include <config.h>
-
-#include <string.h>
+#include "lisp.h"
 
 #undef realloc
 #undef malloc
@@ -33,15 +30,8 @@
 #define realloc xrealloc
 #define malloc xmalloc
 #define free xfree
-extern void *xmalloc (size_t size);
-extern void *xrealloc (void *, size_t size);
-
-#else /* !emacs */
-
-#include <stdlib.h>
-#include <string.h>
-
-#endif /* !emacs */
+extern void *xmalloc (Memory_Count size);
+extern void *xrealloc (void *, Memory_Count size);
 
 /* Assuming STRING is the value of a termcap string entry
    containing `%' constructs to expand parameters,
@@ -271,21 +261,3 @@
     strcat (op, left);
   return outstring;
 }
-
-#ifdef DEBUG
-
-main (argc, argv)
-     int argc;
-     char **argv;
-{
-  char buf[50];
-  int args[3];
-  args[0] = atoi (argv[2]);
-  args[1] = atoi (argv[3]);
-  args[2] = atoi (argv[4]);
-  tparam1 (argv[1], buf, "LEFT", "UP", args);
-  printf ("%s\n", buf);
-  return 0;
-}
-
-#endif /* DEBUG */
diff --text -u 'xemacs-21.5.2/src/unexaix.c' 'xemacs-21.5.3/src/unexaix.c'
Index: ././src/unexaix.c
--- ././src/unexaix.c	Thu May 24 16:51:32 2001
+++ ././src/unexaix.c	Mon Aug 13 13:46:41 2001
@@ -492,7 +492,7 @@
   else
     lseek (a_out, orig_load_scnptr, SEEK_SET); /* Position a.out to symtab. */
 
-  while ((n = read (a_out, page, sizeof page)) > 0)
+  while ((n = read (a_out, page, sizeof (page))) > 0)
     {
       if (write (new, page, n) != n)
 	{
diff --text -u 'xemacs-21.5.2/src/unexconvex.c' 'xemacs-21.5.3/src/unexconvex.c'
Index: ././src/unexconvex.c
--- ././src/unexconvex.c	Thu May 24 16:51:33 2001
+++ ././src/unexconvex.c	Mon Aug 13 13:46:42 2001
@@ -493,7 +493,7 @@
     if( lseek( new, (long) sptr->s_scnptr, 0 ) == -1 )
 	PERROR( "unexecing" );
 
-    memset (zeros, 0, sizeof zeros);
+    memset (zeros, 0, sizeof (zeros));
 
     ptr = (char *) sptr->s_vaddr;
     end = ptr + sptr->s_size;
@@ -543,7 +543,7 @@
     lseek (a_out, SYMS_START, 0);	/* Position a.out to symtab. */
     lseek( new, (long)f_ohdr.o_symptr, 0 );
 
-    while ((n = read (a_out, page, sizeof page)) > 0) {
+    while ((n = read (a_out, page, sizeof (page))) > 0) {
 	if (write (new, page, n) != n) {
 	    PERROR (new_name);
 	}
diff --text -u 'xemacs-21.5.2/src/unexcw.c' 'xemacs-21.5.3/src/unexcw.c'
Index: ././src/unexcw.c
--- ././src/unexcw.c	Sun Jun 10 19:42:34 2001
+++ ././src/unexcw.c	Mon Aug 13 13:46:42 2001
@@ -38,7 +38,7 @@
 #if !defined (HAVE_A_OUT_H) && !defined (WIN32_NATIVE)
 unexec (char *, char *, void *, void *,	void *)
 {
-  PERROR("cannot unexec() a.out.h not installed");
+  PERROR ("cannot unexec() a.out.h not installed");
 }
 #else
 
@@ -49,9 +49,9 @@
 #endif
 
 #define ALLOC_UNIT 0xFFFF
-#define ALLOC_MASK ~((unsigned long)(ALLOC_UNIT))
+#define ALLOC_MASK ~((unsigned long) (ALLOC_UNIT))
 #define ALIGN_ALLOC(addr) \
-((((unsigned long)addr) + ALLOC_UNIT) & ALLOC_MASK)
+((((unsigned long) addr) + ALLOC_UNIT) & ALLOC_MASK)
 /* Note that all sections must be aligned on a 0x1000 boundary so
    this is the minimum size that our dummy bss can be. */
 #ifndef NO_DEBUG
@@ -67,30 +67,32 @@
 
 static void get_section_info (int a_out, char* a_name);
 static void copy_executable_and_dump_data_section (int a_out, int a_new);
-static void dup_file_area(int a_out, int a_new, long size);
+static void dup_file_area (int a_out, int a_new, long size);
 #if 0
-static void write_int_to_bss(int a_out, int a_new, void* va, void* newval);
+static void write_int_to_bss (int a_out, int a_new, void* va, void* newval);
 #endif
 
 /* Cached info about the .data section in the executable.  */
-void* data_start_va = UNINIT_PTR;
-unsigned long  data_size = UNINIT_LONG;
+void *data_start_va = UNINIT_PTR;
+long data_size = UNINIT_LONG;
 
 /* Cached info about the .bss section in the executable.  */
-void* bss_start = UNINIT_PTR;
-unsigned long  bss_size = UNINIT_LONG;
+void *bss_start = UNINIT_PTR;
+long bss_size = UNINIT_LONG;
 int sections_reversed = 0;
 FILHDR f_hdr;
 PEAOUTHDR f_ohdr;
 SCNHDR f_data, f_bss, f_text, f_nextdata;
 
-#define CHECK_AOUT_POS(a)			\
-if (lseek(a_out, 0, SEEK_CUR) != a)		\
-{						\
-  printf("we are at %lx, should be at %lx\n",	\
-	 lseek(a_out, 0, SEEK_CUR), a);		\
-  exit(-1);					\
-}
+#define CHECK_AOUT_POS(a)				\
+do {							\
+  if (lseek (a_out, 0, SEEK_CUR) != a)			\
+    {							\
+      printf ("we are at %lx, should be at %lx\n",	\
+	      lseek (a_out, 0, SEEK_CUR), a);		\
+      exit (-1);					\
+    }							\
+} while (0)
 
 /* Dump out .data and .bss sections into a new executable.  */
 int
@@ -129,8 +131,8 @@
 
   copy_executable_and_dump_data_section (a_out, a_new);
 
-  close(a_out);
-  close(a_new);
+  close (a_out);
+  close (a_new);
   return 0;
 }
 
@@ -146,11 +148,11 @@
     PERROR (a_name);
 
   if (f_hdr.e_magic != DOSMAGIC) 
-    PERROR("unknown exe header");
+    PERROR ("unknown exe header");
 
   /* Check the NT header signature ...  */
   if (f_hdr.nt_signature != NT_SIGNATURE) 
-    PERROR("invalid nt header");
+    PERROR ("invalid nt header");
 
   /* Flip through the sections for .data and .bss ...  */
   if (f_hdr.f_opthdr > 0)
@@ -172,11 +174,11 @@
     PERROR ("no .bss / .data section");
 
   /* check for reversed .bss and .data */
-  if (!strcmp(f_bss.s_name, ".data"))
+  if (!strcmp (f_bss.s_name, ".data"))
     {
-      printf(".data and .bss reversed\n");
+      printf (".data and .bss reversed\n");
       sections_reversed = 1;
-      memcpy(&f_data, &f_bss, sizeof(f_bss));
+      memcpy (&f_data, &f_bss, sizeof (f_bss));
     }
 
   /* The .data section.  */
@@ -197,7 +199,7 @@
   bss_size = (unsigned long)((char*)&my_ebss-(char*)bss_start);
   
   /* must keep bss data that we want to be blank as blank */
-  printf("found bss - keeping %lx of %lx bytes\n", bss_size, f_ohdr.bsize);
+  printf ("found bss - keeping %lx of %lx bytes\n", bss_size, f_ohdr.bsize);
 
   /* The .data section.  */
   data_start_va = (void *) ((char*)f_ohdr.ImageBase + f_data.s_vaddr);
@@ -207,12 +209,11 @@
      then a dumped Emacs won't run on system versions other
      than the one Emacs was dumped on).  */
   data_size = (unsigned long)my_edata - (unsigned long)data_start_va;
-  printf("found data - keeping %lx of %lx bytes\n", data_size, f_ohdr.dsize);
+  printf ("found data - keeping %lx of %lx bytes\n", data_size, f_ohdr.dsize);
 
   /* The following data section - often .idata */
   if (read (a_out, &f_nextdata, sizeof (f_nextdata)) != sizeof (f_nextdata)
-      &&
-      strcmp (&f_nextdata.s_name[2], "data"))
+      && strcmp (&f_nextdata.s_name[2], "data"))
     PERROR ("no other data section");
 }
 
@@ -221,13 +222,17 @@
 static void
 copy_executable_and_dump_data_section (int a_out, int a_new)
 {
-  long size=0;
-  unsigned long new_data_size, new_bss_size, 
-  bss_padding, file_sz_change, data_padding=0,
-  f_data_s_vaddr = f_data.s_vaddr,
-  f_data_s_scnptr = f_data.s_scnptr,
-  f_bss_s_vaddr = f_bss.s_vaddr, 
-  f_nextdata_s_scnptr = f_nextdata.s_scnptr;
+  long size = 0;
+  /* NOTE: Some of these were previously declared as unsigned long,
+     but the ones changed to long represent file sizes or pointers,
+     which can't reasonably get above 2G. (A 2G executable???)
+     Furthermore, some were even being compared as in if (x < 0) ... */
+  long new_data_size, new_bss_size, bss_padding, file_sz_change;
+  long data_padding = 0;
+  long f_data_s_scnptr = f_data.s_scnptr;
+  long f_nextdata_s_scnptr = f_nextdata.s_scnptr;
+  unsigned long f_data_s_vaddr = f_data.s_vaddr;
+  unsigned long f_bss_s_vaddr = f_bss.s_vaddr;
 
   int i;
   void* empty_space;
@@ -268,15 +273,15 @@
   if ((new_bss_size - bss_size) < BSS_PAD_SIZE)
     PERROR (".bss free space too small");
 
-  file_sz_change=(new_bss_size + data_padding) - BSS_PAD_SIZE;
-  new_data_size=f_ohdr.dsize + file_sz_change;
+  file_sz_change = (new_bss_size + data_padding) - BSS_PAD_SIZE;
+  new_data_size = f_ohdr.dsize + file_sz_change;
 
   if (!sections_reversed)
     f_data.s_vaddr = f_bss.s_vaddr;
   f_data.s_paddr += file_sz_change;
 #if 0 
   if (f_data.s_size + f_nextdata.s_size != f_ohdr.dsize)
-    printf("section size doesn't tally with dsize %lx != %lx\n", 
+    printf ("section size doesn't tally with dsize %lx != %lx\n", 
 	   f_data.s_size + f_nextdata.s_size, f_ohdr.dsize);
 #endif
   f_data.s_size += file_sz_change;
@@ -287,24 +292,24 @@
   f_hdr.f_nscns--;
 #endif
 
-  printf("writing file header\n");
-  if (write(a_new, &f_hdr, sizeof(f_hdr)) != sizeof(f_hdr))
-    PERROR("failed to write file header");
+  printf ("writing file header\n");
+  if (write (a_new, &f_hdr, sizeof (f_hdr)) != sizeof (f_hdr))
+    PERROR ("failed to write file header");
   /* write optional header fixing dsize & bsize*/
-  printf("writing optional header\n");
-  printf("new data size is %lx, >= %lx\n", new_data_size,
+  printf ("writing optional header\n");
+  printf ("new data size is %lx, >= %lx\n", new_data_size,
 	 f_ohdr.dsize + f_ohdr.bsize);
-  if (new_data_size < f_ohdr.dsize + f_ohdr.bsize )
-    printf("warning: new data size is < approx\n");
+  if (new_data_size < (long) (f_ohdr.dsize + f_ohdr.bsize))
+    printf ("warning: new data size is < approx\n");
   f_ohdr.dsize=new_data_size;
   f_ohdr.bsize=BSS_PAD_SIZE;
-  if (write(a_new, &f_ohdr, sizeof(f_ohdr)) != sizeof(f_ohdr))
-    PERROR("failed to write optional header");
+  if (write (a_new, &f_ohdr, sizeof (f_ohdr)) != sizeof (f_ohdr))
+    PERROR ("failed to write optional header");
   /* write text as is */
-  printf("writing text header (unchanged)\n");
+  printf ("writing text header (unchanged)\n");
 
-  if (write(a_new, &f_text, sizeof(f_text)) != sizeof(f_text))
-    PERROR("failed to write text header");
+  if (write (a_new, &f_text, sizeof (f_text)) != sizeof (f_text))
+    PERROR ("failed to write text header");
 #ifndef NO_DEBUG
   /* Write small bss section. */
   if (!sections_reversed)
@@ -312,15 +317,15 @@
       f_bss.s_size = BSS_PAD_SIZE;
       f_bss.s_paddr = BSS_PAD_SIZE;
       f_bss.s_vaddr = f_data.s_vaddr - BSS_PAD_SIZE;
-      if (write(a_new, &f_bss, sizeof(f_bss)) != sizeof(f_bss))
-	PERROR("failed to write bss header");
+      if (write (a_new, &f_bss, sizeof (f_bss)) != sizeof (f_bss))
+	PERROR ("failed to write bss header");
     }
 #endif
   /* write new data header */
-  printf("writing .data header\n");
+  printf ("writing .data header\n");
 
-  if (write(a_new, &f_data, sizeof(f_data)) != sizeof(f_data))
-    PERROR("failed to write data header");
+  if (write (a_new, &f_data, sizeof (f_data)) != sizeof (f_data))
+    PERROR ("failed to write data header");
 #ifndef NO_DEBUG
   /* Write small bss section. */
   if (sections_reversed)
@@ -328,16 +333,16 @@
       f_bss.s_size = BSS_PAD_SIZE;
       f_bss.s_paddr = BSS_PAD_SIZE;
       f_bss.s_vaddr = f_nextdata.s_vaddr - BSS_PAD_SIZE;
-      if (write(a_new, &f_bss, sizeof(f_bss)) != sizeof(f_bss))
-	PERROR("failed to write bss header");
+      if (write (a_new, &f_bss, sizeof (f_bss)) != sizeof (f_bss))
+	PERROR ("failed to write bss header");
     }
 #endif
-  printf("writing following data header\n");
+  printf ("writing following data header\n");
   f_nextdata.s_scnptr += file_sz_change;
   if (f_nextdata.s_lnnoptr != 0) f_nextdata.s_lnnoptr += file_sz_change;
   if (f_nextdata.s_relptr != 0) f_nextdata.s_relptr += file_sz_change;
-  if (write(a_new, &f_nextdata, sizeof(f_nextdata)) != sizeof(f_nextdata))
-    PERROR("failed to write nextdata header");
+  if (write (a_new, &f_nextdata, sizeof (f_nextdata)) != sizeof (f_nextdata))
+    PERROR ("failed to write nextdata header");
 
   /* copy other section headers adjusting the file offset */
   for (i=0; i<(f_hdr.f_nscns-3); i++)
@@ -349,140 +354,142 @@
       if (section.s_lnnoptr != 0) section.s_lnnoptr += file_sz_change;
       if (section.s_relptr != 0) section.s_relptr += file_sz_change;
 
-      if (write(a_new, &section, sizeof(section)) != sizeof(section))
-	PERROR("failed to write data header");
+      if (write (a_new, &section, sizeof (section)) != sizeof (section))
+	PERROR ("failed to write data header");
     }
 #ifdef NO_DEBUG
   /* dump bss to maintain offsets */
-  memset(&f_bss, 0, sizeof(f_bss));
-  if (write(a_new, &f_bss, sizeof(f_bss)) != sizeof(f_bss))
-    PERROR("failed to write bss header");
+  memset (&f_bss, 0, sizeof (f_bss));
+  if (write (a_new, &f_bss, sizeof (f_bss)) != sizeof (f_bss))
+    PERROR ("failed to write bss header");
 #endif
-  size=lseek(a_new, 0, SEEK_CUR);
-  CHECK_AOUT_POS(size);
+  size = lseek (a_new, 0, SEEK_CUR);
+  CHECK_AOUT_POS (size);
 
   /* copy eveything else until start of data */
   size = f_data_s_scnptr - lseek (a_out, 0, SEEK_CUR);
 
   printf ("copying executable up to data section ... %lx bytes\n", 
 	  size);
-  dup_file_area(a_out, a_new, size);
+  dup_file_area (a_out, a_new, size);
 
-  CHECK_AOUT_POS(f_data_s_scnptr);
+  CHECK_AOUT_POS (f_data_s_scnptr);
 
   if (!sections_reversed)
     {
       /* dump bss + padding between sections, sans small bss pad */
       printf ("dumping .bss into executable... %lx bytes\n", bss_size);
-      if (write(a_new, bss_start, bss_size) != (int)bss_size)
+      if (write (a_new, bss_start, bss_size) != bss_size)
 	{
-	  PERROR("failed to write bss section");
+	  PERROR ("failed to write bss section");
 	}
       
       /* pad, needs to be zero */
       bss_padding = (new_bss_size - bss_size) - BSS_PAD_SIZE;
       if (bss_padding < 0)
-	PERROR("padded .bss too small");
+	PERROR ("padded .bss too small");
       printf ("padding .bss ... %lx bytes\n", bss_padding);
-      empty_space = malloc(bss_padding);
-      memset(empty_space, 0, bss_padding);
-      if (write(a_new, empty_space, bss_padding) != (int)bss_padding)
-	PERROR("failed to write bss section");
-      free(empty_space);
+      empty_space = malloc (bss_padding);
+      memset (empty_space, 0, bss_padding);
+      if (write (a_new, empty_space, bss_padding) != bss_padding)
+	PERROR ("failed to write bss section");
+      free (empty_space);
     }
 
   /* tell dumped version not to free pure heap */
   static_heap_dumped = 1;
   /* Get a pointer to the raw data in our address space.  */
   printf ("dumping .data section... %lx bytes\n", data_size);
-  if (write(a_new, data_start_va, data_size) != (int)data_size)
-    PERROR("failed to write data section");
+  if (write (a_new, data_start_va, data_size) != data_size)
+    PERROR ("failed to write data section");
   /* were going to use free again ... */
   static_heap_dumped = 0;
   
-  size = lseek(a_out, f_data_s_scnptr + data_size, SEEK_SET);
+  size = lseek (a_out, f_data_s_scnptr + data_size, SEEK_SET);
 
   if (!sections_reversed)
     {
       size = f_nextdata_s_scnptr - size;
-      dup_file_area(a_out, a_new, size);
+      dup_file_area (a_out, a_new, size);
     }
   else
     {
       /* need to pad to bss with data in file */
       printf ("padding .data ... %lx bytes\n", data_padding);
       size = (f_bss_s_vaddr - f_data_s_vaddr) - data_size;
-      dup_file_area(a_out, a_new, size);
+      dup_file_area (a_out, a_new, size);
 
       /* dump bss + padding between sections */
       printf ("dumping .bss into executable... %lx bytes\n", bss_size);
-      if (write(a_new, bss_start, bss_size) != (int)bss_size)
-	PERROR("failed to write bss section");
+      if (write (a_new, bss_start, bss_size) != bss_size)
+	PERROR ("failed to write bss section");
       
       /* pad, needs to be zero */
       bss_padding = (new_bss_size - bss_size) - BSS_PAD_SIZE;
       if (bss_padding < 0)
-	PERROR("padded .bss too small");
+	PERROR ("padded .bss too small");
       printf ("padding .bss ... %lx bytes\n", bss_padding);
-      empty_space = malloc(bss_padding);
-      memset(empty_space, 0, bss_padding);
-      if (write(a_new, empty_space, bss_padding) != (int)bss_padding)
-	PERROR("failed to write bss section");
-      free(empty_space);
-      if (lseek(a_new, 0, SEEK_CUR) != f_nextdata.s_scnptr)
+      empty_space = malloc (bss_padding);
+      memset (empty_space, 0, bss_padding);
+      if (write (a_new, empty_space, bss_padding) != bss_padding)
+	PERROR ("failed to write bss section");
+      free (empty_space);
+      if (lseek (a_new, 0, SEEK_CUR) != (long) f_nextdata.s_scnptr)
 	{
-	  printf("at %lx should be at %lx\n", 
-		 lseek(a_new, 0, SEEK_CUR),
+	  printf ("at %lx should be at %lx\n", 
+		 lseek (a_new, 0, SEEK_CUR),
 		 f_nextdata.s_scnptr);
-	  PERROR("file positioning error\n");
+	  PERROR ("file positioning error\n");
 	}
-      lseek(a_out, f_nextdata_s_scnptr, SEEK_SET);
+      lseek (a_out, f_nextdata_s_scnptr, SEEK_SET);
     }
 
-  CHECK_AOUT_POS(f_nextdata_s_scnptr);
+  CHECK_AOUT_POS (f_nextdata_s_scnptr);
 
   /* now dump - nextdata don't need to do this cygwin ds is in .data! */
   printf ("dumping following data section... %lx bytes\n", f_nextdata.s_size);
 
-  dup_file_area(a_out,a_new,f_nextdata.s_size);
+  dup_file_area (a_out,a_new,f_nextdata.s_size);
 
   /* write rest of file */
   printf ("writing rest of file\n");
-  size = lseek(a_out, 0, SEEK_END);
+  size = lseek (a_out, 0, SEEK_END);
   size = size - (f_nextdata_s_scnptr + f_nextdata.s_size); /* length remaining in a_out */
-  lseek(a_out, f_nextdata_s_scnptr + f_nextdata.s_size, SEEK_SET);
+  lseek (a_out, f_nextdata_s_scnptr + f_nextdata.s_size, SEEK_SET);
 
-  dup_file_area(a_out, a_new, size);
+  dup_file_area (a_out, a_new, size);
 }
 
 /*
  * copy from aout to anew
  */
-static void dup_file_area(int a_out, int a_new, long size)
+static void
+dup_file_area (int a_out, int a_new, long size)
 {
   char page[BUFSIZ];
   long n;
   for (; size > 0; size -= sizeof (page))
     {
-      n = size > sizeof (page) ? sizeof (page) : size;
+      n = size > (long) sizeof (page) ? sizeof (page) : size;
       if (read (a_out, page, n) != n || write (a_new, page, n) != n)
 	PERROR ("dump_out()");
     }
 }
 
 #if 0
-static void write_int_to_bss(int a_out, int a_new, void* va, void* newval)
+static void
+write_int_to_bss (int a_out, int a_new, void* va, void* newval)
 {
   int cpos;
 
-  cpos = lseek(a_new, 0, SEEK_CUR);
+  cpos = lseek (a_new, 0, SEEK_CUR);
   if (va < bss_start || va > bss_start + f_data.s_size)
-    PERROR("address not in data space\n");
-  lseek(a_new, f_data.s_scnptr + ((unsigned long)va - 
+    PERROR ("address not in data space\n");
+  lseek (a_new, f_data.s_scnptr + ((unsigned long)va - 
 				  (unsigned long)bss_start), SEEK_SET);
-  if (write(a_new, newval, sizeof(int)) != (int)sizeof(int))
-    PERROR("failed to write int value");
-  lseek(a_new, cpos, SEEK_SET);
+  if (write (a_new, newval, sizeof (int)) != (int) sizeof (int))
+    PERROR ("failed to write int value");
+  lseek (a_new, cpos, SEEK_SET);
 }
 #endif
 
diff --text -u 'xemacs-21.5.2/src/unexec.c' 'xemacs-21.5.3/src/unexec.c'
Index: ././src/unexec.c
--- ././src/unexec.c	Thu May 24 16:51:33 2001
+++ ././src/unexec.c	Mon Aug 13 13:46:42 2001
@@ -710,7 +710,7 @@
   if (a_out >= 0)
     {
 #ifdef COFF_ENCAPSULATE
-      if (read (a_out, &coffheader, sizeof coffheader) != sizeof coffheader)
+      if (read (a_out, &coffheader, sizeof (coffheader)) != sizeof (coffheader))
 	{
 	  PERROR(a_name);
 	}
@@ -719,7 +719,7 @@
 	  ERROR1("%s doesn't have legal coff magic number\n", a_name);
 	}
 #endif
-      if (read (a_out, (char *) &ohdr, sizeof hdr) != sizeof hdr)
+      if (read (a_out, (char *) &ohdr, sizeof (hdr)) != sizeof (hdr))
 	{
 	  PERROR (a_name);
 	}
@@ -738,7 +738,7 @@
        */
       ERROR0 ("can't build a COFF file from scratch yet");
 #else
-      memset ((void *)&hdr, 0, sizeof hdr);
+      memset ((void *)&hdr, 0, sizeof (hdr));
 #endif
     }
 
@@ -788,13 +788,13 @@
     coffheader.text_start = tp->s_vaddr;
     coffheader.data_start = dp->s_vaddr;
   }
-  if (write (new, &coffheader, sizeof coffheader) != sizeof coffheader)
+  if (write (new, &coffheader, sizeof (coffheader)) != sizeof (coffheader))
     {
       PERROR(new_name);
     }
 #endif /* COFF_ENCAPSULATE */
 
-  if (write (new, (char *) &hdr, sizeof hdr) != sizeof hdr)
+  if (write (new, (char *) &hdr, sizeof (hdr)) != sizeof (hdr))
     {
       PERROR (new_name);
     }
@@ -1099,7 +1099,7 @@
 #endif /* COFF */
     lseek (a_out, SYMS_START, 0);	/* Position a.out to symtab. */
 
-  while ((n = read (a_out, page, sizeof page)) > 0)
+  while ((n = read (a_out, page, sizeof (page))) > 0)
     {
       if (write (new, page, n) != n)
 	{
diff --text -u /dev/null 'xemacs-21.5.3/src/update-elc.stamp'
Index: ././src/update-elc.stamp
--- ././src/update-elc.stamp	Thu Jan  1 09:00:00 1970
+++ ././src/update-elc.stamp	Fri Sep  7 18:26:41 2001
@@ -0,0 +1,0 @@
diff --text -u 'xemacs-21.5.2/src/window.c' 'xemacs-21.5.3/src/window.c'
Index: ././src/window.c
--- ././src/window.c	Tue Jun 19 10:29:37 2001
+++ ././src/window.c	Mon Aug 13 13:46:42 2001
@@ -5083,7 +5083,7 @@
   /* Record the values of window-min-width and window-min-height
      so that window sizes remain consistent with them.  */
   int min_width, min_height;
-  unsigned int saved_windows_count;
+  int saved_windows_count;
   /* Zero-sized arrays aren't ANSI C */
   struct saved_window saved_windows[1];
 };
@@ -5099,7 +5099,7 @@
 mark_window_config (Lisp_Object obj)
 {
   struct window_config *config = XWINDOW_CONFIGURATION (obj);
-  unsigned int i;
+  int i;
   mark_object (config->current_window);
   mark_object (config->current_buffer);
   mark_object (config->minibuffer_scroll_window);
@@ -5129,14 +5129,14 @@
   return Qnil;
 }
 
-inline static size_t
-sizeof_window_config_for_n_windows (unsigned int n)
+inline static Memory_Count
+sizeof_window_config_for_n_windows (int n)
 {
   return FLEXIBLE_ARRAY_STRUCT_SIZEOF (struct window_config,
 				       struct saved_window, saved_windows, n);
 }
 
-static size_t
+static Memory_Count
 sizeof_window_config (const void *h)
 {
   const struct window_config *c = (const struct window_config *) h;
@@ -5199,7 +5199,7 @@
 window_config_equal (Lisp_Object conf1, Lisp_Object conf2)
 {
   struct window_config *fig1, *fig2;
-  unsigned int i;
+  int i;
 
   /* First check if they are truly the same. */
   if (EQ (conf1, conf2))
@@ -5254,7 +5254,7 @@
 static Lisp_Object
 free_window_configuration (Lisp_Object window_config)
 {
-  unsigned int i;
+  int i;
   struct window_config *config = XWINDOW_CONFIGURATION (window_config);
 
   /* Free all the markers.  It's not completely necessary that
@@ -5306,7 +5306,7 @@
   struct window_config *config;
   struct saved_window *p;
   Lisp_Object new_current_buffer;
-  unsigned int k;
+  int k;
   Lisp_Object frame;
   struct frame *f;
   struct gcpro gcpro1;
@@ -5805,7 +5805,7 @@
 }
 
 
-static unsigned int
+static int
 count_windows (struct window *window)
 {
   return 1 +
@@ -5921,7 +5921,7 @@
   Lisp_Object result;
   struct frame *f = decode_frame (frame);
   struct window_config *config;
-  unsigned int n_windows = count_windows (XWINDOW (FRAME_ROOT_WINDOW (f)));
+  int n_windows = count_windows (XWINDOW (FRAME_ROOT_WINDOW (f)));
   int minibuf_height;
   int real_font_height;
 
@@ -6234,7 +6234,7 @@
 void
 reinit_vars_of_window (void)
 {
-  unsigned int i;
+  int i;
   /* Make sure all windows get marked */
   minibuf_window = Qnil;
   staticpro_nodump (&minibuf_window);
diff --text -u 'xemacs-21.5.2/src/xgccache.c' 'xemacs-21.5.3/src/xgccache.c'
Index: ././src/xgccache.c
--- ././src/xgccache.c	Fri Apr 13 03:24:29 2001
+++ ././src/xgccache.c	Mon Aug 13 13:46:43 2001
@@ -104,7 +104,7 @@
      every slot of the gcv when calling gc_cache_lookup.  But we need
      the hash function to be as fast as possible; some timings should
      be done. */
-  for (i = 0; i < (sizeof (XGCValues) / sizeof (unsigned long)); i++)
+  for (i = 0; i < (int) (sizeof (XGCValues) / sizeof (unsigned long)); i++)
     hash = (hash<<1) ^ *longs++;
   return hash;
 }
diff --text -u 'xemacs-21.5.2/src/xmu.c' 'xemacs-21.5.3/src/xmu.c'
Index: ././src/xmu.c
--- ././src/xmu.c	Tue Jun  5 02:00:02 2001
+++ ././src/xmu.c	Mon Aug 13 13:46:43 2001
@@ -141,7 +141,7 @@
     int i;
     char tmp[40];
 
-    if (strlen (name) >= sizeof tmp) return -1;
+    if (strlen (name) >= sizeof (tmp)) return -1;
     for (i=0; i<strlen(name); i++)
         if (isupper((unsigned char) name[i]))
             tmp[i] = tolower((unsigned char) name[i]);
diff --text -u 'xemacs-21.5.2/tests/ChangeLog' 'xemacs-21.5.3/tests/ChangeLog'
Index: ././tests/ChangeLog
--- ././tests/ChangeLog	Sat Jul 28 16:48:22 2001
+++ ././tests/ChangeLog	Fri Sep  7 18:13:26 2001
@@ -1,3 +1,7 @@
+2001-09-07  Stephen J. Turnbull  <stephen@xemacs.org>
+
+	* XEmacs 21.5.3 "asparagus" is released.
+
 2001-07-28  Stephen J. Turnbull  <stephen@xemacs.org>
 
 	* XEmacs 21.5.2 "artichoke" is released.
diff --text -u 'xemacs-21.5.2/version.sh' 'xemacs-21.5.3/version.sh'
Index: ././version.sh
--- ././version.sh	Sat Jul 28 16:48:22 2001
+++ ././version.sh	Fri Sep  7 18:13:26 2001
@@ -2,8 +2,8 @@
 emacs_is_beta=t
 emacs_major_version=21
 emacs_minor_version=5
-emacs_beta_version=2
-xemacs_codename="artichoke"
+emacs_beta_version=3
+xemacs_codename="asparagus"
 infodock_major_version=4
 infodock_minor_version=0
 infodock_build_version=8
#### End of Patch data ####

#### ApplyPatch data follows ####
# Data version        : 1.0
# Date generated      : Fri Sep  7 18:36:23 2001
# Generated by        : makepatch 2.00_03
# Recurse directories : Yes
# Excluded files      : (\A|/)MANIFEST\Z
#                       (\A|/)\.precious\Z
# r './lisp/x-font-menu.elc' 4695 0
# r './lisp/x-compose.elc' 11134 0
# r './lisp/win32-native.elc' 4829 0
# r './lisp/widgets-gtk.elc' 3000 0
# r './lisp/wid-edit.elc' 79293 0
# r './lisp/wid-browse.elc' 6601 0
# r './lisp/view-less.elc' 10636 0
# r './lisp/userlock.elc' 6206 0
# r './lisp/term/xterm.elc' 2516 0
# r './lisp/term/wyse50.elc' 2227 0
# r './lisp/term/vt420.elc' 687 0
# r './lisp/term/vt400.elc' 687 0
# r './lisp/term/vt320.elc' 687 0
# r './lisp/term/vt300.elc' 687 0
# r './lisp/term/vt240.elc' 687 0
# r './lisp/term/vt220.elc' 687 0
# r './lisp/term/vt201.elc' 687 0
# r './lisp/term/vt200.elc' 687 0
# r './lisp/term/vt125.elc' 615 0
# r './lisp/term/vt102.elc' 615 0
# r './lisp/term/vt100.elc' 1105 0
# r './lisp/term/vt100-led.elc' 1434 0
# r './lisp/term/vt-control.elc' 1931 0
# r './lisp/term/tvi970.elc' 2441 0
# r './lisp/term/sup-mouse.elc' 3546 0
# r './lisp/term/scoansi.elc' 3394 0
# r './lisp/term/news.elc' 1108 0
# r './lisp/term/lk201.elc' 1688 0
# r './lisp/term/linux.elc' 1035 0
# r './lisp/term/keyswap.elc' 653 0
# r './lisp/term/cygwin.elc' 617 0
# r './lisp/term/bobcat.elc' 619 0
# r './lisp/term/bg-mouse.elc' 6792 0
# r './lisp/term/apollo.elc' 659 0
# r './lisp/term/AT386.elc' 936 0
# r './lisp/symbols.elc' 2977 0
# r './lisp/symbol-syntax.elc' 1991 0
# r './lisp/sound.elc' 4841 0
# r './lisp/rect.elc' 7610 0
# r './lisp/picture.elc' 20232 0
# r './lisp/package-ui.elc' 15747 0
# r './lisp/package-net.elc' 4038 0
# r './lisp/package-info.elc' 2901 0
# r './lisp/package-get.elc' 27693 0
# r './lisp/package-admin.elc' 9846 0
# r './lisp/mwheel.elc' 2568 0
# r './lisp/mule/custom-load.elc' 688 0
# r './lisp/mule/custom-load.el' 190 0
# r './lisp/msw-select.elc' 1029 0
# r './lisp/msw-mouse.elc' 1267 0
# r './lisp/msw-init.elc' 1569 0
# r './lisp/msw-glyphs.elc' 2262 0
# r './lisp/msw-font-menu.elc' 4304 0
# r './lisp/msw-faces.elc' 4968 0
# r './lisp/lisp-mnt.elc' 10855 0
# r './lisp/ldap.elc' 14095 0
# r './lisp/info.elc' 66737 0
# r './lisp/hyper-apropos.elc' 29582 0
# r './lisp/help-nomule.elc' 2615 0
# r './lisp/help-macro.elc' 3683 0
# r './lisp/gtk.elc' 1324 0
# r './lisp/gtk-widgets.elc' 343059 0
# r './lisp/gtk-widget-accessors.elc' 6595 0
# r './lisp/gtk-select.elc' 1728 0
# r './lisp/gtk-password-dialog.elc' 2175 0
# r './lisp/gtk-package.elc' 816 0
# r './lisp/gtk-mouse.elc' 1620 0
# r './lisp/gtk-marshal.elc' 9608 0
# r './lisp/gtk-iso8859-1.elc' 706 0
# r './lisp/gtk-init.elc' 7555 0
# r './lisp/gtk-glyphs.elc' 1475 0
# r './lisp/gtk-font-menu.elc' 4924 0
# r './lisp/gtk-file-dialog.elc' 5115 0
# r './lisp/gtk-ffi.elc' 2342 0
# r './lisp/gtk-faces.elc' 5301 0
# r './lisp/gtk-extra.elc' 10858 0
# r './lisp/gtk-compose.elc' 679 0
# r './lisp/gpm.elc' 2244 0
# r './lisp/gnuserv.elc' 25416 0
# r './lisp/gnome.elc' 1140 0
# r './lisp/gnome-widgets.elc' 70156 0
# r './lisp/glade.elc' 6359 0
# r './lisp/generic-widgets.elc' 8464 0
# r './lisp/gdk.elc' 15871 0
# r './lisp/font.elc' 32396 0
# r './lisp/font-menu.elc' 8445 0
# r './lisp/font-lock.elc' 67006 0
# r './lisp/finder.elc' 10212 0
# r './lisp/files-nomule.elc' 3829 0
# r './lisp/etags.elc' 27403 0
# r './lisp/dragdrop.elc' 11039 0
# r './lisp/disp-table.elc' 4095 0
# r './lisp/disass.elc' 4011 0
# r './lisp/dialog-gtk.elc' 4784 0
# r './lisp/custom-load.elc' 3998 0
# r './lisp/custom-load.el' 4546 0
# r './lisp/cus-load.elc' 1299 0
# r './lisp/cus-face.elc' 9339 0
# r './lisp/cus-edit.elc' 88557 0
# r './lisp/cus-dep.elc' 3331 0
# r './lisp/config.elc' 1532 0
# r './lisp/compat.elc' 4614 0
# r './lisp/cl-compat.elc' 3768 0
# r './lisp/check-features.elc' 1296 0
# r './lisp/callers-of-rpt.elc' 2294 0
# r './lisp/build-report.elc' 12810 0
# r './lisp/blessmail.elc' 1131 0
# r './lisp/behavior.elc' 4089 0
# r './lisp/behavior-defs.elc' 22597 0
# r './lisp/apropos.elc' 12533 0
# r './lisp/alist.elc' 2283 0
# r './lisp/about.elc' 74860 0
# r './info/xemacs.info-9' 50169 0
# r './info/xemacs.info-8' 48821 0
# r './info/xemacs.info-7' 51314 0
# r './info/xemacs.info-6' 41434 0
# r './info/xemacs.info-5' 49011 0
# r './info/xemacs.info-4' 50502 0
# r './info/xemacs.info-3' 50591 0
# r './info/xemacs.info-23' 46444 0
# r './info/xemacs.info-22' 43937 0
# r './info/xemacs.info-21' 50755 0
# r './info/xemacs.info-20' 33005 0
# r './info/xemacs.info-2' 49408 0
# r './info/xemacs.info-19' 26338 0
# r './info/xemacs.info-18' 50982 0
# r './info/xemacs.info-17' 49616 0
# r './info/xemacs.info-16' 51028 0
# r './info/xemacs.info-15' 49868 0
# r './info/xemacs.info-14' 51029 0
# r './info/xemacs.info-13' 45657 0
# r './info/xemacs.info-12' 50844 0
# r './info/xemacs.info-11' 50522 0
# r './info/xemacs.info-10' 49309 0
# r './info/xemacs.info-1' 49148 0
# r './info/xemacs.info' 11919 0
# r './info/xemacs-faq.info-6' 14118 0
# r './info/xemacs-faq.info-5' 49157 0
# r './info/xemacs-faq.info-4' 49209 0
# r './info/xemacs-faq.info-3' 49861 0
# r './info/xemacs-faq.info-2' 50073 0
# r './info/xemacs-faq.info-1' 49599 0
# r './info/xemacs-faq.info' 5573 0
# r './info/widget.info' 50717 0
# r './info/texinfo.info-9' 43863 0
# r './info/texinfo.info-8' 50798 0
# r './info/texinfo.info-7' 51300 0
# r './info/texinfo.info-6' 50084 0
# r './info/texinfo.info-5' 50577 0
# r './info/texinfo.info-4' 51467 0
# r './info/texinfo.info-3' 50877 0
# r './info/texinfo.info-2' 49459 0
# r './info/texinfo.info-12' 36078 0
# r './info/texinfo.info-11' 39645 0
# r './info/texinfo.info-10' 47601 0
# r './info/texinfo.info-1' 48708 0
# r './info/texinfo.info' 10296 0
# r './info/termcap.info-3' 48715 0
# r './info/termcap.info-2' 44269 0
# r './info/termcap.info-1' 49217 0
# r './info/termcap.info' 2114 0
# r './info/term.info' 14951 0
# r './info/standards.info-4' 7795 0
# r './info/standards.info-3' 50550 0
# r './info/standards.info-2' 50664 0
# r './info/standards.info-1' 50917 0
# r './info/standards.info' 2786 0
# r './info/new-users-guide.info-3' 12914 0
# r './info/new-users-guide.info-2' 50230 0
# r './info/new-users-guide.info-1' 50521 0
# r './info/new-users-guide.info' 1926 0
# r './info/lispref.info-9' 51299 0
# r './info/lispref.info-8' 47449 0
# r './info/lispref.info-7' 51033 0
# r './info/lispref.info-6' 50774 0
# r './info/lispref.info-5' 50721 0
# r './info/lispref.info-48' 208738 0
# r './info/lispref.info-47' 16236 0
# r './info/lispref.info-46' 51585 0
# r './info/lispref.info-45' 43209 0
# r './info/lispref.info-44' 48861 0
# r './info/lispref.info-43' 46752 0
# r './info/lispref.info-42' 46742 0
# r './info/lispref.info-41' 51060 0
# r './info/lispref.info-40' 48920 0
# r './info/lispref.info-4' 52106 0
# r './info/lispref.info-39' 50920 0
# r './info/lispref.info-38' 49809 0
# r './info/lispref.info-37' 51506 0
# r './info/lispref.info-36' 48100 0
# r './info/lispref.info-35' 51043 0
# r './info/lispref.info-34' 52193 0
# r './info/lispref.info-33' 49572 0
# r './info/lispref.info-32' 50937 0
# r './info/lispref.info-31' 52356 0
# r './info/lispref.info-30' 48022 0
# r './info/lispref.info-3' 52207 0
# r './info/lispref.info-29' 50516 0
# r './info/lispref.info-28' 52318 0
# r './info/lispref.info-27' 51026 0
# r './info/lispref.info-26' 51222 0
# r './info/lispref.info-25' 51058 0
# r './info/lispref.info-24' 52027 0
# r './info/lispref.info-23' 48831 0
# r './info/lispref.info-22' 48630 0
# r './info/lispref.info-21' 51289 0
# r './info/lispref.info-20' 50394 0
# r './info/lispref.info-2' 50852 0
# r './info/lispref.info-19' 49993 0
# r './info/lispref.info-18' 49925 0
# r './info/lispref.info-17' 49837 0
# r './info/lispref.info-16' 47704 0
# r './info/lispref.info-15' 50362 0
# r './info/lispref.info-14' 51782 0
# r './info/lispref.info-13' 50225 0
# r './info/lispref.info-12' 49919 0
# r './info/lispref.info-11' 50898 0
# r './info/lispref.info-10' 51224 0
# r './info/lispref.info-1' 49117 0
# r './info/lispref.info' 28589 0
# r './info/internals.info-9' 35316 0
# r './info/internals.info-8' 50912 0
# r './info/internals.info-7' 48842 0
# r './info/internals.info-6' 48274 0
# r './info/internals.info-5' 50901 0
# r './info/internals.info-4' 44002 0
# r './info/internals.info-3' 51477 0
# r './info/internals.info-2' 50727 0
# r './info/internals.info-1' 51577 0
# r './info/internals.info' 7099 0
# r './info/info.info' 34141 0
# r './info/external-widget.info' 6096 0
# r './info/emodules.info' 42969 0
# r './info/custom.info' 13619 0
# r './info/cl.info-6' 13225 0
# r './info/cl.info-5' 43748 0
# r './info/cl.info-4' 39161 0
# r './info/cl.info-3' 49888 0
# r './info/cl.info-2' 43946 0
# r './info/cl.info-1' 46306 0
# r './info/cl.info' 3137 0
# p './CHANGES-beta' 34663 999844806 0100644
# p './ChangeLog' 143608 999854005 0100644
# c './GNUmakefile' 0 999854155 0100444
# c './Installation' 0 999854147 0100644
# c './Makefile' 0 999854155 0100444
# c './Makefile.in' 0 999854149 0100644
# c './config.log' 0 999854146 0100644
# c './config.status' 0 999854148 0100755
# p './configure.usage' 14919 996692344 0100644
# p './etc/BETA' 14253 998514196 0100644
# p './lib-src/ChangeLog' 40346 999854005 0100644
# c './lib-src/DOC' 0 999854804 0100644
# c './lib-src/GNUmakefile' 0 999854155 0100444
# c './lib-src/Makefile' 0 999854155 0100444
# c './lib-src/Makefile.in' 0 999854149 0100644
# c './lib-src/config.values' 0 999854155 0100644
# c './lib-src/ellcc.h' 0 999854150 0100644
# p './lib-src/gnuserv.c' 21697 997677948 0100644
# p './lib-src/gnuslib.c' 12021 997677948 0100644
# p './lib-src/make-docfile.c' 25161 997677948 0100644
# p './lib-src/mmencode.c' 15382 997677948 0100644
# p './lib-src/movemail.c' 23151 997677948 0100644
# p './lib-src/ootags.c' 132830 997677949 0100644
# p './lib-src/yow.c' 3675 997677949 0100644
# p './lisp/ChangeLog' 364123 999854006 0100644
# p './lisp/README' 2283 998821512 0100644
# p './lisp/auto-autoloads.el' 102809 999854714 0100644
# p './lisp/autoload.el' 22528 997272904 0100644
# p './lisp/lisp-mnt.el' 18288 997072854 0100644
# p './lisp/menubar-items.el' 72599 997072854 0100644
# p './lisp/mule/auto-autoloads.el' 7724 999854716 0100644
# p './lisp/wid-edit.el' 125794 998821512 0100644
# p './lwlib/ChangeLog' 22031 999854006 0100644
# c './lwlib/GNUmakefile' 0 999854155 0100444
# c './lwlib/Makefile' 0 999854155 0100444
# c './lwlib/Makefile.in' 0 999854149 0100644
# c './lwlib/config.h' 0 999854155 0100644
# p './lwlib/lwlib-Xlw.c' 17369 997677957 0100644
# p './lwlib/lwlib-utils.c' 4831 997677957 0100644
# p './lwlib/xlwgauge.c' 28299 997677957 0100644
# p './lwlib/xlwmenu.c' 99366 997677958 0100644
# p './lwlib/xlwtabs.c' 57931 997677958 0100644
# p './man/ChangeLog' 81403 999854006 0100644
# p './man/widget.texi' 51124 998821514 0100644
# p './man/xemacs-faq.texi' 249266 997677959 0100644
# p './netinstall/ChangeLog' 5764 999854006 0100644
# p './nt/ChangeLog' 40781 999854006 0100644
# p './nt/config.h' 19351 997677963 0100644
# p './nt/installer/Wise/ChangeLog' 287 999854006 0100644
# p './src/ChangeLog' 399927 999854006 0100644
# c './src/Emacs.ad.h' 0 999854156 0100644
# p './src/EmacsFrame.c' 23775 997677967 0100644
# c './src/GNUmakefile' 0 999854155 0100444
# c './src/Makefile' 0 999854155 0100444
# c './src/Makefile.in' 0 999854150 0100644
# p './src/alloc.c' 119252 997677967 0100644
# p './src/backtrace.h' 11026 997677968 0100644
# p './src/blocktype.c' 2743 997677969 0100644
# p './src/blocktype.h' 1508 997677969 0100644
# p './src/buffer.c' 102953 997677969 0100644
# p './src/buffer.h' 67829 998643129 0100644
# p './src/bytecode.c' 60206 997677969 0100644
# p './src/callproc.c' 28261 997677970 0100644
# p './src/chartab.c' 50369 997677970 0100644
# p './src/chartab.h' 7425 997677970 0100644
# c './src/config.h' 0 999854154 0100644
# p './src/console-x.c' 8381 997677970 0100644
# p './src/console.c' 44815 996960170 0100644
# p './src/console.h' 26247 997677970 0100644
# p './src/data.c' 60646 997677970 0100644
# p './src/depend' 37160 997677971 0100644
# p './src/device-msw.c' 39241 997677971 0100644
# p './src/device-x.c' 63833 997677971 0100644
# p './src/dialog-msw.c' 22332 997677972 0100644
# p './src/dired.c' 29377 997677972 0100644
# p './src/doc.c' 27632 997677973 0100644
# p './src/doprnt.c' 24082 997677973 0100644
# p './src/dumper.c' 35177 997677973 0100644
# p './src/dynarr.c' 7759 997677974 0100644
# p './src/editfns.c' 79898 997677974 0100644
# p './src/eldap.c' 23870 997677975 0100644
# p './src/elhash.c' 51669 997677975 0100644
# p './src/elhash.h' 3178 997677976 0100644
# p './src/emacs.c' 116683 997677976 0100644
# p './src/eval.c' 155778 997677977 0100644
# p './src/event-Xt.c' 110845 997677978 0100644
# p './src/event-msw.c' 118919 997677978 0100644
# p './src/events.c' 67650 997677980 0100644
# p './src/extents.c' 218524 997677981 0100644
# p './src/extents.h' 16235 997677981 0100644
# p './src/faces.c' 65557 997677982 0100644
# p './src/file-coding.c' 174697 997677982 0100644
# p './src/fileio.c' 129384 997677982 0100644
# p './src/filelock.c' 14529 997677983 0100644
# p './src/floatfns.c' 25772 997677983 0100644
# p './src/fns.c' 108402 997677983 0100644
# p './src/font-lock.c' 26310 997677984 0100644
# p './src/frame-x.c' 85984 997677984 0100644
# p './src/frame.h' 29959 997677984 0100644
# p './src/getloadavg.c' 22594 997677984 0100644
# p './src/gif_io.c' 8495 997677985 0100644
# p './src/gifrlib.h' 11546 997677985 0100644
# p './src/glyphs-eimage.c' 39914 997677985 0100644
# p './src/glyphs-msw.c' 90576 997677985 0100644
# p './src/glyphs-shared.c' 8974 997677985 0100644
# p './src/glyphs-x.c' 91152 997677986 0100644
# p './src/glyphs.c' 165967 997677986 0100644
# p './src/glyphs.h' 45307 997677987 0100644
# p './src/gmalloc.c' 40160 997677987 0100644
# p './src/gpmevent.c' 16073 997677989 0100644
# p './src/gui-x.c' 19144 997677989 0100644
# p './src/gui.c' 21475 997677989 0100644
# p './src/gui.h' 4188 997677989 0100644
# p './src/hash.c' 9762 997677989 0100644
# p './src/hash.h' 2811 997677990 0100644
# p './src/hftctl.c' 11669 997677990 0100644
# p './src/imgproc.c' 14354 997677990 0100644
# p './src/input-method-motif.c' 5301 998818944 0100644
# p './src/insdel.c' 97462 997677990 0100644
# p './src/keymap.c' 133943 997677990 0100644
# p './src/line-number.c' 11050 997677991 0100644
# p './src/linuxplay.c' 14584 997677991 0100644
# p './src/lisp.h' 120531 997677991 0100644
# p './src/lrecord.h' 29077 997677991 0100644
# p './src/lstream.c' 47994 997677992 0100644
# p './src/lstream.h' 16102 997677992 0100644
# p './src/m/tad68k.h' 2879 997678006 0100644
# p './src/malloc.c' 22650 997677992 0100644
# p './src/md5.c' 18441 997677992 0100644
# p './src/menubar-msw.c' 29520 997677992 0100644
# p './src/mule-ccl.c' 62915 997677992 0100644
# p './src/mule-charset.c' 50436 997677993 0100644
# p './src/mule-charset.h' 30806 997677993 0100644
# p './src/mule-wnnfns.c' 58027 997677993 0100644
# p './src/ntheap.c' 10350 997677993 0100644
# p './src/ntproc.c' 38664 997677994 0100644
# p './src/objects-msw.c' 62772 997677994 0100644
# p './src/objects-x.c' 34041 997677994 0100644
# p './src/offix.c' 13770 997677994 0100644
# p './src/offix.h' 1848 997677994 0100644
# p './src/opaque.c' 5171 997677995 0100644
# p './src/opaque.h' 2531 997677995 0100644
# c './src/paths.h' 0 999854150 0100644
# p './src/postgresql.h' 1808 997677995 0100644
# p './src/process-nt.c' 40928 997677995 0100644
# p './src/process-unix.c' 59712 997677995 0100644
# p './src/rangetab.c' 22372 997677995 0100644
# p './src/redisplay-msw.c' 43086 997677995 0100644
# p './src/redisplay-x.c' 64411 997677996 0100644
# p './src/redisplay.c' 282432 997677996 0100644
# p './src/regex.c' 208226 997739157 0100644
# p './src/regex.h' 19953 997677999 0100644
# p './src/s/esix.h' 524 997678008 0100644
# p './src/search.c' 90971 997677999 0100644
# c './src/select-common.h' 0 997677999 0100644
# p './src/select-gtk.c' 27630 997677999 0100644
# p './src/select-x.c' 55048 997678000 0100644
# c './src/sheap-adjust.h' 0 999854156 0100644
# p './src/sheap.c' 4249 997678000 0100644
# p './src/specifier.c' 104625 997678000 0100644
# p './src/symbols.c' 113054 997678000 0100644
# p './src/sysdep.c' 112974 997678001 0100644
# p './src/sysdir.h' 3825 997678001 0100644
# p './src/tests.c' 16724 997678001 0100644
# p './src/tparam.c' 7343 997678001 0100644
# p './src/unexaix.c' 17169 997678001 0100644
# p './src/unexconvex.c' 16629 997678002 0100644
# p './src/unexcw.c' 15608 997678002 0100644
# p './src/unexec.c' 34321 997678002 0100644
# c './src/update-elc.stamp' 0 999854801 0100644
# p './src/window.c' 200193 997678002 0100644
# p './src/xgccache.c' 9557 997678003 0100644
# p './src/xmu.c' 10655 997678003 0100644
# p './tests/ChangeLog' 11015 999854006 0100644
# p './version.sh' 195 999854006 0100644
#### End of ApplyPatch data ####

#### End of Patch kit [created: Fri Sep  7 18:36:23 2001] ####
#### Patch checksum: 46797 2076531 44619 ####
#### Checksum: 47116 2086220 45320 ####